SOA in-process?

3

È possibile utilizzare DI / IoC per un SOA locale semplificato?

Ho letto su SOA (esempi: qui , qui e qui ) e sembra che inizialmente l'attenzione si concentri sull'interoperabilità e sulla distribuzione di compiti attraverso l'uso di formati di messaggio standard e protocolli di trasferimento (web- servizi ). Più tardi il punto cruciale è stato quello di ottenere un accoppiamento lento: per trovare i principi per partizionare la logica aziendale, gestire le dipendenze e come e quando condividere i dati tra le parti.

Questa è una descrizione corretta? Com'è collegato a DI / IoC? Per un sistema con requisiti di prestazioni bassi sarebbe una semplificazione usare DI come "broker di messaggi" e eventi asincroni per fare "pub / sub" e solo scomporre un servizio e passare attraverso un ESB o simili richiesti dalle integrazioni?

    
posta Grastveit 06.10.2011 - 11:54
fonte

1 risposta

2

SOA (in particolare la visione sostenuta da Udi Dahan) certamente condivide il suo scopo con DI: sistemi di disaccoppiamento. Tuttavia, sebbene lo scopo sia lo stesso, e alcuni dei meccanismi si somigliano in modo superficiale l'un l'altro (ad esempio programmando contro i contratti), il livello di granularità è diverso.

Il punto più importante in entrambi i sistemi è di essere in grado di variare sistemi separati indipendentemente l'uno dall'altro. Tuttavia, questa ambizione ha un impatto molto più profondo in SOA perché ogni sistema può essere implementato su piattaforme diverse e in esecuzione su hardware diverso.

Immagina un'architettura SOA "vera" implementata su una piattaforma uniforme (Java o .NET o simile). In questo caso, potresti ipotizzare di comprimere l'architettura ed eseguire un'installazione a box singolo utilizzando i broker di messaggi in memoria, ecc.

Tuttavia, non aspettarti il contrario. Se inizi a scrivere un'applicazione che utilizza la messaggistica asincrona e che sembrerebbe un'architettura SOA, non c'è alcuna garanzia che tu possa successivamente ridimensionarla.

Ci sono molte piccole insidie che si tendono a perdere fino a quando non si provano effettivamente. Un esempio è che i servizi condividono i dati, ma non la classe. Se non pensi molto a queste cose, è probabile che tu formuli alcune ipotesi implicite su come vengono trasmessi i messaggi.

    
risposta data 06.10.2011 - 13:26
fonte

Leggi altre domande sui tag