看了ms的"开发高性能的 ASP.NET 应用程序",想和大家讨论下
对于性能,我的想法是只要能有更好的方法开发高性能的应用程序,绝不用那些以牺牲性能为代价的方便的,现成的方法来快速实现。看了前面有个讨论asp.net性能的问题,有些兄弟就说为了使用强大的asp.netweb控件能快速的开发应用程序,损失些性能吧,也是一种选择,在下深以为不可取。明知有性能问题而不顾却去使用方便快速的方法,这不是一个好的开发人员的风格(除非真的不知道这种方法影响性能),我认为,开发程序是麻烦自己,让用的人更方便,而不是方便自己,让用的人麻烦
真正做过大型数据处理网站的兄弟都清楚性能的重要性,如果仅仅是为了方便快速开发而不顾性能,做出来的东西放在自己单机上运行就行了,因为放在internet就成了一堆垃圾了,除非还是就那么几个人访问。
1.避免到服务器的不必要的往返过程。虽然您很可能希望尽量多地使用 Web 窗体页框架的那些节省时间和代码的功能,但在某些情况下却不宜使用 ASP.NET 服务器控件和回发事件处理。
通常,只有在检索或存储数据时,您才需要启动到服务器的往返过程。多数数据操作可在这些往返过程间的客户端上进行。
2.在适当的环境中使用 ASP.NET 服务器控件。检查您的应用程序代码以确保对 ASP.NET 服务器控件的使用是必要的。即使它们非常易于使用,但是服务器控件并不总是完成任务的最佳选择,因为它们会使用服务器资源。在许多情况下,一个简单的呈现或数据绑定代入就可以完成任务。
(看了上面这两点,看来web服务器控件除了datagrid,datarepeate,datalist外,可以考虑全部都砍掉,除非我想偷懒,我就像ms搞出这些影响性能的web服务器控件东西出来干吗用,难道就像asp中的dtc控件,只是一个摆设而已)
3.只在必要时保存服务器控件视图状态,因为服务器控件的视图状态在隐藏的窗体字段中往返于服务器,所以该功能确实会对性能产生影响。
(本来还以为这个功能不错,现在看来也是只在很有必要,非用它不可的情况下不得以而用之了)
4.不要依赖代码中的异常,因为异常大大地降低性能
(ms用了"大大"两个字,看来这东东也是花瓶,还是采用以前asp中的方法慢慢的用if来判断吧,除非我不管性能。)
5.选择适合页面或应用程序的数据查看机制。根据您选择在 Web 窗体页显示数据的方式,在便利和性能之间常常存在着重要的权衡。例如,DataGrid Web 服务器控件可能是一种显示数据的方便快捷的方法,但就性能而言它的开销常常是最大的。在某些简单的情况下,您通过生成适当的 HTML 自己呈现数据可能很有效,但是自定义和浏览器定向会很快抵销所获得的额外功效。Repeater Web 服务器控件是便利和性能的折衷。它高效、可自定义且可编程。
(本来还以为datagrid是个好东东,它确实好,就是开销是最大的而已,那还有什么好,估计微软又是拿它做花瓶,看来结合上面所说的1,2项,web服务器控件就只能下Repeater还可以用下了,不过Repeater还是便利和性能的折衷,看来为了提高性能,只能像asp一样手写table了,我不能因为方便而损失性能阿)