BizTalk 适配器框架提供了将适配器架构和 BizTalk 类型添加到 BizTalk 项目的方法。 使用 BizTalk WCF 服务使用向导可将 WCF 发送适配器添加到 BizTalk 项目。 对于 WCF 发送适配器,必须为发送端口选择一个已有的元数据交换(MEX)终结点。 然后,需要输入用于生成架构和类型的信息。 向导完成后,使用 WCF 服务所需的架构和类型将添加到 BizTalk 项目中。
将 WCF 发送适配器的架构和类型添加到项目
在 Microsoft Visual Studio BizTalk 项目中,在解决方案资源管理器中,右键单击项目,单击“ 添加”,然后单击“ 添加生成的项”。
在 “添加生成的项 - <项目名称> ”对话框中的 “模板 ”部分中,选择“ 使用 WCF 服务”,然后单击“ 添加”。
在 “欢迎使用 BizTalk WCF 服务使用向导” 页上,单击“ 下一步”。
在 “元数据源 ”页上,选择要导入的元数据的源,然后单击“ 下一步”。
若要从正在运行的服务的元数据交换终结点下载元数据文档,请选择 “元数据交换”(MEX)终结点 选项。 这样,我们就可以创建一个作为 WCF 服务客户端的发送端口。 若要使用此选项,服务终结点必须发布服务元数据才能使用 HTTP/GET 或 HTTPS/GET 请求进行检索。 服务终结点还必须允许访问元数据,这可以通过匿名用户凭据或者以用户名和密码形式的用户凭据(采用基本身份验证方案)来实现。
注释
使用基本身份验证方案,凭据以纯文本形式发送,并很容易被截获。 此方案也不对从服务传回的信息提供保护。 必须使用安全套接字层(SSL)来加密数据。
要导入的任何其他元数据文档,请选择 “元数据文件”(WSDL 和 XSD) 选项以从文件系统导入元数据。
注释
并非所有服务都必须发布元数据。 保持禁用元数据发布可以减少服务的攻击面,并降低信息意外泄露的风险。
如果在“元数据源”页上选择了“元数据交换”(MEX)终结点选项,将显示“元数据终结点”页。 在 “元数据终结点”页上,指定提供元数据下载的正在运行的服务的 URL,该服务可以通过 WS-Metadata Exchange 或 Http-Get 进行访问。 若要从 URL 获取元数据文档,请单击“ 获取”。 如果正在运行的服务需要使用基本身份验证方案的用户凭据,请单击 “编辑 ”以打开 BizTalk WCF 服务使用向导 对话框,可在其中提供访问运行服务时要使用的用户名和密码。
注释
若要下载通过 HTTP 或 HTTPS 发布的 WCF 服务的元数据,不能使用 MEX 终结点,例如
http://localhost:8087/CalculatorService/mex
“ 元数据地址 ”文本框。 对于 WCF 服务,必须使用 WSDL 元数据下载元数据,如下所示:http://localhost:8087/CalculatorService
http://localhost:8087/CalculatorService?wsdl
如果在“元数据源”页上选择了“元数据文件”(WSDL 和 XSD)选项,将显示“元数据终结点”页。 在 “元数据终结点 ”页上,指定要导入的元数据文件。 单击“ 添加” 以添加要导入到 “元数据文件”视图的元数据文件 。 这将打开 “添加元数据文件 ”对话框,可在其中搜索元数据文件的磁盘位置。
在 “添加元数据文件 ”对话框中,选择要用于元数据的完整 WSDL 和 XSD 文件集。 可以通过在命令提示符处键入以下命令来生成这些元数据文件:
svcutil.exe /t:metadata http://localhost/service.svc/mex
单击“ 删除 ”以删除在 “元数据文件 ”视图中选择的元数据文件。
注释
SvcUtil.exe 包含在 Windows Vista 和 .NET Framework 运行时组件的 Microsoft Windows 软件开发工具包(SDK)中。
注释
以不安全的方式检索服务元数据时,可以篡改或欺骗服务元数据。 篡改的元数据可以将客户端重定向到恶意服务、包含泄露的安全设置或包含恶意 XML 结构。 元数据文档可能非常大,并且经常保存到文件系统。 必须确保元数据文件未被篡改。
在 “导入 WCF 服务元数据摘要 ”页上,查看设置。 可以单击“ 返回 ”进行任何更改。 然后单击“ 导入 ”以创建用于使用 WCF 服务的 BizTalk 项目和类型。
在 “完成 BizTalk WCF 服务使用向导” 页上,单击“ 完成”。 如果要再次运行此向导,请再次选择“ 运行此向导 ”选项,然后单击“ 完成”。
BizTalk WCF 服务使用向导在 BizTalk 项目中创建使用 WCF 服务所需的 BizTalk 架构和类型。 BizTalk 类型(如端口类型和多部分消息类型)是在业务流程中创建的。 我们建议不要修改向导创建的编排。 相反,您可以根据需要在 BizTalk 项目中添加新的编排以满足您的目的。 BizTalk WCF 服务使用向导还会创建两个绑定文件, BizTalkServiceInstance.BindingInfo.xml 和 BizTalkServiceInstance_Custom.BindingInfo.xml。 BizTalkServiceInstance.BindingInfo.xml 是一个 BizTalk 绑定文件,可通过开发命令行工具或向导导入,以使用标准绑定 WCF 适配器配置发送端口,例如 WCF-NetMsmq 和 WCF-WSHttp 适配器。 BizTalkServiceInstance.BindingInfo.xml 是一个 BizTalk 绑定文件,可通过开发命令行工具或向导导入,以使用 WCF-Custom 适配器配置发送端口。
导入生成的绑定文件时,它会在操作映射格式中填充 WCF.Action 属性。 若要查看此属性的配置方式,请查看 BizTalk 管理控制台中 WCF 发送端口传输属性对话框的“常规”选项卡上的“操作”文本框。
可以通过两种不同的方式指定 WCF.Action 属性:单一动作格式和动作映射格式。 如果在单个操作格式中设置此属性(例如,
http://contoso.com/Svc/Op1
),则传出消息的SOAPAction 标头始终设置为此属性中指定的值。 如果在动作映射格式中设置此属性,传出的 SOAPAction 标头由 BTS.Operation 上下文属性确定。 例如,如果此属性设置为以下 XML 格式,并且 BTS.Operation 属性设置为 Op1,则 WCF 发送适配器将使用http://contoso.com/Svc/Op1
作为传出 SOAPAction 标头。<BtsActionMapping>
<Operation Name="Op1" Action="http://contoso.com/Svc/Op1" />
<Operation Name="Op2" Action="http://contoso.com/Svc/Op2" />
</BtsActionMapping>
如果传出消息来自业务流程端口,业务流程实例会动态将BTS:Operation属性设置为端口的操作名称。 如果传出消息是通过基于内容的路由进行的,则可以在管道组件中设置 BTS.Operation 属性。 BizTalk WCF 使用向导生成的端口具有与 <BtsActionMapping> 元素中 Name 属性匹配的名称的操作。 无需在通过向导生成的端口发送消息时,在业务流程中显式设置BTS.Operation属性。
另请参阅
如何使用 BizTalk WCF 服务发布向导将业务流程发布为 WCF 服务
如何使用 BizTalk WCF 服务发布向导将架构发布为 WCF 服务