RESTful的实现
REST (REpresentation State Transfer) 描绘了一个架构款式的收集系统,比方 web 使用顺序。它初次呈现在 2000 年 Roy Fielding 的博士论文中,他是 HTTP 标准的首要编写者之一。REST 指的是一组架构约束前提和准则。知足这些约束前提和准则的使用顺序或设计就是 RESTful。
Web 使用顺序最主要的 REST 准则是,客户端和效劳器之间的交互在恳求之间是无形态的。从客户端到效劳器的每个恳求都必需包括了解恳求所必需的信息。假如效劳器在恳求之间的任何工夫点重启,客户端不会获得告诉。此外,无形态恳求可以由任何可用效劳器答复,这非常合适云核算之类的情况。客户端可以缓存数据以改良功能。
在效劳器端,使用顺序形态和功用可以分为各类资本。资本是一个风趣的概念实体,它向客户端公开。资本的例子有:使用顺序对象、数据库记载、算法等等。每个资本都运用 URI (Universal Resource Identifier) 获得一个专一的地址。一切资本都共享一致的界面,以便在客户端和效劳器之间传输形态。运用的是规范的 HTTP 办法,比方 GET、PUT、POST 和 DELETE。Hypermedia 是使用顺序形态的引擎,资本透露表现经过超链接互联。
另一个主要的 REST 准则是分层系统,这透露表现组件无法调查它与之交互的中心层以外的组件。经过将系统常识限制在单个层,可以限制整个系统的复杂性,促进了底层的自力性。
当 REST 架构的约束前提作为一个全体使用时,将生成一个可以扩展到很多客户端的使用顺序。它还降低了客户端和效劳器之间的交互推迟。一致界面简化了整个系统架构,改良了子系统之间交互的可见性。REST 简化了客户端和效劳器的完成。
RESTful的完成:RESTful Web 效劳与 RPC 款式的 Web 效劳
调查了什么是什么是REST,我们再看看RESTful的完成。比来,运用 RPC 款式架构构建的基于 SOAP 的 Web 效劳成为完成 SOA 最常用的办法。RPC 款式的 Web 效劳客户端将一个装满数据的信封(包罗办法和参数信息)经过 HTTP 发送到效劳器。效劳器翻开信封并运用传入参数执行指定的办法。办法的后果打包到一个信封并作为呼应发还客户端。客户端收到呼应并翻开信封。每个对象都有本人共同的办法以及仅公开一个 URI 的 RPC 款式 Web 效劳,URI 透露表现单个端点。它疏忽 HTTP 的大局部特征且仅支撑 POST 办法。
因为轻量级以及经过 HTTP 直接传输数据的特征,Web 效劳的 RESTful 办法曾经成为最经常见的替代办法。可以运用各类言语(比方 Java 顺序、Perl、Ruby、Python、PHP 和 Javascript[包罗 Ajax])完成客户端。RESTful Web 效劳凡间可以经过主动客户端或代表用户的使用顺序拜访。然则,这种效劳的简洁性让用户可以与之直接交互,运用它们的 Web 阅读器构建一个 GET URL 并读取返回的内容。
在 REST 款式的 Web 效劳中,每个资本都有一个地址。资本自身都是办法挪用的目的,办法列表对一切资本都是一样的。这些办法都是规范办法,包罗 HTTP GET、POST、PUT、DELETE,还能够包罗 HEADER 和 OPTIONS。
在 RPC 款式的架构中,存眷点在于办法,而在 REST 款式的架构中,存眷点在于资本 —— 将运用规范办法检索并操作信息片段(运用透露表现的方式)。资本透露表现方式在透露表现方式中运用超链接互联。
Leonard Richardson 和 Sam Ruby 在他们的著作 RESTful Web Services 中引入了术语 REST-RPC 夹杂架构。REST-RPC 夹杂 Web 效劳不运用信封包装办法、参数和数据,而是直接经过 HTTP 传输数据,这与 REST 款式的 Web 效劳是相似的。然则它不运用规范的 HTTP 办法操作资本。它在 HTTP 恳求的 URI 局部存储办法信息。好几个知名的 Web 效劳,比方 Yahoo 的 Flickr API 和 del.icio.us API 都运用这种夹杂架构。
RESTful的完成:RESTful Web 效劳的 Java 框架
有两个 Java 框架可以协助构建 RESTful Web 效劳。erome Louvel 和 Dave Pawson 开拓的 Restlet(见 参考材料)是轻量级的。它完成针对各类 RESTful 系统的资本、透露表现、衔接器和媒体类型之类的概念,包罗 Web 效劳。在 Restlet 框架中,客户端和效劳器都是组件。组件经过衔接器相互通讯。该框架最主要的类是抽象类 Uniform 及其详细的子类 Restlet,该类的子类是专用类,比方 Application、Filter、Finder、Router 和 Route。这些子类可以一同处置验证、过滤、平安、数据转换以及将传入恳求路由到响应资本等操作。Resource 类生成客户端的透露表现方式。
JSR-311是 Sun Microsystems 的标准,可认为开拓 RESTful Web 效劳界说一组 Java API。Jersey是对 JSR-311 的参考完成。
JSR-311 供应一组注释,相关类和接口都可以用来将 Java 对象作为 Web 资本展现。该标准假定 HTTP 是底层收集和谈。它运用注释供应 URI 和响应资本类之间的明晰映射,以及 HTTP 办法与 Java 对象办法之间的映射。API 支撑普遍的 HTTP 实体内容类型,包罗 HTML、XML、JSON、GIF、JPG 等。它还将供应所需的插件功用,以答应运用规范办法经过使用顺序添加其他类型。
RESTful的完成:构建 RESTful Web 效劳的多层架构
RESTful Web 效劳和动态 Web 使用顺序在很多方面都是相似的。有时它们供应一样或十分相似的数据和函数,虽然客户端的品种分歧。例如,在线电子商务分类网站为用户供应一个阅读器界面,用于查找、检查和订购产物。假如还供应 Web 效劳供公司、零售商甚至小我可以主动订购产物,它将十分有效。与大局部动态 Web 使用顺序一样,Web 效劳可以从多层架构的存眷点别离中受益。营业逻辑和数据可以由主动客户端和 GUI 客户端共享。专一的分歧点在于客户端的实质和中心层的透露表现层。此外,从数据拜访平分离营业逻辑可完成数据库自力性,并为各类类型的数据存储供应插件才能。
图 1 展现了主动化客户端,包罗 Java 和各类言语编写的剧本,这些言语包罗 Python、Perl、Ruby、PHP 或敕令行东西,比方 curl。在阅读器中运转且作为 RESTful Web 效劳消费者运转的 Ajax、Flash、JavaFX、GWT、博客和 wiki 都属于此列,由于它们都代表用户以主动化款式运转。主动化 Web 效劳客户端在 Web 层向 Resource Request Handler 发送 HTTP 呼应。客户端的无形态恳求在头部包括办法信息,即 POST、GET、PUT 和 DELETE,这又将映射到 Resource Request Handler 中资本的响应操作。每个恳求都包括一切必需的信息,包罗 Resource Request Handler 用来处置恳求的凭证。
从 Web 效劳客户端收到恳求之后,Resource Request Handler 从营业逻辑层恳求效劳。Resource Request Handler 确定一切概念性的实体,系统将这些实体作为资本公开,并为每个资本分派一个专一的 URI。然则,概念性的实体在该层是不存在的。它们存在于营业逻辑层。可以运用 Jersey 或其他框架(比方 Restlet)完成 Resource Request Handler,它应该是轻量级的,将很多职责任务托付给营业层。
Ajax 和 RESTful Web 效劳实质上是互为增补的。它们都可以应用很多 Web 技能和规范,比方 HTML、JavaScript、阅读器对象、XML/JSON 和 HTTP。当然也不需求购置、装置或装备任何首要组件来支撑 Ajax 前端和 RESTful Web 效劳之间的交互。RESTful Web 效劳为 Ajax 供应了十分简略的 API 来处置效劳器上资本之间的交互。
图 1 中的 Web 阅读器客户端作为 GUI 的前端,运用透露表现层中的 Browser Request Handler 生成的 HTML 供应显示功用。Browser Requester Handler 可以运用 MVC 模子(JSF、Struts 或 Spring 都是 Java 的例子)。它从阅读器承受恳求,从营业逻辑层恳求效劳,生成透露表现并对阅读器做出呼应。透露表现供用户在阅读器中显示运用。透露表现不只包括内容,还包括显示的属性,比方 HTML 和 CSS。
<img class="fit-image" border="0" alt="多层 Web 使用顺序情况图" src="http://images.51cto.com/files/uploadimg/20090805/1546390.jpg" width="498" />
营业规矩可以集中到营业逻辑层,该层充任透露表现层和数据拜访层之间的数据交流的中心层。数据以域对象或值对象的方式供应给透露表现层。从营业逻辑层中解耦 Browser Request Handler 和 Resource Request Handler 有助于促进代码重用,并能完成灵敏和可扩展的架构。此外,因为未来可以运用新的 REST 和 MVC 框架,完成它们变得愈加轻易,无需重写营业逻辑层。
数据拜访层供应与数据存储层的交互,可以运用 DAO 设计形式或许对象-关系映射处理方案(如 Hibernate、OJB 或 iBATIS)完成。作为替代方案,营业层和数据拜访层中的组件可以完成为 EJB 组件,并获得 EJB 容器的支撑,该容器可认为组件生命周期供应便当,治理耐久性、事务和资本装备。然则,这需求一个服从 Java EE 的使用效劳器(比方 JBoss),而且能够无法处置 Tomcat。该层的效果在于针对分歧的数据存储技能,从营业逻辑平分离数据拜访代码。数据拜访层还可以作为衔接其他系统的集成点,可以成为其他 Web 效劳的客户端。
数据存储层包罗数据库系统、LDAP 效劳器、文件系统和企业信息系统(包罗遗留系统、事务处置系统和企业资本规划系统)。运用该架构,您可以开端看到 RESTful Web 效劳的力气,它可以灵敏地成为任何企业数据存储的一致 API,然后向以用户为中间的 Web 使用顺序公开垂直数据,并主动化批量申报剧本。
什么是REST:完毕语
REST 描绘了一个架构款式的互联络统(如 Web 使用顺序)。REST 约束前提作为一个全体使用时,将生成一个简略、可扩展、有用、平安、牢靠的架构。因为它简洁、轻量级以及经过 HTTP 直接传输数据的特征,RESTful Web 效劳成为基于 SOAP 效劳的一个最有出路的替代方案。用于 web 效劳和动态 Web 使用顺序的多层架构可以完成可重用性、简略性、可扩展性和组件可呼应性的明晰别离。Ajax 和 RESTful Web 效劳实质上是互为增补的。开拓人员可以轻松运用 Ajax 和 RESTful Web 效劳一同创立丰厚的界面。
- 1GAE上搭建PHP环境并开启URL
- 2最新动态-久途迁新址
- 3ecshop的数据字典
- 4Linux操作系统中用PHP构建网站详解
- 5玩具租赁商城系统需求5
- 6网站策划的重要讨论
- 7企业为啥要权威的网站建设公司做官网呢?
- 8房地产行业微信营销方案3
- 9网站制作如何设计网站
- 10关于编码最佳应用实践
- 11网站建设的效果图设计不好导致的一些后果
- 12利用构造方法实现模块的解耦
- 13SQL到NOSQL的思维转变
- 14最全Facebook图片存储架构技术
- 15企业建站要写简洁的代码
- 16代码审查可以帮助提高代码质量
- 17魅妆社区项目开发文档
- 18玩具租赁电商平台是什么
- 19网站优化企业的方法
- 20网站建设和营销带来的经济效益
- 21二维码是网站建设推广和发展的双刃剑
- 22全站内置SEO优化机制
- 23php衔接到MySQL数据库效劳器时三种首要的API:mysql,mysqli,pdo差异及联络
- 24介绍如何使用你的JavaScript
- 25Windows Azure 网站上运行 CakePHP
- 26 玩具租赁商城系统需求2
- 27网站建设后,如何确定行业切入点进行网络营销
- 28如何让搜索引擎看到更真实的网页
- 29企业为什么偏爱须要专业的网站构造单位做官方网站呢?
- 30ecshop中jQuery冲突解决
成都公司:成都市成华区建设南路160号1层9号
重庆公司:重庆市江北区红旗河沟华创商务大厦18楼