BizTalk开发系列(三十五) TCP/IP 适配器

[>>> 更多<BizTalk开发系列>文章 ]

  BizTalk 的TCP/IP适配器最初是为英国的保健行业开发。该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯。

TCP/IP适配器支持以下几种交互模式:

  • Request Only 消息被发送到BizTalk并路由到任何流程(Orchestration)或发送端口。
  • Request-Response 消息被发送到BizTalk并接收从BizTalk返回的远端服务器的返回信息。
  • Solicit Only 消息从BizTalk发送到远端服务器。
  • Solicit-Response  消息从BizTalk发送到远端服务器,并接收远端服务器的返回信息。
  • Dynamic Solicit 动态发送。
  • Duplex Request 客户端的全双工请求。
  • Duplex Solicit BizTalk的全双工请求。

 

使用前的准备与安装

  由于BizTalk不自带TCP/IP适配器,因此在使用之前需要先到CodePlex的BTSTCPIP站点上去下载安装文件,安装过程比较简单,但是需要注意的是在安装之后或者在安装过程中需要对文件对话框里的配置文件内容手动添加到BizTalk的运行时配置文件(BTSNTSvc.exe.config)。

image

否则在运行时会出现 “The type initializer for 'Microsoft.Samples.BizTalk.Adapter.Tcp.Receive.ReceiveAdapter' threw an exception.”的异常。

 

添加适配器

  安装完毕之后需要在BizTalk管理控制台添加该适配器,以过程是为了给TCP/IP适配器创建相应的接收和发送主机。

image

在适配器的属性配置窗口,输入相应的适器名称,在适配器选项列表中选择适配器,应用之后就会在右侧的窗口看到该适配器的接收和发送主机。

image

 

演示

  该适配器具体的说明可以参考安装目录下的《TCPIP Adapter User Guide》,在以下的演示时我们同时将使用到安装目录下的:TcpClient.exe,TcpServer.exe工具。分别作为TCP请求客户端和TCP服务器。如果对TCP传输的内容感兴趣的话也可以使用tcpTrace(第三方工具)来监听传输过程中的数据包。

 以下要演示的是比较好理解的两个场景,一个是单向请求和双向请求。演示的逻辑是在BizTalk先创建一个TCP/IP的接收端口,用来监听来自TCPClient.exe发送的请求。再创建一个发送端口订阅来自相应接收端口传过来的数据。并该消息发送到TCPServer.exe。具体的配置过程可以参考用户手册。

 

单向请求

  1.接收端口配置

image

2.TCP接收适配器属性配置

image  

3.发送端口配置

image

4.TCP发送适配器属性配置

image

5.结果

image

 

双向请求

配置步骤与单向的基本一致,只是在创建端口时选择双向的端口类型即可。

1.TCPServer的配置

image

2.请求与结果

image

 

在TCP适配器配置中所使用的[S],[E]是接收适配器识别的起止符,不能修改。而[start],[end]为返回数据的起止符可以修改。另外TCP/IP适配器还支持双工访问,等整明白了再跟大家分享。

posted on 2009-03-18 19:35 Gary Zhang 阅读(1887) 评论(9) 编辑 收藏

评论

#1楼  回复 引用   

Hi 请问我目前做一个使用Biztalk TCP Adapter向服务端软件指定Socket端口
发送消息 应该怎么做

比如服务端给我开放的Socket 端口为 localhost:1888
我只需要配置TCP Adapter中的 端口号 IP号就可以了吗?
传输时的 [E][S] 需要添加么?接收响应时的[xxxx][xxxxx]这些如何定义呢?
2009-05-08 14:06 | DeeDee[未注册用户]

#2楼[楼主]  回复 引用 查看   

@DeeDee
指定IP之后发送消息时[E][S]需要添加而且不能更改. 接收响应时的[xxx]是可以自定义的,好像不添加也可以,如果你接收端不需要根据这个来分段的话.
2009-05-08 14:46 | Gary Zhang      

#3楼  回复 引用   

