Transactions 在Microsoft Windows中排队和处理事务的选项?

Transactions 在Microsoft Windows中排队和处理事务的选项?,transactions,queue,msmq,Transactions,Queue,Msmq,我在microsoft world工作,需要创建一个事务处理Web服务。webservice将接收事务并将其提交到队列。第二个服务将把事务从队列中拉出并处理它们 我一直在考虑两种不同的方法:数据库表滚动我自己的队列和Microset队列MSMQ 人们对不同队列技术的方法或建议是否有利弊?这实际上不是一个发展问题,但我有一些意见 这取决于您的排队要求有多高,以及您的运营人员将拥有哪些运营经验和技能 如果您将部署到一个他们了解并热爱SQL Server,但没有管理MSMQ的经验的商店,那么使用SQL

我在microsoft world工作,需要创建一个事务处理Web服务。webservice将接收事务并将其提交到队列。第二个服务将把事务从队列中拉出并处理它们

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


人们对不同队列技术的方法或建议是否有利弊?

这实际上不是一个发展问题,但我有一些意见

这取决于您的排队要求有多高,以及您的运营人员将拥有哪些运营经验和技能

如果您将部署到一个他们了解并热爱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。我认为任何其他排队系统都不足以成为主流。p> 如果你不想稍微改变一下你的模型,你可能会对微软最近所做的WCF和WF的结合感兴趣。它允许WCF服务启动工作流WF。WF引擎本身支持排队、调度和钝化——本质上是有一个队列支持它,但作为程序员,您不会直接处理队列隐喻。相反,它是一个新的工作流隐喻。WCF和WF,像MSMQ一样,都是免费的,也就是说,除了许可Windows服务器的成本之外,没有额外的成本;并包含在Windows Server中。这种WCF+WF方法可能是一种更吸引人的模型,可用于新的开发,或者如果您更愿意利用WF设计器和工具的话。与MS应用程序平台的其余部分一样,WF支持事务访问,因此您可以提供fire and forget语义


祝你的决定好运。

这不是一个真正的发展问题,但我有一些意见

这取决于您的排队要求有多高,以及您的运营人员将拥有哪些运营经验和技能

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

您对队列的使用可能是结构化的,这样您就不必关心备份或减少数据丢失。在这种情况下,您不打算进行任何监视或维护。在这种情况下,使用MSMQ将意味着几乎零a 额外的操作成本,不管员工现有的技能如何,因为安装是一次性的,并且持续的维护是最小的

第二个标准是使用队列。如果队列被大量使用,比如说每台服务器每小时有数百万个事务,那么您可能需要为此提供专用的队列服务,而不是依赖现有数据库。如果您想利用各种MSMQ功能,如死信队列、优先级消息、触发、通讯组列表和关联ID,则建议使用MSMQ。另一方面,如果您的卷很小,比如说,每小时有数百个事务,并且您没有使用更高级的队列功能,那么您可以只使用SQL表顶部的队列外观。简单的豌豆

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

非标准包括:可编程性—两个选项都易于在各种语言中开发,事务量都可以处理小到大的量,数据格式都是灵活的w.r.t.数据内容和格式

在任何情况下,如果您已经在运行Windows Server,我都不建议使用替代队列。IBM在Websphere MQ nee MQSeries中有一个很好的版本,但它不像MSMQ那样是免费的。此外,除非您正在进行多平台队列网络,否则您可能不需要MQSeries。我认为任何其他排队系统都不足以成为主流。p> 如果你不想稍微改变一下你的模型,你可能会对微软最近所做的WCF和WF的结合感兴趣。它允许WCF服务启动工作流WF。WF引擎本身支持排队、调度和钝化——本质上是有一个队列支持它,但作为程序员,您不会直接处理队列隐喻。相反,它是一个新的工作流隐喻。WCF和WF,像MSMQ一样,都是免费的,也就是说,除了许可Windows服务器的成本之外,没有额外的成本;并包含在Windows Server中。这种WCF+WF方法可能是一种更吸引人的模型,可用于新的开发,或者如果您更愿意利用WF设计器和工具的话。与MS应用程序平台的其余部分一样,WF支持事务访问,因此您可以提供fire and forget语义

祝你的决定好运