架构风格之比较

转至InfoQ上的《理解本真的REST架构风格》一文

从架构风格的抽象高度来看,常见的分布式应用架构风格有三种:

  • 分布式对象(Distributed Objects,简称DO)

架构实例有CORBA/RMI/EJB/DCOM/.NET Remoting等等

  • 远程过程调用(Remote Procedure Call,简称RPC)

架构实例有SOAP/XML-RPC/Hessian/Flash AMF/DWR等等

  • 表述性状态转移(Representational State Transfer,简称REST)

架构实例有HTTP/WebDAV

DO和RPC这两种架构风格在企业应用中非常普遍,而REST则是Web应用的架构风格,它们之间有非常大的差别。

REST与DO的差别在于:

  • REST支持抽象(即建模)的工具是资源,DO支持抽象的工具是对象。在不同的编程语言中,对象的定义有很大差别,所以DO风格的架构通常都是与某种编程语言绑定的。跨语言交互即使能实现,实现起来也会非常复杂。而REST中的资源,则完全中立于开发平台和编程语言,可以使用任何编程语言来实现。
  • DO中没有统一接口的概念。不同的API,接口设计风格可以完全不同。DO也不支持操作语义对于中间组件的可见性。
  • DO中没有使用超文本,响应的内容中只包含对象本身。REST使用了超文本,可以实现更大粒度的交互,交互的效率比DO更高。
  • REST支持数据流和管道,DO不支持数据流和管道。
  • DO风格通常会带来客户端与服务器端的紧耦合。在三种架构风格之中,DO风格的耦合度是最大的,而REST的风格耦合度是最小的。REST松耦合的源泉来自于统一接口+超文本驱动。

REST与RPC的差别在于:

  • REST支持抽象的工具是资源,RPC支持抽象的工具是过程。REST风格的架构建模是以名词为核心的,RPC风格的架构建模是以动词为核心的。简单类比一下,REST是面向对象编程,RPC则是面向过程编程。
  • RPC中没有统一接口的概念。不同的API,接口设计风格可以完全不同。RPC也不支持操作语义对于中间组件的可见性。
  • RPC中没有使用超文本,响应的内容中只包含消息本身。REST使用了超文本,可以实现更大粒度的交互,交互的效率比RPC更高。
  • REST支持数据流和管道,RPC不支持数据流和管道。
  • 因为使用了平台中立的消息,RPC风格的耦合度比DO风格要小一些,但是RPC风格也常常会带来客户端与服务器端的紧耦合。支持统一接口+超文本驱动的REST风格,可以达到最小的耦合度。
时间: 2024-10-25 14:16:33

架构风格之比较的相关文章

理解本真的REST架构风格

引子 在移动互联网.云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了.夸张点说,甚至“出了门都不好意思跟别人打招呼”.尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段.常常听到各种各样关于REST的说法,例如:有人说:“我们这套新的API决定不用Web Service(SOAP+WSDL),而是直接使用HTTP+JSON,也就是用RESTful的方式来开发.” 不用SOAP,甚至也不用

搭建基于spring MVC框架 + RESTful架构风格技术总结

实战篇: 在SpringMVC框架中搭建RESTful架构风格来完成客户端与服务器端的低耦合度.可扩展性.高并发与大数据流量的访问. 用RESTful架构的创建步骤: 1.创建一个全新的Web工程 2.导包,导入所需要的所有第三方jar包.(springMVC+Hibernate的基本包是必须的) 3.作配置,针对不同的项目需求和不同的搭建设计,开发人员可以按照自己的编码风格来设计符合项目开发具体 应该用多少篇配置文件.但是这几篇配置文件是必不可少的: 3-1.web.xml配置文件:最基本的配

中文翻译为"具象状态传输"的RESTful的架构风格和设计思想

