关于WebForms及一些ASP.NET开发上的经验(1)

记得数年前,当ASP.NET刚出现时,天下间Web开发框架中似乎出现了一个“巨人”,WebForms这种似 乎人人都能掌握的开发框架几乎瞬间流行起来。如果谁还在用传统ASP这种控制与表现混合的开发方式, 似乎立即变得低俗了许多。于是乎许许多多人都学会了拖控件+绑定的方式,“Web开发人员”也越来越多 ,一片红火,好不热闹。

风水轮流转,不知从什么时候开始Rails框架随着RoR忽的流行了开来,.NET社区也出现了Monorail, 批判WebForms声音也慢慢多了起来。如今微软自己也推出了基于ASP.NET平台的MVC框架,很多WebForms的 反对者似乎更加自信了:连微软自己都抛弃了WebForms,证明WebForms的确该退出历史舞台了,也听到了 一些类似于“WebForms不适合Web开发已经是公认的事实”这样“无比肯定”的话。先不说微软推出MVC到 底是不是意味着它抛弃了WebForms,单从那些MVC追捧者们“念念不忘”的WebForms的缺点上来看,我认 为他们大部分只是在“跟风”,就和当年许许多多人追捧WebForms一样。

不过我必须承认,我对ASP.NET MVC的了解仅限于Scott Gu博客上所写的内容,至今还没有下载过 ASP.NET 3.5 Extensions CTP。而对于RoR和Monorail也仅限于一些资料和示例,从来没有写过一行代码 。按照我的“标准”,我自己是没有资格评论MVC框架的优劣的。不过我还是想写这篇文章,因为我只会 WebForms平反,而不会“贬低”MVC框架;我只是想证明WebForms的那些缺点到底真的是缺点,还是开发 人员自身没有好好利用起这把利器。因此我将会根据我的经验,一一回应对WebForms比较常见的指责。如 果措辞上有任何的不妥,也请大家多多包涵。

我下面提到的做法,都是在经过实际开发过程检验的(例如开发人员与美工的合作),可能不是最佳 ,但是我认为还是不错的。

一、ViewState

HTTP是无连接无状态的协议,因此ASP.NET中提出了ViewState的概念,这样数据被重新Post回页面时 ,页面(控件)的状态就能恢复,因此才有了很多丰富的功能,例如一些复杂的控件事件。但是 ViewState带来的问题就是,如果使用不当,那么页面体积就会增加许多,网络中传输的数据太多自然会 影响性能。

但是ViewState真是必须的吗?我可以很负责任地说,在如今大部分Web应用的页面中,出现的几乎都 是大量的链接,点击链接就会跳转到一个和当前页面完全无关的新页面,这样的话,页面上的ViewState 又有什么用?因此我如果新建一个Web项目,做的第一件事情就是去Web.config中将enableViewState从全 局关闭——同时关闭的还有enableSessionState,这也是影响性能的因素之一(stateless也便于做Web服 务器层面的负载均衡)。

有人曾经反驳我,关闭了ViewState,用WebForm还有什么意义?我的答案是:意义多的很。WebForm提 供了控件模型,我能够使用“人人都能看懂和编写”的方式来设置或读取一个文本框里的值。我能轻松地 响应不同按钮的事件来编写触发各种业务逻辑。这就是意义,WebForms的开发还是非常简单而清晰的(在 一定程度上吧,不要“滥用”永远是正确的)。

嗯?刚才不是说只有保持ViewState才能使用控件的事件吗?没有ViewState怎么从控件中重新获取状 态呢?请注意我之前所说的是“复杂事件”。什么是复杂事件?TextBox的TextChange事件就是“复杂事 件”,GridView的Command事件也是复杂事件,但是Button的Click事件就是“简单事件”;与此相对的, GridView里的每一行的数据每一个子控件的状态是“复杂状态”,而TextBox的Text属性则是“简单状态 ”。“复杂状态”和“复杂事件”需要ViewState,因为与之有关的这些“控件”是ASP.NET“无中生有” 的,但是“简单事件”和“简单状态”基于页面中“必然”会提交的数据,它们自然能够还能够使用。在 我的ASP.NET开发过程中,使用的几乎都是“简单事件”和“简单状态”,而印象中放弃“复杂事件”和 “复杂状态”并没有给我带来任何的困扰。

当某人送给我们10件礼物,而其中只有4件是我需要的,那么为什么不能简单地放弃其余6件,偏偏要 去感谢只送给我们3件礼物的人而去指责前者呢?要知道他并没有恶意,那多余的6件也没有给我们造成任 何困扰。

