爱恨交加的asp.net服务器控件

服务器控件或者runat="server"的控件,给asp.net的处理提供了方便,其优点有:

1、方便动态的控制控件的属性和事件处理,使我们好像在做桌面开发

2、可以使用viewstate 来自动保持控件的值,避免在服务器往返,也就是刷新是,浏览器控件的值丢失。

除此之外,我没有看到服务器控件的优点。在局域网应用中当然无所谓。对性能要求较低的场景中也无所谓,毕竟服务器控件能提高我们的开发效率。然而,对性能要求严格的应用来说,就有点不爽了。

1、加载速度过慢,因为其中的viewstate的尺寸随着我们使用服务器控件的数量而增加

2、在访问量大的时候,对cpu和内存就是一个考验了,服务器控件从创建到销毁都在消耗着cpu时间和占用大量内存。

而相比之下,html控件就没有这种消耗。但是,html控件不能保持状态,该怎么办?

例如我们用服务器控件可以很简单的做一个注册页,并能在用户出错时,保持控件的值。而htm控件已提交值就丢失了。我们遇到过这种两难的境地,后来,直接用ajax提交的方式,干脆不让页面刷新,控件值自然就保持住了。

其实,不光是服务器控件,有很多微软提供的东西,web开发时我都不敢用了 。不就是请求和响应吗?何必搞得难么复杂?微软的东西向来不考虑性能问题,而是将易用性放在首位。而程序员却想控制一切,真是矛盾。


-------------------------黄金分割线---------------------

像我一样挑剔的coder请转到asp.net MVC吧,完全不用服务器控件。


原文地址:https://www.cnblogs.com/hjblog/p/1499056.html