我正在尝试用C#开发一个长期运行的数据馈送程序。数据处理将在多个服务器上运行,并且将有一种类似于长时间运行的队列,一旦前一个文档的处理完成,数据将被送入数据处理软件。
我该怎么做呢?它可能会处理分布在5个单独服务器上的10,000个文档,并根据服务器是否繁忙以及服务器已经处理了多少文档来分发这些文档。通常的负载均衡标准。我可以编写一个Windows应用程序,它将持续监视服务器并相应地馈送/发送数据。我应该使用WCF服务吗?windows窗体应用程序?Windows消息队列还是我应该构建自己的消息队列?数据馈送基本上会持续进行,因为每个单独的文档可能需要20-30分钟,并且有10,000个文档。我不希望feeding程序在任何情况下都崩溃/停止。
你会使用哪种软件和方法来开发它?有什么建议、猜测和想法吗?
发布于 2012-04-18 08:16:18
您应该使用Windows服务( Visual Studio中的一种Windows应用程序):
Walkthrough: Creating a Windows Service Application in the Component Designer
如果您在控制面板中配置它们,它们将在操作系统启动时启动,即使没有用户登录也是如此。同样必要的是,您使用一个帐户启动服务,该帐户具有访问必须读/写的文件的权限。您可以专门为此创建一个帐户。
Windows service (这解释了如何做上一段中的事情)
绝对有必要的是捕获所有异常,因为一个简单的未处理的异常将突然停止服务。
您可以使用多种方法对作业进行排队,但我建议您使用像数据库表这样简单的方法。此表可以包含定义作业所需的列,也可以包含将进程标记为pending/started/succesfullyFinished/finishedWithEroor的列,以及您查找到的所有相关额外信息(开始和结束时间、处理计算机等)。您应该使用事务保护获取下一个挂起作业的操作,并将其设置为由服务器启动,以避免服务器之间的冲突。
你不应该做一个复杂的负载平衡过程。如果确实需要,可以将线程优先级设置为较低的级别,这样就不会减慢其他进程的速度。
https://stackoverflow.com/questions/10200175
复制相似问题