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.

  • 相关阅读:
    Centos7安装Python3的方法
    接口测试用例和报告模板
    【其他】【Redis】Redis 16 个常见使用场景
    【其他】【RPC】RPC 框架的结构和设计
    【Java】【集合类】Java Map集合 遍历 五种方式(包含 Lambda 表达式遍历)
    【JAVA】【集合类】 ArrayList循环删除陷阱及迭代器介绍
    【Java】【集合类】JAVA构造MAP并初始化MAP
    【Java】【集合类】Java 中初始化 List 集合的方式
    【java】【日期和时间】总结
    VUE图片下载 针对png格式的 单个下载图片 多个图片下载压缩包
  • 原文地址:https://www.cnblogs.com/encounter/p/2188725.html
Copyright © 2011-2022 走看看