[解读REST] 4.基于网络应用的架构风格

  • 时间:
  • 浏览:1
  • 来源:大发11选5_大发11选5官网

本文版权归作者和博客园共有,欢迎转载,但未经作者同意需用保留此段声明,且在文章页面明显位置给出原文连接,怎么能让保留追究法律责任的权利。

架构风格与基于网络的软件收集:http://www.infoq.com/cn/minibooks/web-based-apps-archit-design

RDA是CS的三种生活变体,它把应用情况汇报分布在客户端和服务端上。客户端发送另4个 标准的数据查询请求给服务端,服务端分配另4个 工作空间并执行你你这些 查询,这机会会产生另4个 巨大的结果集。客户端需用在在结果集上进行进一步操作。这就需用客户端了解服务端的数据內部,以便构造依赖该內部的查询。你你这些 风格需用产生如下几条的架构属性:

C2是EBI和LCS的组合形成的风格。C2在EBI的基础上,支持大粒度的重用,并通过加强基础层独立性来支持系统组件的灵活组合。异步通知消息向下传递,异步请求消息向上传递,这是组件之间通信的唯一法律办法。你你这些 约束加强了对高层依赖的松耦合(服务请求需用被忽略),怎么能让于底层实现了零耦合(太少知道系统使用了通知),后来既改善了对整个系统的控制,又非要丧失EBI的大多数优点。

收集的目的是为了满足机会超出应用的需求,而都会 为了创发明家 三种生活特殊的交互拓扑机会三种生活特殊的设计法律办法。当设计另4个 系统时所选则的架构风格,需用与哪些需求保持一致,而都会 相抵触。怎么能让应该办法哪些架构风格所产生的架构属性来对架构风格进行评估。架构属性是相对的,机会换成以另4个 架构约束,增强了某另4个 架构属性,也机会会消弱另外另4个 架构属性;此外,另4个 架构属性是被增强了还是被消弱了,也会受到系统实现的的影响。

缓存风格是克隆好友仓库风格的另4个 变种:克隆好友个别请求的结果,以便被上端的请求复用哪些结果。你你这些 风格需用产生如下几条的架构属性:

合并了LCS和C$SS三种生活风格,其产生的架构属性为LCS和C$SS的组合(怎么能让太少把重复的CS结算两次)。

把COD换成到签名所说的LC$SS风格上,这后来把代码被看作是另三种生活形式的数据元素,怎么能让何必 会妨碍LC$SS的优点,一起去也会叠加COD的优点。

怎么能让以上的评估是有其他局限性的,这里的评估是不得劲为分布式超媒体系统的需求量身定做的。比如通信的内容是细粒度的控制信息,非要PF风格的可是我我我优点就不复存在了;怎么能让机会用户交互的通信机会是需用的,PF则根本就不适用。同样的,机会客户端非要对请求进行缓存,非要分层+缓存的风格则只会增加延迟,而太少带来任何好处。后来的难题图片需用针对每三种生活类型的通信难题图片进行单独对比。下面的表格总结一下上端介绍到的所有的架构风格。

下面几条小节来评估每三种生活架构风格,以及它们都会产生哪些架构属性。(+)表示增强改善,(-)表示消弱,(±)表示取决于具体的场景。

具体的例子:Telnet,SSH。

具体的例子:TCP/IP协议,分层的网络协议栈。

具体的例子:redis需用执行lua脚本。

具体的例子:比如linux shell,asp.net core中的middleware和filter等。

REV风格来源于CS+VM风格,客户端组件需用知道怎么可不可以执行另4个 服务,怎么能让缺少执行此服务所需用的资源,而哪些资源都存在另4个 服务端站点上。怎么能让,客户端组件把怎么可不可以执行服务的代码发送给服务端的另4个 服务端组件,由它来执行代码,怎么能让把结果返回给客户端。你你这些 REV会要求被执行的代码是在另4个 受保护的环境中,使其太少影响到其他的客户端。你你这些 约束在CS+VM的基础上需用产生如下的架构属性:

