Performance BizTalk端口/业务流程筛选性能开销 请考虑BizTalk 2006中的以下场景:

Performance BizTalk端口/业务流程筛选性能开销 请考虑BizTalk 2006中的以下场景:,performance,routing,biztalk,Performance,Routing,Biztalk,应根据以下约束将收到的消息路由到业务流程或发送端口 (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 =

应根据以下约束将收到的消息路由到业务流程或发送端口

(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...
一种方法是在业务流程接收形状或发送端口上应用过滤器

另一方面,我可以基于消息字段将路由数据字段提升到自定义接收管道组件中的消息上下文,然后仅对过滤器应用一个约束:

Message.Route = "Route A"
以下哪种解决方案的性能成本较低(延迟较低)


提前感谢。

影响延迟的主要因素是持久点的数量(将状态保存到数据库)


如果备选方案2(在管道中提升“路由”)允许您完全切断编排(或者您是否需要它来做其他事情?),并让您拥有一个纯消息传递解决方案(端口到端口),这将比在其中使用编排更快。

影响延迟的主要因素是持久化点的数量(将状态保存到数据库)


如果备选方案2(在管道中提升“路由”)允许您完全删除业务流程(或者您是否需要它来做其他事情?),并让您拥有一个纯消息传递解决方案(端口到端口),那么这将比在其中包含业务流程更快。

在这两个选项之间,我通常会选择业务流程过滤器。 订阅的实现速度非常快,因此有几个段可供过滤并不是很大的开销

拥有一个管道组件并推广一个不保证更快的物业,这在开发和维护方面是一项开销

在我看来,编排过滤器有一个缺点(但是——从你的问题来看,你似乎不一定会做得更好),那就是规则是编译的(例如,与发送端口过滤器不同)


如果您需要更具动态性,您可以编写管道组件,使其可配置,从而为您带来一些好处。

在这两个选项之间,我通常会选择编排过滤器。 订阅的实现速度非常快,因此有几个段可供过滤并不是很大的开销

拥有一个管道组件并推广一个不保证更快的物业,这在开发和维护方面是一项开销

在我看来,编排过滤器有一个缺点(但是——从你的问题来看,你似乎不一定会做得更好),那就是规则是编译的(例如,与发送端口过滤器不同)


如果你需要这个更动态,你可以编写你的流水线组件,这样它可以被配置,这会给你带来一些好处。

如果你有一个发件人类(如你所看到的那样),你也可以考虑一个Po/角色链接实现,它会给你额外的灵活性。(如您所示),您也可以考虑一个将提供额外灵活性的方/角色链接实现。