2013-05-09 71 views
0

我已经在C#中开发了一个Windows服务,它具有向用户定期发送电子邮件的功能。现在,该服务将被部署到实际访问同一服务器的大量客户端(例如50个)。显然,每个客户端都有一个专用的数据库。 因此,它们的配置(如数据库连接字符串,运行服务的计划和时间间隔)各不相同。带有许多客户端的服务器上的Windows服务部署

现在请指教:

  1. 它是一个很好的做法,部署每个客户端的服务(50个客户端,即50个服务)?想象一下服务列表中的计算机管理>服务

  2. 我现在已经使用了一个单独的配置文件,它不是项目的一部分,因此不需要编译。我的服务现在从这个配置文件读取它很容易进行更改。无论如何,管理配置文件的最佳方法是什么?

我希望我会在我的第一个问题找到一些很好的建议,在stackoverflow。谢谢!

+0

还在等待一些建议......! – NewTechie 2013-05-10 08:34:40

回答

0

我不认为这是正确的做法:

  • Windows服务始终打开。在这项服务中,您需要使用类似Timer的内容来实现调度机制,如果需要的话,还可以为客户端实现job engine within the windows service以处理不同线程上的客户端的任务
  • 我不明白为什么需要单独的数据库为每个客户。这不是数据库的重点,通常您会使用单个SQL Server实例和数据库来存储所有数据,并实现表结构,以便您可以将任何给定的数据记录关联到用户。
  • 所以我不会部署每个客户端的服务,但有一个单一的数据库

顺便说一句,大多数Visual Studio .NET中的项目(当然Windows服务项目),使您能够以一个单一的服务用于应用程序配置的use an app.config file(或用于web项目的web.config文件) - 这应该是具有不需要重新调整以进行更改的通用配置的首选。这通常是该项目的一部分。

对于这个模糊的问题,你不可能得到任何人提供的代码示例或更多。根据这些建议,你应该为自己尝试一下,然后询问specific questions,它们是not too vague(链接提供了有关适当问题的指导)。哦,欢迎来到SO。

+0

嗨安迪,谢谢你回答这个问题! – NewTechie 2013-06-21 13:50:19

+0

实际上,应用程序本身非常庞大,我们为每个客户端创建dll和数据库的副本,很明显,因为每个客户端都有自己的一组用户和其他数据。这种Windows服务是最近用于各种用途的实现,如发送自动电子邮件,触发新事件,创建报告等(所有内容都是客户端特定的)。因此,考虑到这种情况,是否有可能为所有客户端部署单一服务 - 从客户端特定数据库中选择/更新数据? – NewTechie 2013-06-21 13:58:26

+0

@NewTechie。当然,只需要根据您正在使用的客户端来选择数据库。正如我所提到的,这基本上是一个工作引擎。有很多方法可以削减这种情况,您可以为每个客户端安装完全独立的应用安装程序,也可以为所有客户端在单个实例上集中托管的SaaS方法。即使在你的情况下,这也是可能的。 – 2013-06-21 18:24:09