Ho un servizio che necessita di informazioni implementate da un altro servizio nello stesso livello. È buona norma che un servizio si assuma da un altro servizio nello stesso livello?
Ho un servizio che necessita di informazioni implementate da un altro servizio nello stesso livello. È buona norma che un servizio si assuma da un altro servizio nello stesso livello?
Sì. Ho visto diagrammi architettonici di SOA (Service Oriented Architecture) dove esattamente ciò accade. Un servizio dovrebbe essere scritto in modo tale che non gli importi se l'utente lo chiama, un servizio nello "stesso livello" o se viene combinato in un servizio composito.
Il diagramma dell'architettura di riferimento SOA di Open Group mostra servizi di chiamata di servizi nello "stesso livello": Figura 22-2 ( link )
Anche il modello OSIMM (Open Service Integration Maturity Model) è un buon diagramma, il collegamento sta parlando di IBM Process Server, ma Kim Clark e Brian Petrini forniscono una spiegazione molto buona: Figura 1 ( link )
Uso i miei servizi l'uno nell'altro. In questo modo sono in grado di riutilizzare i miei metodi di servizio, invece di copiare algoritmi su tutto il livello.
Nella mia esperienza, una cosa da tenere presente è la dipendenza circolare .
Quando si inizializza una classe di servizio, ad esempio nel costruttore, l'inizializzazione di altri campi dell'oggetto servizio può portare a una chiamata circolare senza fine se il campo dipende anche dal servizio di inizializzazione.
Quando si chiama un metodo, un metodo di servizio può chiamare un'altra chiamata di servizio e può anche chiamare un altro metodo di servizio che può portare nuovamente alla chiamata circolare.
Leggi altre domande sui tag design-patterns .net services