Korzystanie z NServiceBus z Asp.Net MVC 2

Czy jest sposób na użycie NServiceBus z Asp.Net MVC 2? Chcę wysłać zapytanie z Asp.Net aplikacja MVC2 do usługi, która obsługuje wiadomość i odpowiada Komunikatem odpowiedzi. czy jest jakiś sposób, aby to zrobić wyraźnie?

Author: Peter Mueller, 2010-09-08

3 answers

Jeśli naprawdę chcesz to zrobić, oto jak to zrobić:

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*/);
 14
Author: Udi Dahan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2014-04-15 07:42:48

Istnieje powód, dla którego NServiceBus obsługuje tylko rejestrowanie oddzwaniania dla kodów statusu i wejść. Powodem jest to, że nie powinieneś używać NServiceBus do komunikacji w stylu Sync request/response, te scenariusze najlepiej rozwiązać z frameworkami takimi jak Wcf, NNibernate, EF, Ado.net itd.

Powinieneś spojrzeć na używaj tylko NSB dla asynchronicznych części aplikacji, takich jak wysyłanie "poleceń" do usług zaplecza do przetwarzania.

Szczegółowe wyjaśnienie można znaleźć tutaj:

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

Jeśli nadal chcesz wykonać request/response z NSB, będziesz musiał na to pracować :) używając messagehandler do odpowiedzi, która aktualizuje część pamięci podręcznej w aplikacji MVC. Dzięki temu możesz wykonać ankietę w stylu ajax, aby określić, kiedy dane dotrą.

Mam nadzieję, że to pomoże!

 18
Author: Andreas Öhlund,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2011-08-15 23:55:25

Jeśli jest to projekt typu greenfield, zdecydowanie polecam pomyśleć o użyciu wzorca separacji zapytań komend, który pomoże Ci logicznie oddzielić obawy dotyczące tego stanu zmiany w domenie biznesowej (polecenia) od zapytań, które działają tylko jako mechanizm opisu stanu. Następnie polecenia mogą być zaimplementowane w NServiceBus i zapytania np. za pomocą WCF.

 0
Author: mgamer,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2010-09-09 07:42:08