nServiceBus vs Mass Transit vs Rhino Service Bus vs inne?

104

Po prostu robię kilka szybkich skoków w możliwym użyciu systemu przesyłania wiadomości do przetwarzania plików, które są w ładnie oddzielonym systemie przepływu pracy.

Jakie są zalety i wady, które ludzie znaleźli przy korzystaniu z każdego z powyższych frameworków? Jakie są zalety korzystania z nich w porównaniu z ręcznie zwijanym systemem usługi MSMQ z powiązaniami WCF i / lub rozwiązaniami innymi niż MSMQ?

mwjackson
źródło

Odpowiedzi:

71

Zalecałbym trzymanie się z dala od ręcznie rozwijanych rozwiązań, ponieważ jest kilka trudnych rzeczy, które należy zrobić dobrze - na przykład sposób obsługi transakcji, jak wyjątki powodują wycofywanie zmian, jak zatrzymać ciągłe wycofywanie (zatrute wiadomości), jak zintegrować się z długotrwałymi przepływami pracy, aby wyrównać granice zarządzania stanem i nie tylko.

Prawdopodobnie będziesz potrzebować jakiejś trwałej / transakcyjnej infrastruktury komunikacyjnej, więc nie korzystasz z MSMQ, pozostawiając Service Broker na platformie Microsoft lub inną alternatywę, taką jak ActiveMQ. Usługa MSMQ ma tę zaletę, że jest już zainstalowana na wszystkich komputerach z systemem Windows, w przeciwieństwie do Service Brokera, który nie jest.

Jeśli chodzi o wybór między NServiceBus, Mass Transit i Rhino Service Bus - ta odpowiedź Stackoverflow porównująca NServiceBus z MassTransit byłaby dobrym miejscem do rozpoczęcia.

W naszej wersji 3.1 wprowadzamy NSB Studio - zestaw zintegrowanych narzędzi do modelowania programu Visual Studio, które umożliwiają modelowanie systemu na wyższym poziomie abstrakcji, a duża część konfiguracji i inicjalizacji NServiceBus jest wykonywana automatycznie. Powiedziałbym, że to naprawdę przechyla szalę na korzyść NServiceBus.

Mam nadzieję, że to pomoże.

Zastrzeżenie: jestem autorem NServiceBus.

Udi Dahan
źródło
25
Rhino Service Bus jest bardzo skoncentrowane na zamku. Jeśli nie znasz lub nie czujesz się komfortowo z Castle jako podstawową częścią architektury swojej aplikacji, możesz mieć z tym pewne trudności. NServiceBus i Mass Transit lub bardziej niezależny od kontenera. NServiceBus jest dostarczany z „serwerem aplikacji”, który obsługuje hosting Twojego kodu, a także zmianę aktywnych implementacji infrastruktury (takich jak in-memory, MSMQ i DB) podczas przechodzenia systemu z trybu deweloperskiego na testowy do produkcyjnego. Jest również wyposażony w funkcje testowania jednostkowego dla logiki obsługi wiadomości i długotrwałych procesów. Nie wierzę, że MassTransit je ma.
Udi Dahan
35
Prawdopodobnie warto zauważyć, że Udi jest AUTOREM NServiceBus, więc jego opinia może być tutaj nieco stronnicza. :) Powiedziawszy to, całkowicie się zgadzam i byłbym zwolennikiem korzystania z NServiceBus z tych samych powodów, co on.
skb
8
@skb: zgodził się! Udi, odpowiadając na pytania dotyczące usługi nservicebus, naprawdę powinieneś zrzec się odpowiedzialności, szczególnie takie jak to!
andy
14
Wciąż przyzwyczajam się do tego, że ludzie odkrywają teraz NServiceBus, którzy nie wiedzą, że go stworzyłem
Udi Dahan
5
@UdiDahan: W jaki sposób nServiceBus jest „open source”? Publikowanie kodu źródłowego bez licencji na jego użycie nie wpływa na ducha otwartego oprogramowania, jakim jest współdzielenie. W pełni popieram Twoje prawo do zarabiania na życie ze sprzedaży oprogramowania (robię to samo), ale myślę, że byłoby znacznie dokładniej, gdybyś nie reklamował tego rozwiązania (post 2.0) jako open source.
Eric J.
52

NServiceBus to dobry produkt, ale uważaj na problemy licencyjne. Ma tendencję do zmiany polityki licencyjnej zgodnie z życzeniem autorów. Spójrz na przykład na informacje o starej licencji.