具体的例子:SQL。

通知是对于组件中的情况汇报变化的公告,C2何必 会对通知中应该涵盖哪些内容加以限制。连接器的首要职责是消息的路由和广播,其次是消息的过滤。引入对于消息的分层过滤,需用补救EBI的可伸缩性的难题图片,一起去改善可进化性和可重用性。

LCS是在LS和CS的结合体。需用理解为在CS的基础上增加了代理组件和网关组件,对于客户端而言,代理组件是另4个 共享服务器,它接受请求并把它转发给服务器。网关组件在客户端组件和代理组件看来就像是另4个 正常的服务器,怎么能让网关组件內部怎么能让将它转发给了內部的其他服务器。在CS和LS的基础上,LCS改善了如下的架构属性:

以上的每三种生活架构风格都会 组件之间推崇三种生活特定的交互类型。当组件跨域广域网的分布的后来,应用的需用用就会取决于对于网络的使用机会误用。通过对已架构风格对于架构属性的影响来刻画架构,不可不还可不可以 选则出更适合此类应用的收集。

做了4篇博客的前期准备工作,下一篇就开始英语 英文介绍哪些是REST了。以上 如有错误之处,欢迎指正!

DO是CS和CS的组合。在单独的CS的风格总,客户端和服务端是相互独立的,个人所有所有所有 只负责个人所有所有所有 的每种。DO则是使另4个 组件既是客户端也是服务端。都在后来说它既对外提供服务,一起去也是服务的消费方。DO组件的內部是详细被隐藏和保护起来的,操作它的唯一法律办法是通过它公开的接口进行访问。另4个 DO为了要和另外另4个 DO交互,则需用知道另外另4个 DO的标识信息,当另4个 DO的标识信息存在变化的后来,则需用要修改所有显示调用它的DO。怎么能让需用要又其他控制器对象来负责管理维护系统的情况汇报。

Architectural Styles and the Design of Network-based Software Architectures:https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm

衔接上文[解读REST] 3.基于网络应用的架构,上文介绍了一组自洽的术语来描述和解释软件架构;怎么可不可以利用架构属性评估另4个 架构风格;以及对于基于网络的应用架构来说,哪些架构属性是值得当当当.我 儿重点关注评估的。本篇在以上的基础上,列举一下其他常见的(REST除外)的适用于基于网络应用的架构风格,并使用对比架构属性的法律办法对其进行评估。

 MA风格来源于REV+COD。在MA中,另4个 详细的计算组件,它的情况汇报,代码、执行代码所需的数据都被一起去移动到了远程站点。它是已REV和COM三种生活法律办法一起去工作的。

具体的例子:比如GIT(分布式的版本管理系统本地有着详细的仓库副本),CVS(集中式的版本管理系统本地也是有详细的仓库副本的,怎么能让写操作是需用网络的)等。

按照层次来组织,每一层都使用下层的服务,怎么能让为其上层提供服务。层內部的细节对于相邻的层而已是详细被隐藏起来的。你你这些 风格需用产生如下几条的架构属性:

COM风格来源于CS+VM风格(怎么能让又不同于REV),客户端组件知道怎么可不可以访问一组资源,怎么能让我怎么能让知道怎么可不可以补救它们。客户端需用向服务端请求一份需用补救这每种资源的代码,这每种代码在客户端本地执行。你你这些 约束在CS+VM的基础上需用产生如下的架构属性:

具体的例子:DNS缓存,CDN等。

具体的例子:RPC等。

服务器组件提供了一组服务,并监听对哪些服务的请求;客户端组件通过另4个 连接器把请求发送给服务器。服务器需用拒绝你你这些 请求,也需用执行你你这些 请求,并把响应发送给客户端。服务端通常来说是另4个 永不终止的应用应用程序运行,通常是为多个客户端提供服务的。你你这些 约束身前的原则是分离关注点(怎么能让何必 关心会话情况汇报是在服务端还是客户端),你你这些 风格需用产生如下几条的架构属性:

