当前位置: 首页 > news >正文

MVC和普通三层架构的区别

 

MVC和普通三层架构的区别

其中这里的模型(Model)和视图(View )是完全区别于三层架构中的模型(Model)和视图(View)的。

MVC

1)MVC中的模型(Model)指的是数据模型,用于封装与应用程序的业务逻辑相关的数据,除此之外还可以封装数据的处理方法(相当于业务逻辑)。这是完全区别于三层架构的模型层(Model)的。

MVC中模型(Model)的特点:

①有对数据直接访问的权利,如:对数据库的访问;

②模型(Model)“不依赖”视图(View)和控制器(Controller),即模型(Model)不关心它会被如何显示或者如何被操作;

③模型(Model)中数据的变化一般会通过一种刷新机制被“公布”;

④为了实现③中的“机制”用于监视此模型的视图必须事先在此模型上注册。从而,视图可以了解在数据模型上发生的改变。

2)视图(View),这里的视图基本跟三层中的视图一样,都是为了显示数据,没有程序上的逻辑。为了实现视图上数据的刷新,视图(View)需要访问它监视的模型(Model),所以应该事先在被它监视的数据那里进行注册。

3)控制器(Controller),这个概念是在三层中不存在的概念。它主要起到不同层面的组织作用,用于控制应用程序的流程。主要处理事件并作出相应。“事件”主要包括:用户的行为和数据的改变。

 

普通的三层架构(BLL,DAL,Model)

1)实体(Model),用来创建对象的实体;

2)业务逻辑层(BLL),用来处理复杂的数据间的关系或者是业务间的关系;

3)数据库访问层(DAL),用来用来访问数据库的;

当然还会有,View(视图层),用来展示数据;

C# 普通三层架构举例:

引用关系:

BLL引用DAL和Model

 DAL 需要引用Model

 

Model是实体,不引用

调用流程顺序:

BLL(Model)-->DAL(Model)-->DbHelperSQL来执行语句

调用顺序:创建一个BLL.Users的对象和一个Model.Users的对象

对Model.Users的实体赋值

……

赋值完成后,调用BLL.User的add方法

 

到达BLL.Users

需要创建一个DAL的对象 ,添加一条数据为例  使用BLL

到BLL.Users的add方法传递到DAL.Users的Add方法

 DAL.Users的Add方法组合成sql语句最后调用DbHelperSQl执行这条语句

 最后在DAL里完成了sql语句的拼接和调用DbHelperSQL的执行SQL语句方法完成操作

 

 这里编写了一个简单的三层结构,数据库使用的是MySQL

C#简单三层结构设计UI、BLL、DAL

转载于:https://www.cnblogs.com/JiYF/p/6594720.html

相关文章:

  • ClistCtrl用法及总结(由怎样隐藏ListCtrl列表头的排序小三角形这个bug学习到的知识)...
  • Dropdownlist中用viewmodel传值处理方法
  • 玲珑杯 1137 - Sin your life(数学)
  • C#中将string转换为float
  • Java-Maven(四):Eclipse集成Maven环境配置
  • 产品学习笔记 一 产品文档
  • Swiper-轮播图
  • 猜拳游戏
  • 启动cassandra时“Local host name unknown...UnknownHostException”错误解决
  • Npm 使用淘宝镜像
  • js date对象
  • 软件151 朱永建 关于eclipse的环境配置
  • 搭建邮件服务器
  • jquery 滑动加载更多
  • 剑指Offer——树的子结构
  • 【Leetcode】101. 对称二叉树
  • 【挥舞JS】JS实现继承,封装一个extends方法
  • 【前端学习】-粗谈选择器
  • 2017年终总结、随想
  • 5、React组件事件详解
  • css属性的继承、初识值、计算值、当前值、应用值
  • js ES6 求数组的交集,并集,还有差集
  • Mybatis初体验
  • Phpstorm怎样批量删除空行?
  • Redux系列x:源码分析
  • seaborn 安装成功 + ImportError: DLL load failed: 找不到指定的模块 问题解决
  • spring + angular 实现导出excel
  • Spring-boot 启动时碰到的错误
  • v-if和v-for连用出现的问题
  • Vue 重置组件到初始状态
  • 初识MongoDB分片
  • 从零搭建Koa2 Server
  • 给新手的新浪微博 SDK 集成教程【一】
  • 技术:超级实用的电脑小技巧
  • 浅谈Golang中select的用法
  • 使用权重正则化较少模型过拟合
  • 试着探索高并发下的系统架构面貌
  • 小李飞刀:SQL题目刷起来!
  • Mac 上flink的安装与启动
  • 新海诚画集[秒速5センチメートル:樱花抄·春]
  • # 日期待t_最值得等的SUV奥迪Q9:空间比MPV还大,或搭4.0T,香
  • #Z0458. 树的中心2
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)springboot 房产中介系统 毕业设计 312341
  • (附源码)基于SpringBoot和Vue的厨到家服务平台的设计与实现 毕业设计 063133
  • (附源码)计算机毕业设计SSM智能化管理的仓库管理
  • (企业 / 公司项目)前端使用pingyin-pro将汉字转成拼音
  • (十) 初识 Docker file
  • (转)Java socket中关闭IO流后,发生什么事?(以关闭输出流为例) .
  • .net wcf memory gates checking failed
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .NET应用架构设计:原则、模式与实践 目录预览
  • .NET与java的MVC模式(2):struts2核心工作流程与原理
  • /var/spool/postfix/maildrop 下有大量文件
  • ?php echo ?,?php echo Hello world!;?