views:

204

answers:

4

Hi,

We are looking at a standard way of configuring the various "endpoints" of our application. Our application is a distributed system with Windows Desktop applications, Windows Server "services" and databases. We currently configure each piece using XML files. This is getting a little out of hands as we work with larger customers who can have dozens of Servers running our application and hundreds of desktop clients.

Can anyone recommend a Microsoft technology or a third party that would allow us to centralize all that configuration information and manage it in a one place for all our applications? Any changes would be "pushed" to the endpoint(s) that are interested.

For example, if we were to change the login for one of our database, we would make that change on the database, then reflect that change in our centralized system. Following that last step, any service that needs to connect to the database would be notified of the change (and potentially receive the new data). How and what each endpoint does with that information is outside the scope of the system.

Our primary business is not "Centralized Configuration Services". We are a GIS company that provides solutions for various utilities worldwide.

Thanks in advance for any guidance.

Regards,

Eric.

A: 

Any VCS through a secure channel?

For example, git through ssh (both available in cygwin).

I think the first step is to have the secure channel (if you want the push ability, pulling might be different).

As for managing the "versions" in different "branches", what's better than a version control system?

As it goes for the Microsoft requirement, well the Microsoft sofwares in that exists in that area would suck pretty bad in your case (as in not the best tool for the job).

Loki
Loki, Thanks for the reply. But I think you and I are referring to 2 completely different things. We are not looking a "configuration management" in the source code sense. We are talking about architecture, running applications... Application settings if you prefer.
+1  A: 

You could use RSS together with BitTorrent to distribute changes. See Wikipedia. It is not MS specific however, but should provide the flexibility you need - a configuration server holding the configuration and providing the feeds needed to configure the clients and possibly servers.

stili
Not exactly what you'd typically use bittorrent for but not such a silly idea either!
Ben Daniel
A: 

Hi Eric,

Did you ever determine a good design approach to your question? We are working to develop this same type of facility. We have several server applications that a few client apps talk to via sockets as well as a database. Collectively these disparate programs work together and it would be highly desirable to have a centralized repository with application configuration settings.

Regards, Eric Strennen

Eric Strennen
A: 

I've done a couple of things to give myself this functionality over the years. I build enterprise applicatons that may be distributed across many servers. I don't want to bury config settings in each services config file or each web server's web.config file. For application specific stuff I usually create an application settings table in the app's database. The table only has two fields. SettingName and SettingValue. I then write a web or wcf service whose sole function it is to retrieve these settings. I write a function called GetSetting where you pass "SettingName" and it returns SettingValue or an empty string if your setting is not found. This way I can store all application settings for all components of the application in one spot. Maintenance and troubleshooting for this is really easy, I'm not hunting through scads of config files spread across a dozen web and app servers.

For larger scale apps I might create a separate AppSettings database where I add a new field to my table mentioned above. ApplicationName. My web or wcf service for this approach has the same method call (GetSetting) only at this scope I pass ApplicationName and SettingName and it returns SettingValue or an empty string.

Doing either of these things allows you to centralize all app settings for any size application or IT shop. It has worked really well for us.

Kevin Jones