如何:将服务发布到 UDDI 3.0 注册表

目标

本部分演示如何使用 UDDI 服务站点发布 Web 服务终结点,该终结点可从行程内解析,以路由 ESB 消息。 你将复制当前发布到注册表的现有 PurchaseOrderSubmitOrderService 服务。

在本操作方法主题中,你将完成以下步骤:

  • 使用 UDDI 发布服务器工具将服务发布到通用说明、发现和集成 (UDDI) 3 注册表。

  • 使用使用 UDDI3 解析程序解析服务终结点的路线路由名单测试服务发布。

必备条件

本操作方法主题中的过程要求完成 开发活动的先决条件 并执行 UDDI 发布服务器工具, (可以在 %ESB Install Folder%\Bin\Microsoft.Practices.ESB.UDDIPublisher.exe) 安装它。

步骤

在 UDDI 注册表中创建 NewPOService

  1. 在 Internet Explorer 中,浏览到 UDDI 服务站点 (默认情况下,此 URL 为 http://localhost/uddi).

  2. “uddi 服务 ”页上,单击“ 发布”。

  3. 在“发布”窗格中,右键单击“ Microsoft.Practices.ESB”,然后单击“ 添加服务”。

  4. 在以下页面上,选择“ 指定要使用的密钥”,然后单击“ 继续”。

  5. 在以下页面上,单击 esb 键分区。 在 “密钥后缀 ”框中,键入 “newposervice”,然后单击“ 继续”。

  6. 在以下页面上,单击“ (”新建服务名称 “) 旁边,单击” 编辑”。 将服务命名 为“NewPOService”,然后单击“ 更新”。

  7. 单击“ 添加说明”,键入服务 (示例 服务) 的说明,然后单击“ 更新”。

为 NewPOService 添加绑定

  1. 单击“ 绑定 ”选项卡,然后单击“ 添加绑定”。

  2. 选择“ 指定要使用的密钥”,然后单击“ 继续”。

  3. 在以下页面上,单击 esb 键分区。 在 “密钥后缀 ”框中,键入 newposervicebinding,然后单击“ 继续”。

  4. 在“ 接入点”下,单击“ 编辑”,然后完成以下操作:

    1. 在“ 接入点 ”框中,键入 http://localhost/ESB.CanadianServices/SubmitPOService.asmx

    2. “使用类型 ”下拉列表中,单击“ 终结点”,然后单击“ 更新”。

配置绑定实例信息

  1. 单击“ 实例信息 ”选项卡,然后单击“ 添加实例信息”。

  2. “搜索包含的 tModel 名称 ”框中,键入 %esb% ,然后单击“ 搜索”。

  3. 找到并单击 tModel for transporttype

    注意

    若要完成此过程中的剩余步骤,可能需要在第 1 页和第 2 页之间进行更改。

  4. “说明 ”部分中,单击“ 添加说明”。

  5. 在“ 说明 ”框中,键入 “ESB 行程使用的传输类型”,然后单击“ 更新”。

  6. 单击“ 实例详细信息 ”选项卡,然后单击“ 编辑”。

  7. 在“ 实例参数 ”框中,键入 WCF-BasicHttp,然后单击“ 更新”。

  8. “说明 ”部分中,单击“ 添加说明”。

  9. 在“ 说明 ”框中,键入 “WCF 基本 HTTP 传输”,然后单击“ 更新”。

  10. 在“发布”窗格的“新建POService”下,单击 。http://localhost/esb.canadianservices/submitposervice.asmx

  11. 在“ 实例信息 ”选项卡上,单击“ 添加实例信息”。

  12. 使用前面所述的步骤,根据下表中显示的值添加以下实例信息。

    tModel 说明 参数 参数说明
    microsoft-com:esb:runtimeresolution:messageexchangepattern 消息交换模式 双向 双向操作
    microsoft-com:esb:runtimeresolution:cachetimeout 缓存超时 -1 当前已禁用
    microsoft-com:esb:runtimeresolution:jaxrpcresponse JaxRpcResponse false
    microsoft-com:esb:runtimeresolution:action 服务操作 submitOrder 指定要调用的服务方法
    microsoft-com:esb:runtimeresolution:targetnamespace 服务命名空间 http://globalbank.esb.dynamicresolution.com/canadianservices 目标命名空间

配置绑定分类

  1. 在“发布”窗格的“新建POService”下,单击 。http://localhost/esb.canadianservices/submitposervice.asmx

  2. 在“ 类别 ”选项卡上,单击“ 添加自定义类别”。

  3. 在“ 搜索 ”框中,键入 %esb% ,然后单击“ 搜索”。

  4. 找到并单击 microsoft-com:esb:runtimeresolution:biztalkapplication tModel。

  5. 在“ 密钥名称 ”框中,键入 BizTalk 应用程序

  6. 在“ 键值 ”框中,键入 Microsoft.Practices.ESB,然后单击“ 添加类别”。

  7. 使用前面所述的步骤,根据下表中显示的值添加以下自定义类别。

    tModel 项名 密钥值
    microsoft-com:esb:runtimeresolution:portname 端口名称 NewPOService
    microsoft-com:esb:runtimeresolution:transporttype 传输类型 WCF-BasicHttp

在 UDDI 注册表中查找服务

  1. 在 Internet Explorer 的 “uddi 服务 ”页上,单击“ 搜索”。

  2. 单击“服务”选项卡。

  3. 在“ 服务名称 ”框中,键入 %PO%,然后单击“ 搜索”。

  4. 在“ 搜索 ”窗格中的“ 结果 ”选项卡上,单击“ 新建POService”。

    注意

    这确认服务已成功发布到注册表。

创建行程模型以测试 UDDI 服务发布

  1. 在 Visual Studio 中,打开 C:\HowTos\Patterns\Patterns.sln。

  2. 在“解决方案资源管理器”中,右键单击“行程库”项目,指向“添加”,然后单击“新建行程”。

  3. 在“ 添加新项 ”对话框的“ 名称 ”框中,键入 “NewBindingKeySearch”,然后单击“ 添加”。

配置行程的属性

  1. 在 Visual Studio 中,单击 “NewBindingKeySearch.行程”的设计图面。 在 NewBindingKeySearch 属性窗口中,配置以下属性:

    1. “请求响应” 下拉列表中,单击“ True”。

    2. “模型导出程序 ”下拉列表中,单击“ XML 行程导出程序”。

    3. “扩展程序设置” 部分的 “行程 XML 文件 ”属性旁边,单击省略号按钮 (...) 。

    4. “选择 XML 文件”对话框中的“文件名”框中键入 C:\HowTos\Itineraries\NewBindingKeySearch,然后单击“保存”。

      注意

      此步骤使你能够将行程作为 XML 导出到本地文件位置。 通过将行程导出到本地文件位置而不是行程数据库,可以使用 ESB 测试客户端应用程序来测试行程。 稍后将在此操作说明主题中完成此过程。

定义行程的结构

  1. 从“工具箱”中,将 On-Ramp 模型元素拖到设计图面。 在 OnRamp1 属性窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 ReceiveNAOrder

    2. “扩展程序 ”下拉列表中,单击“ On-Ramp ESB 扩展程序”。

    3. “BizTalk 应用程序 ”下拉列表中,单击“ Microsoft.Practices.ESB”。

    4. “接收端口 ”下拉列表中,单击“ OnRamp.Itinerary.Response”。

  2. 从“工具箱”中,将 “路线服务 ”模型元素拖到设计图面。 在“行程服务1”属性窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 TransformNAOrder

    2. “行程服务扩展程序 ”下拉列表中,单击“ 消息传递扩展程序”。

    3. “容器 ”下拉列表中,展开“ ReceiveNAOrder”,然后单击“ 接收处理程序”。

    4. “服务名称” 下拉列表中,单击“ Microsoft.Practices.ESB.Services.Transform”。

  3. 右键单击 TransformNAOrder 模型元素的 Resolver 集合,然后单击“添加新冲突解决程序”。 在 Resolver1 属性窗口中,配置以下属性:

    1. 单击 “名称” 属性,然后键入 “NAOrder_to_CNOrder”。

    2. “冲突解决程序实现” 下拉列表中,单击“ 静态冲突解决程序扩展”。

    3. “转换类型” 下拉列表中,单击“ GlobalBank.ESB.DynamicResolution.Transforms.SubmitOrderRequestNA_To_SubmitOrderRequestCN”。

  4. 在“工具箱”中,单击“ 连接器”。 将连接从 ReceiveNAOrder 模型元素拖动到 TransformNAOrder 模型元素。

  5. 从“工具箱”中,将 “路线服务 ”模型元素拖到设计图面。 在“行程服务1”属性窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 BindingKeyRoute

    2. “行程服务扩展程序 ”下拉列表中,单击“ 消息传递扩展程序”。

    3. “容器 ”下拉列表中,展开“ ReceiveNAOrder”,然后单击“ 接收处理程序”。

    4. “服务名称” 下拉列表中,单击“ Microsoft.Practices.ESB.Services.Routing”。

  6. 右键单击 BindingKeyRoute 模型元素的 Resolver 集合,然后单击“添加新冲突解决程序”。 在 Resolver1 属性窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 BindingKeySearch

    2. “冲突解决程序实现” 下拉列表中,单击“ Uddi3 冲突解决程序扩展”。

    3. “解析程序名字对象 ”下拉列表中,单击“ UDDI3”。

    4. 单击“ 绑定键 ”属性,然后键入 uddi:esb:newposervicebinding。 若要查找密钥值,请在 UDDI 中单击该服务 http://localhost/ESB.CanadianServices/SubmitPOService.asmx ,然后单击“更多详细信息”。

  7. 右键单击 BindingKeySearch 冲突解决程序,然后单击“ 测试冲突解决程序配置”。

    注意

    验证“输出”窗口中显示的输出。

  8. 在“工具箱”中,单击“ 连接器”。 将连接从 TransformNAOrder 模型元素拖动到 BindingKeyRoute 模型元素。

  9. 从“工具箱”中,将 Off-Ramp 模型元素拖动到设计图面,然后将其置于 BindingKeyRoute 模型元素的右侧。 在 OffRamp1 属性窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 SendCNOrder

    2. “扩展程序 ”下拉列表中,单击“ 关闭渐变 ESB 扩展程序”。

    3. “BizTalk 应用程序 ”下拉列表中,单击“ GlobalBank.ESB”。

    4. “发送端口 ”下拉列表中,单击“ DynamicResolutionSolicitResp”。

  10. 从“工具箱”中,将 “路线服务 ”模型元素拖动到设计图面,然后将其放置在 BindingKeyRoute 模型元素和 SendCNOrder 模型元素之间。 在“行程服务1”属性窗口中,配置以下属性:

    1. 单击 Name 属性,然后键入 SendPortFilter

    2. “行程服务扩展程序 ”下拉列表中,单击“ 非斜坡扩展程序”。

    3. “Off-Ramp ”下拉列表中,展开 “SendCNOrder”,然后单击“ 发送处理程序”。

  11. 在“工具箱”中,单击“ 连接器”。 将连接从 BindingKeyRoute 模型元素拖动到 SendPortFilter 模型元素。

  12. 在“工具箱”中,单击“ 连接器”。 将连接从 SendPortFilter 模型元素拖动到 SendNAOrder 模型元素。

导出模型以用于路线测试客户端

  1. 在 Visual Studio 中,右键单击 NewBindingKeySearch 路线的设计图面,然后单击“ 导出模型”。

    注意

    将在 Visual Studio 中打开行程的 XML 版本。

  2. 保存所有项目项目。

  3. 在 Windows 资源管理器中,浏览到 C:\HowTos\Itineraries,并注意创建行程 XML (NewBindingKeySearch.xml) 。

测试行程

  1. 使用开发 活动的先决条件 (C:\HowTos\ESB.Itinerary.Test.exe - 快捷方式) 中创建的快捷方式打开路线测试客户端示例应用程序。

  2. 在“路线测试客户端”的“Web 服务选项”组中,清除“使用 WCF 服务”框,然后选择“双向服务检查”框。

  3. 单击“ 加载行程 ”按钮。

  4. “打开路线文件 ”对话框中,浏览到 C:\HowTos\Itineraries。 选择 “NewBindingKeySearch.xml”,然后单击“ 打开 ”以加载行程。

  5. 单击“ 确定 ”清除“ 行程加载成功 ”消息。

  6. 在“路线测试客户端”中,单击“ 加载消息 ”框旁边的省略号按钮 (...) 。

  7. “选择要加载的 XML 文档 ”对话框中,浏览到 C:\HowTos。 选择 “NAOrderDoc.xml”,然后单击“ 打开 ”以加载测试消息。

  8. 单击“ 提交请求” 按钮。 测试完成后,单击“ 确定 ”关闭出现的确认。

  9. 验证 Itineray 测试客户端的“结果”文本框中是否显示正确的响应消息。

其他资源

有关详细信息,请参阅下列相关主题: