BizTalk开发系列(三十一)配置和使用HTTP适配器

BizTalk的主机分别进程内主机和独立主机。但由于一直使用的是进程内主机,对于独立主机的认识比较模糊,前不久在做一个BizTalk的项目的时 候,个别系统使用HTTP的方式发布Txt之类的文本的。刚好HTTP适配器与其他的适配器有一点不同就是它的接收适配器是宿主在独立主机(IIS)上。 在使用的时候需要进行额外的配置。现在我们就来看一下运行于独立主机上的HTTP接收适配器的使用,以及运行于进程内主机的发送适配器的使用。

为 HTTP 接收位置配置 IIS

BizTalk主机分为进程内主机和进程外主机,进程内主机是指宿主在BizTalk运行时进程的主机,独立主机是指是作为外部进程(如 ISAPI 扩展和 ASP.NET)适配器的宿主。因此在配置HTTP接收位置之前需要先配置IIS的BizTalk接收适配器扩展。

1.首先打开IIS管理器,在Web服务扩展中添加一个新的Web服务扩展。

2.在新的Web扩展中输入扩展的名称和位置,BizTalk扩展的位置一般在:C:\Program Files\Microsoft BizTalk Server 2006\HttpReceive\BTSHTTPReceive.dll 。最后选择设置扩展状态为允许。

3.设置完成之后,可以在IIS的Web服务扩展中查看到新添加的扩展。

配置接收位置

   之前讲到了HTTP适配器是运行于独立主机的,因此配置接收位置的时候跟其他适配器有一点不同,也就是除了在BizTalk应用程序里配置之外还需要在独立主机(IIS)上进行配置。

1. 在IIS上创建接收位置的位置比较简单,只需要在IIS上创建一个虚拟目录,将目录的地址指向BizTalk HTTP扩展DLL的目录。不过有两点需要注意,一是为发安全起见将虚拟目录的运行模式选择读取和执行,另外如果需要使用隔离级别需要创建一个独立的运行 池,运行池的帐户要存在于BizTalk Isolated Hosts 和 IIS_WPG组中。并且需要给虚拟目录指定运行池。

为运行池指定用户

为虚拟目录指定运行池

至此您可能会试着去访问此接收位置,由于还未在BizTalk Application中配置接收位置,因此访问时您会收到HTTP 500的错误。不过BizTalk在事件日志中给出了友好的提示,如下。如果在配置或运行过程中出现错误也可以参考这些信息解决。

The BizTalk HTTP receive adapter failed to initialize itself. Possible reasons:
1) Receive location URL is not created/configured correctly.
2) Receive location is not enabled.
3) HTTP receive adapter is not running under a user that has access to management and message databases.
4) Isolated host instance is not created for HTTP Receive adapter.

2. 在BizTalk的Application中配置HTTP接收位置。如下图所示,只需要配置虚拟目录地址即可。

测试

在测试之前我们需要创建一个发送端口来接收来自HTTP接收端口发布的消息。HTTP接收适配器支持Get和Post方法的请求。Get方式的测试我们可以直接在URL后面加上问号再加上您要的请求的数据即可。

Post方法我们可以自己写代码,也可以借用第三方的工具。这里使用的是Fiddler。一个很强大的免费的HTTP  Debuger工具。

配置发送端口

   由于HTTP的发送适配器是运行于进程内主机的因此配置比接收适配器要简单点,只需要配置目标HTTP路径即可(如果安全上的问题)

测试

基于之前创建好的接收位置,我们在HTTP的发送端口端口订阅从HTTP接收适配器发布过来的消息。同时新建一个Aspx的页面。将接收到的请求数据写到日志(测试时使用小量数据)。

System.IO.StreamReader qr = new System.IO.StreamReader(Request.InputStream, System.Text.Encoding.UTF8);
        string uriString = qr.ReadToEnd(); 

        if (!string.IsNullOrEmpty(uriString))
        {
            System.Diagnostics.EventLog.WriteEntry("HTTPDemo", "Content:\r\n" + uriString); 
        } 

发布HTTP请求之后我们可以在日志中查看到相应的记录。

使用HTTP适配器接收Txt之类的文本.

之所以把接收文本提出来是因为HTTP的接收适配器是宿主在IIS上的,需要请求方主动的请求该路径才可以。但有些系统可能它是通过HTTP的方式将文本发布出来的。比如http://www.cbcye.com/demo.txt 这样路径。所以不能使用HTTP接收适配器去主动请求Txt.那么这个任务就落在了发送适配器上面,但是发送适配器只支持POST方法,Txt文本是无法通过POST方法得到的。

 所以需要创建一个接收代理(Aspx页面),代理的作用是接收发送适配器上的请求,然后通过以下的代码向目标路径获取文本数据,并将数据返回,被发送适配器的接收方法获得。需要注意的是需要将前台页面的代码去除。这样才能将接收到的Txt信息原样的返回。

System.IO.StreamReader qr = new System.IO.StreamReader(Request.InputStream, System.Text.Encoding.UTF8);
string uriString = qr.ReadToEnd();
if (!string.IsNullOrEmpty(uriString))
{
    System.Net.HttpWebRequest req = (System.Net.HttpWebRequest)System.Net.WebRequest.Create(uriString);
    req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.2; zh-CN; rv:1.9.0.3) Gecko/2008092417 Firefox/3.0.3 (.NET CLR 3.5.21022)";
    System.Net.HttpWebResponse res = (System.Net.HttpWebResponse)req.GetResponse();
    System.IO.StreamReader sr = new System.IO.StreamReader(res.GetResponseStream(), System.Text.Encoding.UTF8);
    Response.Write(sr.ReadToEnd());
}

时间: 2024-10-07 18:41:07

