在 BizTalk Server 上安装并使用逻辑应用适配器

BizTalk Server使用逻辑应用适配器从 Azure 逻辑应用接收消息,或将消息发送到 Azure 逻辑应用。

在 Azure 中,我们将创建一个逻辑应用。 此逻辑应用使用 BizTalk 连接器连接到在BizTalk Server上创建的接收位置。 本主题假设你对 Azure 逻辑应用有一定的了解。 如果你不熟悉逻辑应用,我们建议 详细了解它们,甚至 创建自己的逻辑应用

在本主题中,我们列出了从逻辑应用接收BizTalk Server消息的步骤。 换句话说,逻辑应用将消息发送到BizTalk Server。 接收方使用 IIS 中的应用程序来处理与 Azure 服务的通信。 如果BizTalk Server位于本地,则还要在BizTalk Server上安装数据网关,并在 Azure 中创建网关。

如果BizTalk Server安装在 Azure 虚拟机 (VM) 上,则可以选择将 VM 公开为 HTTP 终结点, (获取) URL,或者不将其公开为 HTTP 终结点。 如果公开它,则无需使用网关。 可以在逻辑应用中的 BizTalk 连接器中输入 URL。 如果不公开 VM (没有 URL) ,则需要使用网关。 本主题中列出了这些步骤。

我们还介绍如何将消息从BizTalk Server发送到 Azure 逻辑应用。 换句话说,逻辑应用从BizTalk Server接收消息。 发送端非常简单,如本主题所示。