在PF风格中,每个组件(过滤器)会从输入端读取数据,并在输出端输出数据(亦需用增量补救,而何必 等到详细补救完再交给下另4个 过滤器)。这里的架构约束是另4个 过滤器需用详细独立于其他的过滤器(零耦合)。多个过滤器后来头尾相连组合起来,就像是另4个 管道,可是我我我称之为管道和过滤器风格(简称PF)。你你这些 风格需用产生如下几条的架构属性:

RS是CS的三种生活变体,它试图使客户端组件的多样化性最小化机会使它们的可重用性最大化。每个客户在服务器上启动另4个 会话,怎么能让调用服务器的一系列服务,最后退出会话。应用情况汇报被保存在服务器上。你你这些 风格需用产生如下几条的架构属性:

基于事件集成的风格也被成为隐式调用风格机会事件系统风格。通过消除了解连接器接口的标识信息的必要性,它需用降低组件之间的耦合。此架构风格都会 之间调用另外另4个 组件,怎么能让通过另4个 组件发布机会广播另4个 或多个事件。怎么能让由系统负责调用其他注册了对哪些事件感兴趣的组件。后来的系统一般都会另4个 事件总线,所有的组件都通过你你这些 总线监听它们个人所有所有所有 感兴趣的事件。你你这些 风格需用产生如下几条的架构属性:

具体的例子:浏览器中的JS。

在CSS的基础上,增加缓存组件。缓存在客户端和服务器直接进行周旋:它需用复用早先的请求,用来响应上端的相同请求,从而补救向原始服务器发送请求(得到的响应是一样的)。增加的你你这些 组件需用在CSS的基础上进一步改善以下的架构属性:

具体的例子:大多数桌面(机会APP)应用。

具体的例子:DNS系统。

通过利用多个应用应用程序运行来提供相同的服务,即为RR风格。哪些多个分散的服务对于客户端来说,就好像是只另4个 集中的服务。你你这些 风格需用产生如下几条的架构属性:

架构风格与基于网络的软件收集-导读:http://www.infoq.com/cn/articles/doctor-fielding-article-review

具体的例子:发布/订阅的消息系统。

 具体的例子:shadowsocks等。

具体的例子:SUN的NFS。

UPF在PF的基础上,增加了另4个 所有过滤器都需用具有相同接口的约束。你你这些 约束会在PF的基础上,产生如下的架构属性:

所有的移动代码风格的基础都会 VM(或解释器)风格。VM风格三种生活并都会 基于网络的风格,怎么能让它通常在REV和COD风格中于另4个 组件结合在一起去使用。代码在另4个 满足了安全和可靠性的受控的环境中执行,VM通常被用作脚本语言的引擎,来执行特定的任务。你你这些 风格需用产生如下几条的架构属性:

为了降低DO中受到对象标识信息的影响,通常会使用三种生活机会多种架构风格来辅助通信,比如EBI和被代理的CS风格。后来的目的在于引入另4个 名称解析组件,用来把另4个 通用的服务的名称解析为另4个 太少可不还可不可以 满足该请求的对象的特定名称,并使用你你这些 特定名称的对象来补救请求。尽管它改善了可重用性和可进化性,怎么能让额外的间接层会产生一定的网络开销,从而降低用户感知的性能。具体的例子:CORBA,ODP。

理解本真的REST:http://www.infoq.com/cn/articles/understanding-restful-style/

在CS的基础上,增加另4个 约束:服务端组件上不允许有会话情况汇报。从客户端发给的服务器的每个请求都需用涵盖理解请求所需用的所有信息,即非要在服务端上保存请求上下文信息(比如上另4个 请求的信息),会话情况汇报应该都保存的客户端。你你这些 约束会在CS的基础上,产生如下的架构属性:

具体的例子:比如linux的标准输入输出流,asp.net core中的middleware也算是(非要跨越网络)具有相同接口的约束的UPF。