asp.net 的 web form 过时了吗
本文链接: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 过时了吗的更多相关文章
- ASP。NET Web表单模型,部分呈现和事件
下载EventExample.zip - 41.33 KB 下载EventandAjaxExample.zip - 41.94 KB 介绍 通过参考ASP获得Web应用程序环境及其约束的概述.NET ...
- ASP.NET MVC与ASP.NET Web Form简单区别与适用场景
概论: Asp.net 微软 提供web开发框架或者技术.分Web Form和ASP.NET MVC.下面简单说明各自优缺点及使用场景. Web Form 优点: 1.支持丰富的服务器控件.如:Gr ...
- Web Form 和asp.net mvc 差别
Asp.net MVC 和web Form的基本区别 Web Form ASP.NET MVC 视图和逻辑紧密耦合 视图和逻辑分离 页面(给予文件的URL) 控制器(基于路由的URL) 状态管理(视图 ...
- Asp.net web form url route使用总结
asp.net web form 使用URL路由 注不是mvc中的路由 一.前台控件使用路由,通过表达式生成url地址,注意给路由参数赋值,防止使用了其他路由表达式值方式1:<asp:Hyper ...
- ASP.Net Web Form<一> aspx文件编译及呈现
对比复习下JSP 1.jsp的本质是Servlet ,会在第一次被访问时会被翻译成一个类文件,从此对这个页面的访问都是由这个类文件执行后进行输出. aspx 本质是IHttpHandler 2.jsp ...
- ASP.NET Web Form和MVC中防止F5刷新引起的重复提交问题
转载 http://www.cnblogs.com/hiteddy/archive/2012/03/29/Prevent_Resubmit_When_Refresh_Reload_In_ASP_NET ...
- 转载ASP.NET MVC 和ASP.NET Web Form简单区别
转载原地址 http://www.cnblogs.com/lei2007/p/3315431.html 概论: Asp.net 微软 提供web开发框架或者技术.分Web Form和ASP.NET ...
- 关于asp.net web form 和 asp.net mvc 的区别
asp.net web forms 有什么缺陷? 1.视图状态臃肿:服务器和客户端传输过程中包含了大量的试图状态——在现在的web程序中甚至多达几百kb,而且每次往返都会请求,导致服务器请求带宽增加, ...
- 在asp.net web form项目中添加webapi接口
我有一个支付宝服务网关是ASP.NET WEB FORM项目,但是最近这个网关需要对外提供几个接口,想了下,使用web api比较合适,实现很简单,GO 1,首先添加一个文件夹名字叫App_Start ...
随机推荐
- Mac中如何搭建Vue项目并利用VSCode开发
(一)部署Node环境 (1)下载适合Mac环境的Node包,点击进入下载页面 (2)安装Node环境:找到下载好的Node包,这里是node-v12.14.1.pkg,我们双击它,会进入Node.j ...
- .net mvc中epplus导出excel
帮助类 using OfficeOpenXml; using OfficeOpenXml.Style; using System; using System.Collections.Generic; ...
- JZOJ5988 珂学计树题
题意 liu_runda曾经是个喜欢切数数题的OIer,往往看到数数题他就开始刚数数题.于是liu_runda出了一个数树题.听说OI圈子珂学盛行,他就在题目名字里加了珂学二字.一开始liu_rund ...
- Cows Of The Round Table【DFS】
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAAz0AAAKiCAIAAABzTSUAAAAgAElEQVR4Aey9C5RnWVXff4GBUR6j8u ...
- 字符串hash补充(模数情况下)
字符串模板,在模数意义下的,比较好用 #include<stdio.h> typedef long long LL; /*[字符串哈希算法] 字符串哈希算法的提出,涉及到如何快速地求两个字 ...
- ST表求区间最值
#include<bits/stdc++.h> #define ll long long #define lowbit(x) x&-x using namespace std; ; ...
- 【巨杉数据库Sequoiadb】巨杉⼯具系列之一 | ⼤对象存储⼯具sdblobtool
近期,巨杉数据库正式推出了完整的SequoiaDB 工具包,作为辅助工具,更好地帮助大家使用和运维管理分布式数据库.为此,巨杉技术社区还将持续推出工具系列文章,帮助大家了解巨杉数据库丰富的工具矩阵. ...
- Java枚举类型的使用,数值的二进制表示
一.Java枚举类型的使用 首先请看这段代码: package java上课; public class EnumTest { public static void main(String[] arg ...
- 【C语言】求s(n)=a+aa+aaa+...+aa...a的值
原理:比如a=2,s(1)=2,s(2)=2+2*10+2,s(3)=2+2*10+2+(2*10+2)*10+2 ..... 规律: item=item*10+a sum=sum+item 代码 ...
- 使用win10 IIS 发布局域网网站
1.安装IIS 按win+R键,输入control,打开控制面板,点击程序,点击 启用或关闭windows 功能,将Internet Information Service勾上,把下属的asp.net ...