2013-09-30 16 views
33

Mi piacerebbe fare una scelta informata verso una semplice architettura di pubblicazione/sottoscrizione.Cosa aggiunge il bus di servizio di Windows a MSMQ?

Quindi mi chiedo: cosa aggiunge il bus di servizio che MSMQ non può fare?
Quali sono gli svantaggi del bus di servizio?

Thx per illuminarmi!

+1

+1, domanda interessante. Non so molto su Windows Service Bus, mi piacerebbe vedere un confronto dettagliato con MSMQ. Ho trovato questo (vedi i commenti sotto l'articolo): http://shanthuk.com/2012/11/05/windows-service-bus-vs-msmq/ Per quello che vale, ho usato con successo MSMQ nelle mie architetture molte volte e sicuramente lo consiglio: leggero, robusto, transazionale. Vedi http://stackoverflow.com/a/9077925/870604 – ken2k

+0

Solo per aggiungere (dato che viene spesso trascurato), se si sta utilizzando Sql Server, considerare anche Service Broker, che è un sistema di messaggistica all'interno dell'infrastruttura del database. – Rikalous

+0

Vi consiglio di utilizzare NServiceBus http://nservicebus.com/CodeFirstGettingStarted.aspx – wudzik

risposta

19

La principale differenza funzionale è il bus di servizio che fornisce supporto immediato per la semantica di scambio di messaggi come l'instradamento basato su argomenti tramite pubblicazione-sottoscrizione.

MSMQ d'altro canto è un sistema di accodamento store-and-forward leggero, che supporta la messaggistica unidirezionale point-to-point.

Service Bus:

  1. dipende da SQL Server, e
  2. è un broker. This may be considered a drawback.

Se siete alla ricerca di quadri pub-sub poi una popolare al momento (in modalità libera filettata singola) è NServiceBus, che si trova sulla cima di MSMQ, anche se ha i mezzi di swap-grado.

+1

Grazie per la risposta che è utile e documentata con i collegamenti. +1 per la risposta e il bonus di reputazione bounty è per te :) – ken2k

+1

@ ken2k molto gentile da parte tua ... ad essere sincero non mi aspettavo la munificenza e sono sorpreso che non ci fossero risposte migliori delle mie. Questo argomento merita una discussione migliore, credo. –

+0

Grazie per il collegamento alla pagina bus-and-broker-pubsub-differenze - è stato informativo. – eddiewould

8

Pro

  • Service Bus consente di pubblicare su TCP e HTTP che è fresco, e ti dà una maggiore disaccoppiamento.
  • Service Bus è un database SQL in modo che il Disaster Recovery sia SEMPLICE più semplice e molto più economico da implementare.

Contro

  • Service Bus è centralizzato, ed è federata MSMQ, quindi potenzialmente più scalabile. Sebbene sia possibile ridimensionare con più nodi in WSB.
  • Prima di poter pubblicare è necessaria una connessione dal vivo al bus centrale. Quindi MSMQ essendo federato (su ogni macchina) lo rende più disponibile per i client.

Tuttavia, le persone utilizzano MSMQ come un negozio locale con il bus di servizio, quindi pubblica localmente, quindi trasferiscilo sul bus quando è disponibile una connessione.

Attualmente stiamo avendo una buona esperienza con Service Bus al posto di MSMQ.

+0

puoi descrivere l'ultimo scenario un po 'di più? usando MSMQ come negozio locale con SB? Ciò significa che si spinge sempre il messaggio del cliente nelle code MSMQ, e quindi in che modo SB lo fa? –

+1

Il server Web ha installato msmq come il server Sb. Il sito del cliente implementa una politica di riesecuzione Sb quando inizialmente tenta di pubblicare direttamente su Sb. Se questi errori non riescono, inviare msg su msmq locale e utilizzare il meccanismo di Store and Forward integrato per consegnarlo a msmq sul server Sb (quando diventa disponibile). Avere un servizio Windows sul server SBB che carica messaggi msmq in code SB. In alternativa, aggiungere altri nodi SB nella farm per maggiore disponibilità. – jonho

Problemi correlati