WPF和三层架构

对于同一逻辑功能的项目无论使用何种技术进行表示层的开发,其逻辑层和数据层都是相同的。

由表示层、逻辑层和数据层构成的架构模式称为三层架构

1.三层架构的概述

三层架构以高内聚、低耦合的思想,把程序的各个功能模块划分为

表示层(UI)、业务逻辑层(BLL)和数据访问层(DAL)三层架构

数据操作层的划定

数据操作层包含公共数据访问代码,是用于操作和交互数据库中数据的逻辑代码。

  • 将数据操作的逻辑代码置于业务逻辑层时,数据访问成为一种业务逻辑。表示层对于数据的访问与业务逻辑层对于数据的操作调用的是相同的方法。
  • 将所有的数据读取操作存放在数据层时,只需要在业务层再定义一个方法供表示层调用。
数据交互容器与载体

实体类

在各个层之间传递数据的载体就是实体类,在三层架构的各层模块之间,通过对象类型的实体类Model作为数据传递的载体,不同的对象模型的实体类,一般对应于数据库的不同表,实体类的属性与数据表的字段名一致。

实体类库是数据表映射的对象在系统软件实际开发的过程需要建立对象的实例,将关系数据库表采用对象实例化的表示方式来使用,辅助软件开发中对各个系统功能的控制与操作执行并把数据库表中所有的字段映射为系统对象,建立实体类库,进而实现各个结构层的参数传输,提高代码的阅读性。

从本质上看,实体类库的服务是应用在三层之间的数据参数的传输。

三层架构的优点
  1. 高内聚、低耦合,可以降低层与层之间的依赖
  2. 各层互相独立,完成自己该完成的任务,项目可以多人同时开发,开发人员可以只关注整个结构中的其中某一层。
  3. 容易移植、维护,如B/S转C/S、SQL Server转Oracle添加、修改、删除等
  4. 有利于标准化和各层逻辑的复用
  5. 安全性高。用户端只能通过业务逻辑层来调用数据访问层,减少了入口点
2.MVC和MVVM模式
2.1表现模式与架构模式
表现模式(Presentation Pattern)

通过分离关注点来改进代码的组织方式。表现模式侧重于解决代码组织,往往使用多种设计模式,因此其也称作复合设计模式

架构模式(Architecture Pattern)

描述软件系统里的基本的结构组织或纲要。架构模式提供一些呈现定义好的子系统,指定它们的责任,并给出把它们组织在一起的法则和指南。

MVC与三层架构的关系

MVC是表现模式(Presentation Pattern),三层架构是典型的架构模式(Architecture Pattern)。

三层架构的分层模式是典型的上下关系,上层依赖下层。

但MVC作为表现模式是不存在上下关系的,而是相互协作关系。

MVC和三层架构基本没有可比性,是应用于不同领域的技术。

2.2 MVC模式

MVC模式是GUI界面开发的指导模式。它基于表现层功能划分的思想把程序分为三大部分:Model-Views-Controller,呈三角形结构。

Model是数据模型,View是用户界面,Controller是控制器。MVC的设计目的是实现功能结构的规划。

  • 模型(Model):处理程序逻辑;获取和存放数据。
  • 视图(Views):显示数据;提供用户交互界面。
  • 控制器(Controller):处理用户交互;从Views读取数据;向Model发送数据
MVC之间的通信

用户请求被路由到控制器,后者负责使用模型来执行用户操作或检索查询结果。

控制器选择要显示给用户的视图,并为其提供所需的任何模型数据。

MVC模式的优点

有利于软件工程化管理,由于不同的层各司其职,每一层不同的应用具有某些特性,有利于通过工程化、工程化管理程序代码,可以使用控制器来连接不同的模型和视图完成客户的需求。

2.3 MVVM模式

在WPF的开发当中,相比起MVC,我们更常用更推荐使用的是MVVM模式,MVVM即ModelView-ViewModel,它是一种基于前端开发的表现模式,其核心是提供对View和ViewModel的双向数据绑定,这使得ViewModel的状态改变可以自动传递给View。

ViewModel是MVVM模式的核心,它是连接View和Model的桥梁。

它有两个方向:

  • 将Model转化为View,即将后端传递的数据转化成所看到的页面:数据绑定。
  • 将View转化为Model,即将所看到的页面转化成后端的数据:事件监听。

这两个方向都实现的,称之为数据的双向绑定。MVVM在概念上是真正将页面与数据逻辑分离的模式,View和Model彻底分离。

MVVM模式下各个部分之间的常见依赖关系
  • ViewModel可以直接获取到Model的信息
  • 模型不能直接获取ViewModel的,此外ViewModel也不能直接获取View的信息
MVVM模式的优点
  1. 低耦合:视图View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上,当View变化的时候Model可以不变,当Model变化的时候View也可以不变
  2. 可重用性:可以把一些视图逻辑放到ViewModel里面,让很多View重用这段视图逻辑。
  3. 独立开发:开发人员可以专注业务逻辑和数据的开发,设计人员可以专注页面设计。
  4. 可测试:界面向来比较难预测时(视图通常主要由XAML实现,其最有可能与平台紧密耦合,即使对其进行编码也难以进行单元测试。),测试可针对ViewModel来写。
2.4MVVM和MVC的区别
  • MVC模型关注的是页面功能的划分,将UI层面上的代码和数据逻辑相关的代码分开,但并不是完全分离,且在于强调控制器的作用。
  • MVVM在概念上是真正将页面与数据逻辑分离的模式,View和Model彻底分离,核心在于提供对View和ViewModel的双向数据绑定,使得Model和View数据状态的改变可以自动变更。
订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部