请考虑BizTalk 2006中的以下场景:
应根据以下约束将接收的消息路由到业务流程或发送端口
(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"
这些替代方案中哪一种性能成本较低(低延迟)?
提前致谢。
答案 0 :(得分:1)
在两个选项之间,我通常会选择业务流程过滤器。 订阅的实现非常快,因此有一些要过滤的段并不是一个巨大的开销。
拥有一个管道组件并提升一个不受保护的属性,以便更快,并且在开发和维护方面是一个开销。
在我看来,在编排过滤器方面还有一点缺点(但是 - 从您的问题来看,它似乎不一定能让它变得更好)并且这就是规则被编译的事实(与发送端口过滤器不同) ,例如)
如果您需要更加动态,并且可以编写管道组件,以便它可以配置,从而为您带来一些好处。
答案 1 :(得分:0)
影响延迟的主要因素是持久性点的数量(状态保存到数据库)。
如果替代方案2(在管道中推广“路由”)允许您完全切断业务流程(或者您是否还需要其他东西?)并且让您拥有纯粹的消息传递解决方案(端口到端口),那么'在那里进行编排时会更快。
答案 2 :(得分:0)
如果你有一类发件人(就像你看到的那样),你也可以考虑一个派对/角色链接实现,这将为你提供额外的灵活性。