??xml version="1.0" encoding="utf-8" standalone="yes"?>亚洲欧洲专线一区,亚洲国产精品乱码在线观看97,亚洲中文字幕无码中文http://www.tkk7.com/iNeo/category/5584.htmlzh-cnTue, 27 Feb 2007 12:34:20 GMTTue, 27 Feb 2007 12:34:20 GMT60AJAXQ开发者新的一天[转]http://www.tkk7.com/iNeo/archive/2006/01/04/26524.html只牵q只?/dc:creator>只牵q只?/author>Wed, 04 Jan 2006 02:53:00 GMThttp://www.tkk7.com/iNeo/archive/2006/01/04/26524.htmlhttp://www.tkk7.com/iNeo/comments/26524.htmlhttp://www.tkk7.com/iNeo/archive/2006/01/04/26524.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/26524.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/26524.html摘要:

虽然大部分开发h员在q去使用qXMLHttp或者用Iframe来加载数据,但仅到现在我们才看到传统的开发h员和公司开始采用这些技术。就像新的编E语a或模型伴随着更多的痛苦,开发h员需要学习新的技巧及如何最好利用这些新技术。这文章讲qC开发h员用AJAX需要用的工具和技术?

文章工具

作?Andrew Thompson;xMatrix (他的blogQ?A >http://blog.matrix.org.cn/page/xMatrix)
原文地址:http://www.javaworld.com/javaworld/jw-10-2005/jw-1017-ajax.html
中文地址:http://www.matrix.org.cn/resource/article/44/44116_AJAX.html
关键词: AJAX

AJAX开发者的最新工具和技?/STRONG>

ZXML的异步JavaScriptQ简UAJAXQ是当前Web创新Q称为Web2.0Q中的一个王冠。感谢组成AJAX的各U技术,Web应用的交互如Flickr, Backpack和Google在这斚w已经有质的飞跃。这个术语源自描qCZ|页的Web应用到基于数据的应用的{换。在Z数据的应用中Q用户需求的数据如联pMh列表Q可以从独立于实际网늚服务端取得ƈ且可以被动态地写入|页中,l缓慢的Web应用体验着色之像桌面应用一栗?BR>
虽然大部分开发h员在q去使用qXMLHttp或者用Iframe来加载数据,但仅到现在我们才看到传统的开发h员和公司开始采用这些技术。就像新的编E语a或模型伴随着更多的痛苦,开发h员需要学习新的技巧及如何最好利用这些新技术。这文章讲qC开发h员用AJAX枰褂玫墓ぞ吆N?lt;br />
AJAX模式
许多重要的技术和AJAX开发模式可以从现有的知识中获取。例如,在一个发送请求到服务端的应用中,必须包含h序、优先、超时响应、错误处理及回调Q其中许多元素已l在Web服务中包含了Q就像现在的SOA。AJAX开发h员拥有一个完整的pȝ架构知识。同Ӟ随着技术的成熟q会有许多地斚w要改q,特别是UI部分的易用性?BR>
AJAX开发与传统的CS开发有很大的不同。这些不同引入了新的~程问题Q最大的问题在于易用性。由于AJAX依赖览器的JavaScript和XMLQ浏览器的兼Ҏ和支持的标准也变得和JavaScript的运行时性能一样重要了。这些问题中的大部分来源于浏览器、服务器和技术的l合Q因此必ȝ解如何才能最好的使用q些技术?BR>
l合各种变化的技术和合的客h务端环境QAJAX提出了一U新的开发方式。AJAX开发h员必ȝ解传l的MVC架构Q这限制了应用层ơ之间的边界。同Ӟ开发h员还需要考虑CS环境的外部和使用AJAX技术来重定型MVC边界。最重要的是QAJAX开发h员必ȝ止以面集合的方式来考虑Web应用而需要将其认为是单个面。一旦UI设计与服务架构之间的范围被严格区分开来后Q开发h员就需要更新和变化的技术集合了?BR>

时刻想着用户
AJAX的最大机遇在于用户体验。在使应用更快响应和创新的过E中Q定义Web应用的规则正在被重写Q因此开发h员必L注重用户。现在用户已l逐渐习惯如何使用Web应用了。例如用户通常希望每一ơ按钮点MD几秒的gq和屏幕hQ但AJAX正在打破q种长时间的状况。因此用户需要重C验按钮点ȝ响应了?BR>
可用性是AJAX另hȀ动的地方而且已经产生了几U新颖的技术。其中最引h注目的是一U称为“黄色隐出”的技术,他在数据更新之前时将用户界面变ؓ黄色Q更新完成后立刻恢复原来的颜艌ӀAJAX开发h员将用户从Web应用的负载中解放出来Q小心地利用AJAX提供的丰富接口,不久桌面开发h员会发现AJAX是他们的方向?BR>

几种工具和技?/STRONG>
随着AJAXq速地引h注目hQ我惛_发h员对q种技术的期待也迅速地增加。就像Q何新技术,AJAX的兴Z需要一整个开发工?~程语言及相x术系l来支撑?BR>
JavaScript
如名字所CAJAX的概念中最重要而最被忽视的是他也是一UJavaScript~程语言。JavaScript是一U粘合剂使AJAX应用的各部分集成在一赗在大部分时_JavaScript通常被服务端开发h员认为是一U企业应用不需要用的东西应该力避免。这U观Ҏ来自以前~写JavaScript代码的经历:J杂而又易出错的语言。类似的Q他也被认ؓ应用逻辑L地散布在服务端和客户端中Q这使得问题很难被发现而且代码很难重用。在AJAX中JavaScript主要被用来传递用L面上的数据到服务端ƈq回l果。XMLHttpRequest对象用来响应通过HTTP传递的数据Q一旦数据返回到客户端就可以立刻使用DOM数据放到网面上?BR>
XMLHttpRequest
XMLHttpRequest对象在大部分览器上已经实现而且拥有一个简单的接口允许数据从客L传递到服务端,但ƈ不会打断用户当前的操作。用XMLHttpRequest传送的数据可以是Q何格式,虽然从名字上是XML格式的数据?BR>
开发h员应该已l熟悉了许多其他XML相关的技术。XPath可以讉KXML文档中的数据Q但理解XML DOM是必ȝ。类似的QXSLT是最单而快速的从XML数据生成HTML或XML的方式。许多开发h员已l熟悉Xpath和XSLTQ因此AJAX选择XML作ؓ数据交换格式有意义的。XSLT可以被用在客L和服务端Q他能够减少大量的用JavaScript~写的应用逻辑?BR>
CSS
Z正确的浏览AJAX应用QCSS是一UAJAX开发h员所需要的重要武器。CSS提供了从内容中分d用样式和设计的机制。虽然CSS在AJAX应用中扮演至关重要的角色Q但他也是构建创览器应用的一大阻,因ؓ不同的浏览器厂商支持各种不同的CSSU别?BR>
服务器端
但不像在客户端,在服务端AJAX应用q是使用建立在如Java,.Net和PHP语言基础上机Ӟq没有改变这个领域中的主要方式?BR>既然如此Q我们对Ruby on Rails框架的兴也p速增加了。在一q多前,Ruby on Rails已经吸引了大量开发h员基于其强大功能来构建Web和AJAX应用。虽然目前还有很多快速应用开发工具存在,Ruby on Rails看v来已l储备了化构建AJAX应用的能力?BR>
开发工?BR>在实际构建AJAX应用中,你需要的不只是文本编辑器。既然是JavaScript非编译的Q他可以Ҏ地编写和q行在浏览器中;然而,许多工具提供了有用的扩展如语法高亮和完成?BR>
不同的IDE提供了对JavaScript支持的不同等U。来自JetBrains的IntelliJ IDEA是一个用来JavaScript开发的更好的IDEQ虽然许多开发h员也喜欢Microsoft’s Visual Studio产品Q允Z在最新的版本中改善对AJAX的支持)。Eclipse包含了两个免费的JavaScript~辑器插件和一个商业的来自ActiveStat的Komodo IDE?BR>
另一个JavaScript和AJAX开发中的问题是调试困难。不同的览器提供不同的通常是隐藏的q行旉误信息,而JavaScript的缺陷如双重变量赋|通常是由于缺数据类型)使得调试更加困难。在AJAX的开发中Q调试就更复杂了Q因为其需要标识究竟是客户端还是服务端产生的错误。在q去QJavaScript调试的方法是删除所有代码然后一行行的增加直到错误出现。现在,更多开发h员回CؓIE准备的Microsoft Script Debugger和ؓMozilla览器准备的Venkman?BR>

