层次架构风格
两层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 来写。