2012-04-17 42 views
0

我想在C#中开发一个长时间运行的数据馈送程序。数据处理将在多台服务器上运行,并且会有一种长时间运行的队列,一旦前一个文档的处理完成,数据将被送入数据处理软件。长时间运行的程序和数据处理

我该怎么做?它可能会处理分散到5个单独服务器中的10,000个文档,并且将使用服务器是否繁忙以及服务器已处理多少个文档来分发文档。通常的负载平衡标准。我可以编写一个Windows应用程序来持续监视服务器并相应地提供/发送数据。我应该使用WCF服务吗? Windows窗体应用程序? Windows消息队列还是应该构建自己的消息队列?数据馈送基本上会持续进行,因为每个单独的文档可能需要20-30分钟,并且有一万个文档。基本上我不希望饲养计划在任何情况下都会崩溃/停止。

您会使用哪种软件和方法来开发此功能?任何指针,猜测和想法?

回答

0

,您应该使用Windows服务(在Visual Studio中的一种FO Windows应用程序):

Walkthrough: Creating a Windows Service Application in the Component Designer

如果您在控制面板中配置它们就会每当操作系统启动时启动,即使没有用户登录。还需要使用有权访问必须读取/写入的文件的帐户来启动该服务。您可以专门为此创建一个帐户。

Windows service(这也解释了如何做前一段的事情)

这是绝对必要的是什么,你捕获所有异常,作为一个简单的未处理的异常会突然停止服务。

您可以使用多种方法对作业进行排队,但我建议您使用与数据库表一样简单的方法。该表可以具有定义作业所需的列,并且还可以包含一个列,用于将过程标记为待处理/已启动/成功完成/已完成对于所有额外的信息(开始和结束时间,处理计算机等) 。您应该使用事务来保护获取下一个待处理作业的操作,并将其设置为由服务器启动以避免服务器之间的冲突。

你不应该做一个复杂的负载平衡程序。如果您确实需要,可以将线程优先级设置为较低级别,以便它不会减慢其他进程。

相关问题