不要停留在表面,MVC 3 我们要深入一些

其实在MVC 中只存在三大组件,Model、View、Controller,其中Model用来作为业务逻辑处理,Controller负责的是Model和View的交互,View负责页面显示。

这是非常简单的结构,但是在MVC中有着非常好的可扩展性,我们可以通过对MVC进行全面的扩展来实现我们自己的框架结构或者是实现方式。简单的利用MVC来实现一些页面的

实现是非常容易的,并且不需要我们付出太大的精力。但是这不能真正的让我们了解到底什么是MVC?为什么要使用MVC?

MVC是一个非常优秀的框架,它的优秀程序甚至比Web form的到来还要先进,但是我们对于web form的学习是投入了很大的精力的,各种事件的掌握都会令我们感到满足,但是

在MVC中没有了各种事件的困扰,也带来了我们学习深度的降低,下面我们一起来梳理一下,学习MVC 我们还需要对哪些技术点做更深入的学习。

  1. htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?

  2. ActionResult  这是Controller 中Action的返回类型,当然返回类型为void或其他类型的除外,如果我问你,在MVC中一共有多少个xxxResult 继承自ActionResult?你可以在一分钟之内准确的回答吗?如果你的答案是no,那么我们能做的是什么,继续深入,多做笔记,多回忆?

  3. Filter 这是MVC 3 中我特别喜欢的一个特性,尤其是增加了全局过滤器以后,更加玩美。在MVC中内嵌了4中Filter,你是否可以说出具体名字呢,是否可以不用智能提示,完全的书写出来呢?Filter 是一种AOP的面向切面的编程方式,我们可以通过继承自FilterAttribute以及对应的接口来自定义实现各种Filter的过滤,我们是否使用过?是否可以正确的编码出来我们需要的Filter呢?

  4. Area 我曾经在我的一篇博客中说到这是在MVC 3中出现的一个新特性,但是有园友回复在MVC 2中就已经存在,我找了一下,没有找到添加Area的操作,可能我电脑中缺少某些东西,不讨论这个了。Area 又称为区域,我们可以在一个完整的应用程序中定义不同的功能点,比如前台 和后台的区分?Area 可以轻松的将这两种不同功能点玩美的区分开来,但是我们使用Area的时候 需要注意一些问题?大家是否可以立刻回答都有哪些呢?首先就是要在注册路由中添加命名空间,还有一个就是我们在使用htmlHelper进行页面跳转的时候,这个Area的设置也是必不可少的?

  5. ViewEngine 视图引擎,说的好听点就相当于发动机,就是驱动我们程序运行的机制,那么在MVC中我们可以采用的视图引擎有WebFormViewEngine以及RazorEngine这两种,当然我们也可以采用第三方提供的视图引擎?那么我们有没有想过,是否我们自己可以定义自己可以完全掌握的视图引擎来驱动我们程序的运行?如果你说可以,那么你就是真的大牛,如果为no,那么咱们还是老老实实的继续深入吧。

  6. IOC继承 我们知道,MVC对于IOC的实现提供了非常灵活的方式实现,我们可以通过IOC来实现SOC 关注点分离,那么我们采用哪种IOC框架?我本人采用的是AutoFac,以及如果在MVC中使用这种框架来实现程序的灵活性控制呢?当然IOC的实现方式,一共就三种,构造函数,属性还有另外一个不常用的方法注入。我们真的可以在MVC中灵活的实现这些框架吗。继续努力吧

  7. MVC 的运行机制,我们知道asp.net 是一个非常复杂的框架结构,MVC就运行在这种复杂的框架结构之上,那么我们知道在MVC中Controller是如何激活的呢?Action是如何运行的?而使用了Area以后为什么可以定义到不同Area的相同Controller以及Action之上呢?只有掌握了内部原理,我们才可以避重就轻,编写更加简洁而且运行效率更高的代码

  8. IIS  如果在IIS中部署MVC,如果你不参考网上的教程,仅仅凭借你的记忆,你可以正确的让MVC程序在IIS上正确的跑起来吗?我是不敢这么说,因为我一般都是参考网上的教程来做的。

  9. 值的传递  在MVC中,Model数据传递到Controller,Controller将数据传递到View,或者View可以从Model直接获取数据,这些数据的传递有什么说法?我们应该如何来避免数据传递带来的程序bug呢?强类型当然会是一个明智的选择

  10. 数据验证  在MVC中特别人性化的地方,就是它提供了很多可以对字段进行验证的特性,我们可以利用或者扩展这些特性来为我们的页面进行数据验证?MVC提供的数据验证Attribute有很多,我们是否可以正确的使用它,而不会引发各种问题。我记得字段名称如果和View中的ID存在一致,那么会有隐藏的问题存在?自定义数据验证,我们来扩展我们的业务逻辑。

  11. Razor 语法 这是MVC 3中新添加的一个语法结构,我们可以使用它来完成我们在View层 显示数据,但是使用@符号也有很多问题要注意?我们是否可以想到呢?Razor语法本身是一个非常优雅的语法结构。

  12. 对于异常的处理、404 、500等特殊错误的页面,日志的处理,性能优化,程序的安全性考虑 等这些都是我们作为程序员应该掌握的知识,每个知识点如果我们要完全掌握,恐怕我们这一生都要在学习中度过了。

学习是一种很神圣的东西,它带来的是我们心灵的洗涤,抛弃浮躁,永远的深入下去,去找寻我们自己。

网摘自http://www.cnblogs.com/jiagoushi/archive/2013/01/23/2872824.html

时间: 2024-12-13 18:00:06

不要停留在表面,MVC 3 我们要深入一些的相关文章

【Java架构学习】MVC和三层架构的区别

其实这篇博客的重点不是介绍三层架构,是重点介绍MVC并帮助理解MVC.学了这么久MVC发现对它的理解还存在很多误区,今天就来好好整理一下MVC. MVC即Model-View-Controller,其中M-V-C各代表什么,我想即使我不一一列举大家也都了然于胸了.因为太熟悉了,就像我们当初学习三层架构一样,时间长了U-B-D各代表什么含义信手拈来.但是我想说的是,我们是否对MVC的认识也只是停留在表面? 哎呀,还是说一下吧,不说心里难受.总所周知,在MVC中,代表的具体含义如下: M--Mode

有了 Spring Boot,为什么还要懂 Spring MVC?

01 什么是 Spring Boot? 首先,Spring Boot 是现在比较流行的框架,可以实现快速开发,包括我自己也在用它开发项目. 其优点是简化了 Spring 相关组件的配置,实现自动配置,降低了项目搭建的复杂度,使开发变得更加简便,从而提升开发效率. Spring Boot 本身并不提供 Spring 框架的核心特性以及扩展功能,只是用于快速.敏捷地开发新一代基于 Spring 框架的应用程序. Spring Boot 并不是用来替代 Spring 的解决方案,而是和 Spring

C#注解属性的感想一:

C#当中Attribute(中文注解属性)已经知道这个概念已经很久很久了,不过悲剧的是在实际项目当中重来没有用它来做过什么东西,以致对它的理解总是很浅薄,更谈不上如何在实际项目中运用它.最近在学习<MVC3框架设计>这本书中,看到Filter这一章,突然悟到点感受,先分享如下: 感想一:Attribute大部分用在框架设计与组件设计中 我们平时开发的大部分是三层架构的Web项目,开发人员面向的客户就是只有自己.而框架设计或组件设计中,系统的目标是开发人员,所以整个系统的设计一部分框架设计者实现

你知道为什么Netty这么火吗?与Mina相比又有什么优势?

为什么Netty这么火?与Mina相比有什么优势? **前言: 作为一个学Java的,如果没有研究过Netty,那么你对Java语言的使用和理解仅仅停留在表面水平,会点SSH,写几个MVC,访问数据库和缓存,这些只是初等Java程序员干的事.如果你要进阶,想了解Java服务器的深层高阶知识,Netty绝对是一个必须要过的门槛** 有了Netty,你可以实现自己的HTTP服务器,FTP服务器,UDP服务器,RPC服务器,WebSocket服务器,Redis的Proxy服务器,MySQL的Proxy

转载文章----C#基础概念

转载地址:http://www.cnblogs.com/zhouzhou-aspnet/articles/2591596.html 1.值类型和引用类型 1.1堆和栈 简单的说值类型存放在堆栈上面,引用类型的数据存放在托管堆上面(它的引用地址却存放在堆栈上面)! 栈:它是一个内存数组,是一个先进后出的数据结构! 栈的特征:数据只能从栈顶进,从栈顶出! 堆:它是一个内存区域,可以分配大块区域存储某类型的数据,与栈不同的是它里面的数据可以任意排序和移除! 下面是园子的一张图,贴上来供大家参考啊! 问

PID控制器的数字实现及C语法讲解

PID控制器的数字实现及C语法讲解 概述 为方便学习与交流,根据自己的理解与经验写了这份教程,有错误之处请各位读者予以指出,具体包含以下三部分内容: (1)  PID数字化的推导过程(实质:微积分的近似计算): (2)  程序风格介绍(程序风格来源于TI官方案例): (3)  C有关语法简述(语法会结合实例进行讲解). PID控制器的数字化 PID控制器是工业过程控制中广泛采用的一种控制器,其中,P.I.D分别为比例(Proportion).积分(Integral).微分(Differentia

读《大道至简》之从编程到工程

读<大道至简>第六章之从编程到工程 “得其精而忘其粗,在其内而忘其外:见其所见,不见其所不见,视其所视,而遗其所不视.” -------<列子·说符> 上文是取自秦穆公与伯乐之间关于九方皋相马的对话,直译是,天地间的奥妙:得到了它的精微,而放弃了它的粗略,省察它的内部而忘却其表象,看见了他所应当看见的地方,而没有看见他不必看见的地方,考察了他所应当考察的地方,抛弃了他所不必考察的地方.这则故事教给我们一个道理:认识一件事物就要像九方皋相马一样,避开纷繁复杂的表象的迷惑,先抓住事物最

从“上帝视角”看自己

一直以来,都是个时而自我感觉良好.时而异常自卑的人. 自卑,多半是因为单身吧,一个人久了,难免会有种卑微到尘埃里 的想法,况且从出发的地方出来这么久,也并未做好一些什么事.用别 人的话说:我费这么大劲,也不过过得连个普通人都不如. 说到自我感觉良好,大概是无聊时候的自我麻痹.就好像明明不 累,睡久了却依然不想起床一样. 闲暇的时候总会想想自己做了些什么,哪些对了.哪些错了.哪些 差点.哪些好点.哪些怎么做会更好一些…….可是 ,并没有给实际情 况带来多大的改变. 这样的情况一直持续到前几天,早上

Singleton(单例)模式和Double-Checked Locking(双重检查锁定)模式

问题描述 现在,不管开发一个多大的系统(至少我现在的部门是这样的),都会带一个日志功能:在实际开发过程中,会专门有一个日志模块,负责写日志,由于在系统的任何地方,我们都有可能要调用日志模块中的函数,进行写日志.那么,如何构造一个日志模块的实例呢?难道,每次new一个日志模块实例,写完日志,再delete,不要告诉我你是这么干的.在C++中,可以构造一个日志模块的全局变量,那么在任何地方就都可以用了,是的,不错.但是,我所在的开发部门的C++编码规范是参照Google的编码规范的. 全局变量在项目