Domanda

Quali sono le motivazioni per l'utilizzo di un messaggio di base del sistema?

Sto vedendo un sacco su autobus del servizio come NServiceBus e Il Transito Di Massa e mi chiedo che cosa i vantaggi della metodologia di base sono.

È stato utile?

Soluzione

Ci sono diversi vantaggi di utilizzare il messaggio di sistemi basati su.

  1. Messaggi di forma ben definita tecnologia neutro interfaccia tra le applicazioni.
  2. Consente l'accoppiamento di applicazioni.
  3. Un sacco di opzioni per le prestazioni, ottimizzazione e la scalabilità:
    • Distribuire richiedente e del processo di servizio su hardware diverso
    • Richieste Multiple di condivisione singolo server
    • Richieste Multiple di condivisione più server
  4. I vari messaggi middlewares implementare il comune di messaggistica modelli in modo indipendente dall'applicazione.
    • Request/Reply
    • Fuoco e Dimenticare aggiornamenti offline
    • Di Pubblicazione/Sottoscrizione
  5. Molti dei prodotti middleware di gestire la trasformazione del messaggio (es.SWIFT per SWIFTXML).
  6. Molti dei prodotti middleware in grado di scomporre un unico grande richiesta in varie piccole richieste.
  7. Hanno quasi tutti il supporto di più piattaforme.

Per inciso i due leader di mercato in questo settore sono IBM Websphere MQ e relativi prodotti, e, TIBCO con le loro Enterprise Service Bus.

Altri suggerimenti

Il messaggio a base di architettura de-coppie produttori e consumatori di messaggi, sia nel tempo e nello spazio. Questo ha un sacco di vantaggi:

  • produttori e consumatori possono essere eseguiti su macchine diverse
  • produttori e consumatori possono essere eseguiti in tempi diversi.
  • produttori e consumatori possono funzionare su diverse piattaforme hardware / software (hanno solo bisogno di capire lo stesso protocollo di messaggio)
  • è facile coordinare più produttori / consumatori (ad esempio per i processi di calcolo intensivo che hanno bisogno di più macchine, come Dave Markle ha descritto)
  • maggiore stabilità quando i servizi sono temporaneamente unavailble (ad esempio quando si fa l'elaborazione degli ordini, utilizzando un sistema di messaggistica può contribuire ad evitare "cadere" ordini)

Si perde la maggior parte di questi benefici quando si fa comunicazione in stile RPC (vale a dire quando si blocca durante l'attesa per le risposte di servizio)

Un caso d'uso è quando si ha un pool di risorse che possono lavorare su un determinato elemento, e un elenco di lavoro che deve essere distribuito in modo scalabile.

Una volta ho avuto un progetto in cui ho dovuto fare l'integrazione mainframe con un numero di 3270 screen scraper (tutto lento). Potrei avere al massimo 10 di questi processi aperti su una casella alla volta. Ho avuto migliaia di conti a schermo-raschiare e aggiornamento, in modo da mettere il lavoro in una coda, e le mie macchine (ho avuto circa 3 di em) appena preso in mano gli elementi di lavoro al largo della coda di messaggi (MSMQ) e ha fatto il loro screen scraping, e che è stato. Ho potuto facilmente girare su una nuova macchina, o disattivare quelli vecchi senza interrompere il flusso di lavoro, così che era bello.

i vantaggi sono veramente basso per disaccoppiamento le parti dell'applicazione. Una volta che avete il bus impostato e vengono aggiunte le applicazioni, si può facilmente estendere la vostra applicazione con l'aggiunta di nuovi pezzi che si può garantire non influenzerà le altre parti. Il suo un ottimo modo di aggiungere continuamente ad un sistema nel tempo.

ad es. abbiamo un sistema come questo, ogni comando è implementato come una parte alla GUI complesso, se vogliamo aggiungere una nuova funzione, o modificare uno esistente, dobbiamo solo scrivere una nuova parte e aggiungere al sistema. Quando viene chiamato, non ha dipendenze sul resto. Significa che possiamo estendere la nostra applicazione molto facilmente. Inoltre, abbiamo un passaggio di messaggi tra i nodi sulla nostra rete - quando qualcosa viene cambiato in 1 computer, un messaggio viene inviato a tutti gli altri in modo che possano aggiornarsi. Abbiamo un centinaio di messaggi diversi per i diversi eventi, in modo da poter estendere il sistema facendo cadere un nuovo servizio in quanto reagisce ai messaggi appropriati.

architetture di messaggi in genere hanno le stesse caratteristiche come servizi Web, si hanno i servizi discreti si può chiamare, è possibile aggiungerne di nuovi facilmente.

(! E costoso)

Non pensate che il messaggio che passa architetture richiedono fantasia prodotti middleware però, Windows viene eseguito su un messaggio di architettura di passaggio - ogni WM_ * messaggio passato a una finestra è .. Beh, un messaggio, e penso che mostra il miglior esempio di architettura - non parte di un sistema ha bisogno di conoscere qualsiasi altra parte, è possibile estendere infinitamente come si può gestire tutti i controlli che vuoi in qualsiasi finestra di dialogo, ecc ecc

.

Lo scambio di messaggi è una favolosa architettura, anche se può essere più lento di accoppiamento strettamente l'applicazione insieme, che non è molto di un motivo per non usarlo al giorno d'oggi, soprattutto se si sta già utilizzando script o .net applicazioni.

Il sistema di segnalazione orientato sono generalmente buone per alcune classi di problemi di integrazione. Altre alternative stanno avendo un archivio condiviso dei dati (file o DB basato forse) per le applicazioni per comunicare con o applicazioni che integrano tramite RPC.

I vantaggi di messaggistica su questi modelli di integrazione sono che non si sta accoppiamento entrambe le applicazioni per lo stesso schema archivio dati e non si legando le applicazioni ad un punto a punto scenario di integrazione RPC (che diventa più complesso le più applicazioni sono coinvolti).

Ci sono anche i vantaggi della comunicazione asincrona (come e-mail vs. chat online) e il routing dei messaggi e possibilità di trasformazione.

I ha contribuito a sviluppare uno per un sistema che utilizza C # e Remoting, il cliente (un servizio o GUI) potrebbe inviare un messaggio completo con alcuni dati personalizzati e il destinatario (s) avrebbe ricevuto esso, sia quando hanno prossima connessi o immediatamente ). Potrebbero poi elaborare il messaggio (prendendo ownership di esso, nel caso dei servizi di bilanciamento del carico). E 'stato utilizzato anche per aggiornare GUI quando i processi in esecuzione lunghe avevano finito.

Il sistema di messaggistica in sé aveva condotte configurabili che trattati ogni messaggio, ecco alcuni esempi di alcune delle condutture che abbiamo sviluppato:

  • Storage (creato / salvato il messaggio al database)
  • Routing (elaborato in cui il messaggio deve essere inviato)
  • Sicurezza (funzionato se il cliente è stato permesso di riceverlo)
  • Elimina (funziona se il messaggio deve essere cancellato dal sistema, il che significa che i clienti devono essere notificati e il messaggio rimosso dal suo nascondiglio e battente bandiera nel DB).
  • TakeOwnership (si occupa di fare in modo solo un client in grado di modificare lo stato di un messaggio alla volta, come solo i messaggi che sono di proprietà può essere modificata)

Quindi, in risposta alla tua domanda, i sistemi di messaggistica sono un mezzo brillanti di invio di informazioni su quando non si conosce o si cura del cliente è chi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top