ASP.NET MVC自学总结

今天来总结下y2扩展就业的课程使用asp.netmvc开发企业级应用自学成果。首先ASP.NET是Microsoft公司.NetFramwork框架的一个动态网页开发的核心技术集,他可以帮助.net方向的动态web开发人员快速高效制作动态网页交互,同样支持jquery,js和h5c3,以及实现异步请求服务器达到无刷新效果的ajax技术。MVC是一种应用程序设计的成熟设计模式思想,指的是模型视图和控制器。而ASP.NET MVC就是微软的ASP.NET技术和mvc设计模式的集合,隶属于.net框架。ASP.NET MVC技术就像java的jsp+Servlet技术一样,也有自己的语法,并且有很多相似之处,比如支持小脚本,表达式,指令,声明等,并且有定义的相应的语法规则。ASP.NET MVC技术的核心配置文件是web.config配置文件,在这个配置文件中可以配置整个ASP.NET MVC应用程序的运行环境。ASP.NET MVC应用程序的核心组成部分就是Model模型层,存放实体类,View视图层,存放各种页面视图模板视图分布视图母版视图等,Controller控制器层或者说业务层,存放处理业务的各种控制器和动作方法。ASP.NET MVC也支持拦截器,可以拦截不同的用户请求并调用相应的动作方法处理请求并返回响应,并根据ASP.NET MVC视图寻址规则找到匹配的视图,解析之后呈现页面到客户端。这门课程除了主要讲解ASP.NET MVC以外,还介绍了c#语言的一些新特性和SQlServer数据库的一些拓展知识。以上是从宏观上简要分析了这门课程的脉络,接下来分别做补充说明。第一章介绍了ASP.NET MVC技术的由来,以及开发数据库的一些拓展知识。以上是从宏观上简要分析了这门课程的脉络,接下来分别做补充说明。首先,第一章开篇主要介绍了asp.netmvc技术的由来以及一个asp.netmvc应用程序的基本组成部分,即模型层视图层和业务层或者说控制层,还有配置路由规则的配置文件,web.config核心配置文件,位于appstart目录下的项目启动环境文件。其次介绍了asp.netmvc应用程序遵循的语法规则,以及视图的配置和母版视图,类似jsp的include指令,在了asp.netmvc中使用MVC:content和MVC:contentPlaceholder标签并配置属性后实现页面内容的嵌入和引用,非常灵活方便的达到了页面内容复用的目标。这一章节还有一个重中之重就是介绍了了asp.netmvc内置对象的属性和方法,比如请求Request,处理响应的Response,处理会话的Session,配置cookie缓存的Cookies,作用于整个应用程序的Application,上下文环境对象HttpContext,获取和管理服务器信息的Server等,还有相应的实现转发重定向,往容器存值取值,设置生命周期的方法等等,这些asp.netmvc内置对象api都是实际开发了asp.netmvc应用程序经常用到的核心宝典。第二章到第四章详细介绍了TSQL编程,存储过程和ado.net进阶。T-SQL是SQLServer数据库特有的sql指令集,并对sql语言做了扩展,支持自定义局部变量deface @,给局部变量赋值set.select,输入输出语句print,select,数据类型转换convert,cast,逻辑控制语句顺序beginend分支of else,careend 循环while等,并且提供了一些常用的系统全局变量@@可以直接使用用来获取数据库系统信息,批处理指令go等。存储过程是数据库管理系统中存在的,已经预先编译好的,可以执行的sql程序,是sql语句和控制语句的预编译集合,减少sql注入攻击发生的可能性。特点是模块化程序设计,执行速度快,效率高,具有良好的安全性,并且由于不用每次请求都重新生成sql语句,采用预编译的方式,必然减轻了网络流量传输负担。存储过程分为系统存储过程sp_和用户自定义的存储过程,系统存储过程可以获取数据库表子段约束索引视图等数据库对象的详细信息,系统存储过程中还有一类特殊的系统存储过程,那就是扩展存储过程,常用的比如xp_cmdshell操作dos命令等等,他提供了数据库服务器连接外部应用程序的通用统一的接口。除此之外用户还可以根据实际业务需求自定义存储过程。自定义存储过程可以带参数也可以不带参数,带参数的存储过程又可以分别指定输入参数,即执行存储过程需要的数据,和输出参数,即存储过程执行之后的返回值。ado.net是.netframework用来访问和操作各种关系型数据库的技术,由数据提供程序和dataset组成,数据提供程序有四大核心对象ConnectionCommandDataReaderDataAdapter组成。为了减少对于每次请求都重新获取链接访问数据库造成的数据库资源开支,可以使用using代码块在代码块执行结束时自动调用disponse方法释放对象占用的内存资源,前提是这个对象实现了IDisponsible接口,并不是说有对象创建时都需要使用using进行限定,我们只需要将那些对系统性能有重要影响的对象使用using限定就可以了,其他对象交由垃圾回收器处理。ADO.NET进阶的一个核心语法就是参数化命令,这点主要依靠SqlParameter类和SqlCommand对象的Parameters属性实现,这个属性的类型是SqlParameter对象数组,可以往里面添加参数,sql语句中的参数使用@参数名实现,在创建SqlParameter对象时根据参数名设置参数对应的实际值,最后添加到Parameters属性中即可使用参数化命令执行sql语句,安全可靠更高。除此之外,使用ADO.NET还可以调用数据库中已经定义好的存储过程,重点是要设置好SqlCommand对象的几个属性CommandType指定为枚举值StoredProcedure,设置Parameters 参数,CommandText属性指定存储过程名,如果有输出参数,则通过索引取到Parameters数组中的SqlParameter对象并指定其Direction属性值为ParameterDirection.Output枚举值,最后调用ExecuteNonQuery方法执行即可。接下来说一下第五章路由和数据传递,可以根据在RouteData.xml中定义寻址规则,从而调用不同控制器中的不同动作方法处理相应请求,并且介绍了控制器到视图和视图到控制器的数据传递,控制器传递数据到视图通过ViewData,ViewBag,TempData和Model对象存入数据实现,视图向控制器传递数据方式也有很多,比如通过QueryString请求字符串,RouteData路由数据,Model模型对象等实现视图到控制器的数据传递,再来说下第六章到第八章C#语言的新特性,这些特性和使用c#语言开发asp.netmvc应用程序密切相关。接下来进行说明。关于方法这块方法参数拓展了可选参数,指的是在调用方法时不需要必须传入方法定义的全部参数,只需传入必选参数即可,可选参数可以根据实际需求决定是否传递,如果没有传递可选参数,则这些可选参数使用定义的默认值。命名参数是指传递参数时可以不用实参和形参数据类型和顺序必须一一对应,可以根据参数名称进行区分不同参数。方法类型拓展了匿名方法,指的是没有名字的方法,只需要定义方法的返回值和参数即可,一般与委托对象结合使用,h扩展方法指的是可以在不改变原方法代码的情况下,对原方法的实现功能进行扩展。数据类型拓展了匿名类型,即不显式指定对象的数据类型,直接使用new设置某个类型的对象的属性一般适用于只关心某个类型的对象的属性,并不关心对象实际类型的情况。可空类型指的是数据值可以为空的类型,动态类型指的是定义时不定义数据类型,程序运行时根据赋给动态类型的对象的值的类型来动态决定该对象的类型。还有一个新的特性是委托delegate,委托对象有一个指针,指向一个方法的定义,调用委托对象相当于调用他指向的方法,并延伸而来匿名方法,匿名方法可以直接指向或者说赋值给一个委托对象,lambda表达式就是用来简化匿名方法的写法,通过返回值类型=>方法体或返回值的语法创建匿名方法并指向一个委托对象。泛型委托常用的是Func,泛型类型第一个参数表示参数类型,第二个参数表示返回值类型。第九章到第十章介绍了一个重要的类HtmlHelper和常用的api,这个类依赖于前面简要介绍的c#新特性,尤其是委托和扩展方法在这个类中运用的恰到好处,这个类里面定义的方法可以直接生成带有html属性和style样式的表单元素,这些方法实际都是扩展方法,扩展了HtmlHelper类的功能,并且视图可以直接调用HtmlHelper对象的方法动态创建表单元素和生成符合路由规则的url。第十一章介绍了在asp.netmvc中使用ajax,在视图层可以通过调用封装好的Ajax对象的方法动态生成无刷新连接,内部实现是通过客户端异步请求服务器,即客户端发送请求到服务器之后可以在服务器返回响应之前继续执行其他操作,不用刷新页面,也不需要等和依赖服务器实时返回的响应。对于服务器而言,只需要根据需求在动作方法中获取请求需要的数据并通过数据传递传递请求需要的数据到客户端,不用重新加载整合视图页面。第十二章介绍了web开发的安全防御,单元测试和部署asp.netmvc应用程序到IIS服务器中,单元测试是为每个控制器中的动作方法编写相应的方法并传入不同情况下的多种测试数据进行单元测试,还可以计算代码覆盖率,覆盖率越高越能说名单元测试做的越全面,程序的健壮性越强。常见的web攻击类型分为XSS跨站请求脚本攻击,即通过改写页面脚本实现攻击和CSRF跨站请求伪造攻击,即通过伪造表单和请求地址,暗地触发表单提交到某一设计好的圈套地址实现数据窃取,解决方式有使用令牌机制防御和启用NONAction特性标注非动作方法进行防御。asp.netmvc特性类似java中的注解,不同的特性可以实现不同的功能。第十三章讲了拦截器,类似java中的过滤器Filter,可以根据配置的url拦截不同的用户请求并调用相应控制器的相应动作方法进行处理,还可以在请求之间和作出响应之后在不改变原方法代码的情况下增添一些额外的操作,如字符编码的过滤,请求参数的预处理等等。以上就是我对这门课程的自学总结,因为这个是拓展课程,加上我一般以java方向为主,自我觉得还有很多地方需要学习,继续加油,感谢大家提供宝贵建议,学习永无止境,加油

你可能感兴趣的:(ASP.NET,MVC)