Co to jest Servicebus i kiedy go potrzebuję?

101

Słyszałem rozmowę o NServiceBus , ale tak naprawdę nie rozumiałem, co to jest. Twierdzą, że są „najpopularniejszą magistralą usług typu open source dla domeny .net”.

Więc; co to jest „autobus serwisowy” i kiedy go potrzebuję?

stiank81
źródło
Jestem naprawdę spóźniony na imprezę, nie opublikuję tego jako odpowiedzi, ponieważ to nie jest takie, ale w skrócie, jeśli nie wiesz, dlaczego go potrzebujesz, to prawdopodobnie nie ... rozwiązuje to konkretny problem, którego prawdopodobnie nie masz przy łączeniu aplikacji i udostępnianiu swojej firmie scentralizowanego interfejsu API.
Wojna
9
@Wardy Nie zgodziłbym się z twoim stwierdzeniem. Fakt, że czegoś nie rozumiesz lub nie wiesz, co to jest, nie oznacza, że ​​nie pomogłoby ci to wiedzieć
Cristian Toma
To nie była wymówka dla ignorancji, ale bardziej wskazanie, że autobus serwisowy to termin często używany, gdy napotkasz problem, który rozwiązuje, więc albo będziesz go potrzebować, albo nie, i dlatego nigdy nie będziesz musiał się o niego martwić to.
Wojna
Chciałbym dodać to jako edit ale to zasadniczo zmienić pytanie ... NServiceBus jest obecnie znany jako „konkretna usługa Platform” i można je znaleźć w particular.net (czyli tam, gdzie NServiceBus.com przekierowuje do teraz tak).
Dan Atkinson
Jeśli nie znasz nazwy lub koncepcji rzeczy, która już istnieje, prawdopodobnie napiszesz własną. Dlatego dobrze o nich wiedzieć, aby móc z nich korzystać (jeśli trzeba)
noelicus

Odpowiedzi:

80

Możesz myśleć o magistrali usług jako o Ethernecie SOA.

Przede wszystkim wprowadza język identyfikowania rzeczy, na przykład adres IP w sieci Ethernet. To imię nie jest czymś z natury fizycznym.

Następnie w każdym węźle występuje coś fizycznego, na przykład kolejka w przypadku magistrali do obsługi komunikacji częściowo połączonej lub karta Ethernet w metaforze.

Poza fizyczną częścią komunikacji istnieje również część „protokołu”, taka jak stos OSI dla sieci Ethernet. W przypadku magistrali są to biblioteki klienta używane przez kod aplikacji.

Ostatecznie magistralę usług można postrzegać jako zapewniającą kolejny wyższy poziom abstrakcji przy tworzeniu systemów rozproszonych. Można go również używać do komunikacji klient-serwer, aby zapewnić trwałe jednokierunkowe przesyłanie wiadomości, a także do wysyłania powiadomień z powrotem do klienta.

W szczególności NServiceBus jest dość lekki i łatwy w użyciu, gdy pogodzisz się z jego technologią kolejkowania - do wyboru RabbitMQ, MSMQ, zwykłe tabele SQL, Amazon SQS, kolejki magazynu Azure i magistrala usług Azure.

Udi Dahan
źródło
Dzięki! Myślę, że mam teraz duży obraz! Właściwie zadawałem to pytanie, aby być trochę przygotowanym na sesję, którą masz dziś wieczorem, ale nie wygląda na to, żebym to zrobił ...
stiank81
12

Zapoznaj się z artykułem w Wikipedii dotyczącym usługi Enterprise Service Bus .

Usługa Service Bus działa jako kolejna warstwa abstrakcji w niekończącym się dążeniu do wdrożenia dobrej architektury zorientowanej na usługi. Magistrala usług może obsłużyć niektóre ciężkie obciążenia widoczne w dobrej architekturze zorientowanej na usługi, takie jak przesyłanie wiadomości, routing i koordynacja usług.

Jeśli nie jesteś pewien, dlaczego chcesz czegoś takiego, proponuję przeczytać o tym, co składa się na dobrą architekturę zorientowaną na usługi. Książką, która naprawdę otworzyła mi oczy i udowodniła różnicę między posiadaniem usług internetowych a prawdziwą architekturą zorientowaną na usługi, była Architektura zorientowana na usługi Thomasa Erla : koncepcje, technologia i projekt

Justin Niessner
źródło
Czy mogę go używać do komunikacji między aplikacją kliencką a serwerem? To znaczy, gdzie serwer jest wewnętrzny.
stiank81
Mógłbyś. Można go również używać do komunikacji między różnymi usługami, różnymi wersjami różnych usług itp. (W tym w sytuacjach, gdy usługi używają różnych protokołów).
Justin Niessner
11

Termin ten został wprowadzony w SOA, który jest w pewnym sensie następcą (modne słowo) EAI .

Kiedy to potrzebujesz? To dobre pytanie. To wiąże się z dużą złożonością.

Praktyczna reguła mogłaby działać, jeśli rozwiązuje więcej problemów niż powoduje.

Mówiąc poważnie, jeśli masz heterogeniczne środowisko i chcesz dopasować (różne) aplikacje (przy użyciu różnych technologii) do procesów biznesowych. Wtedy pomocne może być użycie BPEL (ale wprowadza to problemy z migracją) do orkiestracji i choreografii

EDYCJA: To, czego nie ma na Wikipedii, to praktyka: ESB może dostosowywać się za pomocą specjalnych złączy, starych aplikacji terminalowych do użytku z Corba lub Java Enterprise, co oznacza interoperacyjność. Wadą jest ponad 100 „standardów” związanych z SOAP, które nie współpracują bez ogromnego wysiłku.

Zdecydowanie potrzebujesz go, jeśli musisz połączyć systemy IT w ciągu sześciu miesięcy po połączeniu 2 dużych firm ubezpieczeniowych.

sztaplarka
źródło
A więc - w mojej aplikacji komputerowej, która ma „prostą” komunikację ze stroną serwera, nie ma potrzeby rozbudowy z Service Bus? Czy może mi pomóc zaimplementować model wypychania z serwera? A może w tym scenariuszu będzie to więcej bólu niż korzyści?
stiank81
@ stiank81 przepraszam, przeczytałem (Enterprise) magistralę usługową i odpaliły synapsy. Sprawdziłem twój link do NServiceBus, celują w to samo, nie potrzebujesz czegoś takiego w aplikacji serwera klienta. Jest to koncepcja obejmująca wiele aplikacji zaangażowanych w jeden proces biznesowy. Czy to zadziała dla Ciebie? Jeśli rozwiązuje więcej problemów niż powoduje.
układacz
Używaj tego, „jeśli rozwiązuje więcej problemów niż powoduje” ... pokochaj to.
noelicus