2009-10-09 21 views
65

Abbiamo bisogno di un sistema di messaggistica/bus di servizio di architettura distribuita con la possibilità di pubblicare/sottoscrivere. Qualcuno ha qualche raccomandazione per un framework che possiamo usare per le applicazioni .net?. Raccomandazioni del servizio di rete?

+14

Tali domande sono molto costruttive. Questa domanda è in cima alla ricerca di Google ed è molto utile. Lo stesso con la mia domanda su UML http://stackoverflow.com/q/6877121/377133 –

+4

Questo non è costruttivo? Mi stai prendendo in giro. Dico che questa domanda è super costruttiva. Migliore risorsa per questo tipo di domanda. – kheya

+2

@kheya Questi tipi di domande sono state ritenute non costruttive per una miriade di motivi (potenziale per lo spam e quanto velocemente questi strumenti diventano obsoleti). Ecco una risposta su meta spiegare questo, e sono sicuro che ci sono più: http://meta.stackoverflow.com/a/251135/1195056 – krillgar

risposta

24

NServiceBus sta crescendo in popolarità. È anche open source. Ecco uno Hanselminutes episode con Scott Hanselman che parla con Udi Dahan di NServiceBus per aiutarlo. Dovresti assolutamente valutare di usarlo.

UPDATE: C'è anche un episodio di DNR TV che mostra cosa vuol dire costruire una soluzione NServiceBus da zero qui: http://www.dnrtv.com/default.aspx?showNum=199

+34

Anche se è open source, potresti voler controllare le loro licenze. Solo alcuni dei casi d'uso sono gratuiti.In altri casi potresti aver bisogno di una licenza commerciale che ha un costo. – Manfred

+3

Probabilmente vorrete evitare di scaricare sempre il codice sorgente nServiceBus, poiché il codice sorgente (dopo la versione 2.0) non è concesso con una licenza open source (almeno, non comune). Quindi, avendo il codice sorgente, potresti potenzialmente trovarti in un oscuro territorio legale. Se sei un piccolo negozio online, probabilmente non è un vero problema. Se sei un'azienda di Fortune 500 con tasche profonde, tuttavia, ... –

+0

Giusto per chiarire alcuni dei commenti, NServiceBus utilizza una licenza reciproca. In pratica, significa che devi aprire tutto ciò che usi NServiceBus con. Se questo non funziona per te, allora devi comprarlo. – Vaccano

2

Non v'è alcuna implementazione matura servizio di autobus a pila .NET finora. Microsoft ne sta attualmente sviluppando uno.

http://msdn.microsoft.com/en-us/library/windowsazure/jj193022(v=azure.10).aspx

Come opzione è possibile utilizzare uno dal mondo Java. Ad esempio, TIBCO - hanno client .NET abbastanza robusti disponibili, o OpenMQ.

Se non hai bisogno di un'ampia gamma di funzioni e sei pronto per sviluppare il tuo sistema, usa WCF per questo. I callback di WCF sono adatti a questo.

+15

Penso che stai confondendo ESB per Messaging. Tibco e OpenMQ sono code di messaggi. Forniscono semplicemente il meccanismo di trasporto. Niente di più. Informazioni su .NET Implementazioni del bus di servizio: siete più o meno a posto, anche se NServicebus sta arrivando molto vicino a un prodotto maturo e gli sforzi sembrano essere lì per farlo. E come qualcuno che crea in parte diverse soluzioni utilizzando WCF come un servicebus: No .. WCF non è adatto per questo. Pub/sub in WCF è una pita per non dire altro e richiederà un serio approfondimento in WCF e la sua architettura per scoprire solo che non è pensato per questo. – Noctris

+0

IMHO non è vero. Neuron ESB è stabile e maturo e basato sulla tecnologia Microsoft (.NET incluso WCF/MSMQ ecc.) – larsw

3

Ho trovato ActiveMQ integrato in Apache NMS per essere incredibilmente facile da capire, configurare e trasparente.

Ad esempio, ActiveMQ è dotato di un front-end Web che consente di utilizzare un browser Web per esaminare le code di messaggi e leggere, eliminare e persino creare messaggi. Quindi puoi facilmente iniziare a sviluppare e testare solo un lato della tua applicazione distribuita, e il debugging e il monitoraggio sono molto semplici.

+3

NServiceBus può essere eseguito su ActiveMQ (tra le altre code) a partire dalla versione 4.0, offrendo il meglio di entrambi i mondi. –

3

Attualmente sto lavorando su un bus di servizio basato su WCF open source. Puoi trovarlo qui: http://rockbus.codeplex.com/. Supporta sottoscrizioni dinamiche (@ run-time), repository di subcription (database), trasporti a innesto, routing basato sul contenuto basato su XPath, consegna transazionale su protocolli wcf, consegna roundrobin, valutazione di sottoscrizioni a innesto e altro. Dare un'occhiata!

2

Ho trovato Neuron ESB un'implementazione solida, anche se non l'ho ancora usato in rabbia.

5

Check out RabbitMQ. Il client .NET è completo, ed è abbastanza facile da usare. C'è un libro chiamato e RabbitMQ in Depth disponibile nelle edizioni di accesso anticipato.

+0

RabbitMQ non è solo una coda di messaggi open source? Non credo che di per sé sia ​​in realtà un quadro di autobus di servizio. – gabe

+0

Tecnicamente è un broker di messaggi. Se soddisfa i requisiti per un progetto, ti interessa come lo categorizzano le persone? – TrueWill

+2

Sapere che è più di un broker è utile grazie! non mi preoccupo dei termini, ma di cercare di avvolgere il mio cervello sulle differenze tra questi tecnici (dal momento che questo è un po 'la natura di questo q/a). Ho ricordato questo interessante post su alcune delle differenze tra broker e autobus: http://www.udidahan.com/2011/03/24/bus-and-broker-pubsub-differences/. – gabe