今天我们将学习WCF4.0新特性体验系列的一个重要特性:服务发现WS-Discovery。这一部分内容较多,大概涉及到以下几个知识点:(1)Ad hoc Service Discovery。(2 )设定查找范围(Scope)。(3) 服务公告Service Announcement。(4)托管服务(Managed Service) Discovery。这几个主要的内容,我大概分几个文章详细介绍一下。并给出实现过程和示例代码。当然中间会贯穿介绍相关的文档规范资料和技术原理。 我们在接下来的文章里就会对这一 WCF 特性做一个系统完整的介绍。第一节就先学习简单的Ad hoc Service Discovery。
在谈到这个特性的时候,可能许多人会兴奋不已,因为之前的WCF开发过程都是按照流程一步一步完成的,开发部署服务,客户端添加服务引用,最后使用服务终结点来调用服务。但是现在这个服务发现功能支持你可以在动态运行时发现并调用你需要的服务。
【1】基本概念:
服务发现是WCF4.0里的一个重要特性,这是WCF4.0新特性里唯一一个因WS规范而生的,就是为了支持WS-Discovery 协议。我们知道在面向服务系统里,有时候,服务的地址是动态生成的,并且可能一直在变化。例如,有时候,不同的服务设备会频繁地接入或者离开整个系统。为了适应这种变化,客户端必须具备可以动态查找服务的能力。也就服务发现:WS-Discovery 。
WS-Discovery是一个基于SOAP协议的动态服务发现OASIS标准,它可以在运行时发现服务终结点。客户端可以根据一定的条件来探测特定的服务目标,最后根据特定的匹配条件返回最佳的服务终结点地址。
【2】文档规范:
这里为了说明服务发现,我们必须有必要了解一下一个重要的行业规范。首先,服务发现并不是什么新奇的概念,WCF一直支持WS-*规范。这在之前的一些文章里经常被提到,尤其是WCF跨平台特性的时候。当然WCF服务发现功能也不是无中生有,它也是根据WS-Discovery 规范开发而来。
【2.1】WS-Discovery 诞生:
最早的WS-发现协议是2005年4月版本,后来在2009年7月重新推出1.1版本。同样,WCF-Discovery WCF-Discovery 支持两种版本的WS-Discovery 协议:
- WS-Discovery 1.1 July 2009
- WS-Discovery April 2005
【2.2】OASIS标准:
在WS-*规范中,WS-Discovery是在2008年才加入了OASIS标准(OASIS(结构化信息标准促进组织,Organization for the Advancement of Structured Information Standards)是一个推进 电子商务标准的发展、融合与采纳的非盈利性国际化组织。)。WS-Discovery被定义为Web Service Dynamic Discovery,其目的是为定位动态服务发现协议,主要应用在为客户端动态搜索一个或多个目标服务。
【2.3】官方资料:
这里比较重要的参考资料列举一下,首先就是WS-Discovery 1.1,这个现在是OASIS标准。是服务发现的本质原理文档。另外一个重要的资料当然属于MSDN文档,对于想了解WCF 动态服务发现机制的开发人员来说至关重要。还有就是如果你想知道WCF开发团队如何设计和实现WCF-Discovery ,你也可以看看他们的博客。
- OASIS 规范 WS-Discovery 1.1 规范:http://docs.oasis-open.org/ws-dd/discovery/1.1/os/wsdd-discovery-1.1-spec-os.html
WCF 服务发现团队Discovery Concepts:http://blogs.msdn.com/discovery/archive/2009/05/29/discovery-overview.aspx
MSDN 的官方文档WCF Discovery:http://msdn.microsoft.com/en-us/library/dd456782(VS.100).aspx
以上就是主要的资料信息。不过目前都是英文文档。
【3】服务发现模式:
服务发现也需要依据一定的规则,在WS- Discovery里定义了两种操作模式:Ad hoc和Managed模式。前者也叫自动查找模式,后者也被叫做托管模式。
- Ad hoc