@Gary Zhang
多谢你的回复。

我目前做了个例子,编写业务流程使用TCP Adapter发送消息后。在服务器端的logfile里面看到了发送的消息,但是 我的接收端却没有收到相应 Response。 这说明我的发送是成功的。 问题出现在接收的时候。在事件查看器里面一直报未收到response的错误。

但是 我在这里如果直接使用TCP Adapter里面的TcpClient。exe 发送消息的话 这里我选择 expect response from a request-response port 也能正确地收到response 消息。

不知道问题出在什么地方。 TCP 发送适配器的配置也是参照了你例子中的说明 选择的是双向端口。
2009-05-11 14:17 | DeeDee[未注册用户]

#4楼[楼主]  回复 引用 查看   

@DeeDee
查看一下接收的超时时间是否足够,端口以及标记是否正确.另外必要的时候可以使用tcpTrace进行跟踪一下.
2009-05-11 14:24 | Gary Zhang      

#5楼  回复 引用   

@Gary Zhang
谢谢楼主

我配置的时候,发送端 Start Frame End Frame 设置 我设置的为[S][E]
的和Server端的不一样。。 server端[xx][xxx]
所以错了。现在改成一样的之后可以正确通过了。
2009-05-12 11:54 | DeeDee[未注册用户]

#6楼  回复 引用   

Hi Gary
前面的回复是我自己配置TcpServer.exe作为服务端成功了。

我现在的问题还是,无法使用Biztalk 流程接受客户提供的服务端发送的消息,方便的话能不能帮我分析下。

场景1 自己配置TcpAdapter中的TcpServer.exe作为服务端
在Biztalk流程中我使用了Tcp 端口 发送消息, Server端正确收到了消息,在Biztalk 流程中我也成功地收到了Response消息。

场景2 使用客户提供的程序作为服务端。
使用 TcpAdapter中的 TcpClient.exe连接客户提供的服务端。 正确地接收发送消息。无错误产生。

场景3 使用客户提供的程序作为服务端。
在Biztalk流程中使用Tcp端口,发送消息,Server收到消息,但是Biztalk流程收不到Response。
事件查看器中报未收到Response的错误。

场景1和场景3中的配置除了Ip 端口不同外,其余都相同。
2009-05-12 16:36 | DeeDee[未注册用户]

#7楼[楼主]  回复 引用 查看   

@DeeDee
你的意思是使用BizTalk双向请求自定义TCP服务器的时候接收不到返回的消息是吧?看一下是不是自定义的TCP服务器在返回消息的时候没有在消息开始和结束的地方加上[S]和[E]标签.
2009-05-13 14:28 | Gary Zhang      

#8楼  回复 引用 查看   

用这个可以自己做QQ了吧
2009-11-19 19:32 | 极度寒      

#9楼  回复 引用 查看   

老师,我刚刚出了一个错,在我不知道为什么的情况下,又没有问题了,我先知道为什么会出这个错误?
Event Type: Error
Event Source: BizTalk Server 2006
Event Category: BizTalk Server 2006
Event ID: 5787
Date: 5/25/2011
Time: 6:26:28 PM
User: N/A
Computer: VMEAI
Description:
The Messaging Engine failed to register an adapter "SOAP". Details: "Registering multiple adapter types within the same process is not a supported configuration. For e.g. HTTP and SOAP receive adapters cannot co-exist in the same process"

For more information, see Help and Support Center at http://go.microsoft.com/fwlink/events.asp.
2011-05-25 18:36 | 香槟      

导航

公告


本Blog所有内容,若无特殊说明,均为原创。如需转载,请注明作者和出处,且保证内容完整!如有其他用途,请联系作者: cbcye@live.com













昵称:Gary Zhang
园龄:4年1个月
粉丝:63
关注:2

我的标签

随笔分类(89)

随笔档案(117)

BizTalk资源

IBM Learning Resource

积分与排名

  • 积分 - 128953
  • 排名 - 773

最新评论

阅读排行榜