Using NServiceBus with Asp.Net MVC 2

戏子无情 提交于 2019-12-20 09:24:25

问题


Is there a way to using NServiceBus with Asp.Net MVC 2? I want to send a request message from a Asp.Net MVC2 Application to a Service, which handle the message and reply with a response message. is there a way to do this clearly?


回答1:


If you really want to do this, here's how:

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*/);



回答2:


There is a reason that NServiceBus only supports registering callback for status codes and ints. That reason is that you shouldn't use NServiceBus for sync request/response style communications, those scenarios is best solved with frameworks like Wcf, NNibernate , EF, Ado.net etc.

You should look at only use NSB for async parts of your application like to send off "commands" to backend services for processing.

An in depth explanation can be found here:

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

If you still want to do request/response with NSB you'll have to work for it :) using a messagehandler for your response that updates some cache in your MVC app. With that in place you can do some ajax style polling to determine when the data arrives.

Hope this helps!




回答3:


If this is a greenfield project, I would strongly recommend thinking about using Command Query Separation pattern which would help you logically separate concerns regarding that change state in the business domain (command) and queries which acts only as state description mechanism. Then Commands can be implemented in NServiceBus and Queries using WCF for instance.



来源:https://stackoverflow.com/questions/3668648/using-nservicebus-with-asp-net-mvc-2

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!