.NET MVC学习笔记(一)
看了些关于MVC的资料,做一些MVC的笔记。
分解关注点
在MVC世界里有个很重要的观念--“分解关注点”(Separation of Concerns),指的是:当你进行软件开发时,可一直关注当前的对象,而不会受到同样的系统中其它对象的干扰,进而专注于完毕开发工作。如此一来,不但easy提升软件质量,也能够加快对代码的理解速度。
分解关注点观念的特征与优势
- 简化复杂度
- 大幅提升可维护性
- 更易于測试
对开发ASP.net MVC项目的建议
不要反复你自己:
好的软件不应该有太多反复的程序代码,所以:Don't Repeat Yourself
没有完美的架构,仅仅有合适的架构
适当的设计模式有助于提升架构的质量
分割你的脑袋,并且至少切成3份:
至少是Model、View、Controller,有的时候能够使Service Level,Repository Level、Helper Level等。
创建有责任感的对象:
MVC中已经分割定义了 Model负责商业逻辑、View负责前端显示、Controller负责数据流程控制等不同的职责,三者分工合作、严守纪律、不得逾越
规范对象合作
相信总会有更好的解决方法
没有人能够将软件一次写对
ASP.net MVC中常见的问题
MVC的模式仿佛又回到了ASP的年代?
在ASP年代,没有合适的模板引擎,全部的程序与视觉逻辑混在了一起,这样的写法为“意大利面式”的写法。在ASP.net Web Forms年代,有了 CB(Code Behind)的概念,有效分离了HTML代码和程序代码。而且MS导入了Windows Form的开发方式,ViewState与事件驱动模型(EventModel)。面对越来越复杂的WEB需求,WEB Form变得异常复杂且难于维护。能把ViewState写出超过1MB的人大有人在。由此可见,因为对ASP.net页面生命周期不了解而衍生出来的Bug不知道有多少个。在MVC年代,View里面不应该在又复杂的程序或者是业务逻辑,二十斤留下显示的部分,如HTML,JavaScript,数据显示,窗体等。然后Controller负责控制其余部分,由Model负责訪问数据或验证数据格式----理清彼此之间的责任后才干编写出好的“分解关注点”架构,进而提升项目的可维护性。
ASP.net MVC与传统的ASP.net Web Forms开发有何不同?
ASP.net开发者都会遇到的恼人问题:
- 邪恶的ViewState,easy导致超大控件,使程序失控。
- 控件组件对于HTML的控制不够直接或太过复杂。
- 不易于採用TDD模式(Test Driven Development 測试驱动开发)进行开发,也不easy编写单元測试程序。
MVC的长处:
- 清晰的“分解关注点”架构会强迫你写出较WebForms更易于维护的程序
- 开发性与社区支持
- 可让你全然控制HTTP的输出内容
- 优秀的开发效率
- 易于測试的架构
- 易于分工的架构
MVC的缺点:
缺乏工具的支持(和WebForm的那种~~拖的感觉 全然不同)
缺乏成熟的组件化技术的支持(眼下仅仅有ServerControl、HTML Helper)
MVC与Web Forms有哪些同样之处?
两者处理网页的接口事实上都是IhttpHandler,只是WF(WebForm)是IHttpHandler,MVC是当做 MvcHandler类来处理。
必须舍弃WebForm的哪些部分?
MVC中不能使用的技术例如以下:
- ViewState
- ASP.net页面追踪机制(Page Trace)
- ASP.net时间驱动模型(EventModel)
- server控件(ServerControl)大部分不能使用,但没用在ViewState中的server控件还是可以用于显示
- Default SiteMap Provider
| 支持功能 | Web Form | MVC1.0/2.0 |
|---|---|---|
| ViewState | √ | x |
| PageTrace | √ | x |
| EventModel | √ | x |
| ServerControl | √ | 部分支持 |
| System.Web.SiteMapProvider | √ | x |
| Provider Model | √ | √ |
| System.Web.Caching命名空间 | √ | √ |
| System.Web.SessionState命名空间 | √ | √ |
| System.web.Security命名空间 | √ | √ |
| Profile,Membership,SiteMap | √ | √ |
| 其它System.Web.*功能 | √ | √ |
M、V、C真的能够独立开发吗?
能够,可是不绝对。M是MVC的架构中心,有了M就能够让 C和 V參考这些Model,先定义出来全部计划开发的Controller和Action然后再创建全部的Action和相应的View。这是眼下效率最高的开发方法。
WF项目能够逐步转移到MVC项目吗?
没办法。
.NET MVC学习笔记(一)的更多相关文章
- MVC学习笔记索引帖
[MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...
- ASP.NET MVC学习笔记-----Filter2
ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...
- ASP.NET MVC学习笔记-----Filter
ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...
- Spring MVC 学习笔记一 HelloWorld
Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...
- .NET MVC 学习笔记(一)— 新建MVC工程
一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...
- Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建
Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...
- Spring MVC 学习笔记11 —— 后端返回json格式数据
Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...
- Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息
</pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...
- Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息
Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...
- Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录
Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...
随机推荐
- JavaFX的扩展控件库ControlsFX介绍
声明: 本博客文章原创类别的均为个人原创,版权所有.转载请注明出处: http://blog.csdn.net/ml3947,另外本人的个人博客:http://www.wjfxgame.com. ...
- SE 2014年5月27日
R1模拟总部,R2 与R3模拟分部 如图配置 要求使用 GRE over IPSec VPN 主模式,启用动态路由协议rip使得总部与两分部内网可相互通讯,但要求分部用户数据流不允许互通! 步骤: 1 ...
- Nginx对某个文件夹或整个站点进行登录认证的方法
比方要对 站点文件夹下的 test 文件夹 进行加密认证 首先须要在opt 的主文件夹中 /opt/ 创建一个新文件 htpasswd 此文件的书写格式是 username:password 每行一个 ...
- ZTESoft 持续集成 编年史 之 持续集成探索---平台选择
2012 年 7.8 月份,我们逐渐了解了持续集成的概念,同时我们家庭作坊的dailybuild方式不断爆出各种问题,并且已经无法满足日益增长的各种需求. 我们开始探索持续集成的不同实现方式,首先我们 ...
- Linux进程同步之记录锁(fcntl)
记录锁相当于线程同步中读写锁的一种扩展类型,可以用来对有亲缘或无亲缘关系的进程进行文件读与写的同步,通过fcntl函数来执行上锁操作.尽管读写锁也可以通过在共享内存区来进行进程的同步,但是fcntl记 ...
- asp.net Form 认证【转】
第一部分 如何运用 Form 表单认证 一. 新建一个测试项目 为了更好说明,有必要新建一个测试项目(暂且为“FormTest”吧),包含三张页面足矣(Default.aspx.Logi ...
- HTTP真的很简单(转)
原文:HTTP Made Really Easy因为我本身网络基础就很差,所以看到这篇文章一方面是学习网络知识,另一方面为了锻炼我蹩脚的英语水平,文中如有错误,欢迎浏览指正! 前言 在看这篇文章的时候 ...
- android4.0 USB Camera示例(五个辅助)jpg压缩
前的最后一个 我们说,一个直接yuv变成jpg该功能 但是转换不成功 主要功能是yuv420转jpg的 根据研究发现 yuv420的序列是这种 YYYY YYYY UVUV 而yuv422的隔行扫描的 ...
- Linux内核的同步机制---自旋锁
自旋锁的思考:http://bbs.chinaunix.net/thread-2333160-1-1.html 近期在看宋宝华的<设备驱动开发具体解释>第二版.看到自旋锁的部分,有些疑惑. ...
- [Python网络编程]gevent httpclient以及网页编码
之前看到geventhttpclient这个项目,https://github.com/gwik/geventhttpclient,官方文档说非常快,因为响应使用了C的解析,所以我一直想把这玩意用到项 ...