Pipelines
Pipelines sind eine Komponente von Microsoft BizTalk Server, die eine Implementierung des "Pipes and Filters"-Integrationsmusters bietet. Aus geschäftlichen Gründen müssen Nachrichten beim Senden und Empfangen transformiert und damit auf den Empfang durch BizTalk Server bzw. auf das Verlassen des Systems vorbereitet werden.
So kommt es beispielsweise häufig vor, dass Sie eine kommagetrennte Flatfile in eine XML-Datei transformieren müssen, um bestimmte Funktionen in BizTalk Server nutzen zu können (z. B. Zuordnungen). Diese Aufgabe wird von der Flatfile-Disassemblerkomponente übernommen. In Integrationsszenarien ist es oft erforderlich, verschiedene Arten von Transformationen auf eine Nachricht anzuwenden, bevor die Nachricht empfangen oder gesendet werden kann. Pipelines werden diesen Anforderungen gerecht. Pipelines ermöglichen es Entwicklern, eine Reihe von Transformationen zu definieren, die bei einer Nachricht beim Empfangen oder Senden ausgeführt werden sollen.
Es gibt zwei Typen von Pipelines: Sende- und Empfangspipelines. Diese Pipelines entsprechen den Ports, in denen sie ausgeführt werden. Sendepipelines werden in Sendeports und im Antwortteil eines Anforderungs-/Antwort-Empfangsports ausgeführt, während Empfangspipelines an Empfangsspeicherorten und im Antwortteil eines Anforderungs-/Antwort-Sendeports ausgeführt werden. Empfangspipelines sind im Wesentlichen dazu bestimmt, Nachrichten zu transformieren, die in der MessageBox-Datenbank veröffentlicht werden, während Sendepipelines für Nachrichten gedacht sind, die abonniert wurden und von BizTalk Server abgesendet werden.
Jede Pipeline besitzt mehrere Stufen, die bei der Ausführung der Pipeline der Reihe nach ausgeführt werden. Jede Stufe kann 0 oder mehr Komponenten enthalten. Die zulässige Höchstzahl von Komponenten hängt von der Stufe ab.
Phase | Zweck |
---|---|
Decodieren | Entschlüsselt oder decodiert die Nachrichtendaten |
Disassemble | Disassembliert einen Austausch in kleinere Nachrichten und analysiert die Nachrichteninhalte |
Überprüfen | Überprüft die Nachrichtendaten, im Allgemeinen anhand eines Schemas |
Partei auflösen | Identifiziert die BizTalk Server-Partei, die einem Sicherheitstoken in der Nachricht oder im Nachrichtenkontext zugeordnet ist |
Phase | Zweck |
---|---|
Vorassemblieren | Führt Verarbeitungsschritte durch, die vor dem Assemblieren der Nachricht erforderlich sind |
Assemble | Assembliert die Nachricht und bereitet sie für die Übertragung vor. Dazu gehören das Hinzufügen von Umschlägen, Konvertieren von XML-Dateien in Flatfiles oder andere Aufgaben zur Ergänzung der Disassemblierungsstufe in einer Empfangspipeline. |
Codieren | Codiert oder verschlüsselt die Nachricht vor der Übermittlung |
Eine Phase in einer Pipeline verfügt über den Ausführungsmodus "All" oder "First Match", der die Komponenten steuert, die ausgeführt werden, wenn einer Phase mehrere Komponenten hinzugefügt werden. Bei Stufen mit dem Modus "Alle" werden die einzelnen Komponenten zur Verarbeitung der Nachricht in der Reihenfolge aufgerufen, in der sie in der Stufe konfiguriert sind. Wenn der Modus "Erste Übereinstimmung" lautet, wird jede einzelne Komponente abgefragt, um zu bestimmen, ob es sich um die richtige Komponente handelt. Dieser Prozess wird so lange fortgeführt, bis eine Übereinstimmung gefunden wird. Die übereinstimmende Komponente wird dann (im Gegensatz zu den übrigen Komponenten) ausgeführt.
Beispiel: Die Disassemblierungsstufe einer Empfangspipeline hat den Ausführungsmodus "Erste Übereinstimmung". Somit wird jede Komponente aufgerufen, um zu ermitteln, ob sie die Nachricht erkennt und verarbeiten kann. Wenn die Komponente eine positive Antwort zurückgibt, werden keine weiteren Komponenten in dieser Stufe abgefragt, um herauszufinden, ob diese die Nachricht ebenfalls verarbeiten könnten. Die Decodierstufe einer Empfangspipeline hat dagegen den Ausführungsmodus "Alle", was bedeutet, dass alle Komponenten in dieser Stufe aufgerufen werden, um die Nachricht in der Reihenfolge zu verarbeiten, in der sie konfiguriert wurden. Der erste Decoder ist möglicherweise für die Entschlüsselung der Nachricht zuständig, während der zweite die Nachricht aus einem gepackten Format dekomprimiert.
Eine häufiges Ergebnis des Ausführungsmodus in der Pipelineverarbeitung ist zu beobachten, wenn ein Entwickler mehrere Disassembler in einer einzigen Empfangspipeline verwenden möchte. Häufig unterscheiden sich die Disassemblierungskomponenten nur geringfügig. So könnten z. B. zwei Flatfile-Disassembler mit ähnlichen, jedoch verschiedenen Schemas konfiguriert sein. In diesem Fall ist es möglich, dass der erste Disassembler beim Prüfvorgang feststellt, dass er die Nachricht verarbeiten kann, obwohl die Nachricht eigentlich dem Schema entspricht, das im zweiten Disassembler definiert wurde. Der Fehler wird erst nach der Verarbeitung der Nachricht entdeckt, woraufhin die Nachricht angehalten wird. In solchen Fällen können Sie einen neuen Disassembler mit einer spezifischeren Prüflogik erstellen. Eine zweite Möglichkeit besteht darin, zwei verschiedene Pipelines zu erstellen und die unterschiedlichen Nachrichten an verschiedenen Empfangsspeicherorten zu empfangen.
Wenn Sie eine Assembly mit einer Pipeline bereitstellen, wird die Pipeline in der Verwaltungsdatenbank gespeichert. Die Pipeline ist mit der spezifischen Version der Assembly verknüpft, was zu den folgenden Ergebnissen führt:
Wenn Sie mehrere Assemblys bereitstellen, die dieselbe Pipeline verwenden, erstellt die Verwaltungsdatenbank für jede Assembly einen Eintrag für die Pipeline.
Wenn Sie eine Assembly mit einer Pipeline entfernen, wird die mit der Assembly verknüpfte Pipeline aus der Verwaltungsdatenbank entfernt. Da sich in der Verwaltungsdatenbank eine Kopie der Pipeline für jede zugehörige Assembly befindet, wirkt sich das Entfernen einer Assembly nicht auf die anderen aus.