【问题标题】:options for queuing and processing transactions in Microsoft Windows?在 Microsoft Windows 中排队和处理事务的选项?
【发布时间】:2011-05-02 15:19:39
【问题描述】:

我在微软世界工作,需要创建一个事务处理网络服务。 Web 服务将接收事务并将其提交到队列。第二个服务将从队列中拉出事务并处理它们。

我一直在考虑两种不同的方法:数据库表(滚动我自己的队列)和 microsot 队列 (MSMQ)。

人们对不同队列技术的方法或建议是否有优缺点?

【问题讨论】:

    标签: transactions queue msmq


    【解决方案1】:

    这不是一个真正的开发问题,但我确实有一些意见。

    这取决于您的排队要求有多先进,以及您的操作人员将具备哪些操作经验和技能。

    如果您将部署到他们知道并喜欢 SQL Server 的商店,但没有管理 MSMQ 的经验,那么使用 SQL 作为队列(本质上是向 SQL 添加一个额外的表)对他们来说很容易 - 基本上没有额外的运营成本。另一方面,使用 MSMQ 将要求员工接受培训、开发和验证新程序、新备份计划、新监控和管理工具等。反之亦然 - 在极少数情况下,商店对 MSMQ 有很好的经验,但对 SQL Server 的经验很少。在这种情况下,情况正好相反:使用 MSMQ。

    您对队列的使用可能是结构化的,因此您不关心备份或减少数据丢失。在这种情况下,您不打算进行任何监控或维护。在这种情况下,无论员工的现有技能如何,使用 MSMQ 将意味着几乎为零的额外运营成本,因为设置将是一次性的事情,并且持续维护很少。

    第二个标准是您对队列的使用。如果要大量使用队列,假设每个服务器每小时有数百万个事务,那么您可能需要为此提供专用队列服务,而不是捎带到现有数据库上。如果您想利用各种 MSMQ 功能,例如死信队列、优先级消息、触发、分发列表和相关 ID,那么建议使用 MSMQ。另一方面,如果您的交易量很低(例如,每小时数百个事务),并且您没有使用更高级的队列功能,那么您可以只在 SQL 表之上使用队列外观。十分简单。

    如何平衡这两个主要标准由您决定。

    非标准包括:可编程性(这两个选项都易于使用各种语言进行开发)、交易量(两者都可以处理小到大的交易量)、数据格式(两者都是灵活的 w.r.t. 数据内容和格式)。

    无论如何,如果您已经在运行 Windows Server,我不建议您使用备用队列。 IBM 在 Websphere MQ(nee MQSeries)中有一个很好的,但它不是免费的,就像 MSMQ 一样。此外,除非您在做多平台队列网络,否则您可能不需要 MQSeries。我不认为任何其他排队系统足够主流以供考虑。

    如果你不想稍微改变你的模型 - 你可能会对微软最近完成的 WCF 和 WF 的结合感兴趣。它允许 WCF 服务启动工作流 (WF)。 WF 引擎本身支持排队、调度和钝化——本质上是有一个队列支持它,但作为程序员,您不直接处理队列隐喻。相反,它是一个新的“工作流程”隐喻。 WCF 和 WF 和 MSMQ 一样,都是免费的(也就是说,除了 Windows Server 的许可费用之外,没有额外的费用);并包含在 Windows Server 中。这种 WCF+WF 方法可能更适合您用于新开发,或者如果您更喜欢利用 WF 设计器和工具。与 MS 应用平台的其他部分一样,WF 支持事务访问,因此您可以提供即发即弃语义。

    祝你的决定好运。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-09-15
      • 1970-01-01
      • 2019-02-22
      • 1970-01-01
      • 2012-09-28
      • 2016-05-26
      • 1970-01-01
      相关资源
      最近更新 更多