良好的Web架构风格:
1. 客户/服务器模式: 实现了UI与数据的分离。
2. 服务端无状态性: 可见性,可靠性,可伸缩性等方面的改善。
可见性-无状态性使得服务器不必要维护海量的上下文(Context)。
可靠性-无状态性减少了服务器从局部错误中恢复的任务量。
可伸缩性-无状态性使得服务器可以很容易的释放资源。
3. 缓存: 减少服务端不必要的处理。
4. 可伸缩性: 便于分布式和集群部署。
上面的2,3点也是影响4的主要因素。而随着系统用户规模的指数上升,可伸缩性将变的至关重要。
现在大多数应用程序都忽略或者违反了上述2, 3的风格。当然也肯定失去了4带来的好处。
比如Java Servlet中HttpSession的应用,使服务器端保存了客户端的状态。
时下流行的动态页面的做法也使得资源缓存变得困难或者不可能。
这些都直接影响了应用的可伸缩性。
改善现状的思路是,把服务端的处理和状态前移,由客户端来实现。使服务端回归到无状态的特性。
以采用ajax技术的应用系统为例:因为不需要完全刷新就可以与服务器进行交互,使得有状态客户机成为可用选择。基于浏览器的应用程序代码可以在必要时获取新的服务器数据,并把这些数据织入当前页面。
将处理和状态前移到每个客户机上后,实现了无状态的服务端;同时缓存服务器可以缓存ajax引擎(比如dojo, prototype etc.),以及状态无关的数据。
个人理解,多种浏览器的plug-in技术(Sun的applet, MS的ActiveX等等),都应该是这种思路的不同技术实现。
经过以上分析整理,实际上已经涉及到了时下流行的一个概念-REST.
REST(Representational State Transfer)来源于Dr. Roy Thomas Fielding, <Architectural Styles and the Design of Network-based Software Architectures>
当浏览器浏览访问一个url资源时,返回的页面即为该url资源的representation,这个representation给浏览器一个state,当
浏览器访问下一个url资源时,浏览器的state就transfer了。
REST其本身只是为分布式超媒体系统(distributed hypermedia systems)设计的一种架构风格,而不是某个标准,框架。
REST的设计准则
1.网络上的所有事物都被抽象为资源(resource);
2.每个资源对应一个唯一的资源标识符(resource identifier);
3.通过通用的连接器接口(generic connector interface)对资源进行操作;
4.对资源的各种操作不会改变资源标识符;
5.所有的操作都是无状态的(stateless)。
REST中的资源所指的不是数据,而是数据和表现形式的组合。
REST是基于Http协议的,任何对资源的操作行为都是通过Http协议来实现。以往的Web开发大多数用的都是Http协议中的GET和POST方法,对其他方法很少使用,这实际上是因为对Http协议认识片面的理解造成的。Http不仅仅是一个简单的运载数据的协议,而是一个具有丰富内涵的网络软件的协议。他不仅仅能对互联网资源进行唯一定位,而且还能告诉我们如何对该资源进行操作。Http把对一个资源的操作限制在4个方法以内:GET, POST,PUT和DELETE,这正是对资源CRUD操作的实现。由于资源和URI是一一对应的,执行这些操作的时候URI是没有变化的,这和以往的 Web开发有很大的区别。正由于这一点,极大的简化了Web开发,也使得URI可以被设计成更为直观的反映资源的结构,这种URI的设计被称作 RESTful的URI。这位开发人员引入了一种新的思维方式:通过URL来设计系统结构。当然了,这种设计方式对一些特定情况也是不适用的,也就是说不是所有的URI都可以RESTful的。
REST 之所以可以提高系统的可伸缩性,就是因为它要求所有的操作都是无状态的。由于没有了上下文(Context)的约束,做分布式和集群的时候就更为简单,也可以让系统更为有效的利用缓冲池(Pool)。并且由于服务器端不需要记录客户端的一系列访问,也减少了服务器端的性能。
分享到:
相关推荐
**REST(Representational State Transfer,表述性状态转移)**是一种软件架构风格,广泛应用于Web服务的设计,特别是互联网应用程序。REST风格的架构强调简洁、高效和可扩展性,它基于HTTP协议,利用其固有的方法...
首先,标题《架构风格与基于网络的软件架构设计(REST)》点明了文档的主题是关于软件架构风格,尤其是与网络相关的软件设计,并重点介绍了REST架构风格。REST是一种软件架构风格,它由Roy Thomas Fielding博士在其...
web之父的博士论文,Restful API的最佳描述。这篇论文定义了一个框架,...然后我介绍了表述性状态转移(Representational State Transfer,REST)的架构风格,并且描述了如何使用REST来指导现代Web架构的设计和开发。
但是近年来移动互联网的发展,各种类型的Client层出不穷,RESTful可以通过一套统一的接口为 Web,iOS和Android提供服务。 另外对于广大平台来说,比如Facebook platform,微博开放平台,微信公共平台等,它们不需要...
REST(Representational State Transfer,表述性状态转移)架构风格是一种设计网络应用的准则和原则,主要应用于Web服务,旨在使接口简洁、可扩展且高效。RESTful架构的主要目标是通过HTTP协议来创建、读取、更新和...
《架构风格与基于网络的软件架构设计》是网络软件领域的一部重要著作,作者通过深入研究,探讨了软件架构的设计原则和模式,特别是在Web环境下的应用。这本书的中英文版本都为读者提供了全面理解现代互联网软件架构...
REST(REpresentational State Transfer)是一种混合架构风格,当前互联网的核心架构风格。基于 REST 服务(RESTful Service)的 Web 应用系统设计任务主要包括:识别并设计 REST 风格的服务,采用面向服务的思想...
REST风格的架构是一种基于HTTP协议,使用统一的接口来交互数据和实现功能的软件设计模式。在Web服务领域,REST(Representational State Transfer,表述性状态转移)已经成为构建可伸缩、高性能网络应用的重要选择。...
在深入探讨“基于REST架构风格的Web+20实现”这一主题之前,需要先了解REST(Representational State Transfer)架构风格的基本概念以及Web 2.0的相关技术背景。 REST是一种软件架构风格,最初由Roy Fielding在他的...
Fielding博士是HTTP和URI等Web架构标准的主要设计者,他的工作对Web的发展起到了决定性作用。 在论文中,Fielding博士首先介绍了软件架构的概念,将其定义为运行时系统的抽象,它描述了系统中的组件、连接器以及...
Roy Fielding博士不仅是HTTP和URI等Web架构标准的主要设计者,而且还是Apache HTTP服务器的主要开发者,他所提出的REST(Representational State Transfer)架构风格,已成为网络服务开发中广泛采纳的一种架构范式。...
随着互联网的发展,REST风格的架构逐渐成为主流,它不仅提供了一种简洁、直观的方式来进行网络通信,还对用户友好,利于SEO优化。传统的MVC框架如Struts,采用的是基于Action的设计模式,这在一定程度上限制了URL的...
总结来说,基于REST架构的Web服务设计是现代Web开发中常用的一种技术,它提供了简单、高效且易于扩展的服务接口,适用于各种规模的项目,特别是互联网和移动应用。通过遵循REST原则,开发者能够构建出更加灵活、可...
"基于RIA+REST架构的房产管理WebGIS平台研究" 该论文研究了基于RIA+REST架构的房产管理WebGIS平台,旨在提高房产管理的效率和科学性。该平台通过集成housing-related功能机构、逐渐实现房产业务数据的空间化、在Web...