BizTalk开发系列(三十)单向端口实现请求-响应
BizTalk本质上是异步的消息处理引擎。BizTalk的请求与响应模式是基于异步之上的同步消息交换。消息引擎通过消息的扩展架构链接许 多异步消息,消息的相关集关联请求与响应消息。例如,客户端发送一个SOAP请求到BizTalk SOAP适配器。连接该Web Service的BizTalk Orchestration接收处理消息。并返回一个SOAP响应消息。对于客户端程序来说是一个同步的SOAP请求。但在引擎内部则是通过并联交换许多 的异步消息来实现。
以下是请求-响应模式中的五个架构属性:
- BTS.CorrelationToken 允许响应消息路由到请求-响应端口。
- BTS.EpmRRCorrelationToken 用于内部的消息引擎指定请求-响应消息流的服务器名称,处理ID和唯一的GUID。
- BTS.IsRequestResponse 指定是否是请求-响应消息
- BTS.ReqRespTransmitPipelineID
- BTS.RouteDirectToTp 用于内部消息引擎允许循环回调请求-响应消息。
基于以上介绍大概了解了双向端口(请求-响应模式)在BizTalk内部的交换原理,我们的想法是通过单向端口来实现双向端口的功能,理论上大体 是这样的:创建一个单向端口接收来自Web Service的请求,在Orchestration中通过消息属性订阅消息,Orchestration接到消息之后处理消息,比如创建一个同样的消息 (拷贝相应的属性),并修改相应字段的值。新的消息通过发送形状发布到MessageBox中,并初始化相关集。消息引擎根据消息的相关集设置将消息返回 给请求与响应端口。
下图是根据理论分析创建的流程图,流程图非常的简单,接收与发送端口都是使用Direct端口类型Receive接收形状使用Filter从Messagebox从MessageBox订阅消息。Send发送形状则是将消息发布到Messagebox。
![]()
在Construct New Message形状里的表达式语句如下,通过创建新的消息并指定相关集的值。
System.Diagnostics.EventLog.WriteEntry("TwoWayDemo","Begin Process");
OutMsg = InMsg;
OutMsg(*) = InMsg(*);
OutMsg.Body.Field="cbcye@live.com";
OutMsg.Header.State="Completed";
OutMsg(BTS.RouteDirectToTP)=true;
System.Diagnostics.EventLog.WriteEntry("TwoWayDemo","Completed Process");
BizTalk项目部署之后需要将Schema发布为Web
Service.并在BizTalk应用程序中创建接收端口,由于Orchestration是通过属性订阅消息所以需要在SOAP接收位置中使用XML
Receive Pipeline。最后我们通过soapUI测试Web
Service可以看到我们的SOAP请求已经的成功的被Orchestration处理并返回处理结果。
![]()
总结
以上简单的Demo涉及到的BizTalk相关知识比较多比如发布/订阅机制,相关集,SOAP 适配器的使用等。不过理解该Demo相信对于BizTalk的架构领会是一个不小的跨越。最后说明一点这里所指的单向端口是指Orchestration中的单向端口。Web Service发布的端口是双向的。
参考资料
《Microsoft BizTalk 2006 R2 Documentation》
《ESB Guidance Documentation》
BizTalk开发系列(三十)单向端口实现请求-响应的更多相关文章
- BizTalk开发系列(三十五) TCP/IP 适配器
BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适 ...
- BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]
做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或 ...
- BizTalk 开发系列(三十九) BizTalk Server 2009技术概览
BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与20 ...
- BizTalk开发系列(三十六) Orchestration单实例执行
BizTalk 是高效的消息处理引擎,采用多线程并发的方式来处理消息.也就是说当有消息被接收的时候就会产生一个新的消息处理实例.但有时目标系统可能并没有并发处理 的能力, 这时就需要在BizTalk中 ...
- BizTalk开发系列(三十四) Xpath
XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更 ...
- BizTalk开发系列(三十二)浅谈BizTalk主机性能优化
很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率, ...
- BizTalk开发系列(二十八) MSMQ 适配器
MSMQ(MicroSoft Message Queue,微软消息队列)是在多个不同的应用之间实现相互通信的一种异步传输模式,相互通信的应用可以分布于同一台机器上,也可以分布于相连的网络空间 中的任一 ...
- BizTalk开发系列(三十三)BizTalk之Excel终极解决方案
Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapte ...
- BizTalk开发系列(二十二) 开发自定义Map Functoid
尽管 BizTalk Server 提供许多Functoid以支持一系列不同的操作,但仍可能会遇到需要其他方法的情况.<BizTalk开发系列 Map扩展开发>介绍了通过使用自定义 XSL ...
随机推荐
- SpringHttpInvoker解析1-使用示例
HTTP invoker是一个新的远程调用模型,作为Spring框架的一部分,来执行基于HTTP的远程调用(让防火墙可以接受),并使用Java的序列化机制. 服务端 定义服务接口UserService ...
- BootSrap学习
1.当row1里边有2个或多个col的时候,如果位置在后边的col的高度大于位置在前边的col,就可能会导致下一个row2在满足col-xs-*在满足和为12的情况下错乱分行.解决办法是强行给row1 ...
- poj2385 dp(递推)
题目链接 :http://bak3.vjudge.net/contest/136499#problem/D 题意: //转移方程dp[i][j]=max(dp[i-1][j],dp[i-1][j-1] ...
- nefu558 bfs
Description AC小公主很喜欢设计迷宫,她设计的迷宫只有两个口,一个入口,一个出口.但小公主有时候很调皮,她会让挑战者走不出迷宫.现在给你AC小公主的迷宫请你判断挑战者能否成功从出口走出迷宫 ...
- POJ 1159 回文串-LCS
题目链接:http://poj.org/problem?id=1159 题意:给定一个长度为N的字符串.问你最少要添加多少个字符才能使它变成回文串. 思路:最少要添加的字符个数=原串长度-原串最长回文 ...
- Swift3.0语言教程分割字符串与截取字符串
Swift3.0语言教程分割字符串与截取字符串 Swift3.0语言教程分割字符串 如果想要快速的创建一个数组,我们可以将字符串进行分割,分割后的内容将会生成一个数组.在NSString中有两个分割字 ...
- angular的post请求,SpringMVC后台接收不到参数值的解决方案
http://www.ithao123.cn/content-6567265.html
- linux TCP Wrappers
1. TCP Wrapper简介 (出处:http://www.softpanorama.org/Net/Network_security/TCP_wrappers/) (维基百科)TCP Wrapp ...
- iOS KVC valueForKeyPath学习心得
#import <Foundation/Foundation.h> @interface myClass1 : NSObject @property (nonatomic, copy) N ...
- ural 1142. Relations
1142. Relations Time limit: 1.0 secondMemory limit: 64 MB Background Consider a specific set of comp ...