2011-02-26 74 views
2

我正在寻找关于如何最好地拥有连续运行的处理引擎来处理作业队列的建议。连续处理

基本上,外部客户可以添加作业队列(通过.NET或WCF调用)。 这需要快速返回并且会经常被调用,所以它只是接收请求并将其添加到队列中。

处理引擎应该是连续运行以及基于一堆BIZ逻辑顺序处理队列(没有被直接调用)的单个过程。

我们如何才能最好地创建这个连续运行的过程?

  • 是否有可能在asp.net中稳定地执行此操作?
  • 将它作为Windows Service托管的WCF执行此操作会更好吗?
  • 其他建议或方法来完成这个?

感谢您阅读此,我感谢您的帮助和建议

注:

我一直在使用MSMQ来传递数据。 是否有无论如何,您可以自动调用一个进程接收邮件运行(或MSMQ队列中有消息(我不太了解MSMQ))。

例如,客户机A发送MSMQ消息经由队列Q. Q客户端B是空的。客户B现在在问:

如何调用处理此方法的消息?如何托管接收消息的客户端?

回答

1

我认为MSMQ就是您正在寻找的东西。其重要任务之一是确保可靠的交付。在.Net中使用它很容易,你最喜欢的就是它有一个WCF绑定。

+0

我一直在使用MSMQ来传递数据。有无论如何,你可以自动调用一个进程接收邮件运行(或MSMQ队列中有消息(我不太了解MSMQ))。 例如,客户端A通过队列Q向客户端B发送MSMQ消息.Q为空。客户B现在在Q中有一条消息。我如何调用一个方法来处理这个? 我一直在遇到的问题是如何处理队列中的项目?你需要一个连续的处理引擎来处理这个队列,或者它是以某种方式构建的吗? 你有什么好的链接吗? – Summit 2011-02-26 20:33:05

+0

您不需要轮询WCF中的队列。 Net.msmq监听器会为你做到这一点。 – Serguzest 2011-02-26 21:59:13

+0

看看[this](http://www.codeproject.com/KB/WCF/WCFMSMQ.aspx),[this](http://blogs.msdn.com/b/tomholl/archive/2008/07/ 12/msmq-wcf-and-iis-getting-them-to-play-nice-part-1.aspx)and [that](http://msdn.microsoft.com/zh-cn/library/ms752246.aspx )[我建议这是为了熟悉相关术语](http://msdn.microsoft.com/en-us/magazine/cc163357.aspx) – Serguzest 2011-02-26 22:11:00

3

将处理队列的Windows服务是执行此操作的经典方法。它具有许多优点,包括重启时启动,良好的管理脚本(WMI)功能,因此它也是系统管理员的首选。

保持它与WCF服务分离 - 您应该使用它将作业放入队列中。

+0

+1正如我所做的那样;) – jgauffin 2011-02-26 20:04:57

2

是否有可能在asp.net稳定地做到这一点?

是的,这是可能的。但是,如果您传递了大量数据,则下面的选项可能会更好,因为您有更多的通信渠道选项。

将它作为Windows服务托管的WCF做得更好吗?

这可能是最好的选择。这将使您可以选择使用更高性能的通信通道(以帮助您“多次请求”的吞吐量),良好的控制等。它的开销也低得多,因为您不需要设置IIS以便运行if你自己主持。

+0

这非常有帮助。我们没有传递太多的数据,但会有很多请求。出于好奇,你怎么能在.net中稳定地做到这一点? – Summit 2011-02-26 20:40:29

+0

@Summit:WCF具有许多稳定性和可靠性的内置功能。只要你妥善处理异常,这往往是非常稳定的。 – 2011-02-26 20:44:39

+0

对不起,我刚刚意识到我的问题还不清楚,我最初的意思是你可以在asp.net中稳定地做到这一点:)我只是意识到我把.net而不是asp.net。感谢您的帮助 – Summit 2011-02-26 20:56:36