关于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.
转载于:https://www.cnblogs.com/java0818/archive/2006/01/11/2144583.html
关于Qomo于ajax的异同~相关推荐
- Web框架之Django_07 进阶操作(MTV与MVC、多对多表三种创建方式、前后端传输数据编码格式contentType、ajax、自定义分页器)
阅读目录 一.MVC与MTV 二.多对多表的创建 三.ajax,前后端传输编码格式contentType 四.批量插入数据与自定义分页器 摘要 MTV与MVC 多对多表三种创建方式 ajax ,前后端 ...
- 使用Ajax同步请求增加页面等待提示
使用Ajax同步请求增加页面等待提示 最近在做项目时,有一个需求是批量打印好多个合同,使用AJAX向后台传送数据,等待后台执行后,需要把生成之后的文件地址传送过来. 后台的处理时间比较长,根据合同的多 ...
- Ext.Ajax.request和formPanel.getForm().submit()两种提交方法的异同:
Ext.Ajax.request和formPanel.getForm().submit()两种提交方法的异同: 1. 相同点: a) 都是使用异步提交的方式: b) 默认都是使用POST方式来提交数据 ...
- ajax调用ashx的方法,jquery.ajax请求aspx和ashx的异同 Jquery Ajax调用aspx页面方法
1.jquery.ajax请求aspx 请求aspx的静态方法要注意一下问题: (1)aspx的后台方法必须静态,而且添加webmethod特性 (2)在ajax方法中contentType必须是&q ...
- ie和firefox操作table对象的异同
2019独角兽企业重金招聘Python工程师标准>>> ie和firefox下操作table对象的异同[测试浏览器版本:ie为8,9,firefox为2.0] 1)在ie下,tabl ...
- JSON和JSONP【JS+AJAX跨域原理和实现】
前言 由于Sencha Touch 2这种开发模式的特性,基本决定了它原生的数据交互行为几乎只能通过AJAX来实现. 当然了,通过调用强大的PhoneGap插件然后打包,你可以实现100%的Socke ...
- Ajax跨域提交JSON和JSONP
可以直接使用$.getJSON()方法实现跨域请求,参数中必须加上callback,如: var jsonpUrl = 'http://www.test.com/index.php?c=Api_Ord ...
- 从基础开始:Qomo OpenProject中的一些关键词
================================================================================ Qomolangma penProje ...
- ajax div 赋值重新渲染_优化向:单页应用多路由预渲染指南
前言 Ajax 技术的出现,让我们的 Web 应用能够在不刷新的状态下显示不同页面的内容,这就是单页应用.在一个单页应用中,往往只有一个 html 文件,然后根据访问的 url 来匹配对应的路由脚本, ...
最新文章
- 尘埃落定!苹果 10 亿美元入局 5G,Intel 挥别 9 年基带业务
- 华为鸿蒙osbeta多场景展示,华为发布鸿蒙系统:全场景分布式OS
- python创建txt文件
- 分布式文件系统研究-fastDSF文件上传和下载流程
- javascript-操作符
- J2EE数据库后台开发步骤(附HQL使用教程)
- 英语学习笔记2019-9-29
- sql server累计求和函数_窗口函数 以及 储存过程 create procedure
- Tex, LaTex概念及实例
- Python 开始吧
- 安装了Python2.X和Python3.X后Python2.X IDLE打不开解决办法总结
- 没有IOMMU的DMA操作
- python随手记自动记账_简化记账——我的“随手记”
- DBSCAN聚类算法+demo
- python画流程_使用Graphviz快速绘制流程图
- R plot图片背景设置为透明_万能转换:R图和统计表转成发表级的Word、PPT、Excel、HTML、Latex、矢量图等...
- Nanjing GDG Meetup 8月线下活动
- 【NOIP2015模拟】终章-剑之魂
- 【转载】Excel操作 Microsoft.Office.Interop.Excel.dll的使用
- STM32硬件I2C与软件模拟I2C超详解
热门文章
- ifconfig没有命令 kali_新装的Linux系统没有ifconfig命令?教你一键找回
- c语言对10求余不为7,【PTA | 基础编程题目集】7-12 两个数的简单计算器 (10分)
- 电脑键盘数字键失灵_C4D/3dmax/MaYa三维设计——高档机械键盘推荐·红轴(200元左右预算)...
- 计算机专业活动简报,计算机系辩论赛活动简报
- 英特尔的指令集体系结构_对标英特尔的RISC-V大有可为,CPU三分天下格局可期
- apply筛选 pandas_Pandas中第二好用的函数 | 优雅的apply
- 产生任意区间内的均匀分布的随机整数序列
- Radio Button详细用法
- 记录一下增加标定评价标准的过程
- Java与Excel的交互!-