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

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

WCF 适配器用于与来自) 客户端和 WCF 远程服务Windows Communication Foundation (WCF BizTalk Server。 它允许将业务流程和架构作为 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 适配器演练包的一部分。 可以从 开发人员中心WCFAdapterWalkthroughs.exe下载BizTalk Server文件https://go.microsoft.com/fwlink/?LinkId=194140

配置 WCFCustomMessageProcessing 应用程序和项目

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

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

    • 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 (URI)

    4. 在" 安全性" 选项卡上,将" 安全模式"设置为""。

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

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

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

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

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

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

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

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

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

  2. 在Visual Studio,打开 Client.slnC:WCFCustomMessageProcessing\Client 文件夹中的文件。 在解决方案资源管理器,右键单击"客户端"项目并选择"生成"

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

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