本文链接:https://blog.csdn.net/closurer/article/details/79526006
web form 其实是一个超前的设计。

每个厂商都希望服务器端和客户端采用同样的语言编程,这是为了商业利益考虑,如果能实现,对程序员来说,也是一个福音。

sun 在服务器端有 java,在客户端就做了 javascript,但据说 javascript 的设计者其实不太喜欢 java,所以它们只有名字是相似的。

微软在 asp 的时代,有一种叫 vbscript 的客户端脚本,如果页面只在 ie 上跑,其实有很好的编程体验,因为 asp 的服务器端代码,就是用 vb 写的。可惜的是,微软在浏览器并没有在桌面市场那种垄断的号召力,vbscript 并没有流行起来。

现在使用 javascript 的群体,也可以使用 node.js 在服务器端编程。

进入了 .net 时代,微软并没有放弃统一客户端和服务器端编程方式的努力,web form 就是一种尝试。它使得程序员可以完全忽略客户端,只使用 .net 家族的语言就可以进行 web 编程,客户端的 javascript,完全是在服务器端生成的。

web form 还有一个目标,就是统一 web form 和 win form 的编程体验,你可以看到 web form 的事件模型和 win form 非常的相似,也和 win form 编程一样,有可视化的界面编辑器。

这种统一程序员在各平台的编程体验,降低学习成本的想法本身是很好的。我个人认为在立意上是比 struct 更高明的设计。那么,是什么造成了 web form 的接受度强差人意呢?

web form 的阻力,只从技术的方面考虑,我认为有两个原因:

一、体验糟糕的 post back。web form 编程模型要求整个页面回发,这个回发在局域网的带宽内传输是没有问题的,但是公网会有点困难。中国的家庭宽带,上行要比下行的带宽小得多。运营商的广告上面说的,都是下行的带宽,直到现在,很多家庭宽带的上行都只有 512kb,转换成存储的字节单位,只有 64KB/s。csdn 的一个帖子页面,一般都在 20KB,如果整个页面回发,即使网速跑满,时间都占了约 300ms,这对用户体验是有明显的影响的,何况带宽一般都是跑不满的。也就是说,web form 这种先进的编程模型,是依赖于高速的带宽,包括高速的上行带宽的。这也是现在很多企业的内部系统,喜欢使用 .net 的原因之一。

二、与前端编程思维的抵触。web form 的编程模型使用的是 .net 家族的语言,如果完全按照这种思维,是完全不需要前端 javascript 的开发的。但现实的情况是,有很多优秀的控件,是完全基于 javascript 去开发的,如果你要使用这些控件,那么需要转变你的编程思维。虽然这也不难,但是很多程序员要完成这种思维转变,还是需要一点时间的,论坛上很多人问客户端的 html 怎么写,就是这个原因。毕竟习惯了使用 C# 或 vb 去控制服务器端控件,或者直接使用可视化界面编辑器去控制样式,突然间变成要用 javascript,需要一个适应的过程。

现在 web form 之所以大量被使用在企业内部系统,也是它的特点所决定的。

除了带宽足够大,企业产品对界面的要求不高,很多做企业产品的团队,根本就没有前端工程师,也不存在什么分工合作不顺畅的问题了。

web form 的开发速度快,是得到大多数人的认同的。比如做几个下拉菜单的联动,用 web form 的事件模型会很简单,当然了,每次下拉选择完成之后,整个页面都会刷新一下,这对企业用户来说不算什么。毕竟,一个企业内部系统,目的是整个企业的信息管理,而不像社交平台那样,只为用户爽。

基于 web form 做公网产品的种种不足,mvc 是必然要做的,也就是说,mvc 更适合做面向公网的产品。

很多程序员会说,在 mvc 出来之前,就已经不使用 web form 的回发了,这样的程序员,其实已经不需要 mvc 了,因为他们已经在更基本的层次去解决了问题。

现在 .net 的 web 编程,选择很多:.aspx .ashx .cshtml,.aspx 也可以选择不用服务器端控件,不使用 form,不使用 view state

你可以选择在更底层,使用更灵活的方法去编程,也可以选择在更高的层次,使用简便快速的方法去编程,所以就不用说哪一种技术应该完全被淘汰了。

根据帖子:http://bbs.csdn.net/topics/392077893 整理。

