Pipelines
Le pipeline sono un componente di Microsoft BizTalk Server che fornisce un'implementazione del modello di integrazione di pipe e filtri. Durante la ricezione e la trasmissione dei messaggi, esistono diversi motivi per eseguire trasformazioni sui messaggi e prepararli a entrare o uscire da BizTalk Server.
Un esempio tipico è la necessità di trasformare un file flat delimitato da virgole in un file XML per sfruttare i vantaggi offerti da determinate funzionalità di BizTalk Server come le mappe. Questa è la funzione del componente disassembler del file flat. È tipico degli scenari di integrazione avere l'esigenza di eseguire diversi tipi di trasformazioni su un messaggio prima di riceverlo o trasmetterlo; per soddisfare questi requisiti vengono utilizzate le pipeline. Le pipeline consentono allo sviluppatore di definire una serie di trasformazioni che verranno eseguite su un messaggio quando viene ricevuto o trasmesso.
Esistono due tipi di pipeline, di trasmissione e ricezione, che corrispondono alle porte in cui vengono eseguite. Le pipeline di invio vengono eseguite nelle porte di invio e nella parte di risposta di una porta di ricezione richiesta/risposta, mentre le pipeline di ricezione vengono eseguite in posizioni di ricezione e nella parte di risposta di una porta di invio di richieste/risposta. In pratica, le pipeline di ricezione devono essere utilizzate per trasformare i messaggi che vengono pubblicati nel database MessageBox, mentre le pipeline di trasmissione devono essere utilizzate nei messaggi sottoscritti e inviati all'esterno di BizTalk Server.
Ogni pipeline presenta una serie di fasi che vengono eseguite secondo un ordine specifico quando viene eseguita la pipeline. Ciascuna fase può contenere zero o più componenti. Il numero massimo di componenti dipende dalla fase.
Fasi della pipeline di ricezione
Fase | Scopo |
---|---|
Decodificare | Consente la decrittografia o la decodifica dei dati del messaggio |
Smontare | Consente di disassemblare un interscambio in messaggi più piccoli e di analizzare il contenuto dei messaggi |
Convalida | Consente di convalidare i dati dei messaggi, in genere in base a uno schema |
Resolve Party | Consente di identificare l'entità di BizTalk Server associata a un token di protezione nel messaggio o nel contesto del messaggio |
Fasi della pipeline di trasmissione
Fase | Scopo |
---|---|
Pre-assemblare | Consente l'esecuzione di qualsiasi elaborazione del messaggio necessaria prima di assemblare il messaggio |
Assemblaggio | Consente di assemblare il messaggio e di prepararlo per trasmetterlo eseguendo operazioni come l'aggiunta di buste, la conversione di XML in file flat o altre attività complementari alla fase di disassemblaggio in una pipeline di ricezione |
Codificare | Consente la codifica o la crittografia del messaggio prima di recapitarlo |
Una fase in una pipeline ha una modalità di esecuzione di All o First Match, che controlla i componenti che vengono eseguiti se più componenti vengono aggiunti a una fase. Per le fasi con modalità Tutti, ogni componente viene chiamato per elaborare il messaggio secondo l'ordine configurato nella fase. Quando la modalità è Prima corrispondenza, viene eseguito il polling di ogni componente per verificare che sia quello corretto finché non si trova la corrispondenza. A quel punto il componente corrispondente viene eseguito, mentre i restanti componenti non vengono eseguiti.
Come esempio delle modalità di esecuzione, la fase Disassembla di una pipeline di ricezione è una fase Prima corrispondenza, pertanto ciascun componente nella fase viene chiamato per verificare se riconosce il messaggio e se è in grado di elaborarlo. Se il componente risponde in modo affermativo, non viene eseguita la query su altri componenti di quella fase per verificare se sono in grado di gestire il messaggio. Per la fase Decodifica di una pipeline di ricezione, viene invece utilizzata la modalità Tutti, il che significa che ciascun componente in questa fase viene chiamato per elaborare il messaggio secondo l'ordine configurato. Il primo decodificatore può decodificare il messaggio mentre il secondo può decomprimere il messaggio da un formato compresso.
Una conseguenza comune della modalità di esecuzione nell'elaborazione della pipeline si verifica quando uno sviluppatore desidera utilizzare più disassembler in una sola pipeline di ricezione. Spesso i componenti di disassemblaggio presentano solo piccole differenze, ad esempio due disassembler del file flat con schemi configurati simili ma diversi. In questo caso, mentre il messaggio potrebbe realmente corrispondere allo schema definito nel secondo disassembler, il primo disassembler potrebbe determinare tramite probe che è in grado di elaborare il messaggio. Solo dopo l'elaborazione del messaggio viene individuato l'errore e il messaggio viene sospeso. In questi casi, è possibile creare un nuovo disassembler che dispone di una logica di probe più specifica, oppure creare due pipeline diverse e ricevere messaggi diversi in indirizzi di ricezione diversi.
Distribuzione delle pipeline
Quando si distribuisce un assembly che contiene una pipeline, il database di gestione salva la pipeline. La pipeline viene associata alla versione specifica dell'assembly con i risultati seguenti:
Se si distribuiscono più assembly che utilizzano la stessa pipeline, il database di gestione creerà una voce per la pipeline di ciascun assembly.
Quando si rimuove un assembly che contiene una pipeline, il database di gestione rimuove la pipeline associata all'assembly. Poiché esiste una copia della pipeline per ciascun assembly associato nel database di gestione, la rimozione di un assembly non influirà sugli altri.