快速搞懂ASP.NET MVC
写时的弹性。此层如同 ASP.NET 中的 App_Code 文件夹中的自定义类、DataSet (.xsd)、TableAdapter、…等等。
● Controller (Java Servlet) 用来控制整个网站处理的「流程」,负 责协调 View 和 Model 之间的流程传递和转向,也要管理和指派由哪个文件去 接收用户所提出的「请求 (request)」,亦即由它决定要展现哪一个 aspx 文件 给用户。当用户从浏览器送出 request 时 (例若用鼠标单击页面中的控件,或 输入数据后单击 Button 的提交、输入 URL 网址、点选 hyperlink…等 等),Controller 里定义的某些 method 会判断要交由 Model 中的哪些运算逻 辑去处理,然后再判断要将处理结果传回哪一个 View 去显示出来。此外, Controller 还可包含错误处理、授权、输入验证…等功能的代码,集中 统一处理,以避免传统 WebForm 里大量重复的代码。但说穿了,Controller 事 实上只是一个自定义类,搭配一些 Attribute (特性)。而 Controller 也是目 前 ASP.NET 所欠缺的部分。 图 1 MVC (Model 2) 架构的运作方式,可与下图 2 的 ASP.NET MVC 项目 相互对应 事实上,在 Java / JSP / JavaEE 常引用的网站开发架构中, 还可分为 Model 1 与 Model 2。而 Model 1 还可分为二至三种,如下: ● 第一种是将 HTML 和 .NET (Java) code 混在一起,俗称意大利面的 写法,如:古早的 ASP。这种 Inline code 最为人垢病的问题,是代码的可读 性低、难以维护。 ● 第二种是由与 .aspx 一对一搭配的 Code-Behind code (.aspx.cs) 直接访问数据库,亦即二层式的架构。但这样的缺点是代码难 以重复使用,而且因为逻辑已写死在固定的页面里,会造成系统日后扩充、维护 的困难。 ● 第三种是经由自定义类库、App_Code 文件夹中的自定义类 或组件,去访问数据库,或做商业逻辑的运算 (JSP + JavaBean)。但此种做法 仍缺乏「流程 (flow)」的统一控管,导致每一支 ASPX (JSP) 都要验证用户身 份、验证 request 的参数、处理 Session、做例外处理,甚至包括 View 里的 写码原则、语系设定,都得在每一支 ASPX 对应的 Code-Behind 去处理,也因 此不适合大型系统的开发、扩充和维护。这种架构虽然也能做到虚拟式的三层式 或多层式架构,但也是目前 ASP.NET 的极限。 至于 Model 2,即俗称的 MVC Pattern,则加入了 Controller 的部分,将流程及事件交由中心控管,除 了可让整个系统的运作流程更为明确,有效切开各层的工作,亦可避免让 View 里的 Code-Behind 去处理 Model 中的数据库访问、商业逻辑运算,也不必再每 个页面重复撰写「流程传递和转向」的代码,而改由中央的 Controller 程序代 码 (action method) 来统一控管。 但 MVC 架构也有其缺点,例如开发 人员需要另外花时间转换观念及学习某一个 Framework,尤其是 .NET 的开发人 员,因为过去较没有 Controller 统一协调流程的观念,势必得重新习惯,将很 多原本写死在各个页面中的代码,统一改写在 Controller 里面。而且系统在设 计阶段时,即要先协调好各个类及对象,彼此间数据交换的格式及做法,因此势 必得拉长系统事先的分析、规划时程。但若能有像 Java Struts 或 ASP.NET MVC Framework 这样现成的框架可套用,则日后开发大型系统时,即可望达到事 半功倍的效果。 要开发 ASP.NET MVC,必须要有 Visual Studio 2008 + SP1,并下载 MVC 套件 (经过至少两年的研发,微软终于在 2009 年 4 月发布 了 1.0 正式版),下载网址如下: ASP.NET MVC 1.0 download (2009/04/09): http://www.microsoft.com/downloads/details.aspx? FamilyID=53289097-73ce-43bf-b6a6- 35e00103cb4b&displaylang=en 安装完成后,在新建项目时,会多出 一个「ASP.NET MVC Web Applicatio |
凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢! |