浅谈对ASP.NET MVC(微软Web开发框架)的理解

今天来总结下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新特性,尤其是委托和扩展方法在这个类中运用的恰到好处,这个类里面定义的方法可以直接生成带有html属性和style样式的表单元素,这些方法实际都是扩展方法,扩展了HtmlHelper类的功能,并且视图可以直接调用HtmlHelper对象的方法动态创建表单元素和生成符合路由规则的url。第十一章介绍了在asp.netmvc中使用ajax,在视图层可以通过调用封装好的Ajax对象的方法动态生成无刷新连接,内部实现是通过客户端异步请求服务器,即客户端发送请求到服务器之后可以在服务器返回响应之前继续执行其他操作,不用刷新页面,也不需要等和依赖服务器实时返回的响应。对于服务器而言,只需要根据需求在动作方法中获取请求需要的数据并通过数据传递传递请求需要的数据到客户端,不用重新加载整合视图页面。第十二章介绍了web开发的安全防御,单元测试和部署asp.netmvc应用程序到IIS服务器中,单元测试是为每个控制器中的动作方法编写相应的方法并传入不同情况下的多种测试数据进行单元测试,还可以计算代码覆盖率,覆盖率越高越能说名单元测试做的越全面,程序的健壮性越强。常见的web攻击类型分为XSS跨站请求脚本攻击,即通过改写页面脚本实现攻击和CSRF跨站请求伪造攻击,即通过伪造表单和请求地址,暗地触发表单提交到某一设计好的圈套地址实现数据窃取,解决方式有使用令牌机制防御和启用NONAction特性标注非动作方法进行防御。asp.netmvc特性类似java中的注解,不同的特性可以实现不同的功能。第十三章讲了拦截器,类似java中的过滤器Filter,可以根据配置的url拦截不同的用户请求并调用相应控制器的相应动作方法进行处理,还可以在请求之间和作出响应之后在不改变原方法代码的情况下增添一些额外的操作,如字符编码的过滤,请求参数的预处理等等。

相关推荐
CodeCraft Studio2 小时前
【实用技能】使用 TX Text Control 创建带有嵌入式附件的 PDF 文档
pdf·asp.net·.net
bluefox19794 小时前
使用 Oracle.DataAccess.Client 驱动 和 OleDB 调用Oracle 函数的区别
开发语言·c#
Ares-Wang5 小时前
Asp.net Core Hosted Service(托管服务) Timer (定时任务)
后端·asp.net
鲤籽鲲6 小时前
C# MethodTimer.Fody 使用详解
开发语言·c#·mfc
工业3D_大熊6 小时前
3D可视化引擎HOOPS Luminate场景图详解:形状的创建、销毁与管理
java·c++·3d·docker·c#·制造·数据可视化
yngsqq7 小时前
c#使用高版本8.0步骤
java·前端·c#
A_cot8 小时前
理解设计模式与 UML 类图:构建稳健软件架构的基石
microsoft·设计模式·简单工厂模式·工厂方法模式·uml
hccee10 小时前
C# IO文件操作
开发语言·c#
C-cat.11 小时前
Linux|进程程序替换
linux·服务器·microsoft
广煜永不挂科11 小时前
Devexpress.Dashboard的调用二义性
c#·express