鸿 网 互 联 www.68idc.cn

当前位置 : 服务器租用 > .net技术 > wcf编程 > >

WCF技术的不同应用场景及其实现分析

来源:互联网 作者:佚名 时间:2013-11-07 15:17
这一篇文章,是总结一下WCF技术,以及基于这个技术发展出来的几个典型应用场景,并且我将尝试对这些不同的WCF实现的原理进行一些比较分析。 关于WCF这个技术的基本概念,如果你不是很清楚,可以参考一下有关的文档 微软开发者中心 我的博客中先前也有很多这

这一篇文章,是总结一下WCF技术,以及基于这个技术发展出来的几个典型应用场景,并且我将尝试对这些不同的WCF实现的原理进行一些比较分析。

关于WCF这个技术的基本概念,如果你不是很清楚,可以参考一下有关的文档

微软开发者中心

 

我的博客中先前也有很多这方面的介绍

?w=blog%3achenxizhang+wcf&p=1

 

言归正传,我将先概括一下WCF技术的背景、核心要素、目前的典型应用场景。然后针对这些应用场景进一步地展开一些分析和比较,以便帮助大家更好地理解,并且知道在何时应该选用哪一种场景。(即便你没有时间去看那么多资料,通过本文也将有一个提纲挈领的认识)

 

历史背景:

WCF,全称是Windows Communication Founcation,它作为微软新一代的通讯技术,首先正式出现在.NET Framework 3.0中,伴随着Windows Vista的发布而名噪一时。在此之前,曾经作为Winfx的一部分为人所知,其代号为indigo。

作为Foundation(基础模块),WCF是定位在微软.NET平台上实现统一的消息服务通讯机制。它很好地吸收了之前的多种分布式开发技术的优点,并且提供了统一的编程和访问的模型,逐渐成为SOA解决方案中的主流技术,受到了广泛的关注和使用。

image

核心要素:

从技术层面理解WCF,可以分为三个要素(俗称WCF的ABC)

1.Address(where):地址,是指访问服务的URI(可以是一个http地址,也可以是tcp的地址)

2.Binding(how):绑定,是指通讯所使用的协议,例如http,net.tcp,msmq等等

3.Contract(what):合约,是指通讯的规范,例如服务的合约,数据的合约等等。

 

从系统层面理解WCF,可以分为四个要素

1.Contract:合约,定义一套合约,通常是WCF开发的起点。这也是唯一需要在宿主和客户端之间共享的信息,通常是一些接口(interface)定义。

2.Service:服务,基于合约实现的一个具体服务。通常是一些类型(class)定义,实现了业务逻辑。

3.Host:宿主,既然服务是一个class,它自身是无法对客户端请求进行响应的。所以需要有一个宿主程序来提供持续的监听。WCF的宿主可以是任意的应用程序,非常灵活。

4.Client:客户端,任何客户端(例如Windows Forms,WPF, Silverlight,Console Application,甚至Javascript,或者java,php等等)都可以通过自己的方式来访问WCF.

 

应用场景:

WCF 从发布到现在的将近5年左右的时间,经过了多次增强和改进,从最开始单纯的SOAP Service的方式,发展出来其他多种应用场景,分别是

1. SOAP Services

2. WebHttp Services

3. Data Services

4. Workflow Services

5. RIA Services

 

下面我将针对这些应用场景一一进行讲解

【注意】我经常使用WCF技术以及一些讲座中,都会感慨WCF配置的强大。宿主和客户端都可以通过配置文件的方式定义、更改WCF服务的行为。可以这么说,在WCF中,几乎什么都可以配置。这确实很酷。所以下面的讲解,,很多都是用配置文件的方式来说明问题。

 

1. SOAP Services

这种场景是WCF一开始就支持的,也是最完整的一个。

为什么称为SOAP Services呢?这是因为WCF服务是基于消息的通讯机制,而它的消息是被封装为一个SOAP Envelope(SOAP 信封的)

【备注】SOAP的全称是Simple Object Access Protocol,我们一般翻译为简单对象访问协议。

一个典型的SOAP Request(代表了客户端发到服务器的请求)

image

一个典型的SOAP Response

image

这种服务是以操作(Operation)为中心的,也就是说,我们可以完全控制服务的所有细节,包括定义合约,实现服务,实现宿主等等。这里面有两层意思,我们将有足够的灵活性,因为所有一切都是可以控制的;同时,我们也需要具备足够的专业知识,因为所有一切都需要你自己控制。

我们来看一个典型的WCF SOAP Service的配置文件

网友评论
<