关于Qomo于ajax的异同~

现在ajax实现太过火了,什么都向上面靠。其实早在2000前以前,WEB开发人员就已经在用Frame/Frameset来实现远程数据的获取。后来IE成为事实上的B端标准之后,IFrame就成了做远程数据获取的“标准手段”了。——例如M$就用这种方法来做MSDN网站左侧的那个“巨大的树”。

在ajax出现之前,这一系列的技术被称为“RPC(Remote Procedure Call)”,象XMLRPC、HTTPRPC以及PHPRPC这些开源项目都是有的。PRC的一个问题,是必须实现一个S端,与WEB端的代码约定一个描述过程名(ProcedureName)和参数表的细节的接口。这其中,我比较欣赏的是一个名为“JSRS(javascript remote scripting)”的项目,它在S端有PHP/ASP等多种语言的实现。

现在也还有在RPC这个路线上延伸的技术尝试。例如有人用css或者script标签来替代IFrame实现RPC。

RPC时代之后,就是ajax的时代了。ajax本意是“Asynchronous JavaScript and XML”。从本意上来说,它只是一种技术架构。是B/S两端交互数据的一种技术方法。但由于ajax主张使用XMLHttpRequest来替代RPC技术中的IFrame。这使得在浏览器上能有“无界面刷新”的良好用户体验。再加上现在火热的google成功地实现了“商业品质的应用”。因此ajax技术应用变得非常广泛。——但仅以跨浏览器特性而言,(现在的)IFrame的兼容性也极佳。

由于ajax以xml作为传输层中表达数据的规范,因此它有良好的多语言编码基础,也能表达很复杂的数据结构。这也是传统的RPC方式所不能比拟的。

除去这些特性,ajax(的本意)就只是一种技术手段了。

然而现在的ajax狂热者们把ajax的应用推动另一层“境界”。由于ajax使用xml,因此可以在S端将对象序列化为XML数据;而在B端,由于javascript是一种“有良好的逻辑处理能力”的“基于对象的语言”,因此可以用将XML解释成客户端对象。——从外在的表现上来讲,ajax实现了“将S端的对象推送到B端”的能力。

这是目前ajax技术的主要发展方向之一。“如何在S端和B端用同样的方式‘表达’和‘理解’对象”,以及“让对象的可执行能力被序列化,并推动到B端”是ajax面临的问题。而第一层障碍,就是JavaScript自身对“面向对象”支持的不完整,因此无法表达一些S端对象的特征。

——例如如果S端是.NET,它的对象A有一个具有读写器(getter/setter)的特性,那么对象被序列化并传到B端的时候,JavaScript如何理解对象A中的读写器呢?所以ajax现在都是与一个“实现了更丰富的OOP特性的javascript”绑在一起的。

我想大家应该看到了问题之所在了。“实现更丰富的OOP特性”与“ajax(异步的JS与XML)”有什么关系呢?ajax提出了一个语言级别的需求,然后有一些架构/项目去实现了这些语言特性,再绑在ajax上。ajax就这样越做越大。现在的ajax,已经变成“语言特性的实现+编程框架+技术”,而不是ajax技术本身了。

Qomo并不去追究这种技术的演化与变形。Qomo关注于一些“语言特性的实现”,也关注于一些“编程框架”的实现。在这两种实现的基础上,Qomo提供了一个轻量的ajax实现技术的框架,也提供了一套(相对于FCL/VCL)轻量级的Component Library。

这里既然提到了Qomo的特性,那么我就将我在sourceforge上申请create project的描述转过来。大家可以自己来比较分析:

Qomo OpenProject is a True and Full OOP framework and UI Library.

{ note:  # implemented,  + implementing, * planning, - tring }

include features of OOP:
 # inhreited by class
 # attribute getter/setter
 # type system of object
 # abstract and abstract exception
 # mutilcast event
 + interface in javascript
 # namespace system
 # package/unit import
 # tiny ajax architecture
 + SOA Architecture
 * template programming
 - more...

include features of UI:
 # tidy component framework
 # graphics abstract level and a VML implement
 # database abstract level and a ArrayDB/FileDB implement
 # html element controller and some control component
 # bar, menu, window, etc. in virsual component library.
 * more component, mount a tidy(very very) FCL or VCL.
 - more ...

other features:
 # some utils class.
 # auto class inhnert chart scan and generable
 # document generable tool (C# source)
 # testing and profing tools (JavaScript Source)
 - OOP Core and UI can debugging and designing in VS.NET IDE.
 - more ...

the project extracted from a enterprise project. free and open source for all JavaScript fans, and hope anybody join/impulse the project.