Może się zdarzyć, że w trakcie opracowywania projektu okaże się, że za NServiceBus trzeba zapłacić dużo pieniędzy.

Również darmowa wersja ma ograniczenia wydajności.

MassTransit jest całkowicie darmowym oprogramowaniem typu open source, nie ma ograniczeń i jest objęty licencją Apache 2.0.

Nie korzystałem z Rhino Service Bus .

Alex Burtsev
źródło
1
W rzeczywistości dostarczymy nową licencję z wersją 3.1, która pozwoli na uruchomienie go na wielu komputerach za darmo (chociaż przy niższych poziomach przepustowości).
Udi Dahan
11
MassTransit to Twój człowiek. Jest wolne; brak ograniczeń licencyjnych. Jeśli możesz obejść się bez projektanta przepływu i możesz samodzielnie toczyć własne, nie możesz tego pokonać. Może również znajdować się na szczycie RabbitMQ, a usługa MSMQ ma wtyczki społeczności Azure. MassTranit + RabbitMQ udowodnił, że jest doskonałym, stabilnym środowiskiem i bardzo szybko umożliwia uruchomienie klientów / producentów.
Bigtoe
3
Weź również pod uwagę EasyNetQ (proste opakowanie wokół rabbitMQ) Zaskoczony UDI nie ma większego znaczenia w dyskusjach z sugestiami 4 dobre alternatywy 2 nServiceBus? Co miałem na myśli. pomagać ludziom na wczesnych etapach komunikacji. Jest wiele dobrych prostych (darmowych) sposobów 2 na rozpoczęcie; nie ma znaczenia, czego używasz, o ile jest to łatwe i idealnie bezpłatne; (darmowa gra i darmowa implementacja, a także możliwość zmiany później) Kiedy będziesz się rozwijać, opracujesz własną listę problemów; w tym momencie bardziej dojrzałe produkty będą łatwą decyzją, z prostym uzasadnieniem kosztów, np. nservicebus.
kod śnieżny
Począwszy od MassTransit 4.0 MSMQ nie jest już obsługiwany ( masstransit-project.com/MassTransit )
MyGGaN
25

Aktualizacja stanu Rhino vs NServicebus:

http://www.infoq.com/news/2012/04/nservicebus3-0

InfoQ to Ayende: Wcześniej sam napisałeś magistralę usług dla .NET, a mianowicie magistralę usług Rhino. Czy użytkownicy Rhino Service Bus powinni teraz ponownie rozważyć i przenieść się do NServiceBus?

Ayende: Zbudowałem Rhino Service Bus około 2008 roku. Zbudowałem go głównie dlatego, że nie byłem zadowolony ze stanu innych autobusów serwisowych w tamtym czasie. Budując mój autobus usługowy miałem różne obawy i kierunek, ale to było 4 lata temu. Myślę, że w tamtym czasie NServiceBus poczynił wielkie postępy, stając się łatwiejszym w użyciu produktem i mając znacznie lepszą historię rozwoju po wyjęciu z pudełka. Gdybym dzisiaj zaczynał od autobusów serwisowych, mocno wątpię, czy zbudowałbym własne.

Ciprian Teiosanu
źródło
9

potencjalną wadą czegokolwiek opartego na MSMQ jest ograniczenie maksymalnego rozmiaru wiadomości. IIRC to około 4 MB, na które łatwo możesz się natknąć, jeśli masz do czynienia z dużymi plikami i przechowujesz zawartość pliku w wiadomości.

quick_dry
źródło
7
Co ciekawe, większość kolejek w chmurze nie obsługuje nawet ładunków o wielkości 100 KB, więc jest to coś, co będzie musiało być brane pod uwagę przez wiele aplikacji w przyszłości.
Udi Dahan
32
We wzorcach integracji przedsiębiorstwa (Woolf, Hohpe) wzorzec sprawdzania oświadczeń w szczególności rozwiązuje ten problem. Odniesienie do dużego ładunku jest przechowywane tylko w wiadomości, dzięki czemu wiadomość jest niewielka. Duże rozmiary wiadomości mogą siać spustoszenie w przepustowości systemu przesyłania wiadomości.
Chris Patterson
4
Nie jest to problem z NServiceBus, ponieważ mają koncepcję magistrali danych, która w przejrzysty sposób obchodzi ograniczenia rozmiaru.
Khalid Abuhakmeh