【问题标题】:Using NServiceBus with Asp.Net MVC 2在 Asp.Net MVC 2 中使用 NServiceBus
【发布时间】:2010-09-08 14:17:58
【问题描述】:

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

【问题讨论】:

  • 您的具体用例是什么?您能否提供更多有关您要完成的工作的详细信息,这样我就不必猜测了?

标签: c# asp.net-mvc-2 nservicebus


【解决方案1】:

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

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

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

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

如果您仍想使用 NSB 进行请求/响应,您将不得不为此工作 :) 使用消息处理程序来更新您的 MVC 应用程序中的某些缓存的响应。有了这些,您就可以进行一些 ajax 风格的轮询来确定数据何时到达。

希望这会有所帮助!

【讨论】:

  • +1 我试图理解为什么我需要 NServiceBus 来同步 req/resp(正如你所说,它并不是一种同步 req/resp 技术),我发现你的回答非常有用跨度>
【解决方案2】:

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

var sync = Bus.Send<SomeMessage>(/*data*/)
    .Register((AsyncCallback)delegate(IAsyncResult ar) {
        var result = ar.AsyncState as CompletionResult;

        // do something with result.Messages
    },
    null
);

sync.AsyncWaitHandle.WaitOne(/*timeout*/);

【讨论】:

    【解决方案3】:

    如果这是一个新建项目,我强烈建议您考虑使用命令查询分离模式,它可以帮助您在逻辑上分离与业务域(命令)中的更改状态相关的关注点和仅充当状态描述机制的查询。然后可以使用 WCF 在 NServiceBus 和查询中实现命令。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-10-04
      相关资源
      最近更新 更多