代码改变世界

AJAX - 服务器端也用 JavaScript 不好吗?

2006-10-22 15:44  Cat Chen  阅读(1499)  评论(4编辑  收藏

现在ASP.NET要实现AJAX已经不难了,可以用同时有服务器端扩展和客户端框架的Atlas,也可以选一个Atlas之外的服务器端JSON串并转换器和支持JSON-RPC的客户端框架。类似的,PHP等现在热门的语言都有服务器端JSON串并转换器,唯独已被人放弃的ASP没有,所以很多人都为如何在ASP上实现AJAX而感到困惑。

要在ASP实现AJAX,首先考虑的是用什么数据格式进行传输,主流的选择就是XML和JSON:

  • XML - 服务器端没有ASP.NET Web Service,只能采用Microsoft SOAP Toolkit来提供Web Service,这个Toolkit不能够直接将ASP代码暴露为Web Service,只能将VB6编译的dll暴露为Web Service。
  • JSON - 服务器端缺少转换器。VBScript没有JSON转换器,同时由于这是过时的语言,也就不可能有人为它开发JSON转换器。

说到这里,细心的人肯定会指出ASP不仅仅可以用VBScript写,用JScript写也可以。服务器端使用JScript其实就是使用JSON的突破口,因为JScript类似于JavaScript,JavaScript的JSON转换器在JScript中可以直接使用,根本不需要另外编写。

其实现在已经有用JScript编写的ASP实现了AJAX,使用ASP+JSON搜索一下就能得到一堆结果。例如Simple AJAX (with JSON) Chat Application for ASP 3.0,这是一个用ASP实现的聊天程序,语言选择是JavaScript/JScript,数据传输采用JSON。

说到这里,就要回顾一下我之前那篇《Script# - 把 C# 编译为 JavaScript》。将C#编译为JavaScript是一个好主意,而且Script#的实现也很出色,让C#成为核心语言也无可厚非因为它确实是很好的语言。不过JavaScript也是也门很好的语言哦,为什么不能让它成为核心语言呢?

现存的JavaScript引擎不少,在标准的实现上略有些不同,而各自的bug当然也有多不同,但是这不应该成为JavaScript成为服务器端语言的障碍。使用JavaScript作为服务器端语言的好处是,现在已有的客户端框架都能直接拿过来用,XML和JSON都可以使用了。JavaScript最缺的应该是一些执行服务器端专有任务的框架,例如数据库和文件读写,同时也缺乏一些低层操作的能力例如Stream和Thread。然而不能够因此而歧视一门脚本语言,RoR不就是一个成功的例子吗?如果有一个JavaScript引擎能够用于服务器端任务,相信技术社区就能出产不少有用的框架来让其功能变得强大,或许能够比RoR更快热门起来——因为现在懂JavaScript的程序员肯定比懂Ruby的多。