【问题标题】:Application Domain Design应用领域设计
【发布时间】:2013-04-24 16:17:32
【问题描述】:

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

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

我是否可以设计一个应用程序,将基于 Web 的应用程序中创建的所有作业都传递到队列中。

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

还有一件事,我在想的是有什么方法可以在技术上控制网站上基于控制台的应用程序的数量,假设我有 50 个工作在排队,我可以启动 10 个基于控制台的应用程序来完成 50 个工作而不是 2 个工作,这样就可以完成工作。

如果您需要更多信息,请告诉我

提前致谢

【问题讨论】:

    标签: design-patterns


    【解决方案1】:

    我做了如下类似的事情。

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

    • 文件注册器任务:获取新的 xml 文件并将它们注册到数据库中
    • 批处理加载器:为注册文件创建批处理
    • 批次提取器:为新批次创建作业
    • 作业执行者:执行作业。

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

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-10-06
      • 2015-05-23
      • 2013-03-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多