asp.net 的 web form 过时了吗的更多相关文章

  1. ASP。NET Web表单模型,部分呈现和事件

    下载EventExample.zip - 41.33 KB 下载EventandAjaxExample.zip - 41.94 KB 介绍 通过参考ASP获得Web应用程序环境及其约束的概述.NET ...

  2. ASP.NET MVC与ASP.NET Web Form简单区别与适用场景

    概论: Asp.net  微软 提供web开发框架或者技术.分Web Form和ASP.NET MVC.下面简单说明各自优缺点及使用场景. Web Form 优点: 1.支持丰富的服务器控件.如:Gr ...

  3. Web Form 和asp.net mvc 差别

    Asp.net MVC 和web Form的基本区别 Web Form ASP.NET MVC 视图和逻辑紧密耦合 视图和逻辑分离 页面(给予文件的URL) 控制器(基于路由的URL) 状态管理(视图 ...

  4. Asp.net web form url route使用总结

    asp.net web form 使用URL路由 注不是mvc中的路由 一.前台控件使用路由,通过表达式生成url地址,注意给路由参数赋值,防止使用了其他路由表达式值方式1:<asp:Hyper ...

  5. ASP.Net Web Form<一> aspx文件编译及呈现

    对比复习下JSP 1.jsp的本质是Servlet ,会在第一次被访问时会被翻译成一个类文件,从此对这个页面的访问都是由这个类文件执行后进行输出. aspx 本质是IHttpHandler 2.jsp ...

  6. ASP.NET Web Form和MVC中防止F5刷新引起的重复提交问题

    转载 http://www.cnblogs.com/hiteddy/archive/2012/03/29/Prevent_Resubmit_When_Refresh_Reload_In_ASP_NET ...

  7. 转载ASP.NET MVC 和ASP.NET Web Form简单区别

    转载原地址 http://www.cnblogs.com/lei2007/p/3315431.html 概论: Asp.net  微软 提供web开发框架或者技术.分Web Form和ASP.NET  ...

  8. 关于asp.net web form 和 asp.net mvc 的区别

    asp.net web forms 有什么缺陷? 1.视图状态臃肿:服务器和客户端传输过程中包含了大量的试图状态——在现在的web程序中甚至多达几百kb,而且每次往返都会请求,导致服务器请求带宽增加, ...

  9. 在asp.net web form项目中添加webapi接口

    我有一个支付宝服务网关是ASP.NET WEB FORM项目,但是最近这个网关需要对外提供几个接口,想了下,使用web api比较合适,实现很简单,GO 1,首先添加一个文件夹名字叫App_Start ...

随机推荐

  1. Json与Ajax(注册实例)

    需要在服务器上进行哈 jquery的ajax方法: // jquery请求 $.ajax({ url: "./server/slider.json", type: "po ...

  2. ADB之安装APK

    一.下载安装adb工具 下载安装,cmd测试是否成功 二.连接设备 1.手机打开USB测试 2.测试连接 三.安装应用 adb -s [设备编号] install [apk的完整路径]  

  3. JavaScript 自适应轮播图

    代码 话不多说,先上代码,方便复制粘贴.演示 <!DOCTYPE html> <html lang="en"> <head> <meta ...

  4. C++ fstream文件操作问题记录

    今天测试阿里云OSS文件上传接口,用fstream获取文件指针,代码如下 std::shared_ptr<std::iostream> content = std::make_shared ...

  5. openssl 生成免费证书

    原文链接:https://www.cnblogs.com/tugenhua0707/p/10927722.html 一:什么是openssl? 它的作用是?应用场景是什么? 即百度百科说:openss ...

  6. MongoDB批量更新和批量插入的方式

    最近,在调试代码中发现向MongoDB插入或者更新文档记录时若是多条的话都是采用for循环操作的,这样的处理方式会造成数据操作耗时,不符合批量处理的原则:对此,个人整理了一下有关MongoDB的批量更 ...

  7. 假期学习【四】RDD编程实验一

    1.今天把Spark编程第三个实验的Scala独立程序编程写完了.使用 sbt 打包 Scala 程序,然后提交到Spark运行. 2.完成了实验四的第一项 (1)该系总共有多少学生:   map(t ...

  8. luogu P2158 [SDOI2008]仪仗队 (欧拉函数)

    欧拉函数裸题 可惜我太久没做题忘了欧拉函数是什么了... 注意判断一下n = 1的情况就好了 #include <cstdio> using namespace std; ; typede ...

  9. [HNOI2017] 大佬 - DP,BFS,Hash,单调性

    这真的是一道综合题.然而感觉A得莫名其妙,交上去的时候其实非常虚,然后就莫名其妙地AC了? 首先我们考虑到,所有和怼有关的操作都是时刻无关的.也就是说,我们把这些操作拆散放到任何时候都对结果不会有影响 ...

  10. 关于Git的右键菜单消失的处理

    右键菜单 Git Bash Here window + R,输入regedit回车进入注册表 进入如下目录 HKEY_CLASSES_ROOT\Directory\Background\shell 在 ...