`
rock
  • 浏览: 58150 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

有状态和无状态的架构风格分析

阅读更多

REST,表述性状态转移(REpresentational State Transfer)的简称。是当前比较热门的一种web架构风格。

REST的特征如下:

1,所有的东西都称为资源,通过uri来定义,只也是资源的唯一ID;

2,使用标准的http方法对资源进行操作;

3,所有的通信都是无状态的;

虽然REST包含无状态性(statelessness)的观念,但是在实际的应用中,只是要求服务器端不能保持除了单次请求之外的,任何与其通信的客户 端的通信状态。

如果要获取一个用户的信息,那么uri可能就会是/user/12317,并使用get方法获取信息。当我们修改用户信息是uri可能还是user/12317,但是使用的是put方法来进行操作。所以,在rest风格的架构中,定义uri是非常关键且重要的事情。

这样的风格使得无状态约束的服务器的变化对客户端是不可见的,在系统伸缩性上有很大的好处。

 

传统的架构中喜欢使用有状态的通信,即客户端或服务器端会保留用户的一些信息,客户端的叫Cookie,服务器端的叫Session。关于Cookie和Session的更多信息,参见本博收藏的《浅谈http的无状态性》。

 

系统的无状态性或有状态性其实可以共存的,这是根据具体的特点来决定的,只有最合适的架构才是最好的架构 。比如说对个人信息的管理最好是无状态的;如果是购物车的话,使用Session或是Cookie会更好一些。

通过SOA的理念,我们可以把有状态和无状态的服务分开实现和部署,这样的系统架构应该更加的合理一些。

 

分享到:
评论

相关推荐

    架构风格和基于网络的软件架构设计

    这些工具能够帮助架构师清晰地描述和沟通架构的设计意图,同时也为架构的分析和验证提供了可能。在实际应用中,选择合适的架构风格,结合架构描述语言和形式化模型,可以有效地构建出稳定、可靠、高效的网络软件架构...

    架构风格与基于网络的软件架构设计(中英文版)

    此外,书中的案例分析和实践经验可以帮助读者将理论知识应用于实际项目。无论是对于初学者还是经验丰富的专业人士,都能从中获益匪浅,提升自己的软件设计能力。 总之,《架构风格与基于网络的软件架构设计》深入浅...

    架构风格与基于网络的软件架构设计.pdf

    《架构风格与基于网络的软件架构设计》是Roy Thomas Fielding博士的一篇具有深远影响力的博士论文,该论文探讨了软件架构的重要性和网络基础的软件架构设计原则。Fielding博士是HTTP和URI等Web架构标准的主要设计者...

    架构风格与基于网络的软件架构设计(Restful API)-中英文

    web之父的博士论文,Restful API的最佳描述。这篇论文定义了一个框架,...然后我介绍了表述性状态转移(Representational State Transfer,REST)的架构风格,并且描述了如何使用REST来指导现代Web架构的设计和开发。

    软件体系结构风格

    软件体系结构风格是构建复杂软件系统的一种组织框架,它定义了系统的高级结构、组件、连接器以及它们之间的关系。理解并掌握软件体系结构...不同的体系结构风格有各自的优缺点,需要根据具体项目需求进行选择和优化。

    软件架构风格整理及总结

    本资源"软件架构风格整理及总结"提供了对各种经典架构风格的深入理解和学习材料,旨在帮助专业人士,尤其是架构师,提升他们在设计高效、可扩展和维护性良好的系统方面的技能。 首先,我们要理解什么是软件架构风格...

    有限状态机和可综合风格的Verilog HDL

    在Verilog HDL中,可综合的风格侧重于RTL级、算法级和门级逻辑结构的描述,而系统级的数据流级综合由于技术上的不成熟,暂时不在讨论范围内。 #### 阻塞与非阻塞赋值的区别: 在Verilog HDL中,阻塞赋值(`=`)和非...

    WEB框架——REST原理(架构风格与基于网络的软件架构设计)

    **REST(Representational State Transfer,表述性状态转移)**是一种软件架构风格,广泛应用于Web服务的设计,特别是互联网应用程序。REST风格的架构强调简洁、高效和可扩展性,它基于HTTP协议,利用其固有的方法...

    软件架构风格整理

    软件架构风格是构建大型复杂系统时采用的一系列组织原则和设计模式的集合,它定义了系统组件的结构、交互方式以及指导系统扩展和演进的规则。本文将重点探讨两种常见的软件架构风格:数据流风格和调用/返回风格。 ...

    夏宇闻_有限状态机和可综合风格的Verilog HDL

    1. **清晰的层次结构**:代码应该有明确的层次结构,易于理解和维护。 2. **避免复杂的表达式**:避免使用过于复杂的布尔表达式,以减少综合过程中的不确定性。 3. **避免使用非标准库函数**:尽量使用标准的Verilog...

    架构风格与基于网络的软件架构设计(REST)

    根据提供的文件信息,我们可以了解到文档的核心内容与网络软件架构设计有关,特别是侧重于架构风格和REST(Representational State Transfer,表现层状态转换)。以下是从标题、描述、标签和部分内容中提炼出的知识...

    架构风格与基于网络的软件架构_架构_

    1. **架构风格**:架构风格是描述一类系统通用结构特征和约束的模板,它定义了一组规则和原则,指导系统组件如何组织和交互。例如,客户端-服务器架构、分布式架构、事件驱动架构等,都是常见的架构风格。 2. **...

    架构风格与基于网络的软件架构设计 中英版

    - 客户端-服务器架构:客户端和服务器之间的通信是无状态的,每次请求都包含所有必要的信息。 - 统一接口:使用标准的HTTP方法,如GET用于获取资源,POST用于创建新资源,PUT用于更新资源,DELETE用于删除资源。 ...

    仓库风格 黑板风格

    ### 仓库风格与黑板风格在软件体系结构中的应用 #### 一、仓库风格与黑板风格概述 在软件工程领域,**软件...理解这些风格的关键特性和适用范围有助于开发者更好地选择合适的架构模式来构建高效、可靠的软件系统。

    KWIC体系结构风格与模式

    通过深入理解并巧妙应用KWIC体系结构风格和模式,开发者可以构建出更具有弹性和可扩展性的软件系统,以应对现代软件开发面临的复杂性和快速变化。然而,这种模式也有其挑战,比如增加系统的调试难度和可能带来的性能...

Global site tag (gtag.js) - Google Analytics