2009-03-15 8 views
1

S'il vous plaît envisager le scénario suivant dans BizTalk Server 2006:performances filtrage port BizTalk/orchestration aérienne

Message reçu doit être acheminé à l'orchestration ou envoyer le port en fonction des contraintes suivantes

(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... 

Une façon de faire est en appliquant des filtres sur des formes de réception d'orchestration ou des ports d'envoi.

D'autre part, je peux promouvoir un champ de données de routage dans le contexte du message dans la coutume reçois composant de pipeline basé sur les champs de message, puis en appliquant une seule contrainte au filtre:

Message.Route = "Route A" 

Lequel de ces alternatives est une solution moins coûteuse de performance ici (latence inférieure)?

Merci d'avance.

Répondre

1

Entre les deux options, je choisirais généralement le filtre d'orchestration. La mise en œuvre des abonnements est assez rapide, donc avoir quelques segments à filtrer n'est pas un énorme coût.

Avoir un composant de pipeline et promouvoir une propriété qui n'est pas garantie pour être plus rapide, et est un surcoût en termes de développement et de maintenance. À mon avis, il y a un petit côté négatif dans les filtres d'orchestration (mais de votre question, il ne semble pas que vous alliez forcément le rendre meilleur) et c'est le fait que la règle est compilée (contrairement au port d'envoi filtres, par exemple)

Si vous avez besoin que ce soit plus dynamique, et vous pouvez écrire votre composant de pipeline afin qu'il soit configurable qui vous donnerait un certain avantage.

0

La principale chose qui aura un impact sur votre temps de latence est le nombre de points de persistance (sauvegardes d'état dans la base de données). Si la variante 2 (promotion de "Route" dans un pipeline) vous permet de couper totalement l'orchestration (ou en avez-vous besoin pour autre chose?) Et vous laisse une solution de messagerie pure (port à port), Sera plus rapide que d'avoir une orchestration là-dedans.

0

Si vous avez une classe d'expéditeurs (comme vous le feriez), vous pouvez également envisager une implémentation de lien parti/rôle qui vous donnerait plus de flexibilité.