Qual è l'Enterprise Architecture Pattern richiesto per un servizio web che avvolge un servizio web?

2

Come parte di un'architettura orientata al servizio (SOA) mi è stato chiesto di creare un  servizio web che acquisisce i dati da un servizio Web di terzi. Devo nascondere eventuali dettagli specifici dell'implementazione del servizio web di terze parti e mappare i dati restituiti in modo da evitare perdite di dettagli sull'implementazione del servizio di terze parti.

Sono nuovo di SOA. Chiamerei colloquialmente questo progetto qualcosa di simile a " un bridge di servizio web ".
Qual è il termine del modello di architettura aziendale SOA corretto per questo?

Sono molto confuso dal momento che molti dei modelli di architettura aziendale sembrano descrivere la stessa cosa (facciata del servizio ?, message broker? message channel? proxy?). Non penso di essere abbastanza in sintonia con il livello di astrazione richiesto.

    
posta Mark McLaren 19.06.2014 - 10:18
fonte

2 risposte

3

Proprio dalla domanda, non è possibile individuare un singolo pattern perché ci sono più aspetti di un pattern. A seconda di come il tuo servizio è architettato , lo schema può variare. In generale, tuttavia, ciò che hai specificato è l' Astrazione di servizio principio di progettazione .

Inoltre, molto spesso un software, specialmente nell'ambito di un servizio web, è composto da più modelli di progettazione. Quindi un servizio web può essere progettato con pattern Model-View-Controller mentre ha un set di adattatori, mappatori di dati, (spiegato sotto) ecc. Nei suoi vari livelli. È ancora possibile identificare il suo valore aziendale primario e mapparlo in base a un modello di progettazione, se ciò è importante per il progetto. Quindi, anche se non tutti gli schemi di cui parlo di seguito possono essere considerati modelli di progettazione enterprise da tutti, trovo più utile usare il modello che trasmette ciò che fa il servizio più che se sia necessariamente un modello di progettazione aziendale o no.

Da quanto hai affermato nella tua domanda, sembra molto probabile che sia Façade o la sua specializzazione Remote Façade . Sarebbe una facciata se il suo scopo principale fosse di semplificare l'API sottostante e nascondere la complessità (che è ciò che stai affermando). Inoltre, Remote Façade punta a ridurre il numero di chiamate tra due sistemi, se questo è un problema.

Un pattern Adapter viene solitamente architettato con l'assunto che ci saranno più adattatori (sia presente che futuro). Pertanto, se la tua preoccupazione principale è creare un servizio web in modo tale da fornire un'interfaccia coerente ed essere in grado di eseguire varie operazioni sui servizi sottostanti, allora stai progettando un adattatore. Un tipico esempio potrebbe essere quando offri un nuovo servizio di distribuzione ed esporti un metodo chiamato Compile() . Implementa due adattatori, uno per MSBuild e l'altro per nmake. A seconda del sistema in cui è scritto un particolare progetto, verrà prelevato l'adattatore corretto ed emesso i comandi appropriati.

Un modello simile è Mapper dei dati che sta mappando un insieme coerente di dati digita tipi di dati di vari archivi di dati sottostanti. Diciamo che se il tuo servizio esponeva un campo UserId al suo client in modo tale che mappasse su un UserName e un UserPrincipal in due archivi di dati diversi, allora questo è ciò che stai guardando. Ciò non significa necessariamente disporre di più archivi di dati, significa che stai architettando pensando a questa possibilità.

Il pattern Bridge viene solitamente applicato laddove esiste un'astrazione e la sua implementazione, e tuttavia entrambi devono essere variati. In genere, l'implementazione viene realizzata utilizzando un modello di adattatore, quindi ti ritroverai con l'astrazione e le sue sottoclassi, oltre a un set di adattatori.

Un gateway è più adatto a fornire un'interfaccia coerente tra i servizi. Quindi potresti avere un www.myservice.com che espone una API REST, che a sua volta chiama altri servizi che potrebbero utilizzare vari protocolli. È responsabilità del Gateway garantire che i client ottengano sempre la stessa interfaccia, anche quando uno qualsiasi di questi servizi decide di cambiare i suoi protocolli.

    
risposta data 20.06.2014 - 09:34
fonte
3

Quello che stai descrivendo è essenzialmente il modello di design Adapter . Si dispone di un componente esterno che si desidera utilizzare, ma è l'implementazione e l'interfaccia non è ciò che si desidera utilizzare all'interno dell'azienda.

Il fatto che stai esponendo il tuo wrapper come servizio web è irrilevante in quanto il pattern è sempre lo stesso. Stai essenzialmente avvolgendo un servizio esistente con una nuova interfaccia.

    
risposta data 20.06.2014 - 07:16
fonte

Leggi altre domande sui tag