MVC三和,你能辨别它?
上次我们聊的时间MVC,而之前我们学习过三层。那么我们不禁就要问,他们说的是一回事吗。他们有什么联系吗?
三层架构(3-tier application)通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据訪问层(DAL)。
区分层次的目的即为了“高内聚。低耦合”的思想。
1、表现层(UI):通俗讲就是展现给用户的界面,即用户在使用一个系统的时候他的所见所得。
2、业务逻辑层(BLL):针对详细问题的操作。也能够说是对数据层的操作。对数据业务逻辑处理。
3、数据訪问层(DAL):该层所做事务直接操作数据库,针对数据的增添、删除、改动、更新、查找等。
MVC怎样工作MVC是一个设计模式。它强制性的使应用程序的输入、处理和输出分开。使用MVC应用程序被分成三个核心部件:模型、视图、控制器。它们各自处理自己的任务。
1.模型Model
模型是应用程序的主体部分。模型表示业务数据,或者业务逻辑。实现详细的业务逻辑、状态管理的功能。
2.视图View
视图是应用程序中用户界面相关的部分,是用户看到并与之交互的界面。就是与用户实现交互的页面,通常实现数据的输入和输出功能。
3.控制器controller控制器工作就是依据用户的输入,控制用户界面数据显示和更新model对象状态。起到控制整个业务流程的作用。实现View层跟Model层的协同工作。
MVC是 Model-View-Controller,严格说这三个加起来以后才是三层架构中的UI层。也就是说,MVC把三层架构中的UI层再度进行了分化,分成了控制器、视图、实体三个部分。控制器完毕页面逻辑。通过实体来与界面层完毕通话;而C层直接与三层中的BLL进行对话。
mvc能够是三层中的一个表现层框架,属于表现层。
三层和mvc能够共存。
三层是基于业务逻辑来分的,而mvc是基于页面来分的。
非常多人就同MVC里的三个核心部件同三层架构等同起来,觉得界面层等于View,业务逻辑层等于Controller,数据訪问层等于Model。这是全然错误的。
MVC设计模式解决的是页面代码、页面控制逻辑和数据耦合的问题。所以它首先属于界面层。
比方:Asp.netMVC和Structs都是界面层框架。MVC里的Controller是负责对页面进行控制的。比方:页面间跳转,显示逻辑等。
三层架构里的业务逻辑层主要是对业务实体数据的加工,把加工后的数据传给页面显示。
MVC里的Model仅仅是数据实体,是数据的easy。不具备什么增删改查的功能。他接收的数据是从业务逻辑层处理好传过来的数据。而三层架构里的数据訪问层是具有增删改查功能的,是直接对数据库操作的,为业务逻辑层提供数据支持。
三层架构是典型的架构模式(Architecture Pattern)
三层架构的分层模式是典型的上下关系,上层依赖于下层。但MVC作为表现模式是不存在上下关系的,而是相互协作关系。
即使将MVC当作架构模式,也不是分层模式。
MVC和三层架构基本没有可比性,它适用于不同的技术领域。
版权声明:本文博主原创文章,博客,未经同意不得转载。
MVC三和,你能辨别它?的更多相关文章
- ASP.NET MVC 5 05 - 视图
PS: 唉,这篇随笔国庆(2015年)放假前几天开始的,放完假回来正好又赶上年底,公司各种破事儿. 这尼玛都写跨年了都,真服了.(=_=#) 好几次不想写了都. 可是又不想浪费这么多,狠不下心删除.没 ...
- Razor 视图引擎 – ASP.NET MVC 4 系列
Razor 视图引擎是 ASP.NET MVC 3 开始扩展的内容,并且也是默认视图引擎. Razor 通过理解标记的结构来实现代码和标记之间尽可能顺畅的转换.下面的例子演 ...
- MVC验证04-自定义验证规则、日期范围验证
原文:MVC验证04-自定义验证规则.日期范围验证 本文体验范围验证.与本文相关的包括: MVC验证01-基础.远程验证 MVC验证02-自定义验证规则.邮件验证 MVC验证03-自定义验证规 ...
- SQLSERVER 数据库性能的的基本 MVC + EF + Bootstrap 2 权限管理
SQLSERVER 数据库性能的基本 很久没有写文章了,在系统正式上线之前,DBA一般都要测试一下服务器的性能 比如你有很多的服务器,有些做web服务器,有些做缓存服务器,有些做文件服务器,有些做数据 ...
- ASP.NET MVC基础学习
ASP.NET MVC基础学习 传统的MVC概念 模型:组类,描述了要处理的数据以及修改和操作数据的业务规则 视图:定义应用程序用户界面的显示方式 控制器:一组类,用来处理来自用户,整个应用程序流以及 ...
- Spring MVC 项目搭建 -6- spring security 使用自定义Filter实现验证扩展资源验证,使用数据库进行配置
Spring MVC 项目搭建 -6- spring security使用自定义Filter实现验证扩展url验证,使用数据库进行配置 实现的主要流程 1.创建一个Filter 继承 Abstract ...
- ASP.NET Core MVC Tag Helpers 介绍
简介 Tag Helpers 提供了在视图中更改和增强现有HTML元素的功能.将它们添加到视图中,会经过Razor模板引擎处理并创建一个HTML,之后再返回给浏览器.有一些Tag Helpers,其实 ...
- ASP.NET Core MVC – Tag Helpers 介绍
ASP.NET Core Tag Helpers系列目录,这是第一篇,共五篇: ASP.NET Core MVC – Tag Helpers 介绍 ASP.NET Core MVC – Caching ...
- ASP.NET MVC & WebApi 中实现Cors来让Ajax可以跨域访问 (转载)
什么是Cors? CORS是一个W3C标准,全称是"跨域资源共享"(Cross-origin resource sharing).它允许浏览器向跨源服务器,发出XMLHttpReq ...
随机推荐
- spring-junit的标注总结
如果在测试类的类名上面添加了注解 @ContextConfiguration("meta/springConfigured.xml") 如何在标注了@Test的方法里面获取上面xm ...
- 获取EnterpriseLibrary企业库配置文件中ConnectionStrings(原创)
在使用企业类库时想取出单独企业配置文件中的连接字符串遍历,并放到自己的数据库处理类中,在查找了很久的资料后都没有找到,于是自己探索着写了一个,共享给大家以做参考: ConfigurationSourc ...
- Android Studio 实用快捷键
ctrl + alt + 方向键 跳转到上次或下次编辑位置 ctrl + alt +n 查找文件 shift + f6 重构之重命名 ctrl + f12 导航到类方法 ...
- SQL从入门到基础 - 01 数据库开发及ADO.Net
一.数据库概述 1. 用自定义文件格式保存数据的劣势:并发性差,查找数据的速度差. 2. DBMS(DataBase Management System数据库管理系统)和数据库.平时谈到“数据库”的含 ...
- Knockoutjs官网翻译系列(三) 使用Computed Observables
书接上回,前面谈到了在视图模型中可以定义普通的observable属性以及observableArray属性实现与UI元素的双向绑定,这一节我们继续探讨第三种可实现绑定的属性类型:computed o ...
- explicit 关键字
C++ explicit关键字用来修饰类的构造函数,表明该构造函数是显式的,既然有"显式"那么必然就有"隐式",那么什么是显示而什么又是隐式的呢? 如果c++类 ...
- 你好,C++(15)四两拨千斤——3.9 指向内存位置的指针
3.9 指向内存位置的指针 一天,两个变量在街上遇到了: “老兄,你家住哪儿啊?改天找你玩儿去.” “哦,我家在静态存储区的0x0049A024号,你家呢?” “我家在动态存储区的0x0022FF0 ...
- UML中聚合和组合的区别
聚合 聚合其实是关联的一个特例,表示了两个对象之间“part of(部分-整体)”的关系,是一种弱关联,部分的生命周期可以超越整体.在UML中,用整体端有空心菱形箭头的双向关联修饰聚合.聚合的示例如下 ...
- datagrid公用字段扩展
easyui 1.3.5扩展 datagrid 控件 扩展公用段 把 (9082行) var opts = $.data(_698,"datagrid").options; 改成 ...
- 《EM-PLANT仿真技术教程》读书笔记(持续更新中)
1.在系统分析过程中,必须考虑系统所处的环境,因此划分系统与环境的边界是系统分析的首要任务 2.模型可以分为物理模型和数学模型.数学模型可以分为解析模型.逻辑模型.网络模型以及仿真模型.模型可以分为离 ...