如何:转换消息并使用“请求-响应”消息交换模式将其路由至服务终结点

目标

本部分演示如何使用 ESB Designer域特定语言 (DSL) 来创建可与双向坡道配合使用的请求-响应路线。 你将创建一个传送名单来接收消息、转换消息、将消息提交到服务,并将服务响应消息返回给原始消息的提交者。

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

  • 使用实现 Microsoft BizTalk Server地图的转换路线服务创建路线路线名单。

  • 配置路线以将转换后的消息路由到服务终结点。

  • 配置行程以将服务响应消息返回给原始发送方。

  • 使用路线测试客户端示例应用程序测试行程。

必备条件

本操作方法主题中的过程要求完成 开发活动的先决条件

步骤

创建 ESB 路线 DSL 模型

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

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

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

配置行程的属性

  1. 在 Visual Studio 中,单击 RequestResponse.itinerary 的设计图面。 在 RequestResponse 属性窗口中,配置以下属性:

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

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

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

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

      注意

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

定义行程的结构

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

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

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

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

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

  2. 从“工具箱”中,将 “路线服务 ”模型元素拖到设计图面,然后将其置于 On-Ramp 模型元素的右侧。 在“行程服务1”属性窗口中,配置以下属性:

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

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

      注意

      此属性定义该过程将在管道中发生, (消息传送) 。 或者,如果进程将在业务流程中发生,请将 “行程服务扩展程序 ”属性设置为 “业务流程扩展程序”。

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

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

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

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

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

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

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

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

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

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

      注意

      此属性定义该过程将在管道中发生, (消息传送) 。 或者,如果进程将在业务流程中发生,请将 “行程服务扩展程序 ”属性设置为 “业务流程扩展程序”。

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

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

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

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

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

    3. “传输名称” 下拉列表中,单击“ WCF-BasicHttp”。

    4. 单击“ 传输位置” 属性,然后键入 http://localhost/ESB.CanadianServices/SubmitPOService.asmx

    5. 单击“ 目标命名空间” 属性,然后键入 http://globalbank.esb.dynamicresolution.com/canadianservices

    6. 单击 “操作” 属性,然后键入 submitOrder

  7. 在“工具箱”中,单击“ 连接器”。 将连接从 MapNAOrderToCNOrder 模型元素拖到 RouteToCNService 模型元素。

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

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

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

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

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

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

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

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

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

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

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

  12. 右键单击设计图面,然后单击“ 验证”。

    注意

    行程验证;为了将响应消息发送回请求方,无需将非斜坡连接回 on-ramp。 通过使用双向 on-ramp,最终消息会自动返回到请求方。

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

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

    注意

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

  2. 保存所有项目项目。

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

测试行程

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

  2. 在“路线测试客户端”中,清除“使用 WCF 服务检查” 框。

  3. 在“Web 服务选项”部分中,选择“双向服务检查”框,然后单击“加载行程”。

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

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

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

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

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

  9. 在“ 结果 ”框中,请注意消息的根节点为 submitOrderResponse ,默认命名空间为 ... canadianservices

    注意

    如果响应消息需要在将响应发送到请求方之前进行其他转换,则必须使用包含 ESB 转发器组件的管道。 有关此功能的示例,请参阅 安装和运行多个 Web 服务示例

其他资源

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