开发者

Using NServiceBus with Asp.Net MVC 2

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?


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!


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


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.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