Come posso sapere se un sistema è costruito su architettura orientata ai servizi durante la lettura del suo codice sorgente ?
Come posso sapere se un sistema è costruito su architettura orientata ai servizi durante la lettura del suo codice sorgente ?
SOA è uno stile di architettura, quindi l'intenzione è più importante del codice. Chi dice che il codice che pensi sia SOA-Style non viene refactored alla prossima iterazione? In genere, mi aspetterei, è più semplice chiedere l'architetto.
Ciò detto, idealmente (vale a dire, quando l'intento e la corrispondenza di origine), si applica quanto segue:
Il codice sorgente dell'intero progetto è suddiviso in unità molto indipendenti che possono essere implementate "standalone", cioè senza che il resto sia dispiegato. Questi sono i servizi.
Un tale servizio avrebbe un'interfaccia verso il mondo esterno, come mezzo di comunicazione con altri servizi. Per Examle, un servizio data potrebbe rispondere sotto l'url http://example.com/current_date
qualcosa come {"year": 2011, "month": 8, "day": 29}
.
Ad eccezione dell'interfaccia, un servizio è una "scatola nera" per gli altri servizi. Tutta la comunicazione è fatta su queste interfacce. In particolare, non esiste un database condiviso.
Se progettato come SOA dall'inizio, ci si aspetterebbe che la stessa tecnologia fosse utilizzata per la maggior parte delle interfacce. 'SOAP' e 'RPC su HTTP / JSON' sarebbero esempi per tali tecnologie.
(MODIFICA: pulisce la risposta un po ')
Normalmente, a meno che tu non sia il responsabile di ciò, non sei tenuto a conoscerlo. Potresti non vedere nulla nel "codice" ma piuttosto nei file di configurazione. Se noti i file di configurazione su come comunicare con i servizi remoti, ad esempio con un ESB , o come @keppla detto tramite RPC , SOAP, allora ci sono possibilità che qualche forma di architettura SOA sia usato - almeno - tra questi due componenti.
Ma se vuoi davvero saperlo, puoi chiedere all'architetto, o al responsabile IT, che dovrebbero saperlo.
Se il sistema effettua numerose chiamate a servizi che incapsulano la propria logica e sono definite solo dal loro contratto (tipi di parametri e operazioni), allora è probabile che sia un sistema orientato al servizio.
Se il sistema non effettua alcuna chiamata a servizi esterni, non è un progetto orientato al servizio.
Leggi altre domande sui tag soa