看了些关于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
MVC和WF简单的功能对比
支持功能 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学习笔记(一)的更多相关文章

  1. MVC学习笔记索引帖

    [MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习 ...

  2. ASP.NET MVC学习笔记-----Filter2

    ASP.NET MVC学习笔记-----Filter(2) 接上篇ASP.NET MVC学习笔记-----Filter(1) Action Filter Action Filter可以基于任何目的使用 ...

  3. ASP.NET MVC学习笔记-----Filter

    ASP.NET MVC学习笔记-----Filter(1) Filter类型 接口 MVC的默认实现 Description Authorization IAuthorizationFilter Au ...

  4. Spring MVC 学习笔记一 HelloWorld

    Spring MVC 学习笔记一 HelloWorld Spring MVC 的使用可以按照以下步骤进行(使用Eclipse): 加入JAR包 在web.xml中配置DispatcherServlet ...

  5. .NET MVC 学习笔记(一)— 新建MVC工程

    一..NET MVC 学习笔记(一)—— 新建MVC工程 接触MVC有段时间了,一直想找机会整理一下,可是限于文笔太差,所以一直迟迟羞于下手,想到最近做过的MVC项目也有一些了,花点时间整理一下方便以 ...

  6. Spring MVC 学习笔记12 —— SpringMVC+Hibernate开发(1)依赖包搭建

    Spring MVC 学习笔记12 -- SpringMVC+Hibernate开发(1)依赖包搭建 用Hibernate帮助建立SpringMVC与数据库之间的联系,通过配置DAO层,Service ...

  7. Spring MVC 学习笔记11 —— 后端返回json格式数据

    Spring MVC 学习笔记11 -- 后端返回json格式数据 我们常常听说json数据,首先,什么是json数据,总结起来,有以下几点: 1. JSON的全称是"JavaScript ...

  8. Spring MVC 学习笔记10 —— 实现简单的用户管理(4.3)用户登录显示全局异常信息

    </pre>Spring MVC 学习笔记10 -- 实现简单的用户管理(4.3)用户登录--显示全局异常信息<p></p><p></p>& ...

  9. Spring MVC 学习笔记9 —— 实现简单的用户管理(4)用户登录显示局部异常信息

    Spring MVC 学习笔记9 -- 实现简单的用户管理(4.2)用户登录--显示局部异常信息 第二部分:显示局部异常信息,而不是500错误页 1. 写一个方法,把UserException传进来. ...

  10. Spring MVC 学习笔记8 —— 实现简单的用户管理(4)用户登录

    Spring MVC 学习笔记8 -- 实现简单的用户管理(4)用户登录 增删改查,login 1. login.jsp,写在外面,及跟WEB-INF同一级目录,如:ls Webcontent; &g ...

随机推荐

  1. Coreseek:indexer crashed神秘

    浩哥前两天让我再Coreseek该指数再次这样做,由于需求方面变化不大,公司名称应出现指数.在添加的配置文件的面孔sql_field_string:串场.. 此属性特别有用,因为它不仅作为过滤器的特性 ...

  2. cocos2dx-lua牧场小游戏(一)

    环境: cocos2dx-3.0rc2,   xcode5.0 一.lua项目建立參考 http://blog.csdn.net/daydayup_chf/article/details/249641 ...

  3. PHP 文件操作类(创建文件并写入) 生成日志

    <?php /** * 文件操作(生成日志)支持多条插入 * (假设插入多条语句并换行 用','逗号分开) * */ class log { public $path = './info.txt ...

  4. VC中Tab control的用法

    1. 新建一个MFC工程, 取名MyTab, 选择Dialog based, 然后Finish. 2. 删除对话框上默认添加的三个控件. 添加Tab Control控件并在Property属性中设置I ...

  5. A Game of Thrones(0) - PROLOGUE

    "We should start back", Gared urged as the woods began to grow dark around them. "The ...

  6. Amazon AWS创建RHEL 7实例

    在AWS上登录 如果没有账号的话先注册,参考 http://blog.banban.me/blog/2014/06/09/li-yong-awsmian-fei-zhang-hu-da-jian-vp ...

  7. HDU 2828 DLX搜索

    Lamp Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submi ...

  8. Activity详细解释(生命周期、以各种方式启动Activity、状态保存,等完全退出)

    一.什么是Activity? 简单的说:Activity或者悬浮于其它窗体上的交互界面. 在一个应用程序中通常由多个Activity构成.都会在Manifest.xml中指定一个主的Activity, ...

  9. postgresql数据库配置csv格式的日志输出

    postgresql数据库配置csv格风格日志输出 以下介绍postgresql数据库中关于csv格式日志(pg中一种比較具体的日志输出方式)的设置方法. 1.进入$PGDATA文件夹(pg的安装文件 ...

  10. 使用oracle数据库,多用户同时对一个表进行增加,删除,修改,查看等操作,会不会有影响?

    使用oracle数据库,多用户同时对一个表进行增加,删除,修改,查看等操作,会不会有影响? 1.问题:各操作间或者性能上会不会有影响? 如果有该如何解决? 多用户操作的影响主要是回锁定记录,oracl ...