转载自: http://www.cnblogs.com/jillzhang/archive/2010/04/04/1704388.html
对WCF比较感兴趣的朋友可能都知道,在.Net 3.5的版本的WCF中增加了Rest支持。也有很多朋友已经使用过WCF Rest,但可能对什么是Rest?为什么要Rest?以及怎么用Rest?等问题并不太了解,通过读取本文可以帮您更深入的理解和掌握WCF Rest,并深层次的了解Rest 风格的特征。
首先,我们先来了解什么是Rest?
Rest即表述性状态传递(英文:Representational State Transfer,简称REST)是Roy Fielding博士在2000年他的博士论文中提出来的一种软件架构风格。它是一种针对网络应用的设计和开发方式,可以降低开发的复杂性,提高系统的可伸缩性。
目前在三种主流的Web服务实现方案中,因为REST模式的Web服务与复杂的SOAP和XML-RPC对比来讲明显的更加简洁,越来越多的web服务开始采用REST风格设计和实现。例如,Amazon.com提供接近REST风格的Web服务进行图书查找;雅虎提供的Web服务也是REST风格的。
Rest的特性:
了解了Rest的这么多特性,应该对Rest是什么有比较清楚的认识了。总结的来讲,Rest就是一种使用针对资源进行增删改查操作,使用HTTP协议来通讯的服务端-客户端的应用模型。非常简单!下面我来举几个例子大家来判断一下是否都是Rest呢?
接下来,我们来了解下为什么要Rest?要弄清楚这个问题首先要了解一下计算机软件之间通讯技术的发展历程。在计算机通讯中,TCP/IP协议是最为通用的标准协议,TCP是传输控制协议,IP是网际协议,但这两种协议都是非常原始的(RAW),TCP协议是传输层协议,而IP是网络层协议。通过TCP/IP的确能胜任将信息从一个计算机传递给另外一台。但大家都知道比较底层的东西,往往比较难于理解。因此一些应用层协议营运而生,最初的应用层协议有SMTP,POP3,FTP,HTTP等,时至今日,大家每天使用最多的仍然是这些老牌应用协议。但这些协议同时都是有应用条件的。早些时候,程序员们为了让两个应用程序之间能够通讯,通常采用的是使用Socket的开发的TCP/IP通讯程序,并且都是自己定义数据格式规范,这种模式的优点是个性化,通常效率较高,但同时因为都各自为政,往往是开发了好多种程序,但每种都不一样,这对于爱偷懒的程序员来讲,真是杯具了呀!这时候一些聪明的程序员开始想到了,如果调用远程的一个方法能够像调用本地方法一样,那就简化多了,于是RPC模式的通讯产生了,之后为了标准化,跨平台又产生了基于SOAP协议的消息通讯模型。但随着时间的推移和SOAP的推广情况,大家很快发现,其实世界上已经存在了一个最为开放,最为通用的应用协议,那就是HTTP,使用SOAP的确让进程间通讯变得简单易用,但并不是每个厂商都愿意将自己的老系统再升级为支持SOAP,而且SOAP的解析也并不是每种语言都内置支持,比如JS.而HTTP正好完美了解决了这个问题,那好吧,我们就设计一种使用HTTP协议来完成服务端-客户端通讯的方法吧,Rest应运而生。总结来说,计算机通讯的历程可以用下图来阐述:
下面接着谈如何使用Rest?
假如我们要通讯的两个应用程序都是同一个架构的,比如都是.Net Application,或者都是Java Application,或者二者是其他对SOAP支持较好的程序,那么建议使用Soap形式来实现通讯,但如果服务的客户有使用浏览器调用服务,有使用js调用服务的需求,那么最好服务最好还是设计成Rest风格的。也就是说现阶段其实Rest的开放性,通用性都要优于SOAP.
有关如何创建WCF Rest服务,可以参考我之前的几篇博文,好久之前的了。
Ajax访问Xml Web Service的安全问题以及解决方案
Ajax与WCF交互-WCF之美
异步调用Restful的WCF服务
利用WCF的Restful进行上传下载