路由概述

设计面向服务的体系结构解决方案时,创建中介服务通常会很有用,该服务负责根据一组可自定义的规则将传入消息路由至其对应的目标。中介服务具有如下多个优点:

  • 基于内容的路由

    • 服务聚合

    • 服务版本控制

    • 优先级路由

  • 协议桥接

  • 错误处理

尽管可以创建可实现上述一个或多个目标的中介服务,但是此实现通常与特定方案或解决方案相关,并且不能轻松应用于新应用程序。

路由服务提供一个可动态配置的泛型可插入 SOAP 中介,该中介由 WCF 服务和通道模型组成,使您能够基于内容路由基于 SOAP 的消息。

Ee517423.note(zh-cn,VS.100).gif注意:
路由服务当前不支持路由 WCF REST 服务。若要路由 REST 调用,请考虑使用 System.Web.RoutingApplication Request Routing(应用程序请求路由)(https://go.microsoft.com/fwlink/?LinkId=164589)。

基于内容的路由

基于内容的路由是指根据消息中包含的一个或多个值路由消息的能力。路由服务检查每条消息,并根据消息内容和您创建的路由逻辑将其路由至目标终结点。基于内容的路由为服务聚合、服务版本控制和优先级路由提供了基础。

路由服务允许您配置执行基于内容的路由所采用的逻辑,并在运行时动态更新路由逻辑。

服务聚合

使用基于内容的路由,您可以公开一个用于接收外部客户端应用程序发送的消息的终结点,然后基于消息中的值将每条消息路由到相应的内部终结点。这有助于为各种后端应用程序提供一个特定终结点,同时也有助于在将应用程序分解为各种服务时向客户提供一个应用程序终结点。

服务版本控制

当迁移到新版解决方案时,您可能需要并行维护旧版本,以便向现有客户提供服务。通常,这要求连接到较新版本的客户端在与解决方案通信时必须使用不同的地址。路由服务允许您根据消息中包含的版本特定信息将消息路由至相应解决方案,从而公开一个可为解决方案的两个版本提供服务的服务终结点。

优先级路由

向多个客户端提供服务时,您可以与某些合作伙伴达成服务级别协议 (SLA),该协议要求对来自这些合作伙伴的所有数据与其他客户端数据单独处理。使用查找消息中包含的客户特定信息的筛选器,您可以轻松地将来自特定合作伙伴的消息路由至为满足其 SLA 要求而创建的终结点。

协议桥接

中介方案面临的挑战之一是:内部终结点与接收消息的终结点可能具有不同的传输或 SOAP 版本要求。若要支持此方案,路由服务可以桥接协议,包括根据目标终结点需要的 MessageVersion 处理 SOAP 消息。这样,一个协议可用于内部通信,而其他协议可用于外部通信。

错误处理

中介面临的另一个挑战是:如果在传输到目标时遇到错误,应采取哪些操作。路由服务允许您定义额外的终结点,如果将消息发送到主目标时发生通信错误,则会使用这些额外的终结点发送消息。这样,您可以在发生网络故障或其他通信故障时部署服务的多个冗余副本作为备份。