Promoting in Biztalk Server 2006

在Biztalk solution中,你经常会碰到需要访问Biztalk Message中的某部分数据,一个建议是,你不必要把整个消息都加载到内存中来处理消息的指定部分数据,这样操作起来也比较复杂(需要采用XPath来访问这些数据),特别是对大的消息体来说更是如此。属性的提升就是一个解决之道,他可以让你更方便的访问消息的某部分数据。

属性的提升也会带来一些性能的开销,因此,在解决方案中,不必要提升的属性就不要提升。Distinguished Promotions带来的系统性能开销要小于属性的提升(Property Promotions)。

Distinguished Promotions(显式提升)

Distinguished Promotions只是简单的XPath语句定义。一个显示提升可以是XML Schema中的任意元素的数据,最重要的是,它必需在Schema中只存在一次(唯一的),也就是说,重复的元素是不被支持的。显式提升只能在Orchestration范围内使用,也就是说,它只能被Orchestration开发者使用,而不能被Biztalk Runtime所使用,因为这种提升只是在Orchestration中是可见的,并且带来较少的性能开销,因此,除非你需要使用这些数据的相关性,或者用它来路由消息,或者在Adapter或者Pipeline中,否则,你应该使用显式升级。

Property Promotions(属性提升)

属性升级和显式升级的主要区别是,属性升级可以在消息结构层和Orchestration中都可见。属性的提升是将提升后的属性存储到消息的上下文中。属性提升限制在255个字符内。

属性提升的一个典型的应用是在基于消息内容路由的场景。比如,有两个Orchestration订阅了Order消息,一个是大客户流程,一个是普通客户处理流程,可以通过提升Order消息的Customer Type元素,在Receive Shape中设置过滤,这样普通客户的消息就会到普通客户的流程,而大客户就可以到大客户的流程。

另外一个场景是在发送端口中,可以设置过滤,根据消息内容的不同发送到不同的端口。

posted @ 2008-01-21 15:15  navyliu  阅读(367)  评论(0编辑  收藏  举报