览器兼Ҏ?/STRONG>
JavaScript~程的最大问题来自不同的览器对各种技术和标准的支持。构Z个运行在不同览器(如IE和火狐)是一个困隄d。因此几UAJAX JavaScript框架或者生成基于服务端逻辑或标记库的JavaScriptQ或者提供符合跨览器AJAX开发的客户端JavaScript库。一些流行的框架包括QAJAX.Net, Backbase, Bitkraft, Django, DOJO, DWR, MochiKit, Prototype, Rico, Sajax, Sarissa, and Script.aculo.us.

q些框架l开发h员更多的I间使得他们不需要担心跨览器的问题。虽然这些框架提升了开发h员构建应用的能力Q但׃厂商已经开发了更细节的用户界面的打包组件解x案,因此在AJAXlg市场中需要考虑一些其他因素。例如提供通用用户界面的组件如l合框和数据栅格的几个厂商,都可以被用来在应用中创徏良好的通过cM电子数据表方式来查看和编辑数据的体验。但q些lg不仅是封装了lg的用L面而且包括与服务端数据的通讯方式Q这些组仉常使用Z标记方式来实现如ASP.Net或JSF控g?/P>


展望
最qIE和火狐之间的览器之争变得火热v来,因此AJAX开发h员需要够敏L作出反应。关键点在一些问题如CSS或XMLQ虽然各U浏览器形成采用最新标准的不同阵营Q如Mozilla拥抱SVG和E4X标准及在最新火狐BETA版本中用XULQ而微软用自qXAML技术)。所有这些技术代表当前AJAXLJavaScript和XML的市场方向改变?BR>ȝ来说QAJAX开发h员必d快地跟进最新的技术ƈ利用高的工具集。成功的AJAX开发h员还需要留心他们的使用者以避免Q何问题扩大化。ƈ且AJAX开发h员还需要持l地创新来创建增强Web应用易用性的新方法?/P>


作?/STRONG>
Dave Johnson是加拿大Vancouver一家Y件咨询公司eBusiness Applications创始人和传道者,拥有七年以上的XML相关工作l验?/P>


Resources
?nbsp;AJAX开发h员的~译模式:http://www.ajaxpatterns.org
?nbsp; XMLHttpRequest教程Q“动态网|口?http://www.xml.com/pub/a/2005/02/09/xml-http-request.html
?nbsp;JavaScript性能基准:http://blogs.ebusiness-apps.com/dave/?p=14
?nbsp;AJAX资源:http://www.ajaxmatters.com
?nbsp;JavaScript规范:http://www.ecma-international.org/publications/standards/Ecma-262.htm
?nbsp;介绍JavaScript对象标识:http://www.crockford.com/JSON/index.html
?nbsp; Mozilla 的Venkman JavaScript调试?http://www.mozilla.org/projects/venkman/
?nbsp; XML DOM参?http://msdn.microsoft.com/library/default.asp?url=/library/en-us/
xmlsdk/html/e9da2722-7879-4e48-869c-7f16714e2824.asp
?nbsp;Microsoft Dynamic HTML reference: http://msdn.microsoft.com/library/default.asp?url=/
workshop/author/dhtml/reference/dhtml_reference_entry.asp
?nbsp;Gecko DOM Reference: http://www.mozilla.org/docs/dom/domref/
?nbsp;"“移植IE应用到Mozilla?BR>http://www-128.ibm.com/developerworks/web/library/wa-ie2mozgd/
?nbsp;Mozilla XUL reference:
http://www.xulplanet.com/
?nbsp;Microsoft XAML reference:
http://windowssdk.msdn.microsoft.com/library/default.asp?url=/library/
en-us/wcp_conceptual/html/0ff5f36e-dd84-44d1-aa3e-5bb4f147b169.asp?frame=true
?nbsp;James Jesses Garret introduced the term AJAX in his article "AJAX: A New Approach to Web Applications," (Adaptive Path, February 2005): “AJAXQ新的网应用开发方式?BR>http://www.adaptivepath.com/publications/essays/archives/000385.php
?nbsp;JetBrains IntelliJ IDEA:
http://www.jetbrains.com/
?nbsp;Microsoft Visual Studio:
http://msdn.microsoft.com/vstudio/
?nbsp;JSEditor:
http://jseditor.sourceforge.net/
?nbsp;JSEclipse:
http://www.interaktonline.com/Products/Eclipse/JSEclipse/Overview/
?nbsp;ActiveState Komodo:
http://www.activestate.com/Products/Komodo/
?nbsp;XHTML:
http://www.w3.org/TR/xhtml1/
?nbsp;Document Object Model:
http://www.w3.org/DOM/
?nbsp;Cascading Style Sheets:
http://www.w3.org/Style/CSS/
?nbsp;Extensible Stylesheet Language:
http://www.w3.org/Style/XSL/
?nbsp;XForms:
http://www.w3.org/MarkUp/Forms/
?nbsp;Scaling Vector Graphics:
http://www.w3.org/Graphics/SVG/
?nbsp;XPath:
http://www.w3.org/TR/xpath
?nbsp;AJAX.Net:
http://ajax.schwarz-interactive.de/csharpsample/default.aspx
?nbsp;Backbase:
http://www.backbase.com
?nbsp;Bitkraft:
http://www.tiggrbitz.com/
?nbsp;Django:
http://www.djangoproject.com/
?nbsp;Dojo:
http://www.dojotoolkit.org/
?nbsp;DWR (Direct Web Reporting):
http://getahead.ltd.uk/dwr/
?nbsp;MochiKit:
http://mochikit.com/
?nbsp;Prototype:
http://prototype.conio.net/
?nbsp;Rico:
http://openrico.org/rico/home.page
?nbsp;Sajax:
http://www.modernmethod.com/sajax/
?nbsp;Sarissa:
http://sarissa.sourceforge.net/doc/
?nbsp;Script.aculo.us:
http://script.aculo.us/
?nbsp;Ruby on Rails:
http://www.rubyonrails.org/
?nbsp;For more on AJAX and DWR, read "AJAX Made Simple with DWR," Cloves Carneiro Jr. (JavaWorld, June 2005): 关于AJAX和DWRQ请阅读“AJAX使用DWR更简单?BR>http://www.javaworld.com/javaworld/jw-06-2005/jw-0620-dwr.html
?nbsp;For more articles on Java development tools, browse the Development Tools section of JavaWorld’s Topical Index: 更多Java开发工L文章Q请览JavaWorld的开发工具部分烦引页
http://www.javaworld.com/channel_content/jw-tools-index.shtml
?nbsp;For more articles on XML, browse the Java and XML section of JavaWorld’s Topical Index: 更多XML的文章,h览JavaWorld的Java和XML部分索引?BR>http://www.javaworld.com/channel_content/jw-xml-index.shtml
?nbsp;For more articles on UI design, browse the User Interface Design section of JavaWorld’s Topical Index: 更多UI设计的文章,h览JavaWorld的UI设计部分索引?BR>http://www.javaworld.com/channel_content/jw-ui-index.shtml


原文地址:


]]>
ZAJAX的动态树型结构的设计与实??[转] http://www.tkk7.com/iNeo/archive/2005/12/30/25981.html只牵q只?/dc:creator>只牵q只?/author>Fri, 30 Dec 2005 00:32:00 GMThttp://www.tkk7.com/iNeo/archive/2005/12/30/25981.htmlhttp://www.tkk7.com/iNeo/comments/25981.htmlhttp://www.tkk7.com/iNeo/archive/2005/12/30/25981.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/25981.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/25981.html  2.3.1 动态加载技?/P>

  如果一ơ性获取完整的先序树,构造成xml提供lJavaScript解析Q数据量大Q消耗的资源多Q客L响应延迟旉p长,因此对于大数据量的树Q采用动态加载方式,xơ单几Z?”图片时Q判断是否已加蝲子节Ҏ据,如果未加载则通过Ajax的XMLHTTPlgXMLHTTPRequest对象异步发送请求,q接服务器执行SQL 语句“select * from tree_class where parent = Qorder by classcode ”获取节Ҏ据。相关JavaScript 代码如下Q?/P>

/*判断是否已经加蝲数据Q未加蝲则访问服务器加蝲数据*/

dhtmlTree.prototype.Loading=function(pObject){
 if(((pObject.XMLload==0)&&(this.XMLsource))&&(!this.XMLloading)){
  pObject.XMLload=1;
  this.loadXML(this.XMLsource+getUrlSymbol(this.XMLsource)+"id="+escape(pObject.id));
 }
}
dtmlXMLObject.prototype.loadXML=function(url){//加蝲数据
 try {
  this.xmlDoc = new XMLHttpRequest();
  /*通过GETҎ异步q接?url 加蝲数据*/
  this.xmlDoc.open("GET", url,true);//trueQ异步;falseQ同?BR>  this.xmlDoc.send(null);
 } catch(e){
  this.xmlDoc = new ActiveXObject("Microsoft.XMLHTTP");//使用IE
  this.xmlDoc.open("GET", url,true);//trueQ异步;falseQ同?BR>  this.xmlDoc.send(null);
 }
 return this.xmlDoc.responseXML;
}

  每次只取同一个父节点ParentId的子节点序列Q按XML格式装成树的文档结构,例如Q?/P>

