asp.net webform设计思路的思考
我使用asp.net的webform框架进行web应用程序的开发已经差不多四年了,在整个开发生涯中,也使用过一年asp.net的mvc框架。因为网上经常有讨论webform框架和mvc框架的优劣,所以自己也对这两者进行了关注,因为自己最熟悉webform框架,所以就会考虑它的优势是什么?设计思路是什么?
要理解asp.net的设计思路,必须考虑它的产生年代,产生的技术基础,还有观察同时代其他动态网页技术的特点和思路。首先是产生asp.net的技术基础,以下援引百度百科:
“1996年,ASP 1.0(Active Server Pages)版本出现了,它引起了Web开发的新革命,降低了动态网页开发的难度。以前开发动态网页需要编写大量繁杂的C代码,编程效率非常低下,而且需要Web网页开发者掌握非常高的编程技巧。而ASP使用简单的脚本语言,能够将代码直接嵌入HTML,使设计Web页面变得更简单。虽然ASP非常简单,但却能够实现非常强大的功能,这一切得益于其组件。特别是ADO组件,使得在网页中访问数据库易如反掌。这一切推动了动态网页的快速发展与建设,同时使ASP得到迅速流行。
JSP技术比php、asp技术产生的更晚,JSP技术现在被用来开发超大型网站,但是并不是因为JSP技术本身非常优秀,而是因为它产生于java之上。
- HTML 服务器控件 - 传统的 HTML 标签
- Web 服务器控件 - 新的 ASP.NET 标签
- Validation 服务器控件 - 用于输入验证
网上有人说,这是为了解决开发asp页面会造成意大利面条的问题。我的理解服务器控件的改变远不止于此,假如你创建一个纯服务器控件的页面(asp.net出现不久,很多人就不建议这么干了,至于为什么,我知道会生成大量viewstate串,当然还有其他原因),然后对页面元素进行操作,随着使用的熟练,你可能会意识到webform的页面文件不是在html字符中间拼东西,或者说不是在一堆服务器无法理解的东东中间,动态的生成一些字符。它前进了很多步,它把页面的所有html便签加上标识,经过页面引擎处理,变成了可以被灵活操作的类,程序开发人员可以随意操作这些标签类,然后在一个合适的时候,再将这些类顺序的“ToString()”成字符串,拼到页面上。发明服务器控件技术,作者的思想来源可能是桌面应用程序开发技术,从dos操作系统(命令行交互),到视窗操作系统(主要是鼠标点击、键盘按键交互),开发桌面应用程序,会大量使用控件技术,控件复用技术可以大大提升开发效率。为什么猜测作者的思想可能来源于此,因为asp技术出现时,当时桌面应用程序开发还是主流,作者可能浸染在这种氛围内,把桌面应用程序开发的设计思想转移至web程序的开发。这里要引出另外一个东西,就是事件驱动,随便新建一个aspx页面,最重要的是事件处理方法,Page_Load。windows操作系统中大量使用事件驱动,是基于“事件驱动模型”的。那么作者在webform中使用事件驱动,也可能借鉴了windows。
不管是服务器控件,还是事件驱动,这两种(或者说是一种,因为控件和事件之间本就相互关联)设计思想很大的影响了webform框架,开发web应用程序的方式。服务器控件加事件驱动虽然利于很快开发一个管理系统型web程序,但是并不符合web应用程序本身的运行思想,这一点被很多人批评,web程序因为不运行在桌面操作系统中,最早的时候它甚至不能交互,只是为了便于交流信息,只用于展示信息。web程序本质运行原理是,通过浏览器向web服务器发送请求处理命令,有web托管程序接收请求命令,进行操作,然后返回处理结果(结果可能是展示一篇文章,或者是告诉你文章删除成功,或者是将你提交的信息内容进行了保存)。webform容易让人误会它运行在操作系统或者浏览器中,所有代码执行在客户端。虽然现在的浏览器真的可以将动态页面放在浏览器端执行,但是webform页面其实是有服务器端的程序处理的。
如果要评价和审视webform框架的设计思想,不得不对比另外一个框架思想,那就是mvc框架(模型)的设计思想。mvc模型的发明,或许不是刻意设计,而是对事情的深入思考,然后抓住本质的产物。mvc模型是为了处理问题清晰明了,降低耦合性。
由于不会php和jsp就没办法对比这两种技术了,其实很想把它们也拉进来对比下,特别是jsp技术,因为java的跨平台性,jsp设计时不会有太多windows的影子,windows常常有种不想告诉你复杂的真相,所以我给你包装一个简单的世界给你的感觉,然后随着你的成长,这种早期的包装可能会是一个大的负担,或者说微软的东西有太多windows的影子,过于围绕windows了。
最后总结一下,如果你放开自己紧张的神经,不给自己设限,随意联想,随意设计,不过于考虑完美,你会感觉到web技术发展中一些思想的传承和变革。从简单的html纯文本展示,文本浏览器的发明,背后的http协议0.9,再到图片展示,LiveScript的发明(就是javascript),到CGI程序,再到Servlet拼接html技术,到php脚本,到asp动态页面技术,到jsp动态页面技术,到webfrom框架,spring框架,mvc框架这些技术背后隐隐有一系列思想在串联起来。一个东西的发明不是偶然的,往往有一个不起眼的起始。
转载于:https://www.cnblogs.com/Tpf386/p/9588243.html
asp.net webform设计思路的思考相关推荐
- SEE Conf: Umi 4 设计思路文字稿
大家好,我是若川.持续组织了5个月源码共读活动,感兴趣的可以点此加我微信 ruochuan12 参与,每周大家一起学习200行左右的源码,共同进步.同时极力推荐订阅我写的<学习源码整体架构系列& ...
- ASP.NET -- WebForm -- Cookie的使用 应用程序权限设计 权限设计文章汇总 asp.net后台管理系统-登陆模块-是否自动登陆 C# 读写文件摘要...
ASP.NET -- WebForm -- Cookie的使用 ASP.NET -- WebForm -- Cookie的使用 Cookie是存在浏览器内存或磁盘上. 1. Test3.aspx文件 ...
- ASP.NET系统分析与设计思路探讨 (原创)
ASP.NET系统分析与设计思路探讨 (以前做的一片文章,是学完3层结构后写在) ASP.NET是以浏览器为用户界面的,与WINDOWS方式最大的区别在于无法保持状态.假如用户必须完 ...
- int.TryParse非预期执行引发的思考 ASP.NET -- WebForm -- 给图片添加水印标记 Windows -- 使用批处理文件.bat删除旧文件...
int.TryParse非预期执行引发的思考 问题出现 这天在写一个页面,想谨慎些就用了int.TryParse,结果出问题了. 代码如下: Copy int id = 1000; //Request ...
- asp实现注册登录界面_(06)ASP登录页面的设计思路
一.登录面页的设计思路 登录页面有3个部分组成: 1. 用户名 2. 密码 3. 验证码 登录页面的显示是由下图所示的index.asp文件在服务器端执行后返顺到浏览器显示的.这个index.asp文 ...
- ASP.NET 多媒体电子报刊设计思路
近期项目需要制作一个用来展示企业报刊的B/S平台,记录一下自己的设计思路. 最先开始,想到的就是百度文库,做一个类似的来展示企业的报刊,使用了FlexPaper以及Pdf2Swf进行开发,最终出来的效 ...
- 总体设计和登陆服务器 [游戏服务器的设计思路 转]
作者博客: http://blog.csdn.net/yahle 大纲: 项目的历史背景 服务器的设计思路 服务器的技术 服务器的设计 服务器的改进 图形引擎myhoho及UI库的设计 客户端与服务器 ...
- asp.net webform 与asp.net mvc 混合开发项目总结
公司里的一个web项目 运行速度比较慢(原来是asp.net webform 建立的时候是通过新建网站 不是web项目) 这个项目最早是VS2003 做的时候asp.net也不是很熟悉 订单登记的页 ...
- asp.net webform html,ASP.NET WebForm页面内容输出方式
这次我们谈的话题是"Web Form页面上输出内容的方式".这其实是一个非常旧的话题了,因为本文的内容甚至可以运用于ASP.NET 1.1之上.不过这个话题的适用范围很广,因为即使 ...
最新文章
- 一文带你认识:Liunx的历史
- 计算机应用基础任务化教程知识点,计算机应用基础任务化教程
- TSRC白帽子,10亿用户的守护者
- Android权限【大全】 .
- freeRTOS V10.0.1移植到STM32F407标准库 - 环境Keil5
- 数据库MySQL/mariadb知识点——触发器
- 【python教程入门学习】用Python制作迷宫GIF
- Redis系列 --第一篇
- centos内核错误_centos 升级内核失败回救
- Exploit 代码用于攻击中?GitHub 马上删除
- 天梯—重要的话说三遍(C语言)
- visio流程图总是自动变小_Visio 2010 中新增功能详细介绍
- 2013年度最强AngularJS资源合集
- 数据库和SQL基本知识点
- java drawline_JAVA drawLine()方法怎么用?
- alipay.data.bill.balance.query ISV权限不足
- java线程的生命周期(图解)
- C语言:使用函数输出一个数字构成的塔
- java行转列,列转行,二维数据x轴y轴互换
- html实现爱情告白(附源码)
热门文章
- java dateformat hh_SimpleDateFormat上的Java HH:mm和hh:mm之间的区别
- 图像分割总体介绍——深度AI科普团队
- 该文件可能是只读的 或者您要访问的位置_Linux应用编程之文件操作 系统调用篇(下)...
- webbrowser 检测ajax,控制台获取网页AJAX的返回数据,用的WebBroWser
- js深拷贝和浅拷贝对数组的影响_JS基础——深拷贝与浅拷贝
- Linux 中 elasticsearch6.3.0 单机安装
- 怎么利用linux来操作手机,Linux_在Linux操作系统下操作蓝牙手机的方法,所谓操作,到现在只是通过蓝 - phpStudy...
- 郑州大学计算机学科导论,郑州大学计算机导论大一试题答案.doc
- php递归简单例子,php递归json类实例
- 容器viewController添加或者删除子viewController