zoukankan      html  css  js  c++  java
  • 关于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.

  • 相关阅读:
    606. Construct String from Binary Tree
    696. Count Binary Substrings
    POJ 3255 Roadblocks (次短路)
    POJ 2823 Sliding Window (单调队列)
    POJ 1704 Georgia and Bob (博弈)
    UVa 1663 Purifying Machine (二分匹配)
    UVa 10801 Lift Hopping (Dijkstra)
    POJ 3281 Dining (网络流之最大流)
    UVa 11100 The Trip, 2007 (题意+贪心)
    UVaLive 4254 Processor (二分+优先队列)
  • 原文地址:https://www.cnblogs.com/encounter/p/2188725.html
Copyright © 2011-2022 走看看