0

我正在尝试用 C# 开发一个长期运行的数据馈送程序。数据处理将在多台服务器上运行,并且会出现一种长队列,一旦前一个文档的处理完成,数据将被输入数据处理软件。

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

您将使用哪种软件和方法来开发它?有什么建议、猜测和想法吗?

4

1 回答 1

0

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

演练:在组件设计器中创建 Windows 服务应用程序

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

Windows 服务(这解释了如何做上一段的事情)

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

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

你不应该做一个复杂的负载平衡过程。如果你真的需要,你可以将线程优先级设置为低级别,这样它就不会减慢其他进程。

于 2012-04-18T00:16:17.607 回答