WCF中的REST架构一(REST 概述)

注:从今天开始,我们将陆续翻译Rob Bagby的精彩文章"REST in WCF" 系列,原文链接如下: https://blogs.msdn.com/bags/archive/2008/05/28/rest-in-wcf-part-i-rest-overview.aspx

WCF中的 REST架构一(REST 概述)

不同的人似乎对REST有不同的定义,有些定义是非常严格的,而有些则是比较自由的。我倾向于认为REST架构存在于一个连续的范围里, 如图所示:

image

我们可以认为REST背后隐含的基本理念如下:

· 越简单越好

· Web一直是非常成功的。

· Web是很简单的。

· Web设计要遵循一些指导性原则,而这些原则在过去很长一段时间内都是可靠的。

· Web 服务的设计要以 Web的方式。

尽管不同的人对 REST有不同的定义,但可以肯定的是存在一些特征来影响一个服务是否是RESTful的,或者它能不能被认为是RESTful, 或者它能否落在上面这个连续范围内的某个位置。这里列出一些(并不是全部)特征:

· 对HTTP 方法(GET,PUT,POST,DELETE是主要的HTTP方法)的合理使用——HI-REST端倾向于对具体方法用于具体的情景进行严格的规定。例如一个HI-REST的实现中使用GET方法获取,DELETE方法用来删除,PUT方法用来插入或者更新,而POST方法则用来附加。而LO-REST的解决方案则可能使用POST方法做插入,更新,删除和附加操作。

· 对数据表现形式的选择——HI-REST解决方案倾向于选择标准的数据表现形式,而一些LO-REST解决方案则认为POX也是一个不错的选择。

· 对良好构造的URI的使用——HI-REST解决方案倾向于使用描述性的URI而一般情况下不使用查询字符串,而我们在一些LO-REST解决方案中可以看到对查询字符串的使用。

· 其他:有效负荷中包含指向相关信息的链接,使用合适的HTTP 响应代码。

我没有在什么是REST的基础上给出一个严格的定义,原因并不是我觉得这不重要。原因是,从WCF的角度,一个专门的定义无关紧要。WCF支持范围两端的REST架构(HI-REST和LO-REST)。事实上,在下一篇文章中,我将建立一个LO-REST的实现,同时在之后的文章中,我将演示HI-REST端的实现。

如果上面这些对你来说都没有什么意义,也没有关系,下面的文章将提供具体的实例。