使用本主题使用逻辑应用适配器创建接收位置和发送端口。 可以在已加入域) BizTalk Server的本地 (或运行BizTalk Server的 Azure 虚拟机中使用 LogicApp 适配器。

要求

  • 用于登录到Azure 门户并创建逻辑应用的 Azure 订阅。
  • 可选。 若要将测试消息发送到逻辑应用,请安装 HTTP 测试工具,例如 FiddlerPostman。 如果使用其他方法向逻辑应用发送消息,则无需使用这些工具。

安装逻辑应用适配器

BizTalk Server 2020 及更新

从 BizTalk Server 2020 开始,逻辑应用适配器包含在BizTalk Server安装中。

BizTalk Server 2016

  1. 在BizTalk Server上,下载并安装逻辑应用适配器:
  2. 双击要安装的 LogicApp Adapter.msi 。 接受许可协议,然后 安装
  3. 完成 安装,并重启 BizTalkServerApplicationBizTalkServerIsolatedHost 主机实例。

安装后,你具有以下各项:

  • LogicApp 适配器已添加到 BizTalk 管理。

  • 将创建发送处理程序,并使用 BizTalkServerApplication 主机。

  • 接收处理程序创建为 WCF 服务,并使用 BizTalkServerIsolatedHost 主机。

  • 文件夹 LogicApp Adapter 在 BizTalk 安装目录中创建,包括两个服务:Management 和 ReceiveService。

    逻辑应用中的 BizTalk 连接器使用管理通过数据网关连接到BizTalk Server。 此管理服务允许BizTalk Server使用数据网关从 Azure 逻辑应用接收消息。 此服务仅在 BizTalk 的接收端使用。 发送端不使用它。

    输入接收位置时,逻辑应用中的 BizTalk 连接器将使用 ReceiveServiceReceiveService 负责从逻辑应用发送消息。 此服务仅在 BizTalk 的接收端使用。 发送端不使用它。

从逻辑应用接收消息

BizTalk Server从逻辑应用接收消息涉及几个步骤。 此部分说明了这些步骤。 Azure 中的用户界面可能会发生更改,因此某些步骤可能与列出的步骤不完全一致。

先决条件

  • 如果BizTalk Server位于本地,请为逻辑应用安装和配置本地数据网关。 然后,在 Azure 中创建数据网关资源以连接到BizTalk Server。
  • 如果 BizTalk Server 安装在 Azure VM 上,并且 VM 未作为 HTTP 终结点公开,则安装并配置逻辑应用的本地数据网关。 然后,在 Azure 中创建数据网关资源以连接到BizTalk Server。
  • 如果在 Azure VM 上安装BizTalk Server,并且 VM 作为 HTTP 终结点公开,则不需要或使用网关。

结合使用 NullAdapter 和逻辑应用适配器 - 仅限 BizTalk Server 2016

如果安装逻辑应用适配器和 NullAdapter,可能会看到以下错误:

Another adapter with the same OutboundEngineCLSID value already exists

适配器类的 GUID 对于逻辑应用适配器和 NullAdapter 相同。 如果需要这两个适配器,可以:

  1. GitHub 上下载 NullAdapter 源代码
  2. 更新 NullSendAdapter.cs 类中的 GUID。
  3. 更新 NullAdapter.reg 文件中的 OutboundEngineCLSID 值。
  4. 生成并部署 NullAdapter。

步骤 1:创建 IIS 应用程序

IIS 应用程序使用 Management 和 ReceiveService 服务。

可以使用新的应用程序池或现有应用程序池运行 IIS 应用程序。 AppPool 的标识需要与运行 BizTalk 服务的帐户相同的组的成员身份,例如 BizTalk 应用程序用户和 BizTalk 独立主机用户组。

提示

如果创建新的应用程序池,请保留默认的 .NET CLR 版本和托管管道。 请记住,选择一个标识 (高级设置) ,该标识具有与 BizTalk 服务帐户相同的 BizTalk 组的成员身份。

创建管理 IIS 应用程序

此 IIS 应用程序的 URL 由逻辑应用中的 BizTalk 连接器 () 使用BizTalk Server上的数据网关。

BizTalk Server 2020 及更新
  1. 使用 BizTalk 配置向导配置 REST API。 有关配置的帮助,请参阅 配置指南。 有关 REST API 的更多详细信息,请参阅 BizTalk REST API 参考
  2. 打开 Web 浏览器并转到 http://localhost/BizTalkManagementService/Schemas。 将显示架构列表,或者系统会提示打开/保存 schemas.json。 实际结果取决于 Web 浏览器。 如果这两个都未发生,请检查 REST API 配置。
BizTalk Server 2016
  1. 打开“Internet 信息服务 (IIS) 管理器”。

  2. 右键单击“ 默认网站”,然后单击 “添加应用程序”。 在此新应用程序中:

    1. 输入应用程序的 别名 (名称) ,例如 IISLogicApp
    2. 选择 应用程序池。
    3. 物理路径 设置为 C:\Program Files (x86)\Microsoft BizTalk Server 2016\LogicApp Adapter\Management
    4. 用于 确认应用程序池标识通过身份验证和授权测试的测试设置。
  3. 选择“确定”,保存所做更改。

  4. 打开 Web 浏览器并转到 http://localhost/YourApplicationAlias/schemas?api-version=2016-10-26,例如 http://localhost/IISLogicApp/Schemas?api-version=2016-10-26。 将显示架构列表,或者系统会提示打开/保存 schemas.json。 实际结果取决于 Web 浏览器。 如果这两个都未发生,则 AppPool 标识可能缺少 BizTalk 组的成员身份。

创建 BizTalk ReceiveService IIS 应用程序

选择接收位置时,) 逻辑应用中的 BizTalk 连接器 (使用此 IIS 应用程序的 URL。

  1. 打开“Internet 信息服务 (IIS) 管理器”。

  2. 右键单击“ 默认网站”和 “添加应用程序”。 在此新应用程序中:

    1. 输入应用程序的 别名 (名称) ,例如 ReceiveWCFService

    2. 选择 与上一个 IIS 应用程序相同的应用程序池。

    3. 物理路径 设置为:

      • BizTalk Server 2020:C:\Program Files (x86)\Microsoft BizTalk Server\LogicApp Adapter\ReceiveService
      • BizTalk Server 2016:C:\Program Files (x86)\Microsoft BizTalk Server 2016\LogicApp Adapter\ReceiveService
    4. 用于 确认应用程序池标识通过身份验证和授权测试的测试设置。

  3. 选择“确定”,保存所做更改。

步骤 2:创建逻辑应用

  1. Azure 门户中,创建新的逻辑应用。

  2. 添加“ 收到 HTTP 请求时” 触发器。

  3. 添加BizTalk Server - 从 JSON 准备消息操作。

  4. 可选:选择“ 通过本地数据网关连接”,然后输入以下内容:

    属性 说明
    BizTalk Server URL 在 IIS 应用程序 URL 中输入 BizTalk 管理 (FQDN) 完全限定的域名。 例如,输入 http://BizTalkServerName.corp.contoso.com/IISLogicApp/
    身份验证类型 选择“Windows”。
    用户名 输入 IIS 应用程序池的标识。
    Password 输入 IIS 应用程序池的密码。
    网关 选择创建的网关。

    提示

    请记住,只有在以下条件中才需要数据网关:

    • 你使用的是本地BizTalk Server
    • 你使用的是 BizTalk Server Azure 虚拟机,VM 未作为 HTTP 终结点公开, (没有 URL)
  5. 选择“创建”。

  6. 配置操作。 对于“ 正文”,选择 HTTP 正文输出。 对于 “架构”,请选择要使用的架构。

    注意

    此步骤假定你熟悉 BizTalk 中的架构,并且知道所需的架构。 如果不确定,请部署 HelloWorld SDK 示例,更新其项目以使用逻辑应用适配器,并使用其架构和示例消息。

  7. 添加新步骤,然后选择“BizTalk Server - 发送消息”操作。 对于 “接收位置”,从下拉列表中选择 URL,或输入 ReceiveService IIS 应用程序 URL (FQDN) 完全限定的域名。 例如,输入 http://BizTalkServerName.corp.contoso.com/ReceiveWCFService/Service1.svc

    提示

    创建接收位置时,还会在接收位置传输属性中输入此确切 URL,作为 “公用地址 ” (“常规”选项卡) 。

    对于“正文”,选择上一个BizTalk Server操作的正文输出。

  8. 单击“保存”以保存更改。

保存时,HTTP 请求触发器会自动创建 URL。 复制此 URL。 在本文) 的步骤 4:发送消息 (中需要它。

步骤 3:创建接收端口和接收位置

注意

可以部署 HelloWorld SDK 示例,而不是创建自己的接收端口和接收位置。 更新项目以使用逻辑应用适配器。

本部分列出了创建自己的项目的步骤。

  1. 在“BizTalk Server管理”中,依次展开“BizTalk Server管理”、“BizTalk 组”、“应用程序”和“应用程序”,然后展开要运行接收位置的应用程序。 例如,展开 BizTalk 应用程序 1

  2. 右键单击“ 接收端口”,选择“ 新建”,然后选择“ 单向接收端口”。

  3. 在“接收端口”属性中,输入以下内容:

    使用此选项 要执行此操作
    名称 输入接收端口的名称。 例如,输入 LAReceivePort
    身份验证 选项:
    • 无身份验证:默认值。 禁用身份验证。
    • 如果身份验证失败,则删除消息:启用身份验证,但删除未经身份验证的消息。
    • 在身份验证失败时保留消息:单击此选项可启用身份验证并保留未经身份验证的消息。
    为失败消息启用路由功能 将处理失败的任何消息路由到订阅应用程序 (,例如另一个接收端口或业务流程计划) 。 取消选中此选项可挂起失败的消息,并 (NACK) 生成否定确认。 默认值为清除此复选框。 有关详细信息,请参阅 如何为接收端口的失败消息启用路由
  4. 选择“ 接收位置”,然后选择“ 新建”。

  5. 输入接收位置 的名称 。 例如,输入 LAReceiveLoc

  6. 对于 “类型”,从列表中选择“ LogicApp ”,然后选择“ 配置”按钮

  7. 在“ 常规 ”选项卡中,配置逻辑应用的终结点地址:

    使用此选项 要执行此操作
    地址(URI) 必需。 输入 BizTalk ReceiveService IIS 应用程序 URL (/YourIISApp2Name/Service1.svc) 。 例如,输入 /ReceiveWCFService/Service1.svc
    公用地址 必需。 输入 http://<your fully qualified machine name>/YourIISApp2Name/Service1.svc。 例如,输入 http://btsProd.northamerica.corp.contoso.com/ReceiveWCFService/Service1.svc

    此确切 URL 还会在逻辑应用中的接收位置列出。
  8. 可选。 在“ 绑定 ”选项卡中,配置基础WCF-WebHttp绑定的任何超时和编码相关属性。 处理大型消息时,这些属性非常有用。

    使用此选项 要执行此操作
    打开超时 输入通道打开操作完成所需的时间间隔。 此值应大于或等于 System.TimeSpan.Zero。

    默认值:00:01:00
    最大值:23:59:59
    发送超时 输入完成发送操作所需的时间间隔。 此值应大于或等于 System.TimeSpan.Zero。 如果使用请求-响应接收端口,则此值指定整个交互完成的时间跨度,即使客户端返回大消息也是如此。

    默认值:00:01:00
    最大值:23:59:59
    关闭超时 输入通道关闭操作完成所需的时间间隔。 此值应大于或等于 System.TimeSpan.Zero。

    默认值:00:01:00
    最大值:23:59:59
    已接收消息的最大字节数 输入网络上要接收的消息(包括标头)的最大大小(以字节为单位)。 消息的大小受为每个消息分配的内存量的约束。 你可以使用此属性来降低受拒绝服务 (DoS) 攻击的可能性。

    默认值:65536
    最大值:2147483647
    最大并行调用数 输入对单个服务实例的并发调用数。 超出此限制的调用将在队列中排队。 将此值设置为 0 与将其设置为 Int32.MaxValue 等效。

    默认值为 200。
  9. 可选。 在“ 安全性 ”选项卡中,配置任何安全属性。 出于开发目的,可以选择“无”:

    使用此选项 要执行此操作
    安全模式 选项:

    • “无”:在传输期间不保障消息的安全性。
    • 传输:使用 HTTPS 传输来提供安全性。 使用 HTTPS 对 SOAP 消息进行保护。 若要使用此模式,必须在 Internet Information Services (IIS) 中设置安全套接字层 (SSL) 。
    • TransportCredentialOnly:默认值。
    传输客户端凭据类型 使用客户端身份验证时选择凭据类型。 选项:

    • 无:在传输级别不进行验证。
    • 基本:使用基本身份验证通过网络以纯文本形式发送用户名和密码。 你必须创建与凭据对应的域或本地用户帐户。
    • 摘要:使用摘要式身份验证将密码作为哈希值通过网络发送。 仅适用于运行 Windows Server 操作系统身份验证的域控制器的域。 你必须创建与客户端凭据对应的域或本地用户帐户。
    • Ntlm:默认值。 客户端发送凭据而不向此接收位置发送密码。 你必须创建与客户端凭据对应的域或本地用户帐户。
    • Windows:Windows 集成身份验证协商 Kerberos 或 NTLM,如果域存在,则首选 Kerberos。 若要使用 Kerberos,必须让客户端使用服务主体名称 (SPN) 来标识服务。 你必须创建与客户端凭据对应的域或本地用户帐户。
    • 证书:使用客户端证书。 客户端 X.509 证书的 CA 证书链必须安装在此计算机的受信任的根证书颁发机构证书存储中,以便客户端能够对此接收位置进行身份验证。
    • InheritedFromHost
    使用单一登录
  10. 可选。 在“ 消息 ”选项卡中,使用 “出站 HTTP 标头 ”属性添加任何自定义标头,并使用其他属性来帮助解决错误:

    使用此选项 要执行此操作
    出站 HTTP 标头 输入要在响应消息上标记的任何 HTTP 标头。
    失败时禁用位置 如果入站处理因接收管道故障或路由失败而失败,则禁用接收位置。 默认值为未选中。
    失败时挂起请求消息 如果入站处理因接收管道故障或路由失败而失败,则暂停请求消息。 默认值为未选中。
    在错误中包括异常详细信息 发生错误时,返回任何 SOAP 错误以帮助调试。 默认值为未选中。

管理接收位置 介绍了其他属性。

步骤 4:发送消息

  1. 打开 Fiddler 或 Postman (或任何你喜欢) 。

  2. 粘贴逻辑应用中的请求触发器的 URL。 你在步骤 3 中复制了此 URL。

  3. 选择 POST 作为 HTTP 谓词,并将 内容类型 标头设置为 application/json。 在正文中,粘贴以下 JSON:

    {"hello":"world"}
    
  4. 由于这是对 BizTalk 的单向调用,因此结果应为 HTTP 202。 如果使用 HelloWorld SDK 示例,请转到 BizTalk 服务器。 send 文件夹中可能有一个文件。

将消息发送到逻辑应用

步骤 1:创建逻辑应用

  1. Azure 门户中,创建新的逻辑应用。

  2. 添加 “收到 HTTP 请求时” 触发器

  3. 添加Office 365 Outlook - 发送电子邮件操作。 对于“地址”,请输入Office 365地址。 对于 “主题”,输入 Sending from BizTalk。 对于“正文”,从“收到 HTTP 请求时”触发器中选择“正文输出”。

  4. 逻辑应用类似于以下示例:

    使用 Office 365 和 Outlook 的 LogicApp 适配器示例

  5. 复制保存逻辑应用时自动创建的 HTTP POST URL;在下一步中需要此 URL。 可能需要关闭并重新打开逻辑应用才能查看 URL。

步骤 2:创建发送端口

若要BizTalk Server将消息发送到逻辑应用,逻辑应用必须具有手动触发器,例如手动 - 收到 HTTP 请求时

  1. 在“BizTalk Server管理”中,依次展开“BizTalk Server管理”、“BizTalk 组”、“应用程序”,然后展开要运行发送端口的应用程序。 例如,展开 BizTalk 应用程序 1

  2. 右键单击“ 发送端口”,选择“ 新建”,然后选择“ 静态单向发送端口”。

  3. 输入发送端口 的名称 。 例如,输入 LASendPort

  4. 对于 “类型”,从列表中选择“ LogicApp ”,然后选择“ 配置 ”按钮。

  5. 在“ 常规 ”选项卡中,配置逻辑应用触发器的 回调 URI 。 可通过两种方式实现此目的:

    选项 1 :将上一步中复制的 HTTP POST URL 粘贴到 Trigger (Callback URI) 属性中。 还可以使用以下步骤复制 URI:

    1. Azure 门户,在逻辑应用设计器中打开逻辑应用, (编辑模式) 。

    2. 选择“当收到 HTTP 请求时”卡,并复制 URL

    3. 在发送端口中,将此 URL 粘贴到 触发器 (回调 URI) 属性中。

      提示

      还可以使用管理 API 获取此 URI。

      选项 2 :如果不知道触发器的回调 URI,请选择“ 配置”,然后登录到 Azure。 然后,使用下拉列表选择 订阅资源组逻辑应用触发器

  6. 可选。 在“ 绑定 ”选项卡中,配置基础WCF-WebHttp绑定的任何超时和编码相关属性。 处理大型消息时,这些属性非常有用。

    使用此选项 要执行此操作
    打开超时 输入通道打开操作完成所需的时间间隔。 此值应大于或等于 System.TimeSpan.Zero。

    默认值:00:01:00
    最大值:23:59:59
    发送超时 输入完成发送操作所需的时间间隔。 此值应大于或等于 System.TimeSpan.Zero。 如果使用请求-响应接收端口,则此值指定完成整个交互的时间跨度,即使客户端返回大消息也是如此。

    默认值:00:01:00
    最大值:23:59:59
    关闭超时 输入通道关闭操作完成所需的时间间隔。 此值应大于或等于 System.TimeSpan.Zero。

    默认值:00:01:00
    最大值:23:59:59
    已接收消息的最大字节数 输入网络上要接收的消息(包括标头)的最大大小(以字节为单位)。 消息的大小受为每个消息分配的内存量的约束。 你可以使用此属性来降低受拒绝服务 (DoS) 攻击的可能性。

    逻辑 appa 适配器利用缓冲传输模式下的 WebHttpBinding 类 与终结点通信。 对于缓冲传输模式, WebHttpBinding.MaxBufferSize 属性始终等于此属性的值。

    默认值:65536
    最大值:2147483647
  7. 可选。 在“ 消息 ”选项卡中,使用 “出站 HTTP 标头” 属性在传出消息上添加任何自定义标头。

  8. 选择“确定”以保存配置。

管理发送端口和发送端口组 介绍了其他发送端口属性。

步骤 3:发送一些消息

可以使用文件适配器创建接收端口和接收位置。 确保逻辑应用已启用。

  1. 创建接收端口,例如 FileSendPort

  2. 创建接收位置,并设置类似于以下属性:

    属性 示例输入
    接收文件夹 C:\temp\In\
    文件掩码 *.txt
    管道 PassThruReceive
  3. 在创建的发送端口中,将 “筛选器” 设置为:

    属性 运算符
    BTS.ReceivePortName == FileSendPort
  4. 使用以下文本创建文本文件 (FileName.txt) 。 使用此文本文件作为示例消息:

    <Data>
      <DataID>DataID_0</DataID>
      <DataDetails>DataDetails_0</DataDetails>
    </Data>
    
  5. 将示例邮件 (FileName.txt) 复制到接收文件夹中。 发送端口使用输入的 URI 将 .txt 文件发送到逻辑应用。 逻辑应用接收文件。 如果使用了 Office 365 Outlook 连接器,则“到”电子邮件地址应收到包含示例邮件的电子邮件。

Next

什么是逻辑应用

创建逻辑应用

在 BizTalk Server 中使用适配器