Qual è il Pattern di loopback? [chiuso]

1

Stavo leggendo questo post di blog sull'architettura esagonale e in fondo dice:

The Loopback pattern is an explicit pattern for creating an internal replacement for an external device.

Quando google per "Pattern di loopback" non trovo alcun dettaglio a riguardo. Qualcuno sa a cosa si riferisce l'autore? Per curiosità, mi piacerebbe sapere come implementarlo.

    
posta Daniel Kaplan 29.04.2014 - 22:24
fonte

2 risposte

2

Ad esempio, di recente ho avuto una dipendenza da un servizio di autorizzazione remoto per convalidare i token di accesso degli utenti. Ma poi ho scritto un servizio che non ha bisogno di autorizzazione - ha appena fatto calcoli. Quindi ho implementato l'interfaccia AuthorizationService (nome modificato per proteggere i servizi innocenti) con un NoAuthorizationService che ha appena restituito true per validate(token) .

Potrei usare la stessa interfaccia stub per bloccare le chiamate al servizio di autorizzazione effettivo. Ma l'ho considerato un artefatto di produzione piuttosto che un artefatto di test, perché potrei usarlo per un servizio live da collegare se non volessi disabilitare altrimenti le chiamate a quel servizio.

Pensa a "127.0.0.1", l'IP di loopback - va solo a localhost. È un'idea simile in un'architettura esagonale, in cui le chiamate a un servizio remoto ricorrono invece al servizio locale.

...

Nel più comune gergo Gang Of Four, questo sarebbe il modello Null Object. Oppure un oggetto "sentinella" che prende il posto della cosa reale ma non fa nulla.

    
risposta data 29.04.2014 - 22:57
fonte
1

Non posso parlare per l'autore, ma sembra che questo sia usato proprio come dice la citazione: sostituire un dispositivo esterno con un software che consente di testare altre parti del sistema che potrebbero usarlo.

Ad esempio, si potrebbe scrivere un driver di stampa "loopback" che consente di testare la funzionalità del programma relativa alla stampa senza effettivamente stampare nulla. Questo potrebbe essere un dispositivo che non esaurisce mai la carta e non consuma mai risorse reali (ad esempio carta) perché è un dispositivo virtuale.

Ho usato questi stub prima per testare la funzionalità del programma che interagisce con dispositivi hardware che sono inaffidabili (ad esempio potrebbero esaurire la carta) o che richiedono l'intervento dell'utente (basta attivare un evento con un falso input dell'utente ) ma che non deve tracciare nulla a livello di conducente (ad esempio, è stato presentato un lavoro di stampa? Quanti?)

Quando i test vengono eseguiti in un ambiente privo di headless nel bel mezzo della notte, un dispositivo virtuale di questo tipo è fondamentale.

    
risposta data 29.04.2014 - 22:32
fonte

Leggi altre domande sui tag