应用领域设计

时间:2013-04-24 08:00:57

标签: design-patterns

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

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

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

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

还有另外一件事,我在想什么是技术上我可以从网站控制基于控制台的应用程序的数量,让我说有50个工作坐在队列中我可以启动10个基于控制台的应用程序在50个工作而不是2个工作,所以这样就可以完成工作。

如果您需要更多信息,请与我们联系

提前致谢

1 个答案:

答案 0 :(得分:0)

我做了类似的事情如下。

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

  • file registrator task:获取新的xml文件并将其注册到数据库中
  • 批量加载器:为已注册的文件创建批处理
  • batch extracter:为新批次创建作业
  • 作业执行者:执行工作。

此Windows服务除了安排这些任务之外没有其他逻辑。作业执行程序任务甚至可以并行运行多次。

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

由于作业执行而执行的典型域逻辑在专用域服务中完成,从批量导入服务调用。

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