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 ...
随机推荐
- 廖雪峰js教程笔记 1
遍历Array可以采用下标循环,遍历Map和Set就无法使用下标.为了统一集合类型,ES6标准引入了新的iterable类型,Array.Map和Set都属于iterable类型. 具有iterabl ...
- 深入剖析Java中的装箱和拆箱
深入剖析Java中的装箱和拆箱 自动装箱和拆箱问题是Java中一个老生常谈的问题了,今天我们就来一些看一下装箱和拆箱中的若干问题.本文先讲述装箱和拆箱最基本的东西,再来看一下面试笔试中经常遇到的与装箱 ...
- hdu1106 排序水题
Problem Description 输入一行数字,如果我们把这行数字中的‘5’都看成空格,那么就得到一行用空格分割的若干非负整数(可能有些整数以‘0’开头,这些头部的‘0’应该被忽略掉,除非这个整 ...
- 《DSP using MATLAB》示例Example4.8
代码: b = [0,1]; a = [3, -4, 1]; % polynomials coefficients [R,p,c] = residuez(b,a) [b,a] = residuez(R ...
- DSP using MATLAB 示例 Example3.15
上代码: subplot(1,1,1); b = 1; a = [1, -0.8]; n = [0:100]; x = cos(0.05*pi*n); y = filter(b,a,x); figur ...
- Scau 10327 Biggest Square
时间限制:1000MS 内存限制:65535K提交次数:0 通过次数:0 题型: 编程题 语言: G++;GCC Description You are given a M*M cloth wi ...
- S5中新增的Array方法详细说明
ES5中新增的Array方法详细说明 by zhangxinxu from http://www.zhangxinxu.com 本文地址:http://www.zhangxinxu.com/wor ...
- BestCoder Round #66 (div.2)
构造 1002 GTW likes gt 题意:中文题面 分析:照着题解做的,我们可以倒着做,记一下最大值,如果遇到了修改操作,就把最大值减1,然后判断一下这个人会不会被消灭掉,然后再更新一下最大值. ...
- CSS抗锯齿 font-smoothing 属性介绍
CSS3里面加入了一个“-webkit-font-smoothing”属性. 这个属性可以使页面上的字体抗锯齿,使用后字体看起来会更清晰舒服. 加上之后就顿时感觉页面小清晰了. 淘宝也在用哦! 它有三 ...
- hdu2612 Find a way
Problem Description Pass a year learning in Hangzhou, yifenfei arrival hometown Ningbo at finally. L ...