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

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

Sentinet BizTalk Server 扩展通过将 BizTalk ESB 工具包与适用于 Microsoft 平台的 SOA 治理和 API 管理软件解决方案 Sentinet 集成来增强其功能。 Sentinet BizTalk Server Extensions 的第一个版本提供了与 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 行程 (Designer) 中创建的行程文档来实例化特定的冲突解决程序,并请求冲突解决程序提供服务终结点及其配置。 行程本身必须配置对服务终结点的引用,以便解析程序可以使用此引用在注册表或存储库中查找请求的终结点。 在设计时 (创建行程) 时,服务终结点的实际物理地址未知,服务所需的安全策略也不为人知。 在后续阶段,ESB Toolkit 运行时使用解析的服务终结点配置 Off-Ramp 动态发送端口,以使用所需的服务安全设置将消息发送到实际的物理服务地址。 如果服务终结点地址、通信协议或安全要求发生更改,则只需更新注册表/存储库配置。 ESB 或 BizTalk Server 项目的运行时配置不需要更新。

Sentinet 冲突解决程序如何为 ESB 工具包应用程序增加价值?

使用 Sentinet 冲突解决程序以及 SOA 存储库的两个主要好处是:

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

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

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

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

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

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

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

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

  • 使用各种搜索条件配置 Sentinet 冲突解决程序的选项。 行程可以定义分配给服务终结点的任何关键字 (keyword) ,或使用指向存储库服务层次结构中的服务的服务路径。

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

安装 Sentinet BizTalk Server 扩展

可以从 此处下载并安装 Sentinet BizTalk 扩展。 安装扩展会安装 Sentinet Resolver for ESB Toolkit、文档和有关如何使用该扩展的示例。

有关如何安装和配置 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. 在“ 添加服务 ”对话框中,对于“ 来自 URL 的 WSDL ”选项,粘贴之前复制的服务元数据 URL,然后单击“ 下一步”。

    添加服务 URL

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

    Web 服务结构

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

    修改服务终结点

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

    指定关键字 (keyword)

    重复上述步骤,添加 新版本的 CustomerSearch 服务,但使用不同的绑定,例如 basicHttpBinding。 稍后在本白皮书中,我们将演示 Sentinet 解析程序如何仅通过将搜索关键字 (keyword) 关联到服务终结点,即可解析为不同服务 (或同一服务的不同版本) 。

配置 Sentinet 冲突解决程序

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

  1. 启动 Visual Studio 并创建 BizTalk ESB 行程Designer项目。

  2. 在解决方案资源管理器,双击行程以在“行程”Designer将其打开。

  3. 在“工具箱”中,将 “行程服务 ”形状拖放到设计器图面上。

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

    设置消息扩展程序属性

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

    添加新的冲突解决程序

  6. 选择新的冲突解决程序元素,将其重命名 (例如 MyResolver) ,对于“ 冲突解决程序实现 ”属性,选择“ Sentinet Resolver Extension”。

    设置冲突解决程序实现

  7. 指定 Sentinet 冲突解决程序扩展的 ActionKeywords 属性。 我们将使用这些属性唯一地解析我们之前添加到 Sentinet 存储库的服务。 还可以为 Sentinet 解析程序扩展指定其他属性。 若要详细了解这些属性,请参阅 Sentinet BizTalk 扩展用户指南。

    属性 说明
    操作 唯一标识调用的服务操作的消息操作标头。 此操作标头是服务 WSDL 的一部分,可以在服务 WSDL 中找到,也可以从 Sentinet 管理控制台用户界面 (操作的请求消息属性下找到。
    关键字 提供在 Sentinet 管理控制台中分配给服务的关键字 (keyword) (,例如 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 终结点行为,然后可以通过指定 Resolved Endpoint Behavior 属性的行为名称,在 Sentinet Resolver 配置的“行程”中引用特定的终结点行为。

测试冲突解决程序配置

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

  1. 在设计图面中,右键单击添加到 “行程安排服务 ”形状的 Sentinet Resolver,然后单击“ 测试冲突解决程序配置”。

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

    ***** 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  
    

    请注意,冲突解决程序返回了 CustomerSearch 服务 版本 1 的终结点, TestKeyword) (的搜索条件。

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

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

      从 CustomerSearch 服务

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

      从 CustomerSearch service SentinetWP_RemoveKeyword_2 中删除

    3. 现在,将相同的关键字 (keyword) (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. 请注意,即使未在 ESB 行程应用程序中更改任何内容,冲突解决程序现在如何返回服务 版本 2 的详细信息。

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

使用 Sentinet BizTalk Server 扩展

在本部分中,我们将探讨如何使用 Sentinet BizTalk 扩展和 ESB 解析程序来唯一标识服务,并将消息路由到该服务,同时对发送消息的服务或客户端进行极少或没有更改。 我们将测试两种方案:

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

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

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

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

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

  • Esb。Microsoft BizTalk ESB 工具包随附的行程.Test 示例。 这在 中 <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.routey,在“路由消息”形状的“消息扩展程序”下选择“解析服务终结点”,并为 Keywords 属性指定关键字 (keyword) ,例如 TestKeyword

    分配关键字 (keyword)

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

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

    此外,请确保已登记并启动 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\ExportedItinerariesCustomerSearch.Search.Itinerary.xml 文件。

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

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

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

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

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

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

      启动“修改策略”向导

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

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

      更新策略绑定

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

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

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

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

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

    这演示了如何在不更改行程或客户端的情况下动态更新 Sentinet 存储库中的服务详细信息,以定位更新的服务终结点。

通过更改关键字 (keyword) 分配来测试 Sentinet 冲突解决程序

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

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

    分配关键字 (keyword)

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

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

    此外,请确保已登记并启动 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\ExportedItinerariesCustomerSearch.Search.Itinerary.xml 文件。

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

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

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

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

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

      从 CustomerSearch 服务

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

      从 CustomerSearch 服务SentinetWP_RemoveKeyword_2中删除

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

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