We have a piece of functionality that is used by several different applications (clients) on the same server. It can best be modeled as a service, has a backend database, and there will only be one version of the functionality and the database in use at any one time.
Until now we have employed simple DLL-reuse, with the functionality, its configuration file, and dependencies deployed everywhere it is used. Because any changes now have to be made several places, this method is painful when creating new versions of the functionality or when new clients want to use it.
We are wondering if there is a better way to do this, and have come up with two possible alternatives.
Put the DLL (and the dependencies) in the GAC. The question is then how to configure the component. As the clients have no interest in the configuration, we are leaning towards storing the config file in a hard-coded path on the server.
Publish the functionality as an internal (REST-based) service. Access to it can be limited to internal clients using the firewall.
As we see it, the pros of #1 seem to be performance and possibly security, whereas #2 can be seen as simpler to set up.
Are we missing anything important here? Has anybody been in a similar situation before and wants to share some insight?