合并3个完全相同但具有不同连接string设置的Windows服务

我有3个独立的Windows服务项目完全相同的事情。 唯一的区别是每个项目文件在app.config中都有不同的连接string设置。 我正在计划巩固服务项目,使之更易于pipe理。 什么是最好的方法?

当前scheme:

3 win服务>每6分钟执行一次>命中3个不同的数据库>收集数据>生成XML>将XML发送到FTP。

预期结果:

1 win服务>每6分钟执行一次>打3个不同的数据库>收集数据>生成XML>将XML发送到FTP。

所以他们都做同样的事情,禁止有不同的连接字符串 – “简单”。

在你的配置中创建一个新的应用程序设置在“模式”的配置或相同的东西,并用逗号分隔的值,例如:

<configuration> <appSettings> <add key="schema" value="connection1, connection2, connection3"/> </appSettings> </configuration> 

然后在您的模式应用程序设置键中,确保您拥有每个连接的键

 <connectionStrings> <add name="connection1" connectionString="your_connection_string" providerName="the_providor"/> <add name="connection2" connectionString="your_connection_string" providerName="the_providor"/> <add name="connection3" connectionString="your_connection_string" providerName="the_providor"/> </connectionStrings> 

在你的OnStart中做一些如下的事情 – 考虑一下睡眠或者线程迭代是需要被放进去的,但是你明白了:

 protected override void OnStart(string[] args) { string[] schemaList = ConfigurationManager.AppSettings["schema"].Split(",".ToCharArray()); foreach (string schema in schemaList) { // do your stuff... }