将NServiceBus与Asp.Net MVC 2一起使用

有没有办法在Asp.Net MVC 2中使用NServiceBus? 我想从Asp.Net MVC2应用程序向服务发送请求消息,该服务处理消息并回复响应消息。 有没有办法清楚地做到这一点?

如果你真的想这样做,请按以下步骤操作:

var sync = Bus.Send(/*data*/) .Register((AsyncCallback)delegate(IAsyncResult ar) { var result = ar.AsyncState as CompletionResult; // do something with result.Messages }, null ); sync.AsyncWaitHandle.WaitOne(/*timeout*/); 

NServiceBus仅支持为状态代码和整数注册回调,这是有原因的。 这个原因是你不应该使用NServiceBus进行同步请求/响应式通信,这些场景最好用Wcf,NNibernate,EF,Ado.net等框架来解决。

您应该只考虑将NSB用于应用程序的异步部分,例如将“命令”发送到后端服务以进行处理。

可以在这里找到深入的解释:

http://andreasohlund.net/2010/04/22/messaging-shouldnt-be-used-for-queries

如果您仍然希望使用NSB进行请求/响应,则必须使用它:)使用消息处理程序为您的响应更新MVC应用程序中的某些缓存。 有了它,您可以执行一些ajax样式轮询以确定数据何时到达。

希望这可以帮助!

如果这是一个绿地项目,我强烈建议考虑使用命令查询分离模式,它可以帮助您在逻辑上分离有关业务域(命令)中的更改状态的问题以及仅作为状态描述机制的查询。 然后,可以使用WCF在NServiceBus和Queries中实现命令。