使用 SOA 治理扩展 BizTalk ESB 工具包功能

Microsoft BizTalk ESB 工具包随 BizTalk Server 一起提供,是一系列工具和库,用于扩展 BizTalk Server 功能以支持松散耦合和动态消息传送体系结构。 它充当中间件,为服务与其使用者之间的快速中介提供工具。 在运行时实现最大的灵活性,BizTalk ESB 工具包简化了服务终结点的松散耦合组合以及服务交互的管理。

Sentinet BizTalk Server Extensions 通过将 BizTalk ESB 工具包的功能与Microsoft平台的 SOA 治理和 API 管理解决方案 Sentinet 集成,增强了 BizTalk ESB 工具包的功能。 Sentinet BizTalk Server 扩展的第一个版本提供与 BizTalk Server 2013、BizTalk ESB 工具包和 Visual Studio 2012 集成的 BizTalk ESB 工具包 SOA 存储库解析程序。

本白皮书介绍了 Sentinet SOA 解析程序如何扩展 BizTalk ESB 工具包功能、如何配置 Sentinet SOA 解析程序,最后介绍了如何使用 Sentinet SOA 解析程序的示例。

ESB 工具包和 Sentinet SOA 解析程序

除其他事项外,ESB 工具包解析程序必须提供以下内容:

  • 服务端点及其配置的运行时解析过程

  • BizTalk ESB 解决方案采用松散耦合的消息处理。

    Sentinet 提供可靠且全面的 SOA 存储库,提供 SOA 集成解决方案以及高级 SOA 治理和运行时管理功能。 Sentinet SOA 解析程序与 Sentinet SOA 存储库结合使用,为 BizTalk Server ESB 体系结构提供了高级且易于使用的 ESB 配置、动态消息路由和消息安全实现功能。

    下面的高级关系图显示了 Sentinet SOA 解析程序如何适应 BizTalk ESB 工具包体系结构。

    使用 BizTalk ESB 工具包的 Sentinet

    在运行时,上图中的 终结点解析和路由 组件(这是 ESB 工具包解析程序框架的一部分)使用路线文档(在 Visual Studio 路线设计器中创建)来实例化特定的冲突解决程序并请求解析程序提供服务终结点及其配置。 路线本身必须配置对服务终结点的引用,以便解析程序可以使用此引用在注册表或存储库中找到请求的终结点。 在设计时(创建路线时),服务终结点的实际物理地址未知,服务所需的安全策略也不知道。 在后续阶段,ESB Toolkit 运行时使用解析的服务终结点来配置 Off-Ramp 动态发送端口,以将消息发送到具有所需服务安全设置的实际物理服务地址。 如果服务终结点地址、通信协议或安全要求发生变化,只需更新注册表/存储库配置。 不需要更新 ESB 或 BizTalk Server 项目的运行时配置。

Sentinet 解析程序如何将值添加到 ESB 工具包应用程序?

将 Sentinet Resolver 与 SOA 存储库一起使用的两个关键优势包括:

  • 将客户端标识分配给解析的外部服务终结点 – 大多数时候,解析的 ESB 终结点需要特定的客户端标识来调用外部服务(例如用户名/密码、特定的 Windows 帐户凭据或特定的 X.509 证书)。 这是一个非常常见的安全要求,其他 ESB 解析程序/注册表未适当处理。

  • 限制对安全信息的访问 – 若要解决上述限制,其他解析程序可能使用手动配置 tModel 来包含具有所需安全标识的复杂 XML。 但是,将安全信息保存为注册表/存储库的一部分并不是正确的方法。 这样,服务使用者就可以轻松访问安全详细信息,例如用户名、密码等,以访问服务。

    Sentinet Resolver 和 Sentinet SOA 存储库提供了灵活而安全的功能,能够通过标准或自定义的 WCF 终结点行为,将任何特定的客户端标识分配给已解析的 ESB 终结点。 Sentinet 通过配置 Sentinet Resolver 而不是具有安全信息的 Sentinet SOA 存储库来实现此目的。 使用 Sentinet 解析程序配置的所有客户端凭据都以加密形式存储。

    除此之外,下面是使用 Sentinet 冲突解决程序和 Sentinet SOA 存储库的一些其他优势。

  • 提供全面的 SOA 存储库。 存储库提供对服务元数据内容、服务标识和策略、服务版本支持等的访问权限。

  • 通过上传服务 WSDL 轻松在 Sentinet 注册表中注册物理服务。

  • 全面且易于使用的 Sentinet 管理控制台。 控制台提供对所有服务元数据和关联项目的管理访问权限,以及用于访问服务作及其数据架构、服务终结点、安全策略等的简单用户界面。

  • 已解析终结点的自定义行为的管理和配置。 Sentinet Resolver 为解析的终结点提供完全可自定义且易于配置的终结点行为。

  • 使用各种搜索条件配置 Sentinet 解析器的选项。 路线可以定义分配给服务终结点的任何关键字,或使用指向存储库服务层次结构中的服务的服务路径。

  • 高级解析程序测试功能。 可以从 Visual Studio 路线设计器直接测试 Sentinet Resolver 配置。 虽然其他解析程序只能提供有关终结点的基本属性的信息,但 Sentinet Resolver 提供了有关已解析终结点的扩展信息。 除了终结点基本属性,Sentinet 解析程序还显示标识 Sentinet 存储库中已解析服务和终结点位置的属性。 行程规划者可以在运行时使用 Itinerary 本身之前,测试 Sentinet Resolver 及其不同的搜索条件如何影响解析结果。