本文标签:  具象状态传输 RESTful架构 RESTful理解 REST   服务器 REST 定义了一组体系架构原则,您可以根据这些,包括使用不同语言编写的客户端如何通过 HTTP 处理和传输资源状态.所以在事实上,REST 对 Web的影响非常大,由于其使用相当方便,已经普遍地取代了基于 SOAP 和 WSDL 的接口设计.在多年以后的今天,REST的主要框架已经开始雨后春笋般的出现. REST(Representational State Transfer ),有中文翻译为"具象状态传

理解本真的REST架构风格(转)

本文是“深入探索REST”专栏系列深度内容中的第二篇,它将带您领略REST架构的起源.与Web的关系.REST架构的本质及特性,以及REST架构与其他架构风格之间的比较. 引子 在移动互联网.云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个buzzword,显然已经落伍了.夸张点说,甚至“出了门都不好意思跟别人打招呼”.尽管如此,对于REST这个泊来品的理解,大多数人(包括一些资深的架构师)仍然停留在“盲人摸象”的阶段.常常听到各种各样关于REST的说法,例如:有人说

关于“考勤助手”体系架构风格的选取

“考勤助手”体系架构风格的选取 备选其一:分层系统,由于考勤助手这款软件需要用到用户图像层面的设计,将用户需求与数据库对接的功能接口层设计以及数据库本身提供数据的层面设计.我们认为分层系统对于这款软件的架构是较为合适的,不仅是因为该软件的每一层都需要为上一层服务,更是因为分层系统本身具有着很好的优点: 1.这种风格支持基于可增加抽象层的设计,允许我们讲一个复杂问题分解成一个增量步骤序列的实现. 2.因为每一层的修改最多影响其上下两层的连接,所以我们在每一层抽象的基础上可以提供更加合理的邻层接口,

【DDD】领域驱动设计实践 —— 架构风格及架构实例

概述 DDD为复杂软件的设计提供了指导思想,其将易发生变化的业务核心域放置在限定上下文中,在确保核心域一致性和内聚性的基础上,DDD可以被多种语言和多种技术框架实现,具体的框架实现需要根据实际的业务场景和需求来制定. 核心的指导思路归纳为: 关注点放在domain上,将业务领域限定在同一上下文中 降低上下文之间的依赖,通过‘开发主机服务’(REST服务是其中的一种).‘消息模式’.‘事件驱动’等架构风格实现 遵循分层架构模式 架构风格 针对DDD的架构设计,<实现领域驱动设计>提到了几种架构风

[转]理解本真的REST架构风格-By李锟

最近看到一个词语“REST”风格,就百度了一下,度娘很给力,下面就是我认为写的最好的一篇介绍. 原文地址:http://www.infoq.com/cn/articles/understanding-restful-style 本文是“深入探索REST”专栏系列深度内容中的第二篇,它将带您领略REST架构的起源.与Web的关系.REST架构的本质及特性,以及REST架构与其他架构风格之间的比较. 引子 在移动互联网.云计算迅猛发展的今天,作为一名Web开发者,如果您还没听说过“REST”这个bu

常见架构风格

软件架构决策派定义中列举了一系列架构设计阶段需要完成的决策,其中包括“确定架构风格”,那么什么是架构风格?都有哪些常见的架构风格呢? 定义 架构风格定义了一组可以使用的元素类型(比如模块.组件.连接器等),还定义了一组如何使用这些类型的约束,比如系统的实时拓扑结构.模块之间的依赖及组件之间的可视性等. 其实架构风格就和设计模式类似,都是定义了组件及组件之间的关系,不过抽象层次不同而已,因此他们的作用也很类似. 作用 一致性和可理解性:遵循同一个风格得到的结果是一个好主意被彻底的贯彻实施了,而不是

基于Java的REST架构风格及接口安全性设计的讨论

1.REST即表现层状态传递(Representational [,r?pr?z?n'te?nl] State Transfer,简称REST). (1)REST名词解释: 通俗来讲就是资源在网络中以某种表现形式进行状态转移.分解开来: Resource:所指的不只是数据,而是数据和表现形式的组合: Representational:某种表现形式,比如用JSON,XML,JPEG等: State Transfer:状态变化.通过HTTP动词实现. (2)RESTful API: REST(表述性