Nella nostra organizzazione, ci siamo spostati su una "architettura orientata ai servizi". Per fare un esempio, supponiamo di dover recuperare un oggetto "Preventivo". Questa citazione ha un mittente, un destinatario, numeri di telefono, contatti, indirizzi email e altre informazioni sulla posizione. In altre parole, un oggetto Citazione è costituito da molti altri oggetti.
Quindi, sembra che abbia senso fare un "servizio di recupero preventivo". Nella nostra situazione, abbiamo raggiunto questo obiettivo creando una soluzione .NET e scrivendo il servizio. L'API del servizio è simile a questa (in pseudo-codice):
Function GetQuote(String ID) Returns Quote
Quindi, finora tutto bene. Ora, quando questo servizio viene consumato, per mantenere le cose "disgiunte", stiamo creando essenzialmente un duplicato dell'oggetto Quote e la mappatura dalla versione QuoteService del Preventivo nella versione del preventivo del consumatore. In molti casi, queste classi avranno le stesse identiche proprietà.
Quindi, se il servizio di quotazione è consumato da altre 5 applicazioni, avremmo 6 definizioni di cosa sia una "citazione". Uno per ciascun consumatore e uno per il servizio. Questo sembra sbagliato. Pensavo che il codice doveva essere SECCO, ma sembra che il nostro metodo di SOA ci stia costringendo a creare tonnellate di definizioni di classi duplicate. Cosa stiamo sbagliando o la duplicazione del codice è solo un "male necessario" di SOA?