在本篇文章中,我们将通过一个具体的实例来演示如何通过路由服务。在这个例子中,我们会创建连个简单的服务HelloServie和GoodbyeService。假设客户端不能直接调用这两个服务,需要使用到路由服务作为两者之间的中介。整个消息路由的场景如下图所示,中间的GreetingService.svc就是代表路由服务,而两个目标服务则通过HelloServie.svc和GoodbyeService.svc表示。路由服务使用的消息筛选器EndpointAddressMessageFilter,即根据包含在消息中的目标地址来决定应该将请求消息转发给HelloServie.svc还是GoodbyeService.svc。[源代码从这里下载]
首先我们创建一个空的解决方案,并如下图所示添加三个项目并添加相应的引用。其中类库项目Service.Interface和Service分别用于定义服务契约和服务类型,而控制台项目Client用作为进行服务调用的客户端。
步骤二、定义服务
在Service.Interface项目中为两个服务创建服务契约接口:IHello和IGoodbye,两个接口定义如下。
using System.ServiceModel;
namespace Artech.RoutingServiceDemo.Service.Interface
3: {
)]
interface IHello
6: {
7: [OperationContract]
string userName);
9: }
)]
interface IGoodbye
12: {
13: [OperationContract]
string userName);
15: }
16: }