BizTalk开发系列(十七) 信封架构(Envelop)
在BizTalk开过中使用信封架构可以提高BizTalk处理性能。比如在使用SQL Adapter时使用信封选取多条记录在通过管道的XML拆装器时将信封里的XML消息部分拆分为单独的消息,发布到MessageBox。 BizTalk会创建多个处理实例处理这些消息。减少SQL Adapter与数据库的交互次数。
什么是信封架构?
微软官方对信封架构是这样定义的:信封架构是一种特殊类型的 XML 架构。(不是W3C定义的)信封架构用于定义 XML 信封的结构,以用于将一个或多个 XML 业务文档包装到单个 XML 实例消息中。在将 XML 架构定义为信封架构时,根据是否在信封架构中定义了多个根记录,可能需要其他一些属性设置。
如何创建信封架构?
大部分情况下信封架构是一个比较简单的XML架构。因为在XML拆装过程中信封部分的内容是要被删除的。当然除了信封的升级属性和可分辨字段会升级到消息 的上下文中被信封里的消息个体所继承。在BizTalk Schema编译器中创建信封架构前几步跟创建普通架构是一样的,只不过需要设置一下相关的属性。具体是这样的:
创建一个Schema。点击<Schema>在属性设置中设置Envelop属性为Yes。在信封根(Root)中设置“正文 Xpath”。如果架构中存在多个根且没有设置根引用则需要为每个根设置”正文 Xpath”。如果架构在存在多个根且设置了根引用则为根设置“正文 Xpath”。其他根则可选。
一般情况下,在“正文Xpath”设置的对话框中选择相应的节点则可以自动生成相应的Xpath表达式。如果自动生成功能无法满足用户需求的情况下,用户可以手动输入Xpath表达式。
信封的拆装
信封的拆装发生在接收管道的的拆装阶段通过使用XML拆装器完成的。XML 拆装器管道组件将 XML 解析功能和拆装功能组合到一个组件中。该组件的主要功能如下:
- 删除信封。
- 根据预定义的Xpath对消息正文进行拆装。
- 将信封部分的可分辨字段和属性升级到消息上下文。
收到消息之后,拆装器通过使用在设计时指定的与该组件关联的架构来静态地解析,或通过在运行时根据消息类型(Namespace#RootName)确定 信封架构来动态地解析。架构用于在信封解析过程中对消息的结构进行验证。如果未定义架构构,则可通过使用根节点的命名空间和基名称查找架构,从而以递归方 式确定消息架构。
如果有且只有一个架构与消息匹配,则拆装器读取架构的批注内容,如下所示。(可能实际过程中会读取更多信息)
<xs:appinfo> <b:schemaInfo is_envelope="yes" xmlns:b="http://schemas.microsoft.com/BizTalk/2003" />
架构批注指明此消息为信封架构。拆装器通过使用预定义的 XPath(编码为与信封和消息相关联的 XSD 架构中的批注)从信封和消息实例中提取内容属性。该组件将对信封内的每个文档进行解析。对于每个文档,BizTalk 消息对象都使用其本身的上下文创建,从信封和文档本身升级的所有属性均是从此上下文中复制而来。
<xs:element name="Root"> <xs:annotation> <xs:appinfo> <b:recordInfo body_xpath="/*[local-name()='Root' and namespace-uri()='http://SchemasAPP.EnvelopSchema']/*[local-name()='EnvelopBody' and namespace-uri()='']" />
拆装器的“Recoverable Interchange
Processing”属性表示:如果值为True则信封中的所有消息都能找到唯一的消息架构时该信封中的所有正文消息才会处理,否则挂起所有消息。如果
值为False则只有找不到消息架构的消息会被挂其他消息则会被处理。(此功能不只针对信封消息!)
BizTalk开发系列(十七) 信封架构(Envelop)的更多相关文章
- BizTalk开发系列(十八) 使用信封拆分数据库消息
之前写了一篇的<BizTalk开发系列(十七) 信封架构(Envelop)> 是关于信封架构及其拆装原理的,都是理论性的内容.信封在BizTalk开发过程中最常用的应该是在读取SQL Se ...
- BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记
使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西” ...
- BizTalk开发系列(三十三)BizTalk之Excel终极解决方案
Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...
- BizTalk开发系列(二十八) MSMQ 适配器
MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...
- BizTalk开发系列(二十二) 开发自定义Map Functoid
尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...
- BizTalk开发系列(二十五) SQL Adapter
SQL Server 是.NET开发的首选数据库.当然开发BizTalk应用程序很多也离不了SQL Server.针对SQL Server的数据操作BizTalk 提供了SQL Adapter作为与数 ...
- BizTalk开发系列(七) Hello World2
之前根据BizTalk的订阅原理,使用BizTalk管理控制台创建了第一个应用程序 Hello World.但是由于控制台的开发功能有限,绝大多数的BizTalk程序都是在集成开发环境Visual S ...
- BizTalk开发系列(十五) Schema设计之Qualified 与Unqualified
XML Schema中的命名空间前缀限定包括对元素(Element)或属性(Attribute)的限定,即常见的如 “<ns0:root>...</ns0:root>”之类的格 ...
- BizTalk开发系列(三十七) 性能监视器在BizTalk性能测试中的使用
BizTalk应用程序的性能测试和分析是一个非常重要的过程,因为BizTalk的应用程序在Run-time时受部署结构.消息请求数量和消息大小等 的影响很大,因此无论是简单还是复杂的的应用都需要在部署 ...
随机推荐
- JS_ECMA基本语法中的几种封装的小函数
先来回顾一下我们的字符串: 字符串方法: str.length str.charAt(i):取字符串中的某一个; str.indexOf('e');找第一个出现的位置;找不到返回-1; str.l ...
- MFC 打开文件对话框 打开单个文件
CFileDialog的语法: CFileDialog(BOOL bOpenFileDialog,LPCTSTR lpszDefExt=NULL,LPCTSTR lpszFileName=NULL,D ...
- POJ2711 Leapin' Lizards(最大流)
比较形象的是地图每个点都拆成三个点,这三个点限制流量为0或1,于是再一分为二,这样每个点都被拆成6个点... 其实拆两个点,连容量为柱子高的边,这样就行了.. 这题我掉坑了,“1 lizard was ...
- BZOJ3654 : 图样图森破
考虑枚举回文中心,然后向两边扩展,当匹配到当前串的边界的时候,枚举下一个串接上. 这个过程可以通过记忆化搜索来完成,设: $f[i][0]$表示对于$i$这个位置,$[i,串结尾]$等待匹配的最长回文 ...
- BZOJ2629 : binomial
根据Lucas定理,等价于在$P$进制下每一位分别求组合数最后乘积模$P$. 因为答案为$0$的并不好算,所以可以考虑用$n+1$减去其它所有的答案. 那么每一位的组合数都不能是$0$,那么这就保证了 ...
- 【BZOJ】2693: jzptab
http://www.lydsy.com/JudgeOnline/problem.php?id=2693 题意:求$\sum_{i=1}^{n} \sum_{j=1}^{m} lcm(i, j)$, ...
- Maven Repository
The usefully link for Maven Reponsitory display as below: http://mvnrepository.com/ For example, To ...
- golang 自定义封包协议(转的)
package protocol import ( "bytes" "encoding/binary" ) const ( ConstHeader = &quo ...
- Linux文件锁flock
Linux文件锁flock 在多个进程同时操作同一份文件的过程中,很容易导致文件中的数据混乱,需要锁操作来保证数据的完整性,这里介绍的针对文件的锁,称之为“文件锁”-flock. flock,建议性锁 ...
- java poi ppt操作示例
poi3.9版本,官网 http://poi.apache.org/slideshow/how-to-shapes.html import java.awt.Color; import java.io ...