`
leopard_lb
  • 浏览: 40528 次
  • 性别: Icon_minigender_1
  • 来自: 太原
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

从分布式系统的角度看REST

阅读更多

我们说REST架构风格,从REST具备的内在特征来说,它包括了这些特征:

1、基于HTTP的资源
2、以HTTP协议去操作
3、数据和表象分离

但是如果我们换一个角度,即分布式应用系统的角度来看,我们会有一些更有意思的结论:

分布式应用系统的架构,经历了好几代的变迁,我们来简单回顾一下:

1、基于CORBA协议的C++中间件时代
CORBA时代我还在上学,基本上没有怎么接触过Corba编程。曾经有一次我提供EJB培训的客户,正在进行传统Corba架构向EJB2架构迁移,通过和他们的交流,对Corba多了一些了解。当时就感叹,和EJB2相比,Corba实在太难用了。Corba时代在1998年EJB1.0发布以后,就逐渐淡出历史舞台了。

2、基于RMI/IIOP协议的EJB时代
这个时代开始于1998年,到现在基本上已经划上了句号。其实在EJB出现以前,在1996年Microsoft发布WindowsNT4.0以后,Microsoft当时也提出了自己的分布式架构,即MTS,但是MTS的光辉被随后出现的伟大的EJB技术彻底击败,此后,就拉开了Java的应用服务器时代,BEA也是在这个时代的转折点成长起来的。

不管是Corba,还是EJB,都有一些共同点:
1) 通过专有的网络协议通讯
2) 不能跨平台调用
3) 通过分布式对象调用来实现分布式架构,换句话来说就是,分布式架构是绑定在面向对象的机制上的

分布式对象架构的缺陷在EJB2时代被充分暴露了出来,乃至于Martin Folwer在《企业应用架构模式》当中强调,分布式调用的第一原则就是不要分布式。更多关于EJB2分布式对象架构的缺陷在Rod Johnson的《J2EE without EJB》当中被剖析的更加清楚。

3、基于SOAP协议的Web Services时代
这个时代始于2001年Microsoft公司推出dotnet平台,整个行业开始鼓吹Web Services。中间经历了一次低潮之后,在IBM,BEA成功的联手炒作SOA之后,再次王者归来。

web services有一些明显不同于Corba和EJB分布式对象架构的特征:
1) 通过标准SOAP协议通讯,一般走HTTP通道
2) 能够跨平台调用
3) 通讯格式是xml文本,而不是二进制数据格式
4) 通过RPC机制来实现分布式调用,而不是通过面向对象机制实现分布式调用

web services的优点和缺点都非常突出,这个不是本文的要点,不做具体分析。这里唯一要强调的是SOAP协议并不依赖于HTTP。事实上SOAP协议可以走很多底层协议,例如SMTP协议,Jabber协议等等。

REST也是一种分布式系统的架构风格,那么REST和上面这些分布式架构有哪些明显的区别呢?
1) REST走的是HTTP协议,并且充分利用或者说极端依赖HTTP协议
Corba和EJB是采用专有的二进制协议,SOAP可以但不依赖HTTP,并且仅仅使用HTTP POST。
2) REST是基于HTTP抽象资源的分布式调用,换句话来说,就是分布式调用是绑定在资源的操作上面的。

通过上面的总结,我们可以做一个直观的对比表格:

 

代码
  1. 分布式架构       协议             调用方式   
  2. -------------------------------------------------------   
  3. Corba架构        专有二进制协议      对象的CRUD操作   
  4. EJB架构          专有二进制协议      对象的CRUD操作   
  5. Web Services     SOAP协议            RPC方式   
  6. REST             HTTP协议            对资源的CRUD操作   
  7. --------------------------------------------------------  
<script>render_code();</script>

 

REST最大的特点是什么呢?REST是为通过HTTP协议来进行分布式调用量身定造的架构

传统上,我们开发一个非分布式的软件系统,使用OO进行建模和架构,无往而不利。但是分布式对象却显得不那么有效。对于跨进程的调用,也许我们需要探索更好的面向对象的分布式调用架构。

REST是专门为分布式调用设计的架构,在REST里面,分布式是通过对资源的操作来实现的,不是像EJB那样通过对象的方法调用来实现的。资源是一种抽象的概念,资源被映射到相应的一套URL规则上面了。所以资源只和URL相关,而与具体实现无关,因此REST具有更好的解藕性。在RoR的实现当中,你可以把一些资源直接映射到model对象上面去,也可以不映射到model上面,而完全是由业务逻辑组合的抽象资源。

分享到:
评论

相关推荐

    一种基于REST的分布式地理资源聚合系统.pdf

    从技术角度看,REST(Representational State Transfer)是一种软件架构风格,用于网络系统中的通信,特别适用于分布式系统的开发。RESTful Web服务是基于REST架构风格的Web服务,其以资源为中心,通过HTTP协议的...

    云计算分布式块存储系统总体技术要求标准解读.pdf

    该标准的制定有助于规范相关云服务的功能,有利于用户的服务选型,从产业角度也可保障相关云服务的整体发展水平。 四、分布式块存储系统的功能性和可扩展性: 分布式块存储系统在云计算时代对存储系统的新需求,...

    REST翻译中文论文

    2. **基于网络的应用架构评估**:论文深入分析了基于网络的应用架构与传统分布式系统架构的区别,并讨论了评估应用软件架构的关键指标,如性能、可伸缩性、简单性、可修改性、可见性、可移植性和可靠性等。...

    惠普带外rest接口.pdf

    这种技术对于数据中心管理和维护尤为重要,尤其是在服务器操作系统无法正常工作或者需要从安全角度避免在操作系统内进行管理时。 惠普集成光输出(iLO)管理处理器是惠普在带外管理领域的创新之一。iLO技术最早于2001...

    REST_资源指南_restful

    REST(Representational State Transfer,表述性状态转移)是一种软件架构风格,最初由Roy Fielding在2000年的博士论文中提出,主要用于分布式超媒体系统,例如万维网。它被定义为一种架构风格,而非具体的实现标准...

    从技术角度剖析云计算.pdf

    《从技术角度剖析云计算》这本书深入探讨了云计算的架构,主要分为四个层次:显示层、中间件层、基础设施层和管理层。以下是对每个层次的详细解释: 1. 显示层: 这一层关注的是如何以用户友好的方式呈现内容。...

    ASP EXCEL导入SQL

    从最直观的角度看待REST,它是网络服务最理想的手段,但是Rails框架把REST带到了网络应用软件开发框架。这是一次飞跃,让REST的思想从网络服务的应用提升到了网络应用软件开发。利用REST思想的simply_restful插件...

    从技术角度剖析云计算 (2).pdf

    然而,从技术角度深入剖析,我们可以发现云计算架构涉及更多的技术层面。 首先,云计算架构可以概括为四层结构:显示层、中间件层、基础设施层和管理层。 1. **显示层**:这一层负责向用户提供直观、友好的交互...

    架构风格与基于网络的软件架构设计(!软件架构的经典必读资料).pdf

    在分布式系统中,优化网络性能可以提高系统整体效率。 3. 架构质量属性(Architectural Quality Attributes): 架构质量属性是评估软件架构好坏的标准,包括简洁性、可扩展性、可修改性、网络效率、用户感知性能、...

    云计算的架构-–-从技术角度剖析云计算-.doc.doc

    本文将从技术角度详细解析这一架构,包括显示层、中间件层、基础设施层以及管理层。 首先,**显示层**是用户与云计算服务交互的界面。这一层主要包括HTML、JavaScript、CSS、Flash和Silverlight等技术。HTML4是目前...

    JAVA EE架构师 需要具备的知识.doc

    这一阶段的目标是从更广阔的视角理解系统架构,特别是在分布式系统的构建上。 - **分布式系统原理**:深入理解分布式系统的概念、特点和挑战,如一致性问题、容错机制等。 - **Java EE技术**:熟悉EJB(Enterprise ...

    架构风格与基于网络的软件架构设计Roy T. Fielding博士论文

    - **范围**:定义了基于网络的应用与传统分布式系统的区别,并区分了应用软件与网络软件的不同之处。 - **评估标准**:提出了评估软件架构的有效方法,包括性能、可伸缩性、简单性等多个方面。 - **关键关注点的...

    SA第3次上机实验报告-董安宁 1111711

    通过本次实验,学生不仅掌握了Web Service的实用技术,还深入理解了软件体系结构风格,尤其是Web Service在构建分布式系统中的作用,以及如何通过不同的视图模型(如Kruchten 4+1视图模型)来描述和分析系统结构。...

    VxRail超融合系统介绍.pdf

    首先,从存储架构的角度来看,超融合系统采用的是Server SAN(存储区域网络)的集中式架构,与传统的专用存储架构(如FC、IP、Infiniband协议)相比,它更倾向于使用IP网络进行数据、管理和服务流量的传输。...

    spring-cloud-rest-tcc:以Spring Cloud Netflix作为服务治理基础,展示基于tcc思想所实现的分布式事务解决方案

    前言随业务发展,组织架构变动,加上对现有系统进行析构分解,所带来的一个显着问题是进程间一致性需求增加,是一个协作问题。Atomikos曾介绍使用TCC作为微服务的分布式事务解决方案,有一篇简单的译文可作为入门...

    Architectural Styles and the Design of Network-based Software Architectures_2

    网络应用架构涉及了从简单的网页到复杂的分布式系统等各种类型的网络应用程序。这些应用程序通常需要跨越多个网络边界,并且能够在异构环境中运行。 **2.2 设计评估** 设计评估是衡量网络应用架构质量的关键环节。...

Global site tag (gtag.js) - Google Analytics