不要停留在表面,MVC 3 我们要深入一些
其实在MVC 中只存在三大组件,Model、View、Controller,其中Model用来作为业务逻辑处理,Controller负责的是Model和View的交互,View负责页面显示。
这是非常简单的结构,但是在MVC中有着非常好的可扩展性,我们可以通过对MVC进行全面的扩展来实现我们自己的框架结构或者是实现方式。简单的利用MVC来实现一些页面的
实现是非常容易的,并且不需要我们付出太大的精力。但是这不能真正的让我们了解到底什么是MVC?为什么要使用MVC?
MVC是一个非常优秀的框架,它的优秀程序甚至比Web form的到来还要先进,但是我们对于web form的学习是投入了很大的精力的,各种事件的掌握都会令我们感到满足,但是
在MVC中没有了各种事件的困扰,也带来了我们学习深度的降低,下面我们一起来梳理一下,学习MVC 我们还需要对哪些技术点做更深入的学习。
htmlHelper 和UrlHelper 类,这是我们在View层进行页面显示组件的常用类或者是唯一类,但是我们又对它了解哪些呢?我们了解为什么可以使用htmlHelper类?因为使用了扩展方法,我们自己是否可以正确的定义一些helper类来满足我们自己的业务需求,对于扩展方法我们又理解多少?htmlHelper类中的那几个方法我们是否完全的掌握?
ActionResult 这是Controller 中Action的返回类型,当然返回类型为void或其他类型的除外,如果我问你,在MVC中一共有多少个xxxResult 继承自ActionResult?你可以在一分钟之内准确的回答吗?如果你的答案是no,那么我们能做的是什么,继续深入,多做笔记,多回忆?
Filter 这是MVC 3 中我特别喜欢的一个特性,尤其是增加了全局过滤器以后,更加玩美。在MVC中内嵌了4中Filter,你是否可以说出具体名字呢,是否可以不用智能提示,完全的书写出来呢?Filter 是一种AOP的面向切面的编程方式,我们可以通过继承自FilterAttribute以及对应的接口来自定义实现各种Filter的过滤,我们是否使用过?是否可以正确的编码出来我们需要的Filter呢?
Area 我曾经在我的一篇博客中说到这是在MVC 3中出现的一个新特性,但是有园友回复在MVC 2中就已经存在,我找了一下,没有找到添加Area的操作,可能我电脑中缺少某些东西,不讨论这个了。Area 又称为区域,我们可以在一个完整的应用程序中定义不同的功能点,比如前台 和后台的区分?Area 可以轻松的将这两种不同功能点玩美的区分开来,但是我们使用Area的时候 需要注意一些问题?大家是否可以立刻回答都有哪些呢?首先就是要在注册路由中添加命名空间,还有一个就是我们在使用htmlHelper进行页面跳转的时候,这个Area的设置也是必不可少的?
ViewEngine 视图引擎,说的好听点就相当于发动机,就是驱动我们程序运行的机制,那么在MVC中我们可以采用的视图引擎有WebFormViewEngine以及RazorEngine这两种,当然我们也可以采用第三方提供的视图引擎?那么我们有没有想过,是否我们自己可以定义自己可以完全掌握的视图引擎来驱动我们程序的运行?如果你说可以,那么你就是真的大牛,如果为no,那么咱们还是老老实实的继续深入吧。
IOC继承 我们知道,MVC对于IOC的实现提供了非常灵活的方式实现,我们可以通过IOC来实现SOC 关注点分离,那么我们采用哪种IOC框架?我本人采用的是AutoFac,以及如果在MVC中使用这种框架来实现程序的灵活性控制呢?当然IOC的实现方式,一共就三种,构造函数,属性还有另外一个不常用的方法注入。我们真的可以在MVC中灵活的实现这些框架吗。继续努力吧
MVC 的运行机制,我们知道asp.net 是一个非常复杂的框架结构,MVC就运行在这种复杂的框架结构之上,那么我们知道在MVC中Controller是如何激活的呢?Action是如何运行的?而使用了Area以后为什么可以定义到不同Area的相同Controller以及Action之上呢?只有掌握了内部原理,我们才可以避重就轻,编写更加简洁而且运行效率更高的代码
IIS 如果在IIS中部署MVC,如果你不参考网上的教程,仅仅凭借你的记忆,你可以正确的让MVC程序在IIS上正确的跑起来吗?我是不敢这么说,因为我一般都是参考网上的教程来做的。
值的传递 在MVC中,Model数据传递到Controller,Controller将数据传递到View,或者View可以从Model直接获取数据,这些数据的传递有什么说法?我们应该如何来避免数据传递带来的程序bug呢?强类型当然会是一个明智的选择
数据验证 在MVC中特别人性化的地方,就是它提供了很多可以对字段进行验证的特性,我们可以利用或者扩展这些特性来为我们的页面进行数据验证?MVC提供的数据验证Attribute有很多,我们是否可以正确的使用它,而不会引发各种问题。我记得字段名称如果和View中的ID存在一致,那么会有隐藏的问题存在?自定义数据验证,我们来扩展我们的业务逻辑。
Razor 语法 这是MVC 3中新添加的一个语法结构,我们可以使用它来完成我们在View层 显示数据,但是使用@符号也有很多问题要注意?我们是否可以想到呢?Razor语法本身是一个非常优雅的语法结构。
对于异常的处理、404 、500等特殊错误的页面,日志的处理,性能优化,程序的安全性考虑 等这些都是我们作为程序员应该掌握的知识,每个知识点如果我们要完全掌握,恐怕我们这一生都要在学习中度过了。
学习是一种很神圣的东西,它带来的是我们心灵的洗涤,抛弃浮躁,永远的深入下去,去找寻我们自己。
网摘自http://www.cnblogs.com/jiagoushi/archive/2013/01/23/2872824.html
不要停留在表面,MVC 3 我们要深入一些的更多相关文章
- Asp.Net MVC 3
Asp.Net MVC 3 wcf基础教程之 契约(合同)Contract 摘要: 在前几篇博客中我有说到服务的寄宿,就是服务要运行起来必须采取的几种方式,相当于我们可以照葫芦画瓜的效果运行一个w ...
- Sping MVC不使用任何注解处理(jQuery)Ajax请求(基于XML配置)
1. Spring Spring框架是一个轻量级的解决方案,是一个潜在的一站式商店,用于构建企业就绪的应用程序.Spring框架是一个Java平台,为开发Java应用程序提供全面的基础架构支持.Spr ...
- C#注解属性的感想一:
C#当中Attribute(中文注解属性)已经知道这个概念已经很久很久了,不过悲剧的是在实际项目当中重来没有用它来做过什么东西,以致对它的理解总是很浅薄,更谈不上如何在实际项目中运用它.最近在学习&l ...
- 从士兵到程序员再到SOHO程序员
2013年9月13日,我从就职了一年半的S公司正式离职,并开始了我梦寐以求的“SOHO程序员”之路. 这对于我来说,是一次人生道路上的重要选择,在这里,我想分享一下我是如何选择了这条道路的,同时也是对 ...
- 程序员谈学习:我为什么要学习Linux?
http://kb.cnblogs.com/page/196876/ 好长时间没好好写点东西了,前段时间由于项目的需要出差了一个多月,期间各种加班,每天晚上加班到十点,回到宾馆实现是没什么精力再写博客 ...
- 掌握 ActionResult
我在上一篇博客不要停留在表面,MVC 3 我们要深入一些 说明了我们的掌握程度还是不够,还需要我们继续努力.但是有园友质疑说他们认为我说的只是书院派,并不实用,这令作为程序员的我很是生气.好吧,那咱们 ...
- 浅谈Android进阶之路
过去十年是移动互联网蓬勃发展的黄金期,相信每个人也都享受到了移动互联网红利,在此期间,移动互联网经历了曙光期.成长期.成熟期.现在来说已经进入饱和期.依然记得在 2010-2013 年期间,从事移动开 ...
- 乐学习知选择--我的J2EE技术历程
转眼换工作已经两个多月了,转眼今年已经到9月份了,转眼女朋友也来到了自己身边.有太多的转眼,如今在这个经理不在的早晨,可以肆意的点点这里看看那里,想想自己,有点吉利思的感觉. 这两个多月,知道了什么叫 ...
- BATJ等大厂最全经典面试题分享
金九银十,又到了面试求职高峰期,最近有很多网友都在求大厂面试题.正好我之前电脑里面有这方面的整理,于是就发上来分享给大家. 这些题目是网友去百度.蚂蚁金服.小米.乐视.美团.58.猎豹.360.新浪. ...
随机推荐
- go操作数据库 Go-SQL-Driver/MySQL 使用详解
go操作mysql的驱动包很多,这里讲解当下比较流行的Go-SQL-Driver/MySQL1.下载安装 执行下面两个命令: 下载:go get github.com/Go-SQL-Driver/My ...
- poj 3984 迷宫问题 bfs
学会这道水题之后我懂得了不少哈,首先水题也能学到不少知识,尤其像我这样刚入门的小菜鸟,能学到一些小技巧. 然后就是可以从别人的代码里学到不一样的思路和想法. 这题就是求最短的路径,首先想到就是用bfs ...
- iOS之宏定义#define
最基本的宏定义用法 #define aaa bbb 表示用aaa替换bbb的内容. 宏作用范围 宏的作用范围是在当前文件内, 如果需要作用于其他类(如在类b调用类a已定义宏),那么需要在类b引入类a的 ...
- iOS 开发中你是否遇到这些经验问题(一)
前言 小伙伴们在开发中难免会遇到问题, 你是如何解决问题的?不妨也分享给大家!如果此文章其中的任何一条问题对大家有帮助,那么它的存在是有意义的! 反正不管怎样遇到问题就要去解决问题, 在解决问题的同时 ...
- Linux批量替换文件内容
问题描述:现在需要将rack1目录下*.send文件中的"-ip="替换成“-localIp=10.0.0.1/n-ip=” 刚才那个批量文本内容替换,只能替换内存中的内容,并不会 ...
- mysql的数据导入导出
1.Navicat for Mysql XML导出导入格式支持二进制数据:虽然同步数据人眼看不出区别,但是java尝试读取数据时,报datetime字段取出的值为“0000-00-00 00:00:0 ...
- [转].net连oracle的问题及方法折腾总结 连接字串
本文转自:http://www.th7.cn/Program/net/201305/138265.shtml 对oracle不算熟,对.net结合oracle开发项目也只做过一个.最近换了新电脑,装了 ...
- centos 7访问windows共享文件夹
1. 首先centos要能识别win7的文件系统ntfs,原版的centos是不支持NTFS格式的文件系统,因此需要安装ntfs支持软件包,我使用的是rpmforge软件库,在此处http://pkg ...
- delta
1,安装synplyfy:综合工程,便于学习(模块间的关系,数据流向) 2,安装wps office: www.wps.com/linux,论坛有安装方法和依赖包处理 3,安装kmplayer: 4 ...
- 【高级JEE技术】JMX
JMX即Java Manager Extentin(java 管理扩展)一种动态改变javabean属性值的技术,具体应用场景可以有很多.比如使用JMX作为线上应用的开关,在做一些新老系统改造的时候 ...