Asp.net 网页的基本模式是server side control, server side状态和server side生命周期. 在这种模式下, client side的任何状态变化都要靠server side 的代码来响应. 所以, client side放个屁, server side 就打个雷 ( postback to server). 不仅如此, server control 的状态也需要serialize, 并且在clent 和server 之间传来传去, 这更增加了server 的负担.
当一个人初学asp.net时, 一定会觉得.net是真好用, 三下五除二就能开发出一个看起来蛮不错的网页. 但是, 这样的网页, 仅对于小客户群有用. 而且, 页面上的许多操作, 动不动就postback, 让page重新刷新一下, 用户感觉也不好.
web 上的优化, 是高性能网站优化的重要一环. 如果使用asp.net, 不优化和优化的差别是非常大的. 比如说吧, 如果优化, 带一万用户只需要十台web server, 不优化就需要三十台web server甚至更多, 这在软硬件投资, 机房, 网络, 网络流量等方面的差别又会被再次放大.
对于要求 Ria(rich client app)和高性能的网站来说, 采用基本的asp.net模式, 显然是有问题的. 所以如果能够兼有, visual studio, c#, asp.net的方便与快捷性, 同时做到Ria和高性能, 那显然是个很好的事情. 要做到这点, ajax显然是少不了的, 另外, 一些client side control 库, 也是很有必要的, 比如 YUI, jQuery, Open rico等等. 除此以外, 你还必须明白, 那些asp.net server control 用起来是基本无害的, 那些是一定要避免的. 另外, 你要兼考虑 client side application lifetime and state management 和 server side application lifetime and state management, 这两种application modal. 并且, 常常是两者混合着用. 按照 client side application 模式, 大部份的用户交胡在cient断完成, 不麻烦server, 仅当需要数据时, 才向server 端发出请求. 按照 server side application 模式, 你仍然可以比较方便的使用server side control, 特别是在初次 render 时.
所以, 要做到RIA, 高性能, 快速开发, 三者并有, 其实是蛮难的.
顺便评论一下微软为什么采用asp.net的编程模式. 我想, 一方面把开发工具做的好学易用, 另一方面让开发出来的网页对服务器构成巨大的负载, 这完全是符合微软利益的. 好学易用, 必然有很多人用, 这样微软既卖工具又卖server 操作系统. 对服务器的负载大, 这样, 为了负载同样的客户, 你就得用更多的服务器( load balance), 这又促进操作系统的销售. 这是阳谋和还是阴谋, 我就不知道了.