Panoramica del routing
In fase di progettazione di soluzioni di architettura orientate ai servizi, risulta spesso utile creare un servizio di intermediario responsabile dell'indirizzamento dei messaggi in ingresso alle relative destinazioni in base a un set di regole personalizzabili. Un servizio di intermediario fornisce diversi vantaggi, tra cui:
Routing basato sul contenuto
Aggregazione dei servizi
Controllo delle versioni dei servizi
Routing prioritario
Bridging del protocollo
Gestione degli errori
Mentre è possibile creare un servizio di intermediario che soddisfi uno o più di questi obiettivi, spesso tale implementazione viene associata a uno scenario o una soluzione specifica e non può essere agevolmente applicata alle nuove applicazioni.
Il servizio di routing fornisce un intermediario SOAP di collegamento, generico e dinamicamente configurabile costituito dai modelli relativi al canale e al servizio WCF e consente di eseguire il routing basato sul contenuto di messaggi basati su SOAP.
Nota: |
---|
Attualmente il servizio di routing non supporta il routing dei servizi WCF REST. Per indirizzare chiamate REST, utilizzare System.Web.Routing o Application Request Routing (https://go.microsoft.com/fwlink/? LinkId=164589). |
Routing basato sul contenuto
Il routing basato sul contenuto consiste nella possibilità di indirizzare un messaggio in base a uno o più valori contenuti nel messaggio. Il servizio di routing controlla ogni messaggio e lo indirizza all'endpoint di destinazione in base ai contenuti del messaggio e alla logica di routing creata. Il routing basato sul contenuto rappresenta la base per l'aggregazione e il controllo delle versioni dei servizi, nonché per il routing prioritario.
Il servizio di routing consente di configurare la logica utilizzata per eseguire routing basato sul contenuto, nonché di aggiornare in modo dinamico la logica di routing in fase di esecuzione.
Aggregazione dei servizi
Tramite il routing basato sul contenuto è possibile esporre un endpoint che riceve messaggi dalle applicazioni client esterne e quindi indirizza ogni messaggio all'endpoint interno appropriato in base a un valore all'interno del messaggio. Ciò si rivela utile se si desidera offrire un endpoint specifico per una varietà di applicazioni di back-end e presentare un endpoint dell'applicazione ai clienti in fase di esecuzione del factoring dell'applicazione in una varietà di servizi.
Controllo delle versioni dei servizi
In fase di migrazione a una nuova versione della soluzione, potrebbe essere necessario gestire parallelamente anche la versione precedente per i clienti esistenti. Spesso è quindi necessario che i client che si connettono alla versione più recente utilizzino un indirizzo diverso quando comunicando con la soluzione. Il servizio di routing consente di esporre un endpoint servizio per entrambe le versioni della soluzione indirizzando messaggi alla soluzione appropriata in base a informazioni specifiche della versione contenute nel messaggio.
Routing prioritario
Se si fornisce un servizio per più client, è possibile stipulare con alcuni partner un contratto di servizio in base al quale i rispettivi dati devono essere elaborati separatamente rispetto ai dati degli altri client. Grazie a un filtro che cerca le informazioni specifiche del cliente contenute nel messaggio, è possibile indirizzare agevolmente i messaggi dei partner specifici a un endpoint creato per soddisfare i requisiti del contratto di servizio.
Bridging del protocollo
Una delle sfide degli scenari di intermediari è rappresentata dal fatto che gli endpoint interni possono disporre di requisiti di versione SOAP o trasporto diversi rispetto all'endpoint su cui vengono ricevuti i messaggi. Per supportare questo scenario, il servizio di routing può eseguire il bridge dei protocolli, inclusa l'elaborazione del messaggio SOAP per l'elemento MessageVersion richiesto da uno o più endpoint di destinazione. In questo modo, un protocollo può essere utilizzato per le comunicazione interna, mentre un altro protocollo può essere utilizzato per le comunicazioni esterne.
Gestione degli errori
Un'altra sfida per gli intermediari è rappresentata dall'azione correttiva da intraprendere nel caso in cui si verifichi un errore nel passaggio alla destinazione. Il servizio di routing consente di definire ulteriori endpoint che verranno utilizzati per inviare il messaggio in caso di un errore delle comunicazioni in fase di invio alla destinazione primaria. In questo modo è possibile distribuire più copie ridondanti di un servizio come backup, in caso di un errore di rete o di un altro errore di comunicazione.