系统架构28 - 架构风格补充(上)

层次架构风格

两层C/S架构

客户端和服务器都有处理功能,现在已经不常用,原因有:开发成本较高、客户端程序设计复杂、信息内容和形式单一、用户界面风格不一、软件移植困难、软件维护和升级困难、新技术不能轻易应用、安全性问题、服务器端压力大难以复用

三层C/S架构

将处理功能独立出来,表示层和数据层都变得简单。

表示层在客户机上,功能层在应用服务器上,数据层在数据库服务器上。即将两层C架构中的数据从服务器中独立出来了。其优点包括下面四点:

  • 各层在逻辑上保持相对独立,整个系统的逻辑结构更为清晰,能提高系统和软件的可维护性和可扩展性;
  • 允许灵活有效的选用相应的平台和硬件系统,具有良好的可升级性和开放性;
  • 各层可以并行开发,各层也可以选择各自最适合的开发语言;
  • 功能层有效的隔离表示层与数据层,为严格的安全管理奠定了坚实的基础,整个系统的管理层次也更加合理和可控制

三层CS架构设计的关键 在于各层之间的通信效率,要慎重考虑三层间的通信方法、通信频度和数据量,否则即使分配给各层的硬件能力很强,性能也不高。

三层B/S架构

是三层C架构的变种,将客户端变为用户客户端上的浏览器,将应用服务器变为网络上的WEB服务器,又称为0客户端架构,虽然不用开发客户端,但有很多缺点:

  • 使用浏览器作为客户端的话安全性难以控制;
  • 在数据查询等响应速度上,要远远低于CS架构,因为C架构有部分数据存储在本地;
  • 数据提交一般以页面为单位,数据的动态交互性不强。

混合架构风格

  • 内外有别模型:企业内部使用C/S,外部人员访问使用B/S。
  • 查改有别模型:采用B/S查询,采用C/S修改。
  • 混合架构实现困难,且成本高。

富互联网应用RIA

弥补三层B/S架构存在的问题,RIA是一种用户接口,比用HTML实现的接口更加健壮,且有可视化内容,本质还是网站模式,其优点如下:

  • RIA结合了C/S架构反应速度快、交互性强的优点与B/S架构传播范围广及容易传播的特性;
  • RIA简化并改进了B/S架构的用户交互;
  • 数据能够被缓存在客户端,从而可以实现一个比基于HTML的响应速度更快且数据往返于服务器的次数更少的用户界面。
  • 本质还是0客户端,借助于高速网速实现必要插件在本地的快速缓存,增强页面对动态页面的支持能力,典型的如小程序。

MVC架构

  • 控制器 (Controller):是应用程序中处理用户交互的部分。通常控制器负责从视图读取数据,控制用户输入,并向模型发送数据
  • 模型 (Model):是应用程序中用于处理应用程序数据逻辑的部分。通常模型对象负责在数据库中存取数据。模型表示业务数据和业务逻辑
  • 视图 (View):是应用程序中处理数据显示的部分 。通常视图是依据模型数据创建的。是用户看到并与之交互的界面。视图向用户显示相关的数据,并能接收用户的输入数据,但是它并不进行在何实际的业务处理

MVP架构

MVP是把 MVC 中的 Controller 换成了 Presenter (呈现),目的就是为了完全切断 View 跟 Model 之间的联系,由Presenter充当桥梁,做到 View-Model 之间通信的完全隔离。
特点

  • M、V、P之间双向通信。
  • View 与 Model 不通信,都通过 Presenter 传递。Presenter 完全把Model 和 View 进行了分离,主要的程序逻辑在 Presenter 里实现。
  • View 非常薄,不部署任何业务逻辑,称为"被动视图" (PassiveView),即没有任何主动性,而Presenter非常厚,所有逻辑都部署在那里。
  • Presenter与具体的View是没有直接关联的,而是通过定义好的接口进行交互,从而使得在变更 View 时候可以保持 Presenter 的不变,这样就可以重用。

MVVM架构

MVVM 模式和MVC模式类似,主要目的是分离视图 (View) 和模型(Model),实现双向绑定,有几大优点:

  • 低耦合,视图 (View) 可以独立于Model变化和修改,一个 ViewModel可以绑定到不同的"View"上,当 View 变化的时候 Model 可以不变,当Model变化的时候View也可以不变。
  • 可重用性,可以把一些视图逻辑放在一个 ViewModel 里面,让很多view重用这段视图逻辑。
  • 独立开发,开发人员可以专注于业务逻辑和数据的开发(ViewModel),设计人员可以专注于页面设计。
  • 可测试,界面向来是比较难于测试的,而现在测试可以针对ViewModel 来写。
相关推荐
xixixi777772 小时前
CDN(内容分发网络)——缓存和分发网站、应用程序、视频等内容,以提高用户访问速度和稳定性,减少网络延迟和拥塞,同时减轻源服务器的压力
网络·缓存·架构·系统架构·cdn·业务·内容分发网络
sld1683 小时前
打破云服务“绑定”局限,打造高适配性、强管控力的混合云架构新范式
微服务·云原生·架构
Xの哲學3 小时前
Linux 文件系统一致性: 从崩溃恢复到 Journaling 机制
linux·服务器·算法·架构·边缘计算
萧曵 丶4 小时前
系统架构设计流程与思路详解
系统架构
DencyCheng4 小时前
Nacos 的全面价值分析:从多角色视角到多架构场景的深度解析
微服务·架构
智源研究院官方账号5 小时前
众智FlagOS 1.6发布,以统一架构推动AI硬件、软件技术生态创新发展
数据库·人工智能·算法·架构·编辑器·硬件工程·开源软件
攀登的牵牛花5 小时前
前端向架构突围系列 - 架构方法(一):概述 4+1 视图模型
前端·设计模式·架构
lhrimperial7 小时前
微服务架构深度解析-微服务理论基础(一)
微服务·架构·wpf
MicroTech20258 小时前
微算法科技(NASDAQ :MLGO)开发基于区块链的分层架构,实现大数据存储方案性能与扩展性提升
科技·架构·区块链
喜欢吃豆8 小时前
代理式 CI/CD 的崛起:Claude Code Action 深度技术分析报告
人工智能·ci/cd·架构·大模型