○○ Inspiration JAw ne Are Architectural Sty les and the Design of Network-based Software Architectures DISSERTATION submitted in partial satisfaction of the requirements for the degree of DOCTOR OF PHILOSOPHY RESTful in Information and Computer Science Web services 中文版 Roy Thomas Fielding OREILLY 我们每个人在内心深处都怀有一个梦想:创造一个鲜活的世界,一个宇宙。那些 处在我们生活的中心、被训练为架构师的人们,拥有着这样的渴望:某一天,在 某个地方,因为某种原因,创造出一个不可思议的、美丽的、夺人心魄的场所, 在那里人们可以行走,可以梦想,历经数百年经久不衰。 Christopher Alexander《建筑的永恒之道》
Inspiration 我们每个人在内心深处都怀有一个梦想:创造一个鲜活的世界,一个宇宙。那些 处在我们生活的中心、被训练为架构师的人们,拥有着这样的渴望:某一天,在 某个地方,因为某种原因,创造出一个不可思议的、美丽的、夺人心魄的场所, 在那里人们可以行走,可以梦想,历经数百年经久不衰。 ------—Christopher Alexander《建筑的永恒之道》
Table of contents ○○ Network-based architectural styles 1. What is an Architectural styles 2. Common architectural styles for network-based software REpresentational state iransfer(REST) 1. Deriving reSt 2. Knowing rest 3. Advantages of REST 4. REST and other concepts ◆ RESTfUL Web services Writing rest services
Table of Contents ◆ Network-based Architectural Styles 1. What is an Architectural Styles 2. Common architectural styles for network-based software ◆ REpresentational State Transfer (REST) 1. Deriving REST 2. Knowing REST 3. Advantages of REST 4. REST and other concepts ◆ RESTful Web Services ◆ Writing REST services
co What is an Architectural Styles An architectural style is a coordinated set of architectural constraints that restricts the roles /features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style. [ 一种架构风格是一组已命名的、协作的架构约束。 个软件架构是一个软件系统在其操作的某个阶段的运行时(run-time)元素的抽 象。一个系统可能由很多层抽象和很多个操作阶段组成,每个抽象和操作阶段都 有自己的软件架构。 软件架构是软件系统在运行时的抽象,而软 件结构则是静态源代码的属性
What is an Architectural Styles An architectural style is a coordinated set of architectural constraints that restricts the roles/features of architectural elements and the allowed relationships among those elements within any architecture that conforms to that style.[1] 一种架构风格是一组已命名的、协作的架构约束。 软件架构是软件系统在运行时的抽象,而软 件结构则是静态源代码的属性
架构元素 组件 个组件是软件指令和内部状态的一个抽象单元,通过其接 口提供对于数据的转换。 ·连接器 一个连接器是对于组件之间的通讯、协调或者合作进行仲裁 的一种抽象机制 数据 个数据是组件通过一个连接器接收或发送的信息元素 配置 个配置是在系统的运行期间组件、连接器和数据之间的架 构关系的结构。 个软件架构由一些架构元素(组件、连接器和数据)的配置来定义,这些元 素之间的关系受到约束,以获得想要得到的一组架构属性
架构元素 • 组件 – 一个组件是软件指令和内部状态的一个抽象单元,通过其接 口提供对于数据的转换。 • 连接器 – 一个连接器是对于组件之间的通讯、协调或者合作进行仲裁 的一种抽象机制 • 数据 – 一个数据是组件通过一个连接器接收或发送的信息元素 • 配置 – 一个配置是在系统的运行期间组件、连接器和数据之间的架 构关系的结构。 一个软件架构由一些架构元素(组件、连接器和数据)的配置来定义,这些元 素之间的关系受到约束,以获得想要得到的一组架构属性
Oo Common architectural styles for network-based software Data-flow styles Pipe and Filter (PF) Uniform Pipe and Filter(UPF: 所有过滤器必须具有相同的接口 风格继承网用效可简可可可可|可|可|可|可 络户率伸单进扩定配重见|移|靠 性 缩性化展制置|用性|植|性 能 可觉察性能± 性 性性性性性 性 UPF PF +|++|+
Common architectural styles for network-based software • Data-flow Styles – Pipe and Filter (PF) • Uniform Pipe and Filter (UPF): – 所有过滤器必须具有相同的接口
○○ Common architectural styles for network-based software Replication styles Replicated Repository(RR) Cache $ ·复制个别请求的结果,以便可以被后面的请求重用 风格继承网用效可简可可可可可可|可|可 络户率伸单进扩定配重见移靠 性|可 缩性|化展制置|用|性|植性 能觉 性 性性|性性性 性 察性能 RR RR
Common architectural styles for network-based software • Replication Styles – Replicated Repository (RR) – Cache ($) • 复制个别请求的结果,以便可以被后面的请求重用
○○ Common architectural styles for network-based software Hierarchical styles Client-Server(CS) Layered System (LS) and Layered-Client-Server(LCS Client-Stateless-Server(CSS Client-Cache-Stateless-Server(C$SS) Layered-Client-Cache-Stateless-Server(LC$ss · Interne域名系统(DNS) Remote Session (RS ·应用状态被完全保存在服务器上 · telnet Remote data ACCeSs (RDA)
Common architectural styles for network-based software • Hierarchical Styles – Client-Server (CS) – Layered System (LS) and Layered-Client-Server (LCS) – Client-Stateless-Server (CSS) – Client-Cache-Stateless-Server (C$SS) – Layered-Client-Cache-Stateless-Server (LC$SS) • Internet域名系统(DNS) – Remote Session (RS) • 应用状态被完全保存在服务器上 • telnet – Remote Data Access (RDA)
○○ Common architectural styles for ○○ network-based software Hierarchical styles 风格 继承 网用效可简可可可可可|可可可 络户率伸单进扩定配重见移|靠 性可 缩性化展制置用性植|性 能觉 性 性性性性性 性 察性能 LS LCS CS+LS CSS CS CSS+S LCSSS LCS+CSSS 士|+|+++++++ RS Cs RDA CS
Common architectural styles for network-based software • Hierarchical Styles
OO Common architectural styles for Oo network-based software(contd.) Mobile code styles Virtual Machine (vM) Remote Evaluation(REV):远程求值 Code on Demand (c○D):按需代码 ·与REⅤ相反的是,将代码从服务器端下载过来运行 ·如脚本下载到浏览器运行 Layered-Code-on-Demand-Client-Cache-Stateless Server(LC○DC$S」 ·浏览器里面运行 Java applet代码 Mobile Agent(MA) 个完整的计算组件,与它的状态、必需的代码、执行任务所需 的数据一起被移动到远程站点
Common architectural styles for network-based software (contd.) • Mobile Code Styles – Virtual Machine (VM) – Remote Evaluation (REV):远程求值 – Code on Demand (COD):按需代码 • 与REV相反的是,将代码从服务器端下载过来运行 • 如脚本下载到浏览器运行 – Layered-Code-on-Demand-Client-Cache-StatelessServer (LCODC$SS) • 浏览器里面运行Java Applet代码 – Mobile Agent (MA) • 一个完整的计算组件,与它的状态、必需的代码、执行任务所需 的数据一起被移动到远程站点