演练:使用 WCF-NetTcp 适配器自定义消息处理

在本演练中,Windows Communication Foundation (WCF) 客户端使用 WCF-NetTcp 适配器将包含嵌入的二进制 JPEG 图像数据的 WCF 消息提交到 BizTalk 接收位置。 使用 XPath 语句提取二进制编码 JPEG 图像, (Base64 节点编码) 适配器配置中的 入站消息正文 设置。 XPath 处理不同于BizTalk Server用于处理传入消息的默认方法。 在默认方法中,适配器获取 WCF 消息的 Body 元素的全部内容,然后将其提交到 BizTalk MessageBox 数据库。 XPath 消息处理提取传入 WCF 消息的特定部分以创建自定义 BizTalk 消息。 在此示例中,XPath 处理在传入的 WCF 消息 (查找名为 SendPicture 的 XML 元素,该消息) XML 格式。 找到该元素之后,XPath 会提取该元素的值作为二进制 Base64 编码对象,并将该二进制值放在 BizTalk 消息中。 该消息会被发布到 MessageBox 数据库,然后借助发送端口筛选器订阅输出到 FILE 发送端口。 本示例中未使用任何业务流程,并且所有的处理都使用 XPath 通过 BizTalk 消息完成。

WCF 适配器用于从 BizTalk Server 与 Windows Communication Foundation (WCF) 客户端和 WCF 远程服务进行通信。 它允许将业务流程和架构发布为 WCF 服务,并为业务流程提供使用外部 WCF 服务的功能。 WCF-NetTcp 适配器使用 NetTcpBinding 绑定,这意味着使用优化的二进制消息编码进行 TCP 传输。 WCF-NetTcp 适配器由一个发送适配器和一个接收适配器组成。 它提供了对 SOAP 安全性、可靠性和事务功能的完全访问权限。

在完成本演练后,你将了解如何执行以下任务:

  • 通过使用 BizTalk Server 管理控制台,导入 MSI 文件以创建发送端口、接收端口和接收位置。

  • 通过使用 BizTalk Server 管理控制台,将 WCF 接收位置配置为运行 XPath 语句,以从 WCF 消息的 SendPicture 元素中提取数据。

注意

hosttrusted 元素指定与接收处理程序关联的主机是否受信任。 在 bindings.xml 文件中,它设置为 其默认设置,false因为在此示例中,我们不关心 BizTalk Server Enterprise Single Sign-On 服务 (SSO) 。 SSO 允许通过BizTalk Server传递用户凭据,以将第三方应用程序与BizTalk Server集成。 设置 false 阻止 BizTalk 消息在 SSO 处理过程中通过 BizTalk 服务。

必备条件

要执行此示例中的步骤,请确保您的环境安装了以下必备组件;

  • 生成程序集并运行部署过程的计算机和运行示例的计算机都需要 Microsoft Windows Server 2008 SP2、Microsoft .NET Framework 4.5 和 Microsoft BizTalk Server。

  • 用于构建程序集和运行部署过程的计算机需要安装 Microsoft Visual Studio。

  • 运行示例的计算机需要 WCF 适配器和 WCF 管理工具。 这些是在安装 Microsoft BizTalk Server 期间要安装的选项。

  • 在用于执行管理任务的计算机上,必须作为BizTalk Server管理员组成员的用户帐户运行,才能在BizTalk Server管理控制台中配置BizTalk Server应用程序设置。 此用户帐户还必须是本地管理员组的成员,才能部署应用程序,管理主机实例以及其他可能需要的任务。

  • 在需要 WCF 功能的任何计算机上,在 完成 WCF 示例 https://go.microsoft.com/fwlink/?LinkId=135510的一次性设置过程。

  • 在运行示例并将 .msi 文件导入BizTalk Server的计算机上,请确保主机不是受信任的主机,否则导入将失败。

  • 必须下载演练代码并将其提取到计算机。 本演练是整个 WCF 适配器演练包的一部分。 可以从 BizTalk Server 开发人员中心https://go.microsoft.com/fwlink/?LinkId=194140下载文件WCFAdapterWalkthroughs.exe。

