概述
第二篇我们稍微提升一点难度,介绍一下BizTalk当中的WCF(Windows Communication Foundation)适配器,通过WCF适配器,BizTalk能够让服务(如Web services)发挥出更大的价值,可以对其进行调用、管理以及将其看作为一个对象通过流程引擎编排起来,以满足我们企业中经常变化的需求。
该适配器共分为两种:接收适配器和发送适配器。使用WCF接收适配器可以接收WCF服务请求、创建一个BizTalk消息对象,并将关联的属性升级到消息上下文中;使用WCF发送适配器可通过无类型的协议调用WCF服务。在这里需要注意的是,WCF适配器不支持使用远程调用(RPC)型的Web Services,因为RPC型Web Services中的消息部分(message parts )引用的是消息类型而不是消息元素,而WCF适配器使用的是消息部分的元素。不过不用担心,我们可以通过“添加Web引用”向导添加RPC型的Web Services,这样仍然可以在BizTalk Server项目中使用Web Services。WCF在演示过程中我们主要会做如下几个步骤:
· 使用BizTalk WCF Service 消费向导;
· 创建流程并调用一个外部的Web service;
· 使用WCF–WSHttp适配器配置一个发送端口;
演示
场景介绍
在这里我们模拟创建一个贷款申请的预审批流程,并调用一个基于WCF的Web service服务,在开始演示之前,我做了一些准备工作,创建了2个BizTalk的工程和几个Schema,另外还有一个外部的WCF服务,下面我们先来熟悉一下后面演示会用到的这些工程和文件。
ConsumeService解决方案
这个解决方案包含两个工程:ConsumeService.Orchestrations 和 ConsumeService.Schemas,为了看着方便,在后面的演示中我将他们统称为Orchestrations工程和Schemas工程(其实也是为了我自己写着方便)。Schema工程包含两个架构,LoanApplication 表示一个供给银行处理的贷款申请表架构。FinalLoanDocument 表示一个经由BizTalk来管理的预审批处理之后发送到贷款处理流程的架构。Orchestration 目前是一个空的工程,稍后我们会在此创建我们需要的流程。
LonesomePine 贷款审批WCF服务
这是一个外部的Web service,银行用它来对申请贷款进行预批复处理,为了方便测试,我们在工程中创建了一个WinForm对这个Web service进行测试。从下图中我们可以看到IE里面对该Web service的WSDL描述,以及我们为方便测试而创建的WinForm界面和运行结果。
这个Web service会根据SSN来计算当前用户的信用卡积分并返回一个申请贷款是否成功的状态。SSN是什么?好吧,科普一下,省得大家去Bing搜索了,SSN的全称是Social Security Number,有了它,我们才能在米国申请银行账户、信用卡、租房等等,跟中国的身份证差不多,比身份证应用的更广泛点,从技术的角度我们可以理解为一个唯一标识的ID。
使用WCF服务
在安装好BizTalk之后,你会看到在Visual Studio中会新增一项叫做使用WCF Service的功能,它可以帮助你把来自于外部的服务集成在一起,听着可能有些抽象不好理解?在这个场景当中,我们会使用这个功能来调用上面提到的那个来自于外部的服务,并且生成我们所需要的Schema、流程等等。
1. 打开Visual Studio,在ConsumeService解决方案中右键点击工程文件ConsumeService.Orchestrations,选择添加->添加生成项。
2. 在添加生成项的窗口中,选择使用WCF服务并点击添加。
3. 在欢迎使用 BizTalk WCF 服务使用向导页上,单击下一步,在元数据来源页上,选择要导入的元数据的来源,然后单击下一步,我们选择第一项元数据交换(MEX)终结点。
这里有两个选项,我解释一下:
元数据交换(MEX)终结点 [Metadata Exchange(MEX)endpoint]
如果要是从某个正在运行的服务的元数据交换节点下载元数据文档,则使用该选项,它能够创建一个发送端口来充当WCF服务的客户端。在使用该选项的时候,服务终结点必须使用HTTP/GET或者HTTPS/GET请求发布服务元数据以供检索,此外服务终结点还必须允许使用匿名用户凭据或用户凭据(对于基本身份验证方案,其形式为用户名和密码)访问元数据。说到这里需要提醒一下大家:对于上面提到的基本身份验证方案,用此方法的用户凭据是以明文的方式发送的,因此非常容易被截获,并且此方法也没有为从服务传回的信息提供任何的保护,为了解决使用这种方法的数据安全问题,可以使用安全套接字层(SSL)来加密数据。元数据文件(WSDL和XSD) [Metadata Files (WSDL and XSD)]
如果要导入其他元数据文档,则使用该选项,从文件系统中导入元数据。在这里要澄清一个概念:并不是所有的服务都必须发布元数据,使元数据发布功能保留为禁用状态可以减少服务遭受攻击的可能性,同时也能降低无意中泄露信息的危险。4. 在元数据终结点页上,指定正在运行的服务的URL,我们把LonesomePine服务的URL填在上面,点击获取键即可从该URL中获取到服务的元数据。
5. 在导入 WCF 服务元数据摘要页上,查看设置。若要进行任何更改,可单击上一步。然后,单击导入。
6. 在完成 BizTalk WCF 服务使用向导页上,单击完成,这时候BizTalk WCF服务使用向导会在项目中自动创建使用LonesomePine服务所需的BizTalk架构和类型,包含2个XML绑定文件、3个Schame和1个业务流程。
LoanProcessing.BindingInfo.xml
这是一个BizTalk绑定文件,可使用开发命令行工具或向导导入该文件,从而配置具有标准绑定WCF适配器的发送端口,这里所说的WCF适配器是WCF-NetMsmq或WCF-WSHttp等。LoanProcessing_Custom.BindingInfo.xml
这同样是一个BizTalk绑定文件,可以使用开发命令行工具或向导导入该文件以配置具有WCF-Custom适配器的发送端口。