看了些关于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. Android 网络编程 Socket Http

    前言          欢迎大家我分享和推荐好用的代码段~~ 声明          欢迎转载,但请保留文章原始出处:          CSDN:http://www.csdn.net        ...

  2. Linux SSH端口转发

    SSH端口转发分为两种,一种是本地端口转发,又称为本地SSH隧道.一直是远程端口转发.SSH端口转发,还必须指定数据传送的目标主机,从而形成点对点的端口转发. 本地端口转发     假定有三台主机A. ...

  3. pthread_once()使用(某个时间在整个程序中仅执行一次,不确定是那个线程)

    在多线程环境中,有些事仅需要执行一次.通常当初始化应用程序时,可以比较容易地将其放在main函数中.但当你写一个库时,就不能在main里面初始化了,你可以用静态初始化,但使用一次初始化(pthread ...

  4. HGE项目升级时遇到的问题及解决方式记录

    主要是记录在把2003版本的hge项目升级为2013时遇到的问题及解决方案. Q1: 错误 3error LNK2019: 无法解析的外部符号 "public: __thiscall hge ...

  5. C#实现仿QQ震动

    前提:新建winForm窗体应用程序,放置一个Button,设置按钮的单击事件 ; i < ; i++) { Point p = this.FindForm().Location; ,p.Y+) ...

  6. 数据库连接技术之OLE DB

    之前的博客介绍了ODBC和JDBC.这次简单的介绍一下OLE DB.ODBC的总结不知道是没贴到博客上还是不在这个博客上,我再找找,没有的话我再补充到时候.好了.開始吧. 回想 之前呢介绍过了ODBC ...

  7. HDU 1114 Piggy-Bank 全然背包

    Piggy-Bank Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u Submit S ...

  8. Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket

    Unable to start MySQL service. Another MySQL daemon is already running with the same UNIX socket 特征 ...

  9. poj1236 有向图加边变成强连通图

    给我们一个有向图,有两个问题 1.最少要给多少个点发消息,才能使得所有的点都收到消息(消息可以随边传递) 2.最少需要多少条边才能使得图变成强连通图 对于一个强连通分量,可以当做一个点来考虑,所以我们 ...

  10. Percona Data Recovery Tool for InnoDB工具恢复单表的案例

    今天上班有个朋友询问我,相关Percona Data Recovery Tool for InnoDB恢复数据中的一些问题,比如说delete,没法恢复数据,原先做过类似的异常处理就,再次模拟了下相关 ...