.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




















































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学习笔记(一),布布扣,bubuko.com

时间: 2024-10-19 11:22:37

.NET MVC学习笔记(一)的相关文章

Spring MVC 学习笔记(二):@RequestMapping用法详解

一.@RequestMapping 简介 在Spring MVC 中使用 @RequestMapping 来映射请求,也就是通过它来指定控制器可以处理哪些URL请求,相当于Servlet中在web.xml中配置 <servlet>     <servlet-name>servletName</servlet-name>     <servlet-class>ServletClass</servlet-class> </servlet>

MVC学习笔记索引帖

[MVC学习笔记]1.项目结构搭建及单个类在各个层次中的实现 [MVC学习笔记]2.使用T4模板生成其他类的具体实现 [MVC学习笔记]3.使用Spring.Net应用IOC(依赖倒置) [MVC学习笔记]4.使用Log4Net来进行错误日志的记录 [MVC学习笔记]5.使用Controller来代替Filter完成登录验证(Session校验) [MVC学习笔记]6. 使用Memcache+Cookie解决分布式系统共享登录状态 [MVC学习笔记]7.使用极验验证来制作更高逼格的验证码

[Spring MVC]学习笔记--DispatcherServlet

在上一篇我们介绍了Servlet,这一篇主要来看一下MVC中用到的DispatcherServlet(继承自HttpServlet). 1. DispatcherServlet在web.xml中被声明. <web-app> <servlet> <servlet-name>example</servlet-name> <servlet-class>org.springframework.web.servlet.DispatcherServlet&l

Spring MVC学习笔记(一)--------准备篇

这一系列笔记将带你一步一步的进入Spring MVC,高手勿喷. 首先你得安装以下的工具: JDK,虽然JDK8已经发布了一段时间了,但是由于我们并不会使用到里面的新特性,所以JDK6以上版本皆可以(需加入到PATH环境变量中): Servlet Container,为了能运行WEB应用程序,因此需要一个Web Container,这里我们建议Tomcat即可: IDE,一个好的IDE不仅能提高你开发的效率,还能降低你学习的成本,我们选择的是IntelliJ: 构建工具,推荐使用Gradle,它

[转]Spring MVC 学习笔记 json格式的输入和输出

Spring mvc处理json需要使用jackson的类库,因此为支持json格式的输入输出需要先修改pom.xml增加jackson包的引用 <!-- json --> <dependency> <groupId>org.codehaus.jackson</groupId> <artifactId>jackson-core-lgpl</artifactId> <version>1.8.1</version>

[Spring MVC]学习笔记--基础Servlet

Servlet是一个用Java编写的应用程序,在服务器上运行,处理请求的信息并将其发送到客户端. Servlet的客户端提出请求并获得该请求的响应. 对于所有的客户端请求,只需要创建Servlet的实例一次(这是和CGI(Common Gateway Interface)的重要区别,CGI是每个请求创建一个新实例),因此节省了大量的内存. Servlet在初始化后即驻留内存中,因此每次作出请求时无需加载. 下面通过一个例子来介绍如何编写一个简单的Servlet. 准备工作: 1. 下载并启动To

[Spring MVC]学习笔记--表单标签的使用

github例子地址: https://github.com/lemonbar/spring-mvc-jsp 效果图 关于spring mvc的标签的讲解, 有一篇blog已经讲的很细了. http://haohaoxuexi.iteye.com/blog/1807330 官方文档地址: http://docs.spring.io/spring/docs/4.0.6.RELEASE/spring-framework-reference/htmlsingle/#view-jsp 而且我在上面的例子

[Spring MVC]学习笔记--@RequestMapping

@RequestMapping是用来将请求的url,映射到整个类,或者里面的方法. @Controller @RequestMapping("/test") public class TestController { private final TestService service; @Autowired public TestController(TestService testService) { this.service = testService; } @RequestMap

[Spring MVC]学习笔记--FreeMarker的使用

还是先贴出该例子存于github上的位置 https://github.com/lemonbar/spring-mvc-freemarker Sping-Framework 的官方文档简单列出了在spring-mvc中如何使用freemarker, 但是相对来说提供的信息和例子太少, 所以在这给出一个详细的例子. 注:我是在maven基础上进行的构建, 很多解释已经在代码中加了, 所以尽量贴代码. FreeMarker Site: http://freemarker.org/ 1. 整个文件夹结