在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
尽管ASP.NET MVC架构和Web Form架构区别很大,但是还是有很多共同之处。毕竟它们都是以ASP.NET API与.NET框架为基础构建的。比较一下ASP.NET MVC和Web Form框架,以便知道有多少Web Form的概念与ASP.NET MVC开发相关。也许我们不知道,基于.NET平台开发网站的框架,实际上可以分成两个部分:可视化用户界面(Web Form)和后台Web组件(ASP.NET)。两者可以通过它们的命名空间区分开:所有System.Web.UI.*命名空间下的内容可以称为Web Form,而System.Web.*命名空间下的其他内容可以称为ASP.NET。与Web Form一样,ASP.NET MVC(所有类都在System.Web.Mvc命名空间下)也是基于ASP.NET平台构建的。所以两个平台可以十分相似,也可以完全不同,这取决于怎么看待这个问题。 大家应该对使用Visual Studio编辑ASP.NET MVC网站及其项目不会感到陌生,这和Web Form网站开发一样,都是基于.NET平台的应用程序。还可能要注意另外一些共享文件,比如web.config和Global.asax,它们在ASP.NET MVC 和 Web Form应用中起着重要作用。Web.config文件是一个XML文本文件,它用来储存ASP.NET Web应用程序的配置信息,而Global.asax 文件,又称为ASP.NET 应用程序文件,提供了一种在一个中心位置响应应用程序级或模块级事件的方法。ASP.NET MVC和Web Form共享的最著名的部分应该就是HTTP处理程序和模块(Handler and Modele)。虽然大部分Web Form API(System.Web.UI命名空间下)不会在ASP.NET MVC程序下运行,但是HTTP处理程序和模块确实是ASP.NET(System.Web)API的一部分,所以它们仍然会在ASP.NET MVC上下文里发挥作用。事实上,ASP.NET MVC管道本身正是从使用HTTP处理程序,处理外部请求开始的。 管理状态管理状态即与用户相关的数据,在每个程序里都是个非常重要的内容,Web的无状态性导致Web应用程序中的管理状态数据变得相当复杂。为了处理管理状态这个问题,ASP.NET Web Form引入了“视图状态”的概念。每个请求的状态数据,在序列化之后会临时储存在页面的隐藏域控件里,随后的请求都会回传这些数据。视图是ASP.NET Web Form的重要部分,几乎每个页面和组件都会或多或少依赖于它。视图状态抽象也有它的缺陷,每个包含视图状态的请求必须以Form Post方式提交给服务器,而那些隐藏域的数据大小令人头疼:平时用不到,有时候却又非常大。最后它成为Web Form的性能瓶颈。 ASP.NET MVC具有完全不同的状态管理方法,它留给开发人员去实现。最重要的是,ASP.NET MVC完全抛弃了视图状态机制。除了视图状态,ASP.NET还提供了其他几种状态管理方法,同样可以在ASP.NET MVC里使用。例如,可以使用ASP.NET缓存和会话状态,或者HttpContext.Items API,这些可以帮助你在MVC应用程序里管理状态。 部署和运行时ASP.NET MVC的产品环境部署和Web Form程序一样。这意味着之前学习的关于部署和维护ASP.NET程序的任何东西,比如IIS7、.NET应用程序池、跟踪、错误调试和部署程序集bin文件夹等,同样可以应用到ASP.NET MVC程序的部署中来。虽然ASP.NET MVC和Web Form程序采用了不同的架构,但是,从根本上说,两者都是部署并执行.NET代码来处理HTTP请求的。 #下表列出了ASP.NET MVC和Web Form的区别: 应用程序业务和视图分离: URL和路由: 状态管理: 布局与母版页: 要点总结如果你拥有多年的Web Form开发经验,那么学习ASP.NET MVC时可能也有障碍:除了它们的许多共同点和相似性之外,ASP.NET MVC和Web Form框架架构和设计目标在根本上是不同的。如果你习惯于“Web Form方式”,而且喜欢把这些方法用到ASP.NET MVC中来,那么可能会带来问题。正如之前介绍的“最重要的”和“危险的”的区别就是Web Form尽全力引入并维护视图状态,而MVC没有。从技术角度来说,这个问题就是从Web Form转向ASP.NET MVC开发时不再有视图状态,ASP.NET Web Form中大部分“状态性的”东西都不会再出现了。ASP.NET MVC的方式是通过一个临时媒介来存储这些数据,比如会话状态和应用程序缓存。 另一个编写代码时的最大区别就是Web Form依赖于服务器控件和用户控件,而MVC使用HTML和部分视图或第三方Jquery UI。使用Razor语法非常精简高效,替代ASPX视图引擎是很好的选择,也可以用Web Form语法开发MVC视图。这可以给Web Form开发者一个惊喜。
|
请发表评论