2009-03-15 5 views
1

Bitte beachten Sie das folgende Szenario in BizTalk 2006:BizTalk Port/Orchestrierung Filterung Performance-Overhead

empfangene Nachricht sollte Orchestrierung geleitet werden oder Port sendet nach folgenden Einschränkungen

(Message.Type = "SomeType" AND Message.Sender = "SomeSender") 
OR 
(Message.Type = "SomeOtherType" AND Message.Sender = "SomeOtherSender" AND Message.IsSigned = true) 
OR 
(Message.Sender = "AnotherSender" AND Message.IsSigned = true) 
etc... 

Eine Möglichkeit, dies zu tun Indem Sie Filter auf Orchestrierung anwenden, empfangen Sie Shapes oder senden Ports.

Auf der anderen Seite kann ich ein Routing-Datenfeld an den Nachrichtenkontext in benutzerdefinierter Pipelinekomponente basierend auf dem Nachrichtenfeld fördern und dann nur eine Einschränkung auf die Filter angewandt:

Message.Route = "Route A" 

, welche diese Alternativen ist hier eine weniger leistungsintensive Lösung (geringere Latenz)?

Vielen Dank im Voraus.

Antwort

1

Zwischen den beiden Optionen würde ich im Allgemeinen den Orchestrierungsfilter auswählen. Die Implementierung der Subskriptionen ist ziemlich schnell, daher ist es kein großer Aufwand, ein paar Segmente zu filtern.

Mit einer Pipeline-Komponente und die Förderung einer Eigenschaft, die nicht schneller sein kann, und ist ein Overhead in Bezug auf die Entwicklung und Wartung.

Es gibt meiner Meinung nach ein bisschen nach unten zu Orchestrierungsfiltern (aber - aus Ihrer Frage scheint es nicht, dass Sie es unbedingt besser machen) und das ist die Tatsache, dass die Regel kompiliert wird (im Gegensatz zu Send-Port) Filter zum Beispiel)

Wenn Sie dies benötigen, um dynamischer zu sein, und Sie können Ihre Pipeline-Komponente schreiben, so dass es konfigurierbar ist, die Ihnen einige Vorteile bieten würde.

0

Die Hauptsache, die sich auf die Latenz auswirkt, ist die Anzahl der Persistenzpunkte (Statusspeicherung in der Datenbank).

Wenn Alternative 2 (Förderung "Route" in einer Pipeline) können Sie die Orchestrierung vollständig ausschneiden (oder benötigen Sie es für etwas anderes?) Und Sie haben eine reine Messaging-Lösung (Port zu Port) Ich werde schneller sein, wenn ich eine Orchestrierung dort habe.

0

Wenn Sie eine Klasse von Absendern haben (wie es scheint), könnten Sie auch eine Implementierung der Partei-/Rollenverbindung in Erwägung ziehen, die Ihnen zusätzliche Flexibilität bietet.