一聚教程网:一个值得你收藏的教程网站

最新下载

热门教程

ASP.NET + AJAX ――Visual Studio 2008 的戏法

时间:2008-05-17 编辑:简简单单 来源:一聚教程网

    终于渐渐明白ASP.NET+AJAX的实质。
    它的目标是代替人手写javascript。一方面可以简化网页的编写,降低AJAX的实施难度;另一方面是鼓励大家摒弃javascript,这是打击java阵营的一步棋,尽管javascript与java没有多大关系。不用手写javascript,直接就能获得类似AJAX的效果,着实让ASP.NET的程序员兴奋了一番。但是原理还是AJAX的原理,换汤没换药,难度的降低是以损失性能为代价的。

    跟以往微软的很多手段一样,通过加入一些折衷的办法,来占领市场,击败对手。例如当年的Visual J++,最大的卖点是执行速度的提升,但暗地里加入了很多违背Java标准的手段,不能实现跨平台,不具移植性,很快在主流的java开发平台争夺中败下阵来。
    为了对抗借着AJAX壮大声威的Java阵营,MS故伎重施,将ASP.NET渲染一番,重装上阵。但这只是一个刚刚成型的产品,宣传意义大于应用价值。

    使用ASP.NET+AJAX,必须把框架提供的很大的一包jscript lib打包传到客户端(SourceJavaScript.axd等等)。粗略估计有400K以上,所以第一次打开页面会特别慢。
    正是这个jscript lib实现了ScriptManager以及UpdatePanel等AJAX特性的控件。它接管了UpdatePanel内的控件的提交事件,负责与服务器交互,当返回后,再用jscript lib内的script对控件更新。这样,jscript lib将刷新限制在了这个控件之内,在客户看来,确实达到了局部更新的效果。
 为了掩饰在通信过程中的延迟,jscript lib提供了UpdateProgress来稳住用户。

    Jscript lib实际的作用是管理控件,实现页面无刷新操作。但这仅仅是AJAX的一部分,一小部分。
    它屏蔽了用户对XML和Javascript的使用,从而降低了开发的复杂度。但对消息的控制,仍是完全的ASP.NET的模式,即每一个操作,都要提交到服务器,运算处理,结果回传到客户端。它至少砍掉了AJAX的两个很重要的功能。
    AJAX的主要特征是异步获取数据,并且将这个放在首位,才能实现更快的响应。用户在未进行下一步操作的时候,AJAX已经悄悄把需要的数据下载到本地,这样就能更快的响应用户的下一步操作。例如,判断“用户名是否已注册”,在用户填写完用户名后,就可以由javascript自动发起到服务器的请求,在用户填写后面的资料过程中,客户端已经可以知道用户名是否可用。
    AJAX的一个重要意义在于将部分运算分布在客户端进行,从而减轻服务器负担。这个任务的执行者正是Javascript。很多可以在本地进行的工作,例如简单的“用户名不能为空”的判断,直接在本地完成,不需要与服务器交互,也就不需要等待响应。

    ASP.NET+AJAX只做了表面文章,减少页面刷新,而代价是必须载入大而全的jscript库延缓页面响应。这些功能,通过简单的javascript+XML就能实现,而且更加快捷精练。
    到了这里,我们几乎可以断言,Visual Studio 2008提供的ASP.NET+AJAX是偷梁换柱的AJAX。它只能满足对性能要求不高,网速好,而追求新鲜词汇的用户。要开发真正的AJAX的网页,还是绕不开Javascript和XML。