设为首页 收藏本站
查看: 1839|回复: 0

[经验分享] 关于ASP.NET WebForm与ASP.NET MVC的比较

[复制链接]

尚未签到

发表于 2017-12-29 11:18:14 | 显示全部楼层 |阅读模式
DSC0000.jpg

  WebForm的理解
  1、 WebForm概念
  ASP.NETWebform提供了一个类似于Winform的事件响应GUI模型(event-drivenGUI),隐藏了HTTP、HTML、JavaScript等细节,将用户界面构建成一个服务器端的树结构控件(Control),每个控件通过ViewState保持自己的状态,并自动把客户端的js事件和服务器端的事件联系起来。这种做法使得开发WinForm和WebForm程序具有相近的开发体验,填平WinForm开发(有状态、面向对象的)和WebForm开发(无状态、面向HTML的)之间的鸿沟。
  2、WebForm 请求流程
  比如访问 http://www.qidian.com/Default.aspx
  1、Http请求(物理地址:Default.aspx)
  ①发送请求: 浏览器向服务器发送请求报文,此时由IIS虚拟目录接收。(通过配置过IIS,把网站挂载在服务器上,通过访问虚拟目录的方式访问网站的。)
  ②转交请求: 服务器端的IIS软件接收到请求后,把请求交给.NET FrameWork进行处理。
  ③创建页面类对象:.NET FrameWork根据请求的地址index.aspx,会创建对应的index_aspx类的对象(页面对象)。
  IIS的内部机制:
  实现一个IHttphandler的接口
  该接口实现一个ProcessRequest方法
  该方法会调用对应页面的Page_load方法
  处理的业务逻辑或者是访问数据库的代码
  要输出的Html或者其它内容
  2、返回给浏览器
  ①转交回复: 通过IIS传输出给浏览器,要输出的html元素或其他内容(html+js+css等)
  ②解析为图形界面:浏览器解析html代码,并翻译为图形化界面
  如图:
DSC0001.jpg

  2、 WebForm的优点:
  1.   有大量的服务器控件支持,比如:GridView、Repeater等控件可以方便的进行数据绑定,从而减少的大量代码的编写。
  2.   学习成本低,由于微软封装的比较深,造成深入学习的难度加大。
  3.   基于事件驱动编程,如:click事件等,aspx和cs文件分离,即显示逻辑和处理逻辑分离。
  4.   支持视图状态,每个控件以“隐藏域”的形式存在当前表单页面未达到“有状态”,即ViewState。
  3、 WebForm的缺点
  1.   由于使用的ViewState会增加页面的负担,造成性能不是很高。
  2.   代码重用性不高,缺少对并行开发的支持,
  3.   因为采用code-behind 代码后植技术,使aspx页面与cs紧密耦合度太高。
  4.   对Seo不友好,因为URL指定具体的aspx页面。
  5.   因为紧密耦合度太高、使用大量的事件处理函数,不利于单元测试。
  二、       MVC的理解
  1、 MVC的概念
  Asp.netMvc架构模式是一种 低耦合、可测试的web应用程序框架,它是基于CLR和成熟的MVC架构构建的。ASP.NET MVC不支持ViewState和服务器控件。
  2、 MVC的请求流程
  比如访问:http://www.google.com.hk/FirstPage/Default
  1、Http请求(逻辑地址:FirstPage/Default)
  ①发送请求(FirstPage/Default)
  ②转交请求(同上)
  ③创建类对象+方法
  .NET FrameWork根据路由配置,解析URL,并创建news类的对象,并调用对象的index方法。通过View方法加载视图,然后访问视图文件夹下的index.cshtml
  2、返回给浏览器
  如图:
DSC0002.jpg

  3、 MVC的优点
  1.   架构降低了程序间的耦合性。
  2.   不支持ViewState,页面更加干净,可以提升程序的性能。
  3.   支持并行开发,可扩展性好,继承了asp.net的特性,表单验证、缓存、会话等。
  4.   由于程序耦合度低,可以比较顺利的进行单元测试。
  5.   通过修改路由规则,可以控制生成自定义的url,因此控制生成seo友好的url将更加容易。
  6.   强类型view实现,更安全,更高效。
  4、 MVC的缺点
  需要有一定的html、css、js、jquery前端技术,也就增加了一些学习的成本。
  MVC和WebForm的选择场景
  新开发的项目建议采用MVC。
  想要快速开发的中小型项目可以选择WebForm。
  比较关注单元测试、性能、SEO、代码重用性的话建议采用MVC。
  最后结语
  MVC和WebForm都有自己的优缺点,目前两种技术都存在,证明都有自己的价值,虽然现在MVC应用越来越广发,我们不能一味的否定WebForm。一个高级程序员用WebForm实现的网站性能并不一定比初级程序员用MVC实现的网站性能差,最重要的还是努力提升自己的技术能力才是王道!
  欢迎关注我的公众号:DoNet技术分享平台

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-429295-1-1.html 上篇帖子: nginx~为docker容器添加负载均衡 下篇帖子: 使用FlashPaper在线转换.doc为.swf
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表