在一个典型的服务调用场景中,具有两个基本的角色,即服务的消费者和服务的提供者。从消息交换的角度讲前者一般是消息的最初发送者,而后者则是消息的最终接收者。在很多情况下,由于网络环境的局限,消息的最初发送者和最终接收者不能直接进行消息交换,这就需要一个辅助实现消息路由的中介服务,这就是我们接下来要介绍的路由服务。

目录
一、路由服务就是一个WCF服务
      路由服务契约的定义
      路由服务契约的定义
二、基于消息内容的路由策略
      RoutingBehavior服务行为
      消息筛选器
      筛选器表

由服务,就其本质而言就是一个WCF服务,具体的消息路由操作实现在该服务的某个操作之中。和其他一般的服务比较,并没有太多不同之处。在使用路由服务之前,我们也需要像一般的服务一样对其进行寄宿,并为之指定一个基于某种绑定的终结点。对于需要被路由的服务的客户端,除了需要将路由服务的地址作为其消息发送的物理地址之外,它依然像普通的方式一样对目标服务进行调用。

路由服务的定义

既然路由服务本质上就是一个WCF服务,它肯定就对应着某个实现相应服务契约的类型,这个类型就是RoutingService。下面的代码片断给出了RoutingService的成员定义。

1: [AspNetCompatibilityRequirements(RequirementsMode=AspNetCompatibilityRequirementsMode.Allowed)]
   2: [ServiceBehavior(AddressFilterMode=AddressFilterMode.Any, 
   3:                  InstanceContextMode=InstanceContextMode.PerSession, 
false, 
false)]
class RoutingService : ISimplexDatagramRouter, 
   7:                                      ISimplexSessionRouter, 
   8:                                      IRequestReplyRouter, 
   9:                                      IDuplexSessionRouter, 
  10:                                      IDisposable
  11: {
//ISimplexDatagramRouter
  13:     [OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
object state);
void ISimplexDatagramRouter.EndProcessMessage(IAsyncResult result);
  16:  
//ISimplexSessionRouter
  18:     [OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
object state);
void ISimplexSessionRouter.EndProcessMessage(IAsyncResult result);
  21:  
//IRequestReplyRouter
  23:     [OperationBehavior(Impersonation = ImpersonationOption.Allowed)]
object state);
  25:     Message IRequestReplyRouter.EndProcessRequest(IAsyncResult result);
  26:  
//IDuplexSessionRouter
  28:     [OperationBehavior(Impersonation=ImpersonationOption.Allowed)]
object state);    
void IDuplexSessionRouter.EndProcessMessage(IAsyncResult result);
  31:  
void IDisposable.Dispose();
  33: }

相关文章:

  • 2021-11-07
  • 2022-12-23
  • 2021-07-04
  • 2022-12-23
  • 2021-07-15
  • 2021-08-07
  • 2021-06-16
  • 2022-12-23
猜你喜欢
  • 2021-05-18
  • 2022-01-27
  • 2022-02-19
  • 2022-12-23
  • 2021-08-26
  • 2022-02-08
  • 2022-12-23
相关资源
相似解决方案