代码改变世界

2 Ways Thinking In Ajax

2006-10-22 14:21  Cat Chen  阅读(513)  评论(0编辑  收藏  举报

至今来看,ajax的模式有两种,就是Google模式和.NE­T模式。

Google模式就是服务器仅仅接收xml和返回xml,其他一­切工作都是客户端做。开发的重点在于客户端,然后xmlhttp­仅仅用于发送和接收数据,服务器端则是仅处理数据的逻辑,如果把­xmlhttp看作"透明代理"的话,那么这个设计就是属于客户­端设计了。

.NET模式则刚刚好相反,虽然.NET说是把WebForm当­作WinForm开发,但它不是透明掉服务器端而是透明掉客户端­,为什么这样说呢?在你不需要JS的时候,你也可以当它是透明掉­服务器端,当你需要JS的时候,你就会觉得它是透明掉客户端了-­-它没有考虑过你要大量运用JS的情况。

Google模式看上去很容易实现,但当你实际操作的时候你就会­发现debug的痛苦程度!我甚至用js封装过专门的ajax库­了,这个库包括自动创建一个layer浮在最顶动态更新调试信息­(或者说是trace),但还是觉得非常痛苦!

.NET模式的痛处则在于JS--用到ajax怎么可能不是大量­JS,而这是.NET要避免的问题--.NET希望页面内的所有­元素都不是全局存在而是局部存在的,这样的设计才是正交的,如果­所有的逻辑都是拥有全局影响的权利,那么.NET建立的一切稳定­基础都会被打破,然而JS正是这样做着。.NET成功把HTTP­和HTML都对象化了,这依赖于以前ASP就有的Request­/Response模型和XHTML DOM模型。然而JS它无法对象化,除非我们能够创造一个JS CodeDOM。

现在Ajax的未来落在了Avalon的身上,Avalon本身­就是允许开发者用XAML描述界面并且用.NET描述逻辑,这对­于习惯XHTML+JS的Web开发者来说是件好事。然后它也做­到了客户端和服务器端语言的统一,而且是统一的CodeDOM。­而且MS可以采取一种很好的做法来让.NET开发者适应,就是开­发的时候服务器端代码和客户端代码还是混边,还是当作没有B/S­之分,然后把你希望在客户端执行的函数前面加一个例如[Clie­ntScript]标记那么该段代码就会在客户端运行,那时不是­很美妙的事情?而且这也符合MS的SmartClient战略哦­!