BizTalk开发系列(三十一)配置和使用HTTP适配器的相关文章

BizTalk 开发系列(四十一) BizTalk 2010 BAM 安装手记

使用64位系统可以支持更大的内存,现在服务器基本上都使用64位系统.微软从Windows Server 2008 R2开始服务器版的操作系统也只支持64位了,不过对于像BizTalk这种“繁杂的东西”在64位系统下确实增添了不少麻烦. 微软于9月底正式发布了面向企业SOA解决方案的最新产品BizTalk Server 2010.最新想搭一个最新的环境.本为装了BizTalk不下百遍的我,应该可以很快就搞起来.但是这次安装太纠结了.特别是在BAM方面,竟然耗了近 两天(白天上班)才搞定.是不是技术

BizTalk开发系列(三十三)BizTalk之Excel终极解决方案

Excel作为优秀的客户端数据处理程序得到了广泛的应用. 由于其简单又强大的功能在很多公司或个人的数据处理中占用非常重要的位置. 而BizTalk作为微软的SOA主打产品虽然免费提供了很多Adapter支持各种协议及应用程序. 不过非常可惜没有提供对富客户端程序Excel的"原生态"支持. 所以我们只能自己查找解决办法. 应用程序对Excel的支持网上已经有很多解决方案的,一部分是使用ODBC的excel驱动将Excel作为数据源进行处理,对于规范数据表之类的Excel文档这种方法比较

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

BizTalk 的TCP/IP适配器最初是为英国的保健行业开发.该适配器属于BizTalk进程内适配器,将消息通过TCP/IP 套接字符串在BizTalk服务器与远程客户端间进行通讯. TCP/IP适配器支持以下几种交互模式: Request Only 消息被发送到BizTalk并路由到任何流程(Orchestration)或发送端口. Request-Response 消息被发送到BizTalk并接收从BizTalk返回的远端服务器的返回信息. Solicit Only 消息从BizTalk发

BizTalk开发系列(三十八)微软BizTalk Server定价和许可[解读]

做BizTalk的项目一段时间了,但是对BizTalk的价格和许可还不是很了解.给客户设计解决方案时大部分产品都是直接按照企业版的功能来设计,很 少考虑到价格和许可方面的因素,以为这个不是我们的事情或者认为使用企业版是应该的,企业软件的销售就是有意思,懂产品的和卖产品的一般不是一个人.懂产 品的一般是做技术的,学这个产品的时候就是用D版的或者是企业版,不会去关心不同产品的定价.当然在跟客户讲的时候就很少考虑版本及价格因素.而卖产品就 会添油加醋说要实现这样的平台您需要购买XX.YY产品,当然为要

BizTalk 开发系列(三十九) BizTalk Server 2009技术概览

BizTalk Server 2009已经发布一段时间了,之前Beta版发布的时候也写过一篇文章<BizTalk Server 2009 Beta初体验>, 当时比较了2006 R2与2009 Beta这两个版本之间的常见功能的开发.发现表现平平,没有什么太让人兴奋的地方.随着最近一段时间BizTalk Server 2009配套产品(组件)的陆续发布.对于新一代的BizTalk开发应用平台的认可逐渐清晰起来. BizTalk新一代的开发与应用平台除了操作系统.数据库及集成开发环境之外主要包括

BizTalk开发系列(三) 单机环境下的BizTalk Server 2006 R2安装

大部分的开发环境都是在单机环境下进行的,今天整理了一下BizTalk Server 2006 R2在单机环境下的安装步骤. 1. 软件需求 在独立服务器中完整安装BizTalk Server 2006 R2的基本软件需求 Windows 2003 Server with Service Pack 2 (SP2), or Windows 2003 Server R2 Microsoft Office Excel 2003 and InfoPath 2003 with Service Pack 2

BizTalk开发系列(三十四) Xpath

XPath 是在 XML 文档中查找信息的语言,在BizTalk的开发中应用非常广泛,当然你可以不必先学Xpath再去学BizTalk.但是如果对Xpath有一定了解的 话,在很多应用下会使你的开发更加快捷.为了方便查阅整理了一些Xpath常识和实际实例给开发过程提供个参考.由于BizTalk还未支持Xpath 2.0,所以以下的例子都是基于W3C 1.0规范. Xpath的重要性[实 际的场景] 之前做一个升级的项目,在项目中需要对XML进行节点查找并比较里面相应的值,通过比较结果再选取它的父

BizTalk开发系列(三十二)浅谈BizTalk主机性能优化

很多BizTalk的项目都要考虑到性能优化的问题,虽然BizTalk采用多线程处理消息的,大大提高了程序效率.但默认情况下 BizTalk的主机有很多阻止参数会控制BizTalk对服务器的资源使用率,从而约束了BizTalk的效率.之前做了一个200万条CSV数据通过 BizTalk传到数据库的程序.在不改变程序的情况下对主机性能做了一下简单优化,处理效率发生了成倍的增长. 程序逻辑 先简单的介绍一下程序的处理逻辑,CSV原文件大概有200多万条数据,文件大小50多M.每条只有两个字段总长度大概

BizTalk开发系列(三十七) 性能监视器在BizTalk性能测试中的使用

BizTalk应用程序的性能测试和分析是一个非常重要的过程,因为BizTalk的应用程序在Run-time时受部署结构.消息请求数量和消息大小等 的影响很大,因此无论是简单还是复杂的的应用都需要在部署到生产环境之前执行这一过程. 一般在性能测试中通过Windowns系统自带的性能能监视器来采集相关的数据, 并根据这些计数器的值来判断应用程序的性能瓶颈和负载大小. 虽然Windows性能监视器大家应该不陌生了,但是如果使用方法不正确的话不仅可能得不到你要的数据,还有可能使你白白做了测试.接下来将主