2013-04-24 65 views
0

我有一个设计级别的问题,我不知道如何解决这个问题,但基本上我想实现的是,我有一个基于控制台的应用程序,它执行基于输入作业的某些任务(这是一个XML文件,由执行作业的所有细节组成),还有一个基于Web的应用程序可创建作业。应用领域设计

目前,我们手动复制XML文件并通过传递XML文件作为参数来调用基于控制台的应用程序。

有无论如何,我可以设计一个应用程序,在基于Web的应用程序中创建的所有作业都被传递给队列。

可能有2个饥饿的基于控制台的应用程序等待作业排队等待(以循环方式),只要他们找到一个作业就会开始执行作业。

还有一件事,我在想什么有什么办法可以从技术上控制基于控制台的应用程序的数量,比如说我有50个职位坐在队列中,我可以启动10个基于控制台的应用程序为50个工作而不是2个工作,这样工作就可以完成。

请让我知道如果你需要任何更多信息,提前

回答

0

我不喜欢的东西如下

感谢。

我有一个Windows服务是一个orchestrator,这意味着它使用Quartz.NET来安排任务。有4种类型的任务被定期运行:

  • 文件registrator任务:拿起新的XML文件,并在数据库中注册他们
  • 一批装载机:创建一批已注册的文件
  • 批量提取器:创建新批作业
  • 作业执行者:执行作业。

此窗口服务除了调度这些任务没有其他逻辑。作业执行器任务甚至可以并行运行多次。

实际的逻辑是在从Windows服务中调用的(批量导入)WCF服务中。这样管理网站等其他应用程序就可以使用批量导入WCF服务,以便他们可以获取文件,批次,进度等列表,并允许对它们进行操作。

作为结果执行的典型域逻辑oj作业执行是在批处理导入服务中调用的专用域服务中完成的。

也可以设置属性来指示步骤应该是自动还是手动,批次是否是事务性的,等等。这种方式非常灵活,并且可以在出现问题时恢复原状,因为所有内容都保存在具有各种状态的数据库中。它也是可扩展的:您可以将所有内容放在多台机器上,平衡WCF服务并且平行执行作业。