但人就是那么奇怪。

时间: 2024-10-05 07:07:03

关于WebForms及一些ASP.NET开发上的经验(1)的相关文章

关于WebForms以及一些ASP.NET开发上的经验(2)

没想到我的文章引起了那么大的反应,看来最近MVC框架的确是一个热门话题.正如上一篇文章开始所 说的,我不会对MVC框架有任何"贬低",任何技术滥用都有问题,所以任何东西都会有所谓的Best Practice(去MSDN的Patterns & Practice栏目看看就知道了).我写这几篇文章,是想说明,很多 WebForms的缺点是被夸大了.WebForms的确有缺点,但是我们完全可以避开,并且仅仅利用到WebForms给 我们带来的便利.这其实也是一种Best Practic

关于WebForms以及一些ASP.NET开发上的经验(3)

四.生成复杂的ID难以使用JavaScript操作 我在上一篇文章的最后提到了,虽然使用WebForms我们能够对于页面上的HTML属性和样式等进行自由 的定制和控制,但是有一点是毋庸置疑的,我们没有办法(正常的办法吧,Hack不算)让服务器端控件在 客户端生成一个简单的ID.例如,一个TextBox控件,在服务器端的ID是txtUserName,但是最终在客户端 生成的ID可能是LoginForm_txtUserName,因为它被放在一个ID为LoginForm的NamingContainer

ASP.NET开发中怎么实现多图片上传并浏览的功能

问题描述 ASP.NET开发中怎么实现多图片上传并浏览的功能 ASP.NET开发中怎么实现多图片上传并浏览的功能,可以用什么控件来做? 解决方案 用jquery或者flash,自带的控件好像是不可以 解决方案二: 可以试试Aurigma Upload Suite,功能挺强大的一款图文上传控件,有多个版本,可以根据自己的需求进行选择.

按钮-用asp.net 开发的b/s 程序 客户安装在自己的电脑上 数据库也给用户 现在就是.

问题描述 用asp.net 开发的b/s 程序 客户安装在自己的电脑上 数据库也给用户 现在就是. 用asp.net 开发的b/s 程序 客户安装在自己的电脑上 数据库也给用户 现在就是公司对这个项目进行改造了 需要用户点升级按钮进行升级 我们具体改怎么做呢 麻烦给下 思路或者案例都行 解决方案 既然是BS端.还是装在客户自己电脑 上,这样一来,其实跟CS端一样了,你这是用BS当做CS用了. 基于在BS在客户电脑上端,可以修改他本地的文件 ,就直接到你公司 的官网或者指定地方下载 最新的 文件

【在线等】公司ASP.NET 开发的网站要搬到LINUX服务器上

问题描述 怎么在linux上搭建支持ASP.NET开发的网站?我安装好了MONO,接下来怎么办? 解决方案 解决方案二:传智博客上面好像是视频,去下撒?解决方案三:为什么啊,买不起WIN系统?解决方案四:公司有了一个linux服务器了在租一个win服务器浪费呀解决方案五: 解决方案六:或者装个windows的虚拟机解决方案七:Jexus网站资料:Mono官方说明:

ASP:利用ASP把图片上传到数据库

ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时在文字的旁边有该商品

在Dreamweaver中构建ASP.net开发环境

asp.net|dreamweaver 在开发网站,特别是开发网络数据库之前,首先应该认真构建好 Dreamweaver MX 2004+ASP.NET 开发环境.本例将向读者介绍如何在 Windows XP 操作系统下构建开发环境. 操作步骤 ( 1 )单击[开始]→[控制面板]. ( 2 )在弹出的[控制面板]窗口中双击[添加或删除程序]按钮图标,在弹出的[添加或删除程序]对话框中选择安装 IIS 服务器. ( 3 )安装好 IIS 服务器后,在[控制面板]窗口中单击管理工具,然后在弹出的[

实例分析:利用ASP把图片上传到数据库

上传|数据|数据库 ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时

如何利用ASP把图片上传到数据库

上传|数据|数据库 ASP(Active Server Pages)是Microsoft很早就推出的一种WEB应用程序解决方案,也是绝大多数从事网站开发人员很熟悉的一个比较简单的编程环境.通过ASP我们可以创建功能强大的动态的WEB应用程序.ASP虽然功能很强大,但有些功能用纯ASP代码完成不了,为了能保证开发出功能更加强大的WEB应用程序,我们可以借助调用COM组件. 在日常工作中,例如开发一个"商品网上销售系统"吧,为了使顾客对商品的外观有所了解,也就是顾客在看商品的文字介绍的同时