【问题标题】:Windows Service Deployment on Server with many clients [closed]在具有许多客户端的服务器上部署 Windows 服务 [关闭]
【发布时间】:2013-05-03 17:35:28
【问题描述】:

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

请立即告知:

  1. 为每个客户端部署服务是一种好习惯吗?(即 50 个客户端对应 50 个服务)。想象一下计算机管理>服务中的服务列表

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

我希望我能在 stackoverflow 上为我的第一个问题找到一些好的建议。谢谢!

【问题讨论】:

  • 还在等待一些建议...!

标签: .net deployment configuration windows-services


【解决方案1】:

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

  • 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。

【讨论】:

  • 实际上应用程序本身是巨大的,我们为每个客户端复制 dll 和数据库,显然因为每个客户端都有自己的一组用户和其他数据。此 Windows 服务是用于各种目的的最新实现,例如发送自动电子邮件、触发新事件、创建报告等(一切都是特定于客户端的)。因此,在这种情况下,是否可以为所有客户端部署一项服务——从客户端特定的数据库中挑选/更新数据?
  • @NewTechie。当然,只要有一种方法可以根据您正在使用的客户端选择数据库。正如我所提到的,这基本上是一个工作引擎。有很多方法可以解决这个问题,您可以为每个客户端安装一个完全独立的应用程序,或者为所有客户端集中托管在单个实例上的 SaaS 方法。即使在您的情况下,这也是可能的。
猜你喜欢
  • 2017-07-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-28
  • 1970-01-01
相关资源
最近更新 更多