Sto considerando un'architettura SOA per un set di servizi a supporto di un'azienda per la quale mi sto consultando, in precedenza abbiamo utilizzato l'integrazione del database in cui ogni applicazione individuava ciò di cui aveva bisogno da un database MS SQL condiviso e funzionava con esso ecc. Avevamo varie app che si integravano con il database dei mostri incluso l'accesso java, .net e microsoft, c'era integrità referenziale in quanto tutto era strettamente accoppiato.Stile SOA - Condivisione dei dati
Sono un po 'confuso su come supportare la condivisione dei dati tra servizi.
Consente di usufruire del Servizio prodotto che si trova sulla base di un database prodotto fornito dal grossista ogni mese. Costruiamo un modello di dominio e lo inseriamo nel database con Hibernate o quant'altro, per quanto riguarda l'impianto il prodotto è un grande oggetto grafico, date le informazioni fornite dal grossista sul prodotto.
Ora diciamo che il servizio di revisione, il servizio prezzi, il servizio di spedizione e il servizio stock si iscriveranno a ProductUpdated, ProductAdded, ProductDeleted. Il problema è che ogni servizio richiede solo una parte o alcune parti delle informazioni sul Prodotto. La spedizione potrebbe richiedere solo le dimensioni e il peso. Il prezzo potrebbe richiedere solo l'ID del prodotto, il costo all'ingrosso, lo sconto sul volume, il prezzo effettivo fino ad oggi. La revisione potrebbe richiedere l'ID del prodotto, il nome del prodotto, il produttore.
È prassi normale pubblicare solo l'intero prodotto (adatto a contratti specifici non abbonati, ad esempio ProductUpdated, e uno schema adatto - che rappresenta tutto il grafico dell'oggetto prodotto) e consentire agli abbonati di mappare tutto ciò di cui hanno bisogno sui loro modelli di dominio (o diamine fare quello che vogliono con, potrebbe anche non avere un modello di dominio) ...
O mentre scrivo questo sto pensando forse: Pubblica
Product Service ProductAdded messaggio (non incluse dettagli prodotto solo un ID del prodotto e forse un timestamp)
Prezzo su bscribes a ProductAdded e pubblica RequestPricingForProduct messaggi
Product Service Pubblica messaggio ResultForPricingForProduct
Hmm .. sembra un po 'meglio ... ma ci si sente come sto costruendo il contratto per il servizio del prodotto sulla base di quello di altri servizi che posso identificare e ciò di cui avranno bisogno, forse in futuro il servizio XYZ richiede qualcosa di diverso. Mi fermerò qui perché penso che sia più chiaro dove sono confuso ... forse quanto sopra funzionerà perché dovrei esporre un modo per restituire ciò che dovrebbe essere pubblico, giusto.
Qualsiasi commento o direzione molto apprezzato. Scusa se questo sembra cotto a metà.