È Asincrono di Messaggi (In particolare pub/sub stile di messaggistica) vitale, come un servizio di dominio architettura o solo in una SOA focalizzato l'ambiente?

StackOverflow https://stackoverflow.com/questions/72895

  •  09-06-2019
  •  | 
  •  

Domanda

Io sono stato alla ricerca di messaggistica asincrona, e mi piace il modo in cui è elegantemente si occupa di alcuni problemi all'interno di determinati domini e come fa i concetti di dominio più esplicito.Ma è un valido motivo per generale domain-driven development (almeno in cui il servizio/applicazione/controller di livello), o è il design overhead, in modo che dovrebbe essere limitato a SOA scenari di base, come remoto e servizi di elaborazione distribuita?

È stato utile?

Soluzione

Bella domanda :).Il problema principale con la messaggistica asincrona è che quando la gente a utilizzare procedurali o linguaggi object oriented, che lavorano in asincrono o di un evento a base di modalità è spesso molto difficile e complesso e difficile per il programmatore per leggere e capire.La logica di Business è spesso il modo più semplice se il suo costruito in una kinda modo in maniera sincrona - richiamo di metodi e di ottenere risultati immediatamente ecc :).

La mia regola è, in generale, provare a utilizzare più semplice sincrono modelli di programmazione a livello micro per la logica di business;quindi utilizzare asincronia e SEDA a livello macro.

Per esempio la presentazione di un ordine di acquisto potrebbe semplicemente scrivere un messaggio in una coda di messaggi;ma l'elaborazione dell'ordine di acquisto potrebbe richiedere 10 diversi passaggi tutti di essere asincrona e parallelo ad alte prestazioni, sistema distribuito con molti concorrenti processi e thread di elaborazione delle singole fasi in parallelo.In modo che la macro a livello di cablaggio è basato su un SEDA tipo di approccio - ma a livello micro il codice per i singoli 10 passi potrebbe essere scritti per lo più in sincrono stile di programmazione.

Altri suggerimenti

Come molti di architettura e design di domande, la risposta è "dipende".

Nella mia esperienza, la forza di messaggistica asincrona, è stato l'accoppiamento porta ad un disegno.Il giunto può essere in:

  • Il tempo - le Richieste possono essere gestiti in modo asincrono, aiutando la scalabilità complessiva.
  • Spazio - Come fai notare, consentendo di elaborazione distribuita in modo più efficiente rispetto a molti sincrono disegni.
  • Tecnologia - i Messaggi e le code sono un modo per colmare la tecnologia differenze.

Ricordate che i messaggi e le code sono un'astrazione che può avere una varietà di implementazioni.Non è necessariamente bisogno di utilizzare un JMS-compatibile, transazionale, ad alte prestazioni di messaggistica quadro.Implementato correttamente, una tabella di un database relazionale in grado di agire come una coda con le righe come messaggi.Ho visto entrambi gli approcci utilizzati di grande effetto.

Sono d'accordo con @BradS troppo BTW

BTW ecco un modo di nascondere il middleware dalla vostra logica di business mentre ancora ottenere i benefici di accoppiamento & SEDA - pur essendo in grado di passare facilmente tra le diverse tecnologie middleware - in memoria SEDA a JMS per AMQP per JavaSpaces di database, file o FTP ecc

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