Cos'è un servicebus e quando ne ho bisogno?


101

Ho sentito parlare di NServiceBus , ma non ho capito bene cosa sia. Affermano di essere "Il bus di servizio open source più popolare per .net".

Così; cos'è un "bus di servizio" e quando ne ho bisogno?


Sono davvero in ritardo alla festa, non lo posterò come risposta perché non è così, ma in breve, se non sai perché ne hai bisogno, è probabile che tu non lo faccia ... risolve uno specifico problema che probabilmente non hai per connettere le applicazioni e fornire alla tua azienda un'API centralizzata.
Guerra

9
@ Wardy non sarei d'accordo con la tua dichiarazione. Il fatto che tu non capisca qualcosa o non sappia cosa sia, non significa che non ti aiuterebbe a saperlo
Cristian Toma

Non era una scusa per ignoranza, ma più per sottolineare che l'autobus di servizio è un termine molto diffuso quando si incontra il tipo di problema che risolve, quindi o ne avrai bisogno o non lo farai e quindi non dovrai mai preoccuparti di esso.
Guerra

Lo aggiungerei come modifica, ma cambierebbe fondamentalmente la domanda ... NServiceBus è ora noto come "Particular Service Platform" e può essere trovato su particular.net (che è dove NServiceBus.com si reindirizza comunque).
Dan Atkinson

Se non conosci il nome o il concetto di una cosa che già esiste, è probabile che ne scriva uno proprio. Quindi è bene conoscerli in modo da poterli utilizzare (se necessario)
noelicus

Risposte:


80

Puoi pensare a un bus di servizio come l'Ethernet di SOA.

Prima di tutto, introduce un linguaggio di identificazione delle cose, come un indirizzo IP in Ethernet. Questo nome non è qualcosa di intrinsecamente fisico.

Successivamente, hai qualcosa di fisico coinvolto su ciascun nodo, come una coda nel caso di un bus per supportare la comunicazione semi-connessa o una scheda Ethernet nella metafora.

Oltre al solo fisico, c'è la parte "protocollo" della comunicazione, come lo stack OSI per Ethernet. Con il bus, queste sono le librerie client utilizzate dal codice dell'applicazione.

In definitiva, è possibile considerare un bus di servizio come fornire il livello successivo più elevato di astrazione per la creazione di sistemi distribuiti. È possibile utilizzarlo anche per la comunicazione client-server per fornire una messaggistica unidirezionale durevole e per il server per inviare le notifiche al client.

In particolare, scoprirai che NServiceBus è abbastanza leggero e facile da usare una volta che avrai fatto pace con l'uso della tecnologia di accodamento: a tua scelta RabbitMQ, MSMQ, tabelle SQL regolari, Amazon SQS, code di archiviazione di Azure e bus di servizio di Azure.


Grazie! Penso di avere il quadro generale ora! In realtà stavo facendo questa domanda per essere un po 'preparato per la sessione che stai tenendo stasera, ma non sembra che ce la farò ..
stiank81

12

Consulta l'articolo di Wikipedia per Enterprise Service Bus .

Un bus di servizio funge da ulteriore livello di astrazione nella ricerca senza fine di implementare una buona architettura orientata ai servizi. Il bus di servizio è in grado di gestire parte del lavoro pesante visto dietro una buona architettura orientata ai servizi come la messaggistica, il routing e il coordinamento dei servizi.

Se non sei sicuro del motivo per cui vorresti qualcosa del genere, ti suggerisco di leggere su ciò che rende una buona architettura orientata ai servizi. Il libro che mi ha davvero aperto gli occhi e ha dimostrato la differenza tra avere solo servizi Web e avere una vera architettura orientata ai servizi è stata l'architettura orientata ai servizi di Thomas Erl : concetti, tecnologia e design


Quindi posso usarlo per fare la comunicazione tra un'applicazione client desktop e un server? Dove il server è interno, cioè.
stiank81

Potresti. Puoi anche usarlo per la comunicazione tra diversi servizi, diverse versioni di diversi servizi, ecc. (Comprese le situazioni in cui i servizi utilizzano protocolli diversi).
Justin Niessner,

11

Questo termine è stato introdotto con SOA che è in un certo senso il successore (come parola d'ordine) di EAI .

Quando ne hai bisogno? Questa è una buona domanda. Viene fornito con molta complessità.

Una regola pratica potrebbe essere adottata se risolve più problemi di quanti ne causa.

Essere seri se si dispone di un ambiente eterogeneo e si desidera allineare applicazioni (diverse) (utilizzando tecnologie diverse) con i processi aziendali. Quindi potrebbe essere utile utilizzare BPEL (ma questo introduce problemi di migrazione) per orchestrazione e coreografia

EDIT: Ciò che non c'è su wikipedia, è pratica: un ESB può adattarsi utilizzando connettori speciali, vecchie applicazioni di terminale da utilizzare con Corba o Java Enterprise che si intende per interoperabilità. Lo svantaggio sono gli oltre 100 "standard" attorno a SOAP che non collaborano senza sforzi enormi.

Ne hai sicuramente bisogno se devi interconnettere i sistemi IT entro sei mesi dalla fusione di 2 grandi società di assicurazioni.


Quindi - nella mia applicazione desktop che ha una comunicazione "semplice" con un lato server non è necessario aumentare le dimensioni con un bus di servizio? Può aiutarmi a implementare un modello push dal server? O sarà più dolore che guadagno anche in questo scenario?
stiank81

@ stiank81 scusa ho letto bus di servizio (Enterprise) e sinapsi sparati. Ho controllato il tuo collegamento a NServiceBus hanno lo stesso obiettivo, non hai bisogno di qualcosa del genere in un'app server client. Si intende per concetto per più applicazioni coinvolte in un processo aziendale. Se funzionasse per te? Se risolve più problemi di quanti ne causi.
impilatore

Usalo "se risolve più problemi di quanti ne causa" ... amalo.
noelicus
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.