RESTful 服务架构风格 * .NET的RESTful框架 OpenRasta

REST 的约束采用的就是掌控 Web 的基本原则。这些原则是:
  • 用户代理与资源交互,任何可命名和表达的事物均可称为资源。每项资源都有一个惟一的统一资源标识符 (URI)。
  • 与资源的交互(经过其惟一的 URI 定位)使用 HTTP 标准动词(GET、POST、PUT 和 DELETE)的统一接口完成。交互中声明资源的媒体类型也很重要,它使用 HTTP 内容类型标头指定。(XHTML、XML、JPG、PNG 和 JSON 就是一些广为人知的媒体类型。)
  • 资源是自我描述的。处理资源请求所需的所有信息均包含在请求自己内(这样服务能够没有状态)。
  • 资源包含到其余资源的连接(超媒体)。

 

您为何应关注 REST?
如今我对 REST 作一些解释,您可能正在想为何要对它加以关注。做为开发人员,您须要必定的动机来学习和采纳任何风格、技术或模式。若是您阅读此杂志,您多是常与 Microsoft 技术打交道的开发人员。要实现客户端-服务器应用程序,您可能使用的是另外一种体系结构风格:远程过程调用 (RPC)。不管您用过的是专用 RPC 系统(例如 DCOM 或 . NET Remoting),仍是可互操做的 RPC 技术(例如,使用 ASMX 或 WCF 的 SOAP),它们都是在 Microsoft 平台上展示的客户端-服务器风格。那么,为何要学习或使用 REST?
据我所知有两个主要缘由。首先,REST 在许多方面所表现出的重要功能和优势都远胜于 RPC 技术。其次,Microsoft 正在将自身许多实现从 RPC 技术(例如 SOAP)转为 REST。这意味着即便您对使用 REST 构建本身的系统尚在犹豫,随着 Microsoft 和其余公司将更多的框架和技术转向 REST,您仍需了解如何与之交互。
如下是一份其余优势的列表(并不是所有优势都已列出):
缓存 使用 HTTP 向 RESTful 端点申请数据时,用到的 HTTP 动词是 GET。对于 GET 请求响应中返回的资源,能够用多种不一样的方式进行缓存。Conditional GET 就是可供选择的一种实现细节,客户端能够向服务验证他的数据是否为最新版本;RESTful 端点能够经过它进一步提升速度和可伸缩性。
扩展 REST 鼓励每项资源包含处理特殊请求所需的全部必要状态。知足这一约束时,RESTful 服务更易于扩展且能够没有状态。
反作用如您使用 GET 请求资源,RESTful 服务应该没有反作用(遗憾的是,与其余一些 REST 约束相比,这一约束更容易被打破)。
幂等 统一接口另外两个经常使用到的主要 HTTP 动词是 PUT 和 DELETE。用户代理想要修改资源时最常使用 PUT,DELETE 能够自我描述。要点(也就是“幂等”一词所强调的)是您能够对特殊资源屡次使用这两个动词,效果与首次使用同样——至少不会有任何其余影响。构建可靠的分布式系统时(即错误、网络故障或延迟可能致使屡次执行代码),这一优势可提供保障。
互操做性 许多人将 SOAP 捧为创建客户端-服务器程序最具互操做性的方法。但一些语言和环境至今仍没有 SOAP 工具包。有一些虽然有工具包,但采用的是旧标准,不能保证与使用更新标准的工具包可靠沟通。对于大多数操做,REST 仅要求有 HTTP 库(固然,XML 库一般也颇有帮助),它的互操做性确定强过任何 RCP 技术(包括 SOAP)。
简易性与其余优势相比,这一优势更主观一些,不一样的人可能有不一样的感觉。对我而言,使用 REST 的简易性涉及到表明资源的 URI 和统一接口。做为一名 Web 冲浪高手,我理解在浏览器中输入不一样的 URI 能够获得不一样的资源(有时也被称为 URI 或 URL 黑客,但绝无恶意)。因为有多年使用 URI 的经验,因此为资源设计 URI 对我来讲驾轻就熟。使用统一接口简化了开发过程,由于我没必要为每一个须要创建的服务构建接口、约定或 API。接口(客户端与个人服务交互的方式)由体系结构约束设置。
正如我所说的,这并非一份详尽的列表,您也不能所以认定 REST 是惟一一种常用的技术。您应该了解的是它的长处,以便在须要时可以加以利用。
 
目前,wcf也能够经过如下新特性完成restful功能架构
编程模型有两个主要的新属性:WebGetAttribute 和 WebInvokeAttribute;还有一个 URI 模板机制,帮助您声明每种方法响应用的 URI 和动词。基础架构的组成是一个绑定 (WebHttpBinding) 和一种行为 (WebHttpBehavior),为使用 REST 提供适宜的连网堆栈。此外,自定义的 ServiceHost (WebServiceHost) 和 ServiceHostFactory (WebServiceHostFactory) 还提供了一些托管基础架构方面的帮助。
相关文章
相关标签/搜索