REST

paper study

Roy Thomas Fielding

HTTP 1.1协议于1999年发布,加上于1998年发布的URI协议,至此Web的技术架构已经完全确立。为了向世人详细说明Web技术架构背后的设计原理,Fielding博士在2000年写了自己著名的博士论文《Architectural Styles and the Design of Network-based Software Architectures》——李锟

Chapter 1

Software Architecture

軟體架構

軟體結構

執行時期Run time

  • 動態抽象概念

  • 由人類定義

一套“系統”由許~許多多的軟體架構組合而成

  • 動態抽象概念

  • 由人類定義

抽象的!

大量的比喻!

元素 Element

PerryWolf針對軟體架構提出了一個模型,Fielding博士做了更新。

  1. Component
  2. Connector
  3. Data Element

Component

组件是软件指令和内部状态的一个抽象单元,通过其接口提供对于数据的转换。转换的例子包括从二级存储将数据加载到内存、执行一些运算、转换为另外一种格式、使用其他数据来封装等等。

Connector

一个连接器可以包含一个由组件组成的子系统,为了转移的目的对数据进行某种转换、执行转移、然后做相反的转换并交付与原始数据相同的结果。然而,架构所捕获到的外部行为的抽象可以忽略这些细节。

Component v.s. Connector

咱們由外觀功能上下手

component

connector

Data

transform
( calculation, 加密... )

某種通信協議 etc.

從外部角度觀察:組件可以對數據進行轉換,連接器不行。

配置(約束)

一个配置(約束)是在系统的运行期间组件、连接器和数据之间的架构关系的结构。

由元素(elements)定義上的延伸,賦予其在特定架構下特定的功能(使命)

elements

賦予約束,進行排序、拼湊

屬性

對特定軟體架構中,架構元素與元素間彼此的約束所獲得的特徵所進行的描述

其實就是形容詞!

  • 進化的相對容易程度
  • 組件的可重用性
  • 效率
  • 動態擴展能力
  • ...

針對一組軟體架構呈現的效果所下的結論。

工程師的本質:解決問題!!

因為某項需求,需要對特定系統添加某種

屬性

因而選用擁有該指定屬性的軟體架構

耐打

軟硬適中

所以選用這個架構

風格

一種架構風格是一整組完整的架構約束,這些約束提供了特定軟體架構中各元素的角色和功能,同時限制了任一個遵循該風格的架構中允許存在的元素間的關係。(忽略了一組完整實現的軟體架構下的細節)

為擁有架構屬性的軟體架構做一個取名的動作

當你使用它:

  1. 定義好的起始元素與命名
  2. 定義好的各個元素的架構約束,提供各元素的角色和功能
  3. 由此架構風格之上去建立自己的細節

就像專案開發時,使用套件一樣!

感謝大家~

Made with Slides.com