MVC构架思想
一.构架的基本思想
采用MVC构架一个网站时,最好随时随地地将脑袋中切割成三份(M,V,C),这是一个最基本的切割单位,而且也是最容易切割的三个部分,但是在实务上,通常不会这么简单,有时候我们会再多切割成好几块,例如:服务层,数据访问层,数据仓储曾,辅助工具层,等等。
MVC各个部分的责任:Model负责商业逻辑,View负责前段呈现,Controller负责流程控制,这三者之间必须彼此分工合作。其中Model和Controller有时候不太容易区分,但基本区分原则是,Controller只控制程序运行的流程,作为界面(View)和后台逻辑(Model)的沟通桥梁。每个流程中的环节具体的实现逻辑是在Model中实现的。
二.M,V,C三者的关系:
(一)各自任务的分工
(1)Model:只要跟数据和逻辑相关的任务,都应该在Model里完成如:定义数据结构,负责与数据库沟通,从数据库读取数据,将数据写入数据库,运行预存程序,数据格式验证,定义与验证商业逻辑规则,对数据进行各种加工处理。
(2)View:视图,
(3)Controller的责任主要有两个部分:作为界面(View)和后台逻辑(Model)的沟通桥梁(包括)
三.这样分工的好处:
1.降低程序复杂度:当需求变更时,可以依据清楚的责任划分,很容易的定位到正确的地方进行修正。
2.增加分工能力:通过构架规划,将一个很大型的网站项目分成多个相对独立的组,进行设计。
3.让各个组件得意抽象化,也可以减少对象之间的耦合程度和彼此影响程度,同样有利于分模块进行开发。
三.采用MVC构架时需要注意的地方
1.在构架MVC时,要明确一点:没有人可以将软件一次就写对,就如同没有人可以将需求一次讲清楚一样,因为需求不断在变。所以,唯一能做的就是保持架构的弹性与可维护性,保持软件的可测试性,让MVC项目能够应付各种改变,以确保软件的质量在一定范围内。如果你能够为每个程序都写好对应的测试程序,那么也不用担心项目每次的变更所带来的冲击了,因为测试程序就是最佳的后盾。
2.在使用MVC必须舍弃常规Web Forms的哪些东西
(1).ViewState
(2)Asp.net页面追踪机制(Page Trace).
(3)ASP.NET 事件驱动模型。
(4)服务器控件(Server Control)。大部分不能用,但没有用的ViewState的还可以用来作为显示用途。
(5)Default SiteMap Provider.
四.Visual Studio中MVC构架各个文件夹的解释

MVC构架思想的更多相关文章
- 讨论Android开发中的MVC设计思想
最近闲着没事,总是想想做点什么.在时间空余之时给大家说说MVC设计思想在Android开发中的运用吧! MVC设计思想在Android开发中一直都是一套比较好的设计思想.很多APP的设计都是使用这套方 ...
- spring MVC核心思想
目录 一.前言二.spring mvc 核心类与接口三.spring mvc 核心流程图 四.spring mvc DispatcherServlet说明 五.spring mvc 父子上下文的说明 ...
- 初识mvc分层思想
首先要清楚的是: mvc是一种设计模式,一种分层思想,没有具体的技术与之对应,无论是js还是java或者其他的技术都可以运用. 既然是分层那么这些层都有哪些职责呢? View层(界面层): 为用户展示 ...
- SpringMVC原理&MVC设计思想
什么是MVC? MVC是一种架构模式 --- 程序分层,分工合作,既相互独立,又协同工作 MVC是一种思考方式 --- 需要将什么信息展示给用户? 如何布局? 调用哪些业务逻辑? MVC流程图如下图所 ...
- Unity 背包系统的完整实现(基于MVC框架思想)
前言: 项目源码上传GitHub:Unity-knapsack 背包系统: 背包系统是游戏中非常重要的元素,几乎每一款游戏都有背包系统,我们使用背包系统可以完成装备栏的数据管理,商店物体的数据管理等等 ...
- struts2.1笔记01:MVC框架思想浅层理解
1. Struts 1是全世界第一个发布的MVC框架: 它由Craig McClanahan在2001年发布,该框架一经推出,就得到了世界上Java Web开发者的拥护,经过长达6年时间的锤炼,S ...
- 前端笔记之NodeJS(四)MongoDB数据库&Mongoose&自制接口&MVC架构思想|实战
一.MongoDB数据库 1.1 NoSQL简介 随着互联网web2.0网站的兴起,传统的SQL数据库(关系数据库)在应付web2.0网站,特别是超大规模和高并发的SNS(social network ...
- MVC设计模式思想及简单实现
一.什么是MVC MVC即Model-View-Controller(模型-视图-控制器)是一种软件设计模式,最早出现在Smalltalk语言中,后被Sun公司推荐为Java EE平台的设计模式. M ...
- 软件开发的MVC构架
MVC:IDE开发环境开发时,无意中使用的软件结构. 转自于wikipedia:http://zh.wikipedia.org/wiki/MVC 软件的层次划分:框架--组件(设计模式)--算法与数据 ...
随机推荐
- 【Away3D代码解读】(二):渲染核心流程(简介、实体对象收集)
我之前解析过Starling的核心渲染流程,相比Away3D而言Starling真的是足够简单,不过幸运的是两者的渲染流程是大体上相似的:Starling的渲染是每帧调用Starling类中的rend ...
- JNI-使用RegisterNatives注册本地方法
转自: http://blog.chinaunix.net/uid-26009923-id-3410141.html 1. 以前在jni中写本地方法时,都会写成 Java_com_example_he ...
- 通过存储过程进行分页查询的SQL示例
--创建人:zengfanlong --创建时间:-- :: --说明:根据公司简写代码获取当前待同步的气瓶档案数据(分页获取) ALTER PROCEDURE [UP_GasBottles_GetS ...
- C++ “读取位置 0x****** 时发生访问冲突”的可能原因
转自:http://shansun123.iteye.com/blog/680066 这种错误的意思一般是指访问了不属于自己的内存空间,出现这种错误有几种原因: 1.给一个数组分配了比较小的内存空间, ...
- 使用 jsPlumb 绘制拓扑图 —— 异步载入与绘制的实现
本文实现的方法能够边异步载入数据边绘制拓扑图. 有若干点须要说明一下: 1. 一次性获取全部数据并绘制拓扑图. 请參见文章: <使用 JsPlumb 绘制拓扑图的通用方法> ; 本文实现 ...
- iOS开发笔记系列-基础1(数据类型与表达式)
学习iOS开发快两年了,去年完成MagViewer之后就因为公司的其他业务繁重,除了维护这个应用之外,只是断断续续地自己做一些实验开发,没有再发布新的应用,这里想整理一下学习过程中的笔记,以便加深印象 ...
- HDU 5501 The Highest Mark 背包dp
The Highest Mark Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://acm.hdu.edu.cn/showproblem.php?p ...
- [Practical Git] Compare file changes with git diff
It can be helpful to see the changes between two sets of code; git diff lets us do this by comparing ...
- php中setcookie函数用法详解(转)
php中setcookie函数用法详解: php手册中对setcookie函数讲解的不是很清楚,下面是我做的一些整理,欢迎提出意见. 语法: bool set ...
- [021]转 C++ Pimpl机制
出处:http://www.cnblogs.com/gnuhpc/ 1.简介 这个机制是Private Implementation的缩写,我们常常听到诸如“不要改动你的公有接口”这样的建议,所以我们 ...