安装 Sentinet BizTalk Server 扩展

可以从 此处下载并安装 Sentinet BizTalk 扩展。 安装扩展会安装适用于 ESB 工具包的 Sentinet Resolver、文档和有关如何使用扩展的示例。

在产品下载过程中提供了有关如何安装和配置 Sentinet BizTalk Server 扩展的文档。

使用 Sentinet BizTalk Server 扩展

在本部分中,我们将了解如何使用 Sentinet BizTalk Server 扩展并展示上述功能。

先决条件

本白皮书中的说明假定你已安装并配置了以下各项:

注册 Web 服务

由 Sentinet 基础结构管理的 Web 服务必须在存储库中注册。 本白皮书使用随 Sentinet 安装包一起提供的 WCF 客户搜索示例服务。

  1. 启动由 Sentinet 安装包安装的 客户搜索 示例服务。 以管理员身份启动客户搜索示例,选择策略绑定(例如 wsHttpBinding),然后单击“ 开始”。

  2. 运行服务后,单击 “查看 Wsdl ”链接以使用服务元数据 URL 和服务 WSDL 打开浏览器。 从浏览器地址栏中复制元数据 URL。

  3. 打开浏览器并输入 URL(https://[computer-name]/sentinet)以启动 Sentinet 管理控制台。 登录并选择存储库视图面板中的存储库根元素。 右键单击 存储库 根元素,然后单击“ 添加 > 服务 > SOAP ”菜单选项。

  4. “添加服务”对话框中,选择“WSDL 来自 URL”选项,粘贴之前复制的服务元数据 URL,然后单击“下一步”

    添加服务 URL SentinetWP_AddServiceURL

  5. 向导开始下载服务元数据。 下载完成后,向导会显示 Web 服务树结构。 提供服务的名称,然后单击“ 完成 ”将服务元数据上传到 Sentinet 存储库。

    Web 服务结构

  6. 服务作为版本 1 导入存储库。 选择版本,然后选择终结点。 在底部的 “终结点详细信息 ”窗格中,单击“ 附件 ”选项卡,然后单击“ 修改”。

    修改服务终结点

  7. 在“终结点详细信息”选项卡中,单击针对关键字的 (+) 符号,输入要与终结点关联的关键字(例如 TestKeyword),然后单击“保存”。 关键字用作 SOA 存储库中的终结点标记(或标识符)。

    指定关键字

    重复上述步骤以添加新版本的 CustomerSearch 服务,但具有其他绑定,例如 basicHttpBinding。 在本白皮书的后面部分,我们将演示 Sentinet 解析程序如何通过将搜索关键字关联到服务终结点,解析为不同的服务(或同一服务的不同版本)。

配置 Sentinet 解析程序

本部分介绍如何在简单的 BizTalk ESB 路线设计器项目中配置 Sentinet Resolver,特别是如何使用关键字来唯一解析到服务终结点。 本部分还演示如何从 Visual Studio 本身测试解析程序,而无需发送任何 ESB 消息。

  1. 启动 Visual Studio 并创建 BizTalk ESB 路线设计器 项目。

  2. 在解决方案资源管理器中,双击行程,在行程设计器中将其打开。

  3. 从工具箱中拖放“行程服务”形状到设计器表面。

  4. 选择 “行程服务 ”形状,然后从下拉列表中将 “行程服务扩展程序 ”属性更改为 “消息传递扩展程序 ”。

    设置消息扩展程序属性

  5. 右键单击“路线服务”形状中的“解析程序”元素,然后单击“添加新冲突解决程序”。

    添加新解析程序

  6. 选择新的解析程序元素,将其重命名(例如 MyResolver),对于 解析程序实现 属性,请选择 Sentinet Resolver 扩展

    设置解析程序实现

  7. 指定 Sentinet 解析程序扩展的 动作关键字 属性。 我们将利用这些属性来唯一识别我们之前添加到 Sentinet 存储库中的服务。 还可以为 Sentinet 解析程序扩展指定其他属性。 若要了解有关这些属性的详细信息,请参阅 Sentinet BizTalk 扩展用户指南。

    资产 DESCRIPTION
    行动 唯一标识被调用服务操作的消息操作标头。 此操作标头是服务 WSDL 的一部分,可以在服务 WSDL 中找到,也可以在 Sentinet 管理控制台用户界面中的操作请求消息属性下找到。
    关键字 提供在 Sentinet 管理控制台中分配给服务的关键字(例如 TestKeyword)。

    以下屏幕截图显示了为 MyResolver 配置指定的 Action 和 Keywords 属性。

    Sentinet Resolvery 配置

  8. 保存对配置的更改。

高级解析器配置

Sentinet BizTalk 扩展配置应用程序修改位于包安装文件夹根目录中 Sentinet.BizTalk.config 文件(默认位置为 <installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Sentinet.BizTalk.config)。 可以在 Sentinet BizTalk 扩展配置 应用程序外部修改该文件,以提供高级配置选项。 例如,在许多实际 ESB 方案中,解析的终结点不仅必须使用服务终结点地址和绑定提供,还必须提供特定的客户端标识(用户名/密码、特定 Windows 帐户凭据或客户端 X.509 证书)。 如果没有正确的客户端标识,ESB Off-Ramp 发送端口无法调用外部服务。 Sentinet Resolver 允许流程开发人员分配特定的终结点行为,以提供适当的客户端终结点身份识别。 可以在 Sentinet.BizTalk.config 文件中将多个终结点行为预配置为标准 WCF 终结点行为,然后可以通过指定 已解析终结点行为 属性的行为名称,在 Sentinet Resolver 配置的“路线”中引用特定终结点行为。

测试解析器配置

通过指定相关属性值来配置 Sentinet Resolver 后,可以从 Visual Studio 本身测试解析程序。

  1. 在设计界面中,右键单击已添加到“Itinerary Service”形状的 Sentinet 解析程序,然后单击“测试解析程序配置”

    输出窗格显示测试结果,其中摘录类似于如下所示:

    ***** Resolved Service Endpoint *****  
    
    Service Path and Name          : /CustomerSearch  
    Service Id                     : 2b6d686a-cae1-4b7b-93da-99affef98478  
    Service Version                : 1  
    Endpoint Name                  : WSHttpBinding_ICustomerSearch  
    Endpoint Address               : http://btscloudcar/CustomerSearch/1  
    

    请注意,解析程序返回了将搜索条件(TestKeyword)附加到的 CustomerSearch 服务版本 1 的终结点。

  2. 删除与 CustomerSearch 服务版本 1 关联的 TestKeyword,并将其与服务第二个版本的终结点相关联。

    1. 打开 Sentinet 管理控制台,单击 CustomerSearch 服务下的版本 1,单击 wsHttpBinding 终结点,然后单击“附件”选项卡,然后单击“修改”。

      从 CustomerSearch 服务

    2. 单击之前输入的关键字的按钮以删除关键字,单击消息框中的“ ”,然后单击“ 保存”。

      从 CustomerSearch 服务中删除关键字

    3. 现在,将相同的关键字(TestKeyword)分配给同一服务版本 2 下的 basicHttpBinding 终结点。

  3. 返回到 Visual Studio 并再次测试解析程序配置。 右键单击您添加到行程服务形状中的 Sentinet 解析程序,然后单击“测试解析程序配置”。

    输出窗格显示测试结果,其中摘录类似于如下所示:

    ***** Resolved Service Endpoint *****  
    
    Service Path and Name          : /CustomerSearch  
    Service Id                     : 5b9e5878-7016-44ab-9f0e-5282a8c3e508  
    Service Version                : 2  
    Endpoint Name                  : BasicHttpBinding_ICustomerSearch  
    Endpoint Address               : http://btscloudcar/CustomerSearch/2  
    
  4. 请注意冲突解决程序现在如何返回服务 版本 2 的详细信息,即使未更改 ESB 行程应用程序中的任何内容。

    将关键字(TestKeyword)分配回服务版本 1(使用 WSHttpBinding 终结点)。

使用 Sentinet BizTalk Server 扩展组件

在本部分中,我们将介绍 Sentinet BizTalk 扩展与 ESB 解析程序如何一起唯一标识服务并将消息路由到该服务,同时对服务或发送消息的客户端进行最少或无更改。 我们将测试两种方案:

  • 将示例消息发送到 Sentinet 存储库中注册的服务(附加了关键字)。 然后,使用 Sentinet 管理控制台更改服务的策略绑定,并发送另一条示例消息。 此方案演示了如何更改服务的安全策略既不会影响客户端应用程序,也不会影响 ESB 行程。

  • 将示例消息发送到 Sentinet 存储库中注册的服务终结点(附加了关键字)。 然后,将同一关键字附加到同一服务的另一个版本,然后再次发送消息。 此方案演示如何将关键字附加到其他服务版本自动将消息路由到新的服务版本。

    若要测试这些方案,我们将使用以下示例:

  • 随 Sentinet 安装程序一起提供的客户搜索服务。 可以从“开始”菜单启动此服务。

  • Nevatech.Vsb.BizTalk.Samples 解决方案随 Sentinet 安装程序一起提供。 此示例可在 <installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples 处查看。

  • ESB。行程测试样本随附在 Microsoft BizTalk ESB 工具包中。 这可以通过 <install drive>:\Program Files (x86)\Microsoft BizTalk ESB Toolkit\ESBSource.zip\Source\Samples\Itinerary\Source\ESB.Itinerary.Test 获得,并用于测试客户搜索服务的示例消息。

通过更改服务策略绑定来测试 Sentinet 解析程序

  1. 确保随 wsHttpBinding 一起部署的 CustomerSearch 服务正在运行。

  2. Nevatech.Vsb.BizTalk.Samples 示例中,打开 CustomerSearch.Search.itinerary,在 路由消息 形状中的 消息扩展器 下选择 “解析服务终结点”,并为 Keywords 属性指定关键字,例如 TestKeyword

    分配关键字

  3. 保存对行程的更改,并导出模型。 右键单击路线设计器图面上的任意位置,并点击 “导出模型”。

  4. 在 BizTalk Server 管理控制台中,右键单击 Microsoft.Practices.ESB 应用程序,单击“导入”,然后单击“绑定”。 导航到 ESB 解析程序示例位置 <installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples\ESB Resolver,然后打开 BizTalk.Bindings.xml 文件。 这将创建样本行程所需的 Sentinet 请求-响应Sentinet 单向 发送端口。

    此外,请确保登记并启动 Microsoft.Practices.ESB BizTalk 应用程序的所有发送端口和接收位置。

  5. 打开 ESB。Itinerary.Test 应用程序,生成并运行它。 在启动的路线测试客户端中,执行以下步骤:

    1. 在路线测试客户端的 “Web 服务选项”下,清除 “使用 WCF 服务”,然后选择 “双向服务”。

    2. “服务类型”下拉列表中选择“消息”。

    3. 单击“加载行程”,导航到位于示例项目的 ExportedItineraries 文件夹中<installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples\ESB Resolver\ExportedItineraries的CustomerSearch.Search.Itinerary.xml 文件。

    4. 单击“加载邮件”组下的省略号按钮(..),导航到位于项目 SampleMessages 文件夹中的CustomerSearch.Search.Request.xml<installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples\ESB Resolver\SampleMessages

    5. 单击“ 提交请求 ”并验证收到的响应。

  6. “CustomerSearch ”对话框中,请注意计数器增加一个。

  7. 在 Sentinet 管理控制台中,更新终结点详细信息以使用 basicHttpBinding 而不是 wsHttpBinding。

    1. 选择服务终结点,单击“ 详细信息 ”选项卡,然后单击“ 修改”。

    2. 在“详细信息”选项卡中,单击“策略”部分中的省略号(...),启动“修改策略”向导。

      启动修改策略向导

    3. 在第一页上,保留策略类型为 “专用 ”,然后单击“ 下一步”。

    4. 第二页上,将 wsHttpBinding XML 元素更改为 basicHttpBinding (区分大小写),然后单击“ 完成”。

      更新策略绑定

    5. 单击“ 保存” 保存对终结点详细信息所做的更改。

  8. 停止 CustomerSearch 服务,将绑定从 wsHttpBinding 更改为 basicHttpBinding,然后再次启动该服务。

    使用不同的绑定重启服务SentinetWP_RestartCustService

  9. 测试路线客户端中,再次向客户搜索服务发送测试消息。 请注意,“客户搜索服务”对话框中的计数器再次递增 1。

    成功接收消息后,从 Sentinet 管理控制台将策略详细信息更改回 wsHttpBinding。 同样,停止 客户搜索 服务,将策略更改回 wsHttpBinding 并启动服务。

    这演示了如何动态更新 Sentinet 存储库中的服务详细信息,以面向更新的服务终结点,而无需更改行程或客户端。

通过更改关键字分配来测试 Sentinet 解析程序

  1. 确保使用 wsHttpBinding 和 basicHttpBinding 部署的 CustomerSearch 服务的两个实例正在运行。

  2. Nevatech.Vsb.BizTalk.Samples 示例中,打开 CustomerSearch.Search.itinerary,在路由消息形状中的消息扩展器下选择“解析服务终结点”,并为 Keywords 属性指定关键字,例如 TestKeyword

    分配关键字

  3. 保存对行程的更改,并导出模型。 右键单击路线设计器图面上的任意位置,并点击 “导出模型”。

  4. 在 BizTalk Server 管理控制台中,右键单击 Microsoft.Practices.ESB 应用程序,单击“导入”,然后单击“绑定”。 导航到 ESB 解析程序示例位置 <installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples\ESB Resolver,然后打开 BizTalk.Bindings.xml 文件。 这将创建示例行程所需的 Sentinet 请求-响应Sentinet 单向 发送端口。

    此外,请确保登记并启动 Microsoft.Practices.ESB BizTalk 应用程序的所有发送端口和接收位置。

  5. 打开 ESB。Itinerary.Test 应用程序,生成并运行它。 在启动的路线测试客户端中,执行以下步骤:

    1. 在路线测试客户端的 “Web 服务选项”下,清除 “使用 WCF 服务”,然后选择 “双向服务”。

    2. “服务类型”下拉列表中选择“消息”。

    3. 单击“加载行程”,导航到位于示例项目的 ExportedItineraries 文件夹中<installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples\ESB Resolver\ExportedItineraries的CustomerSearch.Search.Itinerary.xml 文件。

    4. 单击“加载邮件”组下的省略号按钮(..),导航到位于项目 SampleMessages 文件夹中的CustomerSearch.Search.Request.xml<installation drive>:\Program Files\Nevatech\Sentinet BizTalk Extensions\Samples\ESB Resolver\SampleMessages

    5. 单击“ 提交请求 ”并验证收到的响应。

  6. “CustomerSearch ”对话框中,请注意计数器增加一个。

  7. 从 Sentinet 管理控制台中删除与 CustomerSearch 服务版本 1 关联的 TestKeyword,并将其与服务版本 2 相关联。

    1. 打开 Sentinet 管理控制台,单击 CustomerSearch 服务下的版本 1,单击 wsHttpBinding 终结点,然后单击“附件”选项卡,然后单击“修改”。

      从 CustomerSearch 服务

    2. 单击之前输入的关键字的按钮以删除关键字,单击消息框中的“ ”,然后单击“ 保存”。

      从 CustomerSearch 服务中删除关键字

    3. 现在,将相同的关键字(TestKeyword)分配给同一服务版本 2 下的 basicHttpBinding 终结点。

  8. 测试路线客户端 再次发送测试消息,并注意这次计数器在对话框中递增,该对话框表示使用 basicHttpBinding 部署的服务版本 2。