Welcome

首页 / 软件开发 / WCF / 服务站: 构建WCF路由器,第1部分

服务站: 构建WCF路由器,第1部分2011-10-24 msdn Michele Leroux Bustamante托管和使用 Windows® Communication Foundation (WCF) 服务通常经历几个基本步骤:实现服务 、配置可以访问服务的端点、托管服务、生成 Web 服务描述语言 (WSDL) 文件或启用元数据交换,以便 客户端能够生成代理以调用服务、编写代码以使用其相关配置实例化代理、以及启动调用服务操作。您基 本不需要研究它的内部原理,但即使是在最简单的情况下,客户端和服务通道也要依赖兼容配置来处理寻 址语义和消息筛选,以确保调用了正确的操作。

有时,在客户端和目标服务之间引入中介服务或路由器服务对接收在它们之间传输的消息或执行其他 活动(如日志记录、优先级路由、联机/脱机路由、负载平衡)非常有用,引入安全边界也同样有用处。 当引入此类中介服务时,需要对一些寻址和消息筛选行为做出相应调整。

因此,让我们深入了解 一下如何使用中介服务,为简单起见,我将它们统称为路由器。在本期文章中,我将介绍 WCF 寻址和消 息筛选的概念,并重点讲解路由器方案,此外我还将介绍一些适用于路由配置以及相应设置的选项。在本 系列文章的第 2 部分中,我将展示如何利用该基本原理实现更高级、更实用的路由功能。

默认寻 址语义

在 2007 年 6 月的“服务站”专栏中 (msdn.microsoft.com/msdnmag/issues/07/06/ServiceStation),Aaron Skonnard 介绍了 WCF 如何处理 逻辑和物理端点寻址、寻址标头以及消息筛选。在本节中,我将回顾其中的一些基本寻址功能以及它们如 何影响路由方案—但您也会发现:Aaron 的专栏对于了解这些 WCF 功能的其他深层次细节非常有用 。

通常,客户端使用从服务描述生成的代理将消息直接发送至目标服务。为了使客户端与服务兼 容,他们共享等效约定和端点配置。看一下图 1 中所示的服务约定和配置,您可以从中得出几个重要的 服务寻址要求。

Figure 1 服务约定和端点配置

      Service Contract[ServiceContract(Namespace ="http://www.thatindigogirl.com/samples/2008/01")]public interface IMessageManagerService{ [OperationContract] string SendMessage(string msg); [OperationContract] void SendOneWayMessage(string msg);}Endpoint Configuration<system.serviceModel> <services>  <service name="MessageManager.MessageManagerService"   behaviorConfiguration="serviceBehavior">   <endpoint    address="http://localhost:8000/MessageManagerService"    contract="MessageManager.IMessageManagerService"    binding="basicHttpBinding" />  </service> </services></system.serviceModel>