Qtree id="0"Q?BR>Qleaf child=?" name="国防U技大学" id="1" im0="leaf.gif" im1="folderOpen.gif" im2=" folderClosed.gif"/Q?BR>Q?treeQ?/P>

  提供lJavaScript的dhtmlTreeObject.prototype.insertItemQ)解析q组l好html输出节点Q其?childQ?表示有子节点Q?表示没有子节点;im0表示没有子节Ҏ的图标;im1表示有子节点q且打开节点时的图标Qim2表示有子节点q且关闭时的图标Q所以还可以在构造XML时自定义图标?/P>

  2.3.2 树型l构的构?/P>

  从数据库中返回的是有序的先序树,而XML是完整的树型l构文档Q所以将树型数据构造成预定义的XML格式Q只需从根节点开始,遍历一遍树Q即可将树全部生成。相关JavaScript代码如下Q?/P>

/*动态加载树的构造方?/

dtmlXMLObject.prototype.constructTree=function(){

//采用动态加载时获取的xml数据Q解析树型数?BR>
var node=this.XMLLoader.getXMLTopNode("tree");

var parentId=node.getAttribute("id");

for(var i=0;iQnode.childNodes.length;i++) { //逐个解析xml文g的leaf节点

 if((node.childNodes[i].nodeType==1)&&(node.childNodes[i].tagName == "leaf")){
  var name=node.childNodes[i].getAttribute("text");
  ………?BR>  var temp=dhtmlObject.a0Find(parentId);//获取父节点对?BR>  temp.XMLload=1;//已加?BR>  //构造html输出节点
  dhtmlObject.insertItem(parentId,cId,name,im0,im1,im2,chd);
  dhtmlObject.addDragger = this;//讄可拖攄对象
 };
}

  2.3.3 树型l构的维?/P>

  在维护树型结构表?删除节点较ؓ单,SQL 语句? "delete from tree_class where classcode like?+ classcode +"%?,卛_其节点和孩子一q删除;增加节点?分ؓ前插、后插、和插入子节点三U情况,前两U情况需要更新递归更新cd代码Q后者只需扑ֈ父节点的孩子的最大类别代码加1 ?作ؓ增加节点的类别代码;通过拖放来改变树的结构时Q只需拖动节点的parentId更新为目标节点的Classid卛_Q对应的SQL语句为:"update tree_class set parentId = "+ classidTo+" where classid = "+ classidFrom?/P>

  3、效率分?/STRONG>

  对于树的存储一般有两种形式Q二l表和链表,遍历方式一般也有深度遍历和q度遍历两种方式Q遍历的旉复杂度都是O( n )。用二维表存储时Q在内存中用数组的下标能准确定位节点的父节点、兄弟节Ҏ在的数组下标。数据库中节点的定位也是准确的,但是节点信息从数据库中d内存中时Q如果无法通过内存数组下标定位节点信息Q那么就必须遍历一遍寻找一个节点,n 个节点中L一个节点的旉是O(n/2)Qn 个节Ҏ序的旉复杂度将是O( n 2/2)Q这也是一般实现的B/S 模式的树l构效率低下的原因。本Ҏ采用字典序编h案,使得从数据库中取得的树是已经排序的,直接遍历生成客户面E序Q时间复杂度为O( n )?/P>

  4、结 ?/STRONG>

  本文讨论了基于Ajax的动态树型结构的实现ҎQ支持无h动态维护树的节点信息,支持拖放节点改变树的节点l构以及ơ序Q同旉用数据库存储节点信息Q保证了该方案有一定的通用性,此外l合XML描述树的节点信息Q得Q何按本方案预定的xml文档描述的信息都可以通过树来展现。本Ҏ已经应用在我校的数字q新pȝ以及老百姓大药房信息pȝ中?/P>

]]>
ZAJAX的动态树型结构的设计与实??[转]http://www.tkk7.com/iNeo/archive/2005/12/30/25980.html只牵q只?/dc:creator>只牵q只?/author>Fri, 30 Dec 2005 00:31:00 GMThttp://www.tkk7.com/iNeo/archive/2005/12/30/25980.htmlhttp://www.tkk7.com/iNeo/comments/25980.htmlhttp://www.tkk7.com/iNeo/archive/2005/12/30/25980.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/25980.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/25980.html
  cMWindows资源理器的文gҎ式,节点的图片样式如?所C。对于每个节点的DHTML 代码Q需要包含节点的位置、前导图片、样式、针对该节点的其他操作等。同时ؓ了节ҎC的q诏性,q需一些前导图片?BR>
  ? 树节点的前的囄样式?

 对于树的非叶子节点,囄和节点信息等Q采用一个DIV ( division) 容器包含。DIV {容器是DHTML 的基Q用它可以通过脚本E序对其属性进行操作,如设|其style 样式的display 属性来控制子节点的展开和隐藏。节点的位置、前导图片、样式、针对该节点的其他的操作{都攑օ容器中,例:

Q?DIV id =mParentIDQ?BR>Q?IMG align = center border = 0 onclick =″nodeExpand (‘leafid??name = m1Tree src =′Tplus.gifԌ
Q?IMG align = center border = 0 name = m1Folder src =′folderClosed. gifԌ 计算机学?Q?pQ?/P>

  叶子节点无需容器直接输出卛_?BR>
  当点L节点前的?+ ”、?- ”图片时通过DIV 的style 样式的display 属性控制子节点的展开和隐藏。displayQ“none?隐藏,不可?QdisplayQ“block?昄) 。相关JavaScript 代码如下Q?/P>

if (expandChild.style.display = =″none?{
 // 当前为隐藏状?执行展开动作
 this.Loading(parentObject);//判断该分支的数据是否已经加蝲
 expandChild.style.display =″block?
if (para2 = =″last?
 parentObject.src =″Lminus. gif? // 最后一个节?BR>else
 parentObject.src = ″Tminus. gif? // 昄?BR> expandFolder.src = ″folderOpen. gif?
}else {
 // 当前节点的子节点全部隐?BR> expandChild.style.display = ″none?
 if (para2 = = ″last?
  parentObject.src = ″Lplus. gif?
 else
  parentObject.src = ″Tplus. gif?
  expandFolder.src = ″folderClosed. gif?
}

  2.2 树型表结构设?BR>
  我们以数据库体记录节点的变化Q树型表l构臛_要有以下字段Q节点的~号(CLASSID) ,对节点的描述(ClassName)Q父节点的编?ParentId)Q这些是构徏树结构所必须的信息。同时引入节点的cd代码QClassCodeQ,节点的别(ClassLevelQ,是否叶子节点 (Terminated){辅助字D,记录节点ơ序Q实体关pd如图3所C?


?3 树型表结构示意图

  树遍历的旉复杂度是O( n )Q但是将树信息存攑ֈ数据库后Q就不能按传l的方式遍历树,必须使用SQL 语句讉K数据库表的内容,而一ơ性取的数据量多Q消耗的资源也越多,用户{待的时间就长。如果将无序的数据从数据库中dQ在服务器端Q必d排序后的树送到客户端显C。因此,最好从数据库读出已排好序的树?BR>
  我们知道Q字W串排序是按照字典序形式。结合SQL 语句的特点和树结构特点,数据库表中,节点的类别代码采用多U字W串形式Q如AAABBBCCCQ从树根节点开始,每向下一U字W串增加一U,q且子节点类别代码以父节点类别代码开始,再开始本U的cd代码。同U的节点按照生成的顺序编P如节点类别代码ؓAAA 的下一U孩子类别代码ؓAAAAAAQAAAAAB {,AAAAAB 的孩子节点ؓAAAAABAAA、AAAAABAAB{。每一U编号字W的宽度与实际的应用兌Q如AAA~ZZZ 一U则?63 个节点,如果不够用再增加一个字W用于编码。该巧妙的编h式。得在执行SQL 语句select * from tree_class order by classcode 后,一ơ获得完整的先序.

原文链接:http://www.7dspace.com/doc/44/0512/2005122906292220003.htm



]]>
ZAJAX的动态树型结构的设计与实?一)[转]http://www.tkk7.com/iNeo/archive/2005/12/30/25979.html只牵q只?/dc:creator>只牵q只?/author>Fri, 30 Dec 2005 00:28:00 GMThttp://www.tkk7.com/iNeo/archive/2005/12/30/25979.htmlhttp://www.tkk7.com/iNeo/comments/25979.htmlhttp://www.tkk7.com/iNeo/archive/2005/12/30/25979.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/25979.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/25979.html


  ??要介l了一U通用的,动态树型结构的实现ҎQ该ҎZAsynchronous JavaScript and XMLQ结合Struts框架设计实现了结构清晰、扩展性良好的多层架构Q数据存储于数据库,l合XML描述树的节点信息Q得Q何按预定的XML文档描述的信息都可以通过动态树来展现?BR>
  关键?MVC模式QAjaxQ树型结构;字典?BR>
  树型l构是一cd用非常广泛的数据l构。hcȝ会中宗族的族谱和C企业的组lŞ式都是树型结构。在计算机领域中,文gpȝ中文件的理l构、存储器理中的表、数据库中的索引{也都是树型l构。随着Internet的飞速发展,树型l构在浏览器/服务器(Browser/ServerQ简UB/SQ应用系l的应用也越来越q泛?

  目前Q在互联|上q泛存在、应用的树型l构一般分ZU:静态和动态结构。静态结构存在最多、实现简单,但是静态导致不能改变树的结构和内容Q无法反映树的节点信息的变化Q而实现相对复杂的动态构造树Q虽然可以动态增加、删除、更新节点信息,但是大部分不能直接拖放节Ҏ改变树的l构以及节点间的ơ序Qƈ且反复刷新整个页面,l用L护带来了许多不便。本文提Z一U基于Ajax QAsynchronous JavaScript and XMLQ通用的、动态加载节点的解决Ҏ。实C采用J2EE多层架构Q树节点的描qC息采用数据库存储Q以可扩展标记语aQeXtensible Markup LanguageQ简UXMLQ展现给JavaScript解析Q支持无h地增加、删除、更新节点信息,以及拖放节点来改变树的结构和节点间的ơ序。文中第1部分要介l了Ajax技术;W?部分详细介绍了该Ҏ的技术实现过E;W?部分分析了该Ҏ的效率?BR>
  1、Ajax?/STRONG>

  Ajax概念的最早提Jesse James Garrett认ؓQAjaxq不是一门新的语a或技术,它实际上是几Ҏ术按一定的方式l合在共同的协作中发挥各自的作用Q它包括Q?BR>
  ·使用扩展媒体标记语aQeXtended Hypertext Markup LanguageQ简UXHTMLQ和U联样式单(Cascading Style SheetQ简UCSSQ标准化呈现Q?BR>
  ·使用文档对象模型QDocument Object ModelQ简UDOMQ实现动态显C和交互Q?BR>
  ·使用可扩展标记语aQeXtensible Markup LanguageQ简UXMLQ和可扩展样式表转换QeXtensible Stylesheet Language TransformationQ简UXSLTQ进行数据交换与处理Q?BR>
  ·使用XMLHTTPlgXMLHttpRequest对象q行异步数据dQ?BR>
  ·最后用JavaScriptl定和处理所有数据?BR>
  Ajax的工作原理如?所C,它相当于在用户和服务器之间加了一个中间层Q用户操作与服务器响应异步化。ƈ不是所有的用户h都提交给服务器,像?些数据验证和数据处理{都交给Ajax引擎处理Q只有确定需要从服务器读取新数据时再由Ajax引擎代ؓ向服务器提交h。这样就把一些服务器负担的工作{嫁到客户端,利用客户端闲|的处理能力来处理,减轻服务器和带宽的负担,从而达到节UISP的空间及带宽U用成本的目的?


?1 未用AjaxQaQ和使用AjaxQbQ的web应用比较

  2、M设计Ҏ

  传统的服务器E序采用Model 1开发模型,通常业务逻辑、服务器端处理过E和HTML代码集中在一赯C,快速完成应用开发。Model 1 在小规模应用开发时优势明显Q但是应用实C般是Zq程的,一l服务器面实现一个流E,如果程改动导致多个地方修改,非常不利于应用的扩展和更新。此外业务逻辑和表C逻辑混合在服务器面中,耦合紧密Q无法模块化Q导致代码无法复用?BR>
  Model 2则解决了q些问题Q它是面向对象的MVC模式QModel-View-ControllerQ模?视图-控制器)在Web开发中的应用,Model表示应用的业务逻辑QView是应用的表示层页面,Controller是提供应用的处理q程控制。通过q种MVC设计模式把应用逻辑Q处理过E和昄逻辑划分成不同的lg、模块实玎ͼlg间可以进行交互和重用?BR>
  本方案是采用J2EE的多层架构,设计时结合Struts框架表C层、业务逻辑层和数据层划分成不同的模块。表C层专注于树的外观显C,业务逻辑层ؓ服务器端处理E序Q处理树的生成、变化,为减耦合性,该程序全部模块化实现Q不在表C页面嵌入服务器E序Q模型层是数据的存储和表C。下面分别介l各层实现?BR>
原文链接:http://www.7dspace.com/doc/44/0512/2005122906292220003.htm


]]>
AJAX入门[Z]http://www.tkk7.com/iNeo/archive/2005/12/05/22609.html只牵q只?/dc:creator>只牵q只?/author>Mon, 05 Dec 2005 09:12:00 GMThttp://www.tkk7.com/iNeo/archive/2005/12/05/22609.htmlhttp://www.tkk7.com/iNeo/comments/22609.htmlhttp://www.tkk7.com/iNeo/archive/2005/12/05/22609.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/22609.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/22609.html 本想译IBM的一文?Build apps using Asynchronous JavaScript with XML 但是发现不如按照那个方式想怎么写就怎么写。之后有旉了会把其中的一个系?..  阅读全文

]]>
ZAjax的应用程序架构汇总[Z]http://www.tkk7.com/iNeo/archive/2005/12/05/22546.html只牵q只?/dc:creator>只牵q只?/author>Mon, 05 Dec 2005 05:19:00 GMThttp://www.tkk7.com/iNeo/archive/2005/12/05/22546.htmlhttp://www.tkk7.com/iNeo/comments/22546.htmlhttp://www.tkk7.com/iNeo/archive/2005/12/05/22546.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/22546.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/22546.html

览器端框架被划分成两大c:

·应用E序框架Q提供浏览器的功能,但是总包括H口部件抽象和另外的部件而出名,其功能主要围l桌面GUI框架?/P>

·基本l构框架Q提供基本的道和可UL的浏览器抽象Q让开?/FONT>者去创徏内容。典型的功能Q?/P>

* 针对XMLHttpRequest的包装器以封装浏览器-服务器的交互?所有的框架都提供这一功能)?/P>

* XML操作和查询?/P>

* Ҏ来自XMLHttpRequest的应{执行DOM操作?/P>

* 在一些情况中Q与另外的浏览器端技术如Flash(和潜在的Java applets)集成在一赗?/P>

而服务器端框枉常以下面两U方式工?管它们在这里根据语a的不同进行了分类)Q?/P>

·HTML/JS生成Q服务器提供完整的HTML/Javascript代码生成和浏览器-服务器协调,l果是只有浏览器端编码可以被定制?/P>

·q程调用QJavascript调用直接被\由到服务器端功能(例如JavaҎ)q返回到Javascript回叫处理器;或者Javascript调用服务器以提取信息Q例如会话细节,数据库查询等?/P>

·UJavascriptQ应用程序框?/P>

1.1 Bindows(自从2003q?

|址是:http://www.bindows.netQBindows是一个Y件开发包(SDK)Q它Q通过强力联合DHTMLQJavaScriptQCSS和XML{技术,能生成高度交互的互联|?/FONT>应用E序-成ؓC的桌面应用程序的强有力对手。Bindows应用E序不要求下载和也不需要在用户端安?仅要求有一个浏览器(也不需要JavaQFlash或者ActiveX)。Bindows有可能领导面向对象开发的AJAX应用E序的^台?/P>

·它是商业化的Q用来自于MB的技?总部位于GA USAQ主要开发中心在瑞典Q成立于2002q??/P>

Bindows框架提供l你Q?/P>

·Zcȝ面向对象的API

·一套完整的H口pȝQ提供宽范围的窗口小部g支持Q包括菜单、表单、格子、滑动条、量E,甚至更多

·用于开发zero-footprint SOA客户端应用程序的领先的工L

·本机的XMLQSOAP和XML-RPC支持

·单用户到企业U的支持

·内徏的对AJAX的支?/P>

Bindows开发环境:

·支持企业U规模的工程开?/P>

·跨浏览器Q跨q_支持

·服务器独立结?/P>

·与新的和现有资源的互操作?/P>

·一致性开发方法学

1.2 BackBase(自从2003q?

|址是:http://www.backbase.comQ是一个全面的览器端框架Q支持丰富的览器功能以及与.NET和Java的集成?/P>

·商业化,来自于Backbase B.V(总部在AmsterdamQ成立于2003q??/P>

1.3 DOJO(开发中;自从2004q??

|址是:http://dojotoolkit.org/Q提供全面窗口小lg和浏览器-服务器消息支持?/P>

·为创建定制的JavascriptH口组件提供框架支持?

·预置的窗口小lg库?/P>

·览?服务器消息支?XMLHttpRequest和另外的机制?/P>

·支持览器中的URL操纵功能?/P>

·开源许?学术自由许可2.1(http://opensource.org/licenses/afl-2.1.php))Q由JotSpot(http://www.jot.com/)的Alex Russell(http://alex.dojotoolkit.org/)所领导?/P>

1.4 Open Rico(开发中;自从2005q??Z早期的私有框?

|址是:http://openrico.org/demos.pageQ是一多用途框Ӟ支持Ajax基础l构和用户交互?/P>

·一个XMLHttpRequest应答能被路由C个或者更多回叫操作,DOM对象Q或者Javascript对象?/P>

·Ҏ鼠标拖动支持?/P>

·Ajax动画Q例如羃攑֒变换?/P>

·"行ؓ"-实质上是H口组件库?/P>

·使用指南(http://www.mirimar.net/mailbrowser/)Q由RussMirimar的Yonah所提供

·开源。源于Sabre航空公司解决ҎQ由Bill Scott(http://looksgoodworkswell.blogspot.com)QDarren James及另外一些h所支持?/P>

1.5 qooxdoo(开发中;自从2005q??

|址是:http://qooxdoo.sourceforge.net/Q是另一个雄心勃勃的框架Q提供宽范围的UI支持和正在开发中的基l构Ҏ?/P>

·基础l构Q?/P>

* DOM和事?焦点理的可UL的抽象?/P>

* 调试支持?/P>

* 易于旉调度的TimercR?

* Getter/Setter支持?/P>

·UIQ?/P>

* H口组件框架和预置的窗口小lg库?/P>

* 布局理器?/P>

* 囑փ~冲和可UL的PNG透明性?/P>

·开?LGPL)。来自多斚w的A献者?/P>

1.6 Tibet(开发中;自从2005q??

|址是:http://www.technicalpursuit.com/Q目的是提供高度可移植的和全面的Javascript APIQ结果是Q可能自动生成大量的客户端代码。自U是"企业UAjax"?/P>

·q程脚本q行在XMLHttpRequest包装之上-通过协调调用l果支持工作管理,例如应答可以发生在只有当两个分离的调用返回时?/P>

·URI支持?/P>

·所有的HTTPҎ-不仅?GET"?POST"?/P>

·低的协?File://和WebDav以及HTTP?/P>

·Web服务调用-SOAPQXML-RPCQ等{?/P>

·预置的针?A target=_blank>Google APIQAmazon API{等服务的支持?/P>

·由高UJavascript对象l成一个巨大的库?/P>

·许多XML操作?/P>

·IDE和开发工兗?/P>

·开源许?昄l过OSI认证Q但是细节不??

2 UJavascriptQ基l构框架

2.1 AjaxCaller(Alpha版本;自从5?005q?

|址是:http://ajaxify.com/run/testAjaxCaller/Q是一基本的线E安全的XMLHttpRequest包装器,主要针对Ajax新手Q仍处于原始的alpha开?/FONT>阶段Q目前仅与AjaxPatterns的在U搜索范例一h包?/P>

·实现Ҏ务器的调?GET/POST/PUT/DELETE)Q用路由C个回叫操作的plain-text或者XML完成?/P>

·使用q的XMLHttpRequest对象的析构?/P>

·Response~冲(计划??/P>

·针对Ajax新手-q性能优化Q该库主要用于实现易ȝ基础代码q将提供调试支持?/P>

·开源许可。由Michael Mahemoff(http://softwareas.com)(hJohn Wehr和Richard Schwartz的一些思想)l护?/P>

2.2 Flash JavaScript集成?/P>

|址是:http://www.osflash.org/doku.php?id=flashjsQ允许JavaScript和Flash内容的集成:

·使JavaScript能够调用ActionScript功能和反q来的实现?/P>

·所有主要的数据cd能在q两U环境之间传递?/P>

·开源许可。由多个开源Flash贡献者提供支持?/P>

2.3 Google AJAXSLT(发行?005q??

|址是:http://goog-ajaxslt.sourceforge.net/Q是一个Javascript框架Q用来执行XSLT转换以及XPath查询?/P>

·建立在Google地图工作基础之上?/P>

·开源许?BSD)。由一家创新搜索方案公司支持,自称?Google"?/P>

2.4 HTMLHttpRequest(Beta版;始于2005q?

HtmlHttpRequest(http://www.twinhelix.com/javascript/htmlhttprequest/)Q它使用了XMLHttpRequest和Iframes以改q兼Ҏ?/P>

·试qƈ能工作在:IE6/WinQIE5.5/WinQIE5/WinQIE4/WinQMozilla/WinQOpera7/WinQSafari/MacQIE5/Mac?/P>

·未测试,可能能工作在QIE4/MacQMozilla/MacQOpera/OtherQKonqueror/Linux。你正在使用q些之一吗?作者正在请求兼Ҏ信息?/P>

·开源许?LGPL)。由Twin Helix Designs(http://www.twinhelix.com/)的Angus Turnbulll护?/P>

2.5 交互?A target=_blank>|站框架(自从2005q??

交互式网站框?http://sourceforge.net/projects/iwf/Q是一个项目,目的是从览器端对Ajax基础l构的多斚w予以支持。自描述?使用javascriptQcssQxmlQ和html来创造高度交互网站的框架。包括一个定制的针对高度可读的javascript的xml分析器。实质上Q是建立ZAJAX的网站的基础Q还有另外一些通用脚本"?/P>

·U程安全的XMLHttpRequest实现?/P>

·针对XML文档的包装器Q以便你能够创徏更具可读性的代码Q?/P>

var node = doc.groceries.frozen[0].pizza[0].size;</pre>

代替手工的导航:

var node = doc.documentElement.firstChild.firstChild.getAttribute("size");</pre>

·开源许可。由Weaver(http://circaware.com|Brock)l护?/P>

2.6 LibXMLHttpRequest(发行?003q??

libXmlRequest(http://www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libXmlRequest.html)Q是XMLHttpRequest的一个瘦包装器?/P>

·getXML()和postXML()Ҏ?/P>

·XMLHttpRequest对象池支持?/P>

·Response~冲?/P>

·可用源码(明显)Q但是受标准版权的保护,由Stephen W.Coate(http://www.whitefrost.com/index.jsp)所l护?/P>

2.7 RSLite(x)

|站是:http://www.ashleyit.com/rs/main.htmQ是一个针对XMLHttpRequest的瘦包装器?/P>

·一个简单的lgQ作为Brent Ashley的更全面的远E脚本工?参见Javascriptq程脚本-JSRS在多语言服务器端)的一部分发行?/P>

2.8 Sack(在开发中Q自?005q??

|站是:http://twilightuniverse.com/2005/05/sack-of-ajax/Q是一个针对XMLHttpRequest的瘦包装器?/P>

·调用者能指定回叫函数或者回叫DOM对象。借助于回叫DOMQ应{文本直接被推入到DOM?/P>

2.9 Sarissa(发行?月,2003q?

|站是:http://sarissa.sf.netQ是一UJavascript APIQ它装了在览器端可以独立调用XML的功能?/P>

·可移植的XMLHttpRequest创徏

·可移植的XPath查询

·可移植的DOM操作

·可移植的XSLT

·可移植的XML串行?/P>

·开?GPL2.0和LGPL2.1)。来自多斚w贡献者?/P>

2.10 XHConn(发行于自?月,2005q?

|站是:http://xkr.us/code/javascript/XHConn/Q是一个对XMLHttpRequest的瘦包装器?/P>

·例如Q?/P>

new XHConn().connect("mypage.php"Q?POST"Q?foo=bar&baz=qux"QfnWhenDone);

·开源许可。由Brad Fults所l护?/P>

服务器端Q多U语a

3.1 跨^台异步的接口工具?5?005q?

CPAINTQhttp://cpaint.sourceforge.net/Q是一真正的支持PHP和ASP/Vbscript的Ajax实现和JSRS(JavaScriptq程脚本)实现。CPAINT提供l你需求的代码在后台实现AJAX和JSRSQ而返回的数据以JavaScript形式在前台操作,格式化和昄。这允许你创提供接近实时的反馈给用户的web应用E序?/P>

·支持PHP&ASP

·针对所有函数的一致的JavaScript文g

·支持q程脚本和XML

·支持本地和远E函?/P>

·单个或者多个XMLHTTP对象

·以文本或者JavaScript XML/DOM文档对象方式q回后台数据

·能支持POST和GETh

·后台代理函数来访问远E函数和数据

·在所有的主要览器上试q?/P>

·在GNU GPL&LGPL保护下发?/P>

3.2 SAJAX(可用Q但是不?.0版本;自从3?005q?

|站是:http://www.modernmethod.com/sajax/Q直接把调用从Javascript发送到你的服务器端语言q再ơ回q。例如,调用一个javascriptҎx_calculateBudget()Q将先到达服务器和调用一个Java calculateBudget()ҎQ然后以javascript方式把D回到x_calculateBudget_cb()?/P>

·便利从Javascript代理函数到后台操作的映射?/P>

·能够代理对众多服务器端^収ͼASP/ColdFusion/Io/Lua/Perl/PHP/Python/RubyQ的调用?/P>

·开源许可。来自多斚w贡献者?/P>

3.3 Javascipt对象标志(JSON)和JSON-RPC

JSON(http://www.crockford.com/JSON/index.html)Q是一?胖的自由的XML选择"Q而JSON-RPC(http://www.json-rpc.org/)是一U远E过E协议,cM于XML-RPCQ强有力支持Javascript客户?/P>

·实现多服务器端^?http://www.json-rpc.org/impl.xhtml)QJavaQPythonQRubyQPerl?/P>

·针对每种q_有独立的打包和许可,如JSON-RPC-Java(http://oss.metaparadigm.com/jsonrpc/)?/P>

3.4 Javascriptq程脚本(JSRS)(自从2000q?

|址是:http://www.ashleyit.com/rs/jsrs/test.htmQ直接把调用从Javascript发送到你的服务器端语言q再ơ回q?/P>

·知名的浏览器QIE4+QNS4.xQNS6.xQMozillaQOpera7和Galeon?/P>

·服务器端支持QASPQColdFusionQPerlCGIQPHP,Python和JSP(servlet)?/P>

·开源许可。由Brent Ashley(http://www.ashleyit.com/)提供支持?/P>

4 服务器端QJava

注意Q许多现有的框架最q正在添加Java支持(例如struts)Q我在后面指出?/P>

4.1 WebORB for Java(自从2005q??

|址Qhttp://www.themidnightcoders.com/weborb/aboutWeborb.htmQ是一个^収ͼ支持开?/FONT>AJAX和基于Flash的胖客户端应用程序,q可以把它们与Java对象和XML Web服务相系h。在UD?httpQ?/www.themidnightcoders.com/examples)

·WebORB包括一个称作丰富的客户pȝ(http://www.themidnightcoders.com/rcs/index.htm)的客L库。该丰富的客Ll提供一单的在线api来绑定到q调用Q何Java对象QXML Web服务或者EJB上的Ҏ?/P>

·支持同步的和异步的方法调用?/P>

·q不要求在服务器端代码上作Q何修改,不需要定制方法属性,特别的签名或者参数类型。★不要?A target=_blank>设计时生成代理?/P>

·同步调用q回来自于该调用(不需要回?的数据。异步的调用依赖于一个回叫实现?/P>

·M服务器端Ҏ能被同步地或者异步地调用?/P>

·客户应用E序能向服务器对象请求指定的zd方式。结果,对象能被L地创不需MҎ?A target=_blank>~程?/P>

·提供一个特定API来处理数据库查询l果-服务器代码能q回Data集合或者Data表,而客L以一个特DRecordSet JavaScript对象来显C个结果。该对象提供一个方法以索列名和行数据?/P>

·支持数据分页技术。客户应用程序能索页面中的数据?/P>

·支持所有的服务器端参数cdq返回?原型Q字W串Q复合类型,数组Q本?net集合Q远E参考?/P>

·共有两种版本可用Q标准版(自由)和专业版(商业许可)

4.2 Echo 2(自从3?005q?

|址是:http://www.nextapp.com/products/echo2/Q允怽用纯Java代码~写Ajax应用软g(范例(http://demo.nextapp.com/InteractiveTest/ia))?/P>

自动地生成HTML和Javascript?/P>

·协调览器和服务器之间的消息。消息Ş式ؓXML?/P>

·如果需要,可以手工~写定制的Javascript部g?/P>

·开源许?Mozilla公共许可或者GNU LGPL)。源于Next App,Inc.(http://www.nextapp.com/)?/P>

4.3 Direct Web Remoting (DWR)(2005q?

|址是:http://www.getahead.ltd.uk/dwr/Q是一个框Ӟ用于直接从Javascript代码中调用JavaҎ?/P>

·象SAJAXQ能把Javascript中的调用传递到JavaҎQƈq回到Javascript回叫?/P>

·能与Mweb框架QStrutsQTapestryQ等{)一起用?/P>

·开源许?Apache(http://www.apache.org/LICENSE.txt))。由Joe Walker(http://www.getahead.ltd.uk/sg/space/joe/)所支持。被加入到WebWork(http://www.opensymphony.com/webwork/)版本?/P>

4.4 SWATO(2005q?

|址是:http://swato.dev.java.net/Q是一套可重用的和良好集成的Java/JavaScript库,它实C一U更Ҏ的方式来改变你的web应用E序的交互,它是通过AJAX方式实现?/P>

·服务器端Java库能被容易地配置到所有的Servlet 2.3+匚w的容器中?/P>

·客户端JavaScript库能工作在支持HttpXMLRequest的各U浏览器中?/P>

·使用JSON来在服务器端~组你的POJO数据。这样你能存取在MJavaScript环境(HTMLQXULQSVG)中的q程数据Q这U存取可以容易地通过编码或者与某种成熟的JavaScript库集成来实现?/P>

·提供一个简单的接口来你的JavaScript代码可以与暴露在客户端的q程POJO交互(RPC{??/P>

·使用web.xml中的<servlet>?lt;filter>的容易且灉|的配|,q能(但不是依?与Spring集成C赗?/P>

·提供了几个可帮助你快速开发web应用E序的组?如自动完成的文本框,在线表单Q在U列表,{等)?/P>

5 服务器端QLisp

5.1 CL-Ajax

|址Qhttp://cliki.net/cl-ajaxQ实现Javascript直接调用服务器端Lisp函数?/P>

·如下输出函数Q?/P>

(export-函数 #’my-函数)

·可以产生带有参数的Javascript代理?/P>

·能回叫Javascript函数或者DOM对象?/P>

·可以被集成进SAJAX?/P>

·开?定制Q非常灵z,许可)。由[Richard Newman](http://www.holygoat.co.uk/)所l护?/P>

6 服务器端Q?NET

6.1 WebORB for.NET(自从8?005q?

|址Qhttp://www.themidnightcoders.com/weborb/aboutWeborb.htmQ是一个^収ͼ用于开?/FONT>AJAX和基于Flash的胖客户端应用程序,q能把它们连接到.NET对象和XML Web服务?在线举例(http://www.themidnightcoders.com/examples))

·WebORB包括一个客L库,名叫Rich Client System(http://www.themidnightcoders.com/rcs/index.htm)。Rich Client System提供一单的在线api以绑定到和调用Q?NET对象或者XML Web服务上的MҎ?/P>

·支持同步和异步的Ҏ调用

·q不要求在服务器端代码上作Q何修改,不需要定制方法属性,特别的签名或者参数类型?*不要?A target=_blank>设计时代理生成?/P>

·同步调用q回来自于该调用的数?不需要回?。异步的调用依赖于一个回叫实现?/P>

·M服务器端Ҏ能被同步地或者异步地调用?/P>

·客户应用E序能向服务器对象请求指定的zd方式。结果,对象能被L地创不需MҎ?A target=_blank>~程?/P>

·提供一个特定API来处理数据库查询l果-服务器代码能q回DataSet或者DataTableQ而客L以一个特DRecordSet JavaScript对象来显C个结果。该对象提供一个方法以索列名和行数?/P>

·支持数据面技术。客L应用E序能检索页面中的数据?/P>

·支持所有的服务器端参数cdq返回?原型Q字W串Q复合类型,数组Q本?net集合Q远E参?/P>

·共有两种版本可用的:标准?自由)和专业版(商业许可)

6.2 Ajax.NET(自从3?005q?

|址是:http://ajax.schwarz-interactive.de/Q是一个库Q实CJavascript到服务器?NET的存取?/P>

·象SAJAXQ能把Javascript中的调用传递到.NETҎQƈq回到Javascript回叫?/P>

·能存取来自于JavaScript的会话数据?/P>

·~存l果

·自由使用Q可用的源码Q未指定使用许可。由Michael Schwarz(http://weblogs.asp.net/mschwarz/)所l护?/P>

·不允许改变源代码Q用属性标记方?/P>

·完整的类支持以返回客LJavaScript?/P>

·使用HtmlControls来进行输入和q回?/P>

·可以q回数据表,数据集,数据视图Q数l和集合

7 服务器端QPHP

7.1 AjaxAC(自从2005q??

|址是:http://ajax.zervaas.com.au/Q用单个的PHPcd装了完整的应用程序?/P>

·所有的应用E序代码是自包含在单个类?附加另外一些JavaScript?

·q净利烦地调用PHP文g/HTML面。只需创徏应用E序c,然后参照应用E序JavaScript和依附Q何需要的HTML元素到该应用E序?

·Ҏ地处理JavaScript事g的内嵌功?/P>

·创徏子需要ƈ处理它们的内嵌功?/P>

·允许定制的配||因此某些单元能在q行旉讄

·无凌qJavaScript代码Ҏ在调用HTML的代码中-所有的事g是被动态依附的

·׃以上两个原因Ҏ和模板引擎集成到一?/P>

·Ҏ钩到Qhook in toQ已有的PHPcL者MySQL数据库以q回来自于子需求的数据

·能够Ҏ地进一步生成JavaScript对象的可扩展的窗口小lgl构(但是q需要做一些工?

背景Q?/P>

·开源许?Apache2.0)。由Zervaas Enterprises(http://ajax.zervaas.com.au/)支持

7.2 JPSpan

|址是:http://jpspan.sourceforge.net/wiki/doku.phpQ直接把Javascript调用传递到PHP函数?/P>

·q行了严肃的单元试?/P>

·开源许?PHP)?/P>

7.3 XAJAX

|址是:http://xajax.sf.netQ直接把Javascript调用传递到PHP函数?/P>

·使用Javascript代理来调用PHP脚本?/P>

·开源。由J.Max Wilson所创?/P>

8 服务器端QRuby

Ruby On Rails(http://www.rubyonrails.org/)是一个通常的强力支持Ajax的web框架Q?/P>

·当Ajax出现的时候Railsq处于其发展的早期,因此Ajax可能逐渐成ؓRails框架的核心?/P>

·生成览器中大多?全部的窗口小lg和动ȝJavascript脚本?/P>

·支持服务器端调用?/P>

·调度支持?/P>

·开源许可?/P>

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=542157



]]>
Ajax: 一个徏立Web应用的新途径[z]http://www.tkk7.com/iNeo/archive/2005/12/05/22490.html只牵q只?/dc:creator>只牵q只?/author>Mon, 05 Dec 2005 00:29:00 GMThttp://www.tkk7.com/iNeo/archive/2005/12/05/22490.htmlhttp://www.tkk7.com/iNeo/comments/22490.htmlhttp://www.tkk7.com/iNeo/archive/2005/12/05/22490.html#Feedback0http://www.tkk7.com/iNeo/comments/commentRss/22490.htmlhttp://www.tkk7.com/iNeo/services/trackbacks/22490.html         如果要问做什么事是最有吸引力Q那是创徏Web应用。毕竟,上次你听到有人称赞某产品的交?A target=_blank>设计是什么时候的事了Q?除了iPod之外) 它们都很cool, 而且都是很创新的目?

抛开q些不管QWeb设计者们对设计交互式的Web没有什么更好的办法Q却Ҏ们做桌面软g的同事投d许M慕的目光.桌面应用E序有丰富的界面以及对于WebE序来说无法比拟的响应能力。同PWeb的快速发展,在我们所提供的体验和用户从桌面应用程序所得到的体验间产生巨大的差?

而如今差距正在消失。请看看“Google(Google Suggest)? 观察它按你的输入昄条目的更新速度Q几乎是立即更新的。再看看"Google Maps". 攑֤Q用你的鼠标搬动?A target=_blank>滚动。这些动作几乎是立即响应的,不用{待面h?

"Google Suggest"?Google Maps" 是采用Ajax技术的两个典型例子。Ajax是Asynchronous JavaScript and XML的简Uͼ它表现出一个Web开?/FONT>上的Ҏ转变Q那是QWeb上可能做些什? Ajax的定?/P>

Ajax不是一个技术,它实际上是几U技术,每种技术都有其独特q处Q合在一起就成了一个功能强大的新技术。Ajax包括Q?

  • XHTML和CSS
  • 使用文档对象模型(Document Object Model)作动态显C和交互
  • 使用XML和XSLT做数据交互和操作
  • 使用XMLHttpRequestq行异步数据接收
  • 使用JavaScript它们绑定在一?

传统的web应用模型工作hpq样Q大部分界面上的用户动作触发一个连接到Web服务器的HTTPh。服务器完成一些处?--接收数据Q处理计,再访问其它的数据库系l,最后返回一个HTML面到客L。这是一个老套的模式,自采用超文本作ؓweb使用以来Q一直都q样? 但看q《The Elements of User Experience》的读者一定知道,是什么限制了Web界面没有桌面软g那么好用?

?: 传统Web应用模型(?与Ajax模型的比??.

q种旧的途径让我们认识到了许多技术,但它不会产生很好的用户体验。当服务器正在处理自q事情的时候,用户在做什么?没错Q等待。每一个动作,用户都要{待?

很明显,如果我们按桌面程序的思维设计Web应用Q我们不愿意让用hL{待。当界面加蝲后,Z么还要让用户每次再花一半的旉从服务取数据Q实际上Qؓ什么老是让用L到程序去服务器取数据呢? Ajax如何不同凡响

通过在用户和服务器之间引入一个Ajax引擎Q可以消除Web的开始-停止Q开始-停止q样的交互过E? 它就像增加了一层机制到E序中,使它响应更灵敏,而它的确做到了这一炏V?

不像加蝲一个页面一P在会话的开始,览器加载了一个Ajax引擎---采用JavaScript~写q且通常在一个隐藏frame中。这个引擎负责绘制用L面以及与服务器端通讯。Ajax引擎允许用异步的方式实现用户与程序的交互Q-不用{待服务器的通讯。所以用户再不不用打开一个空白窗口,看到{待光标不断的{Q等待服务器完成后再响应?

?2: 传统Web应用的同步交互过E??和Ajax应用的异步交互过E的比较(?.

通常要生一个HTTPh的用户动作现在通过JavaScript调用Ajax引擎来代? M用户动作的响应不再要求直接传到服务器---例如单的数据校验Q内存中的数据编辑,甚至一些页面导?--引擎自己可以处理它. 如果引擎需要从服务器取数据来响应用户动?--假设它提交需要处理的数据Q蝲入另外的界面代码Q或者接收新的数?--引擎让这些工作异步进行,通常使用XML, 不用再担误用L面的交互?谁在使用Ajax

在采用Ajax的开发上面,Google做了巨大的投资。去qGoogle所有主要的产品都用了这Ҏ?--Orkut, Gmail, 以及最q的beta版的Google Groups, Google Suggest和Google Maps---它们全是Ajax的应用?要想了解更多q些Ajax实际的技术细节,L它们的分析文?Gmail, Google Suggest, Google Maps). 其它的像QFlickr, 采用许多Z喜欢的AjaxҎ,q有Amazon的A9.com搜烦引擎也采用类似的技术?

q些目证明了Ajax不只是学术上的,也有许多真实世界成功应用。这不是什么实验室里的技术。Ajax的应用可大可,从非常简单的Q像单一功能的Google Suggest到非常复杂的Google Maps.

AjaxQWeb应用开发新理念

如果要用“充满魅力”一词来形容当前行的交互设计,那么首推创徏Web应用E序。毕竟,当你最l听到某人們ր于产品的交互设计,N不是在网上?QOkayQ我承认iPod除外Q。所有追求酷Q追求创新的新项目都是联机应用的?BR>
管如此QWeb交互设计人员q是不可避免地对创徏桌面应用软g的同事怀有一丝妒忌。桌面应用程序所拥有的功能丰富性和响应能力g是Web目前无法辑ֈ的。简单地让Web应用E序q速蔓Ӟ会在我们所提供的体验和用户从桌面应用程序获取的体验之间形成一道`沟?BR>
但现在,q道鸿沟正被逐渐填^。让我们看看Google Suggest。根据您输入的内容,相关的条目便几乎立即更新。我们再看Google Maps。利用光标,在刻度线上移动来攑֤地图或者羃,所有的一切几乎都是即时的Q完全不用等待页面的h?BR>
Google Suggest和Google Maps是q种新型Web应用E序的两个例子,我在Adaptive Path上把q种理念UCؓ Ajax。也是Asynchronous JavaScript + XML的简写,它预C着Web可能发生一ơ重大的变革?BR>
Ajax的定?BR>
Ajaxq不是一U新技术,它实际上是几U已l在各自领域大行光的技术的强强l合。Ajax׃下内容组成:

· Z标准化的XHTML和CSSQ?BR>
通过DOMQDocument Object ModelQ实现动态显C和交互Q?BR>· 通过XML和XSLT来进行数据交换和处理Q?BR>
使用XMLHttpRequest通过异步方式获取数据Q?BR>使用JavaScript来整合以上所有的技?BR>l典的Web应用E序模型工作方式如下Q大多数用户动作在界面上Ȁ发一个HTTPh到web服务器。服务器做一些处理——获取数据,处理数字Q与现有的应用系l进行沟通——最后返回HTML到客L。这L模型适合于以文本ؓ基础的Web应用E序Q但作ؓ一个强调用户体验的狂热分子QThe Elements of User Experience一书的拥护者)Q我们认文本造就Web成功的东西,却ƈ不一定满Y件应用程序的要求?BR>
传统的Web应用E序模型技术上来说意义非凡Q但它ƈ不适用于创建完的用户体验。当服务器在做数据处理的时候,用户在干什么呢Q没错,他们在等待。一个Q务所需的步骤越多,用户需要等待的ơ数也越多?BR>
昄Q当我们设计Web应用E序的时候,我们不应该让用户ȝ。界面一旦加载完成,Z么还要因为程序需要从服务器传输一些东西而中断用户交互呢Q实际上Q用户ؓ什么要看到E序与服务器的联p?

Z么Ajax与众不同

Ajax应用E序摒弃了“开—关—开—关”的交互形式Q在用户与服务器之间引入了一个中间g——Ajax引擎。看上去在应用程序上d一个层面会减少响应Q但事实上恰好相反?BR>
不同于加载一个网|Q用户会话一旦徏立,览器就加蝲一个Ajax引擎——由JavaScript~写q常攄在一个隐藏内。引擎的责Q包括构造用h作界面以及与服务器的沟通。Ajax引擎允许用户与应用程序的交互异步q行——无ȝ接访问服务器。所以用hq不会在服务器处理数据期间瞪眼面对一个白屏和沙漏图标?BR>


用户动作的处理由传统的表单提交来Ȁ发一个HTTPhQ变为Javascript调用Ajax引擎。给用户的回应不用等到服务器处理后返回——比如简单的数据校验Q在内存中编辑数据,甚至一些导航功能——都直接由引擎来处理。如果引擎需要从服务器获取些数据——提交数据给服务器处理,加蝲额外的界面代码,或者获取新数据——引擎通常以XML格式Ȁ发一个异步的hQ用L完全没有被中断的感觉?BR>
谁在使用Ajax

Google在Ajax开发上投入了巨大的_֊。去qGoogle推出的几大品——Orkut、Gmail、Google Groups最l测试版、Google Suggest和Google Maps——都是基于Ajax的应用。其他还包括Q有着很多备受Z赞誉Ҏ的FlickrQhttp://www.flickr.com/Q基于AjaxQAmazon的A9.com搜烦引擎也用了cM的技术?BR>
q些目证实Ajaxq不是一个技术性的实验品,它可以实践在现实世界的应用中。它也不是一U只能在实验室中q用的技术。Ajax适用于从单的单函数Google Suggest到非常复杂的Google Maps{各U规模的应用E序?BR>
在Adaptive PathQ我们已l基于Ajax的理念工作了好几个月Q我们意识到我们也仅仅是接触到Ajax所能带来的非凡体验的一点皮毛。Ajax是Web应用E序的一个重要发展,q且光要性还在逐步增长。因多开发h员已l熟悉Ajax所包含的技术,我们期望看到更多的组l能够像Google那样通过Ajax获得更大的竞争优ѝ?BR>
更进一?BR>
创徏Ajax应用E序所面的最大挑战ƈ不在技术上。Ajax的核心技术是成熟的,E_q被q泛应用着。这些挑战在于:应用设计人员忘掉所有我们所熟知的网l限ӞL像更宽广、更p的可能情c?BR>
接下来会很有?BR>
Ajax Q&A

2005q??3日:自从Jesse发表了该文,他收C不计其数的咨询Ajax问题的信ӞJesse回复了其中有代表性的问题q整理成Q&A?BR>
QQ是Adaptive Pathq是Google发明了AjaxQAdaptive Path是否协助开发了Google的Ajax应用E序Q?BR>AQAjaxq不是由Adaptive Path或者Google发明的。Google最新的产品是Ajax应用E序最具代表性的例子。Adaptive Path没有参与Google的开发,但我们在为其他的一些客户做一些与Ajax相关的工作?BR>
QQAdaptive Path会出售Ajaxlg或者注册Ajaxq个商标吗?我从哪里可以下蝲到它Q?BR>AQAjaxq不是一个具体的软g或程序,它是一U理念——关于用合理的技术构建Web应用E序架构的思考。Ajaxq个名称和它的理念都不是Adaptive PathU有的?BR>
QQAjax只不q是XMLHttpRequest的别名吗Q?BR>AQ不是。XMLHttpRequest只是Ajax的一个组成部分。XMLHttpRequest让客L与服务器的异步通讯成ؓ可能QAjax是本文描q的一个整体理念,它不仅依赖于XMLHttpRequestQ还包括CSS、DOM和其他技术等{?BR>
QQؓ什么你会vq么个名字?
AQ我们需要一个简短的表示“Asynchronous JavaScript+CSS+DOM+XMLHttpRequest”的新词来与客户谈我们的理念?BR>
QQ与服务器异步通讯的技术生很多年了,Ajax何以UCؓ新理念?
AQAjax包含的技术被大量应用在现实世界中以至于改变了Web的基交互模式是一个新现象。Ajax是针对现在而言Q因些技术离工业化应用还需要很多时间去开发?BR>
QQAjax是一个技术^台或者架构吗Q?BR>AQ都是。Ajax是一pd技术的无缝集合?BR>
QQAjax最适合于什么样的应用?
AQ我也不知道。因是一个相当新的理念,我们的理解而言QAjax应用q处于初期阶Dc有时候传l的Web应用E序模型可能更ؓ适合?BR>
QQ是否可以理解ؓAdaptive Path是取代anti-FlashQ?BR>AQ完全不是。Macromedia是Adaptive Path的客户之一Qƈ且我们长期ؓFlash技术做技术支持。待Ajax成熟后,我认为对于具体的问题QAjax有时候会是一个更好的解决ҎQ同h时候Flash也许做得更好。我们也有兴探讨两者的l合。(比如FlickrQ它l合了两者)?BR>
QQAjax在易用性和览器兼Ҏ上是否有限ӞAjax是否会与后退按钮冲突QAjax与RESTQ雷辄子扫描技术)兼容吗?Ajax的开发有哪些安全考虑QAjax能ؓ那些止Javascriptq行的用户工作吗Q?BR>AQ所有这些问题的{案Q我只能说“可能”。已l有很多的开发者着手这些方面的工作。要评估Ajax的所有限Ӟ我想q需要做很多工作Q我们希望Ajax开发社揭示更多的信息?BR>
QQ你所提到的Google的一些应用中实际上ƈ没有使用XML。我一定要在Ajax应用中用XML或XSLT吗?
AQ不是,对于Ajax客户端,XML作ؓ数据交换的蝲体是支持最为完善的QXMLHttpRequestQDOM支持Q。当Ӟ你没有理׃接受可以辑ֈ同样效果的技术,例如JavaScript Object NotationQhttp://www.crockford.com/JSON/Q或者其他类似的数据交换的格式?BR>
QQAjax应用比传l的Web应用E序方便开发吗Q?BR>AQ也不尽然。Ajax的应用不可避免要在客Lq行复杂的JavaScript脚本。编写复杂ƈ且高效稳定的脚本q不是一件容易的事情Q优U的开发工具和框架能帮助我们接受这一挑战?BR>
QQAjax应用E序L传统的Web应用E序E序更友好吗Q?BR>AQ不一定,Ajaxl交互设计h员更多的灉|性。能力越大,责Q也越大。我们必d心用AjaxL善用户体验,而不是把它弄得更p?/FONT>



Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=542160



]]>
վ֩ģ壺 ޿һ| ޾Ʒ99þþþĻ | վvƬ| ޹ƷۺϾþһ| ձ˳Ļ| 99Ʒ| ɫַ| ߹ۿĻɫַ| ؼëƬѲ| þþþþþ޾Ʒ| þþþþùaѹۿ| һӰԺ| þùһƬѹۿ| av뾫Ʒվ| ˳www߲| ʮ˽վ߹ۿ| ղƷBD߹ۿ| ޾ƷĻѶ| Ƶ߹ۿ| ޾Ʒһ| þþƷAV캣| ޾Ʒ͵Ƶѹۿ| Ļ߿| ߹ۿ| ƵƬaaëƬ| ŮˬˬˬƵ| ޳߹ۿ| ĻѴƬ| һɫëƬ| þۺ³³| պһƵ| ƷһһƵ| ޹պ| ޹ƷԲ߲| ƷվƵ| ޵һڶĵ| ҹþþӰԺ| AVƬ߲Ψ| ֻѵAVߵӰ| ŷ߹ۿ| ִִֻˬƵ|