配置 WCFCustomMessageProcessing 应用程序和项目

  1. 在BizTalk Server管理控制台中,右键单击“应用程序”,选择“导入”,然后选择“MSI 文件”。 转到 C:\WCFCustomMessageProcessing\WCFCustomMessageProcessing.msi 文件,然后单击“ 打开”。 这会为此应用程序创建以下项目:

    • FileSP 发送端口:C:\WCFCustomMessageProcessing\Out 本地文件系统上的位置,其中 JPEG 图像数据由 BizTalk Server 作为示例处理的最终输出发送。 可以查看 BTS 的发送端口筛选器 。ReceivePortName = NetTcpRP“文件”“属性 ”对话框中的“ 筛选器”下配置。 该筛选器与 NetTcp 接收端口相关联。 在接收位置对消息执行 XPath 处理后,NetTcpRP 接收端口上接受的任何消息都将发送到 C:\WCFCustomMessageProcessing\Out 的 FileSP 发送端口输出位置。

    • NetTcpRP 接收端口:逻辑上包含 NetTcpRL 接收位置的端口。

    • NetTcpRL 接收位置:这使用默认 的 PassThroughTransmit 管道和 WCF-NetTcp 适配器运行 XPath 语句,以从传入的 WCF 消息中拉取 JPEG 图像数据。

配置 WCFCustomMessageProcessing 应用程序的备用步骤

  • 或者,下面是在不使用 C:\WCFCustomMessageProcessing\bindings.xml 文件的情况下配置应用程序的手动步骤。 如果前面的绑定文件导入过程工作正常,则您不需要执行此操作。 但是阅读这些信息可能会增加您对 MSI 文件所发生变化的了解。

  • (NetTcpRP) 创建单向接收端口, (NetTcpRL) 创建接收位置。

    1. 展开 WCFCustomMessageProcessing 应用程序,右键单击“ 接收端口”,选择“ 新建”,然后选择“ 单向接收端口”。 在“接收端口属性”对话框中,输入NetTcpRP“名称”,然后单击“确定”。

    2. 右键单击 NetTcpRP 接收端口,选择“ 新建”,然后选择“ 接收位置”。 在“ 接收位置属性 ”对话框中,输入 NetTcRL名称”。 在“ 传输 ”部分中,单击“ 类型 ”下拉列表框,从下拉列表中选择“ WCF-NetTcp ”,然后单击“ 配置”。

    3. 在“常规”选项卡上的“地址 (URI) 字段中输入 net.tcp://localhost/NetTcpRL/Image

    4. 在“ 安全 ”选项卡上,将 “安全模式 ”设置为“ 无”。

    5. 在“消息”选项卡上,选择“入站 BizTalk”消息正文的“路径”选项,并为正文路径表达式输入 /*[local-name()="SendPicture" and namespace-uri()='http://tempuri.org/']/*[local-name()="stream"] 。 选择 Base64 作为 节点编码Path 选项设置为 value,因为BizTalk Server接收的 WCF 消息的正文采用以下格式:<SendPicture xmlns=“http://tempuri.org/"><流>实际 base 64 编码二进制图像数据</流></SendPicture>

    6. 在“ 接收位置属性 ”对话框中,单击“ 确定”。

  • 创建订阅 NetTcpRP 接收端口的单向文件发送端口 (FileSP)。

    1. 右键单击“ 发送端口”,选择“ 新建”,然后选择“ 单向接收端口”。 选择 “静态单向端口”。 在“名称”中输入 FileSP

    2. 在“ 传输 ”部分中,单击“ 类型 ”下拉列表框,从下拉列表中选择“ 文件 ”,然后单击“ 配置”。

    3. “目标文件夹” 下输入 C:\WCFCustomMessageProcessing\Out,然后单击“ 确定”。

    4. 单击“ 筛选器”,选择 BTS.ReceivePortName == NetTcpRP,然后单击“ 确定”。

配置发送端口并运行应用程序

  1. 右键单击 WCFCustomMessageProcessing 应用程序,然后选择“ 启动”。 该操作会登记 NetTcpRL 接收位置并启动 FileSP 发送端口。

  2. 在 Visual Studio 中,从 C:WCFCustomMessageProcessing\Client 文件夹中打开Client.sln文件。 在“解决方案资源管理器”中,右键单击“客户端”项目,然后选择“生成”。

  3. 在 Visual Studio 中,选择“ 调试”,然后选择“ 在不调试的情况下启动 ”以运行 Client.exe 应用程序。 将出现命令提示符,指出图像已提交到BizTalk Server。

  4. 观察成功的 {GUID}.jpg 文件输出到 C:\WCFCustomMessageProcessing\Out 的 send 端口文件文件夹。这表明应用程序提取 JPEG 文件并将其写出到文件发送端口的处理已成功完成。