Quando si sviluppano i moduli, verranno identificati i servizi che possono essere utilizzati da più moduli. Potenziando i servizi in questo modo, vengono minimizzati il ciclo di sviluppo ed i costi. Quando un servizio viene utilizzato da molti moduli, è necessario isolare i moduli di richiamo dalla destinazione, in modo che se viene aggiornata la destinazione, il passaggio al nuovo servizio è trasparente al modulo di richiamo. Questo argomento contrasta il modello di richiamo semplice e il modello di richiamo isolato, fornendo un esempio del modo in cui l'isolamento può essere utile. Questo esempio specifico non rappresenta il solo modo di isolare i moduli dalle destinazioni.
Modello di richiamo isolato
Per modificare la destinazione di un richiamo senza arrestare i moduli di richiamo, è possibile isolare i moduli di richiamo dalla destinazione del richiamo. Ciò consente ai moduli di continuare l'elaborazione mentre si modifica la destinazione, poiché non si sta modificando il modulo, ma la destinazione derivata. L'esempio di isolamento delle applicazioni illustra il modo in cui l'isolamento consente di modificare la destinazione senza condizionare lo stato del modulo di richiamo.
Esempio di isolamento delle applicazioni
Utilizzando il modello di richiamo semplice, più moduli che richiamano lo stesso servizio sembrerebbero
Più applicazioni che richiamano un unico servizio. APPA,
APPB e APPC richiamano tutti CalculateFinalCost.
Figura 2. Più applicazioni che richiamano un singolo servizio
Il servizio fornito da CalculateFinalCost deve essere aggiornato, pertanto i nuovi costi riguardano tutti i moduli che utilizzano il servizio. Il team di sviluppo crea e verifica un nuovo servizio UpdatedCalculateFinal per incorporare le modifiche. Si è pronti a portare in produzione il nuovo servizio. Senza isolamento, sarebbe stato necessario aggiornare tutti i moduli che richiamano CalculateFinalCost per richiamare UpdateCalculateFinal. Con l'isolamento, è necessario modificare solo il bind che collega il modulo di buffer alla destinazione.
Nota: La modifica del servizio in questo modo consente di continuare a fornire il servizio di origine agli altri moduli che possono necessitare.
Con questo modello, i moduli di richiamo non cambiano, è necessario solo modificare il bind dall'importazione del modulo di buffer alla destinazione (consultare
Modello di richiamo isolato che richiama UpdatedCalculateFinal).
Figura 4. Modello di richiamo isolato che richiama UpdatedCalculateFinal
Se il modulo di buffer
richiama la destinazione in modo sincronico, quando si riavvia il modulo di buffer (un modulo di mediazione o un servizio per il modulo aziendale) i risultati restituiti all'applicazione di origine provengono dalla nuova destinazione. Se il modulo di buffer richiama la destinazione in modo sincronico, i risultati restituiti all'applicazione di origine provengono dalla nuova destinazione al successivo richiamo.