Fork me on GitHub

WCF 4.0中的动态发现服务WS-Discovery

WCF 3/3.5 中,当我们要调用一个服务时,必须事先知道该服务的地址,然后通过服务代理用双方约定好的契约与远程的服务进行交互。现在,WCF 4.0中提供了发现服务的支持,当我们再想调用一个服务时,没必要去知道该服务的具体地址,WCF 4.0实现了OASIS的WS-Discovery标准,相关的类定义在System.ServiceModel.Discovery命名空间中。这是一个单独的程序集,所以需要添加对它的引用。只需要利用 System.ServiceModel.Discovery 命名空间下的相关类就可以实现两种方式的动态发现服务:

Ad hoc Mode:简单理解,就是服务启动时就向网络广播Hello消息,调用方收到后进行回应建立通讯的模式。

ad hoc
Managed Mode:简单理解,就是所有服务事先在一个叫 Discovery Proxy 的地方登记,然后所有调用方发送查找请求给 Discovery Proxy 来查找并调用相关服务的模式。

managedmode

WCF 4.0中要动态发现服务,用 Ad hoc Mode 实现起来还是比较简单的。对于Managed Mode,就需要继承 System.ServiceModel.Discovery.DiscoveryProxy 抽象类去实现自己的 Discovery Proxy 了。

  • WS-Discovery 1.1 规范http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html
  • Discovery Conceptshttp://blogs.msdn.com/discovery/archive/2009/05/29/discovery-overview.aspx
  • WCF Discoveryhttp://msdn.microsoft.com/en-us/library/dd456782(VS.100).aspx
  • WS-Discovery for WCF : http://www.codeproject.com/KB/WCF/ws-discovery.aspx
  • posted @ 2009-12-15 22:40  张善友  阅读(2000)  评论(1编辑  收藏  举报