zoukankan      html  css  js  c++  java
  • ASP.NET Web Form 与 ASP.NET MVC 区别

    Asp.net 微软提供web开发框架或者技术。分Web Form和ASP.NET MVC。下面简单说明各自优缺点及使用场景。

    Web Form

    ASP.NET Webform提供了一个类似于winform的事件响应GUI模型(event-driven GUI),隐藏了HTTP、HTML、JavaScript等细节,将用户界面构建成一个服务器端的树结构控件(Control),每个控件通过ViewState保持自己的状态,并自动把客户端的js事件和服务器端的事件联系起来。这种做法使得开发WinForm和WebForm程序具有相近的开发体验,填平WinForm开发(有状态、面向对象的)和WebForm开发(无状态、面向HTML的)之间的鸿沟。

    这种设计在大型网站开发的时候,暴露出一系列弱点:

    ViewState可能过大。访问量非常大的情况下,viewstate占用的流量相当可观,这样直接影响页面传输速度。
    Page Life Cycle(页面生命周期):过于复杂。比如控件的Init事件在Page的Init事件之前执行,而Load事件是控件后执行。事件处理的事件
    缺乏对HTML的控制:一般每个控件负责自己的HTML输出,开发人员无法修改输出的HTML结构,除非自己写控件。而且HTML元素的ID比较复杂,也不便于js访问。
    界面设计和逻辑开发的关注分离做的不好:Webform开发是一个页面对应一个code-behind class,原本的目的是将展示和逻辑分离。但是在实际开发的时候,面对某些需求,还是经常会在class中写一些控制界面展示的代码。
    对测试的支持不好:页面和code-behind class绑定在一起,无法单独对逻辑进行测试;不支持单元测试。

    优点:

    1.支持丰富的服务器控件。如:GridView和ListView可以绑定数据,从而减少了大量的代码编写

    2.支持视图状态,每个控件状态以“隐藏域”的形式存在当前表单页面来达到“有状态”,这就是ViewState

    3.基于事件驱动编程, 如:click事件等,aspx页面与cs文件分离,即显示逻辑与处理逻辑分离,便于分工,美工 、编程。不像asp代码混乱

    4.学习成本低

    缺点:

    1.站在项目架构的角度,web form 不是很理想架构模式,尽管可以使用经典的三层架构或者mvp,,但不是最优秀的。

    2.性能 viewstate成功解决了asp问题,但同样引入新的问题,viewstate页面存储势必增加页面大小、降低程序性能

    3.代码可重用性不好;缺少对并行开发支持,因为aspx页面与cs紧密耦合太高; Seo不友好,因为 url指定具体aspx页面;不利于单元测试,因为使用大量事件处理函数

     

    ASP.NET MVC

    Asp.net Mvc架构模式是一种 低耦合、可测试的web应用程序框架,它是基于CLR和成熟的MVC架构构建的。ASP.NET MVC不支持ViewState和服务器控件。

    ASP.NET MVC的优点如下:

    采用MVC架构:分离了关注点,比如开发Controller的时候,只需关注如何处理交互,从request中获得什么数据,业务逻辑交给Model处理,还需要把哪些数据传给页面用于展示,如何展示交给View处理。
    更好的扩展性:ASP.NET MVC框架由一些列独立的组件构成,你可以轻松替换,如路由系统、the View Engine、the controller factory或者其它框架的组件。
    更好的可测性:关注点的分离另外一个好处就是更好的可测性。
    能够完全控制输出的HTML。
    强大的路由功能

    优点:

    1.架构降低了程序间的耦合性,M V C,分层,目标明确

    2.性能 不支持viewstate,完成html,已于结合jquery使用,提供程序性能

    3.支持并行开发,可扩展性好,继承asp.net 特性:表单验证、缓存、会话等。

    缺点:

    没有viewstate和基于事件的编程,上手慢,学习成本高。

    使用场景

    1. 快速开发------>web form

    2. 单元测试、性能-------->mvc

    3. 大量使用 js、jquery ------> mvc

    4. 代码重用性------->mvc

  • 相关阅读:
    打印九九乘法表
    PAT (Basic Level) Practice (中文) 1091 N-自守数 (15分)
    PAT (Basic Level) Practice (中文)1090 危险品装箱 (25分) (单身狗进阶版 使用map+ vector+数组标记)
    PAT (Basic Level) Practice (中文) 1088 三人行 (20分)
    PAT (Basic Level) Practice (中文) 1087 有多少不同的值 (20分)
    PAT (Basic Level) Practice (中文)1086 就不告诉你 (15分)
    PAT (Basic Level) Practice (中文) 1085 PAT单位排行 (25分) (map搜索+set排序+并列进行排行)
    PAT (Basic Level) Practice (中文) 1083 是否存在相等的差 (20分)
    PAT (Basic Level) Practice (中文) 1082 射击比赛 (20分)
    PAT (Basic Level) Practice (中文) 1081 检查密码 (15分)
  • 原文地址:https://www.cnblogs.com/yuan-jun/p/6735327.html
Copyright © 2011-2022 走看看