﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>语源科技BlogJava-JLive开发团队的精神－默默无闻的coding未来！</title><link>http://www.blogjava.net/leo821031/</link><description>从卖水果变成J2EE软件架构师！</description><language>zh-cn</language><lastBuildDate>Thu, 16 Apr 2026 23:41:06 GMT</lastBuildDate><pubDate>Thu, 16 Apr 2026 23:41:06 GMT</pubDate><ttl>60</ttl><item><title>Oracle专家调优秘密</title><link>http://www.blogjava.net/leo821031/archive/2006/07/22/59507.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Sat, 22 Jul 2006 01:50:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/07/22/59507.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/59507.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/07/22/59507.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/59507.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/59507.html</trackback:ping><description><![CDATA[在过去的十年中， Oracle 已经成为世界上最专业的数据库之一。对于 IT 专家来说，就是要确保利用 Oracle 的强大特性来提高他们公司的生产力。最有效的方法之一是通过 Oracle 调优。它有大量的调整参数和技术来改进你的 Oracle 数据库的性能。 <br />Oracle 调优是一个复杂的主题。关于调优可以写整整一本书，不过，为了改善 Oracle 数据库的性能，有一些基本的概念是每个 Oracle DBA 都应该遵从的。 <br />　　 在这篇简介中，我们将简要地介绍以下的 Oracle 主题： <br />　　-- 外部调整：我们应该记住 Oracle 并不是单独运行的。因此我们将查看一下通过调整 Oracle 服务器以得到高的性能。 <br />　　--Row re-sequencing 以减少磁盘 I/O ：我们应该懂得 Oracle 调优最重要的目标是减少 I/O 。 <br />　　--Oracle SQL 调整。 Oracle SQL 调整是 Oracle 调整中最重要的领域之一，只要通过一些简单的 SQL 调优规则就可以大幅度地提升 SQL 语句的性能，这是一点都不奇怪的。 <br />　　-- 调整 Oracle 排序：排序对于 Oracle 性能也是有很大影响的。 <br />　　-- 调整 Oracle 的竞争：表和索引的参数设置对于 UPDATE 和 INSERT 的性能有很大的影响。 <br /><br />　　 我们首先从调整 Oracle 外部的环境开始。如果内存和 CPU 的资源不足的话，任何的 Oracle 调整都是没有帮助的。 <br /><br />　　外部的性能问题 <br />　　<br />　　Oracle 并不是单独运行的。 Oracle 数据库的性能和外部的环境有很大的关系。这些外部的条件包括有： <br />　　 ． CPU--CPU 资源的不足令查询变慢。当查询超过了 Oracle 服务器的 CPU 性能时，你的数据库性能就受到 CPU 的限制。 <br />　　 ．内存 -- 可用于 Oralce 的内存数量也会影响 SQL 的性能，特别是在数据缓冲和内存排序方面。 <br />　　 ．网络 -- 大量的 Net8 通信令 SQL 的性能变慢。 <br />　　 许多新手都错误的认为应该首先调整 Oracle 数据库，而不是先确认外部资源是否足够。实际上，如果外部环境出现瓶颈，再多的 Oracle 调整都是没有帮助的。 <br />　　 在检查 Oracle 的外部环境时，有两个方面是需要注意的： <br />　　1 、当运行队列的数目超过服务器的 CPU 数量时，服务器的性能就会受到 CPU 的限制。补救的方法是为服务器增加额外的 CPU 或者关闭需要很多处理资源的组件，例如 Oracle Parallel Query 。 <br />　　2 、内存分页。当内存分页时，内存容量已经不足，而内存页是与磁盘上的交换区进行交互的。补救的方法是增加更多的内存，减少 Oracle SGA 的大小，或者关闭 Oracle 的多线程服务器。 <br />　　 可以使用各种标准的服务器工具来得到服务器的统计数据，例如 vmstat,glance,top 和 sar 。 DBA 的目标是确保数据库服务器拥有足够的 CPU 和内存资源来处理 Oracle 的请求。 <br />　　 以下让我们来看一下 Oracle 的 row-resequencing 是如何能够极大地减少磁盘 I/O 的。 <br /><br />　　Row-resequencing （行的重新排序） <br />　　 <br />　　就象我们上面提到的，有经验的 Oracle DBA 都知道 I/O 是响应时间的最大组成部分。其中磁盘 I/O 特别厉害，因为当 Oracle 由磁盘上的一个数据文件得到一个数据块时，读的进程就必须等待物理 I/O 操作完成。磁盘操作要比数据缓冲慢 10,000 倍。因此，如果可以令 I/O 最小化，或者减少由于磁盘上的文件竞争而带来的瓶颈，就可以大大地改善 Oracle 数据库的性能。 <br />　　 如果系统响应很慢，通过减少磁盘 I/O 就可以有一个很快的改善。如果在一个事务中通过按一定的范围搜索 primary-key 索引来访问表，那么重新以 CTAS 的方法组织表将是你减少 I/O 的首要策略。通过在物理上将行排序为和 primary-key 索引一样的顺序，就可以加快获得数据的速度。 <br />　　 就象磁盘的负载平衡一样，行的重新排序也是很简单的，而且也很快。通过与其它的 DBA 管理技巧一起使用，就可以在高 I/O 的系统中大大地减少响应的时间。 <br />　　 在高容量的在线事务处理环境中（ online transaction processing ， OLTP ），数据是由一个 primary 索引得到的，重新排序表格的行就可以令连续块的顺序和它们的 primary 索引一样，这样就可以在索引驱动的表格查询中，减少物理 I/O 并且改善响应时间。这个技巧仅在应用选择多行的时候有用，或者在使用索引范围搜索和应用发出多个查询来得到连续的 key 时有效。对于随机的唯一 primary-key （主键）的访问将不会由行重新排序中得到好处。 <br />　　 让我们看一下它是如何工作的。考虑以下的一个 SQL 的查询，它使用一个索引来得到 100 行： <br />selectsalaryfromemployeewherelast_name like 'B%'; <br />这个查询将会使用 last_name_index ，搜索其中的每一行来得到目标行。这个查询将会至少使用 100 次物理磁盘的读取，因为 employee 的行存放在不同的数据块中。 <br />　　 不过，如果表中的行已经重新排序为和 last_name_index 的一样，同样的查询又会怎样处理呢？我们可以看到这个查询只需要三次的磁盘 I/O 就读完全部 100 个员工的资料（一次用作索引的读取，两次用作数据块的读取），减少了 97 次的块读取。 <br />　　 重新排序带来的性能改善的程度在于在你开始的时候行的乱序性如何，以及你需要由序列中访问多少行。至于一个表中的行与索引的排序键的匹配程度，可以查看数据字典中的 dba_indexes 和 dba_tables 视图得到。 <br />　　 在 dba_indexes 的视图中，查看 clustering_factor 列。如果 clustering_factor 的值和表中的块数目大致一样，那么你的表和索引的顺序是一样的。不过，如果 clustering_factor 的值接近表中的行数目，那就表明表格中的行和索引的顺序是不一样的。 <br />　　 行重新排序的作用是不可以小看的。在需要进行大范围的索引搜索的大表中，行重新排序可以令查询的性能提高三倍。 <br />　　 一旦你已经决定重新排序表中的行，你可以使用以下的工具之一来重新组织表格。 <br />　　. 使用 Oracle 的 Create Table As Select (CTAS) 语法来拷贝表格 <br />　　. Oracle9i 自带的表格重新组织工具 <br />　　<br />　　 以下，我们来看以下 SQL 语句的调优。 <br /><br />　　SQL 调优 <br />　　Oracle 的 SQL 调优是一个复杂的主题，甚至是需要整本书来介绍 Oracle SQL 调优的细微差别。不过有一些基本的规则是每个 Oracle DBA 都需要跟从的，这些规则可以改善他们系统的性能。 SQL 调优的目标是简单的： <br />　　. 消除不必要的大表全表搜索：不必要的全表搜索导致大量不必要的 I/O ，从而拖慢整个数据库的性能。调优专家首先会根据查询返回的行数目来评价 SQL 。在一个有序的表中，如果查询返回少于 40% 的行，或者在一个无序的表中，返回少于 7% 的行，那么这个查询都可以调整为使用一个索引来代替全表搜索。对于不必要的全表搜索来说，最常见的调优方法是增加索引。可以在表中加入标准的 B 树索引，也可以加入 bitmap 和基于函数的索引。要决定是否消除一个全表搜索，你可以仔细检查索引搜索的 I/O 开销和全表搜索的开销，它们的开销和数据块的读取和可能的并行执行有关，并将两者作对比。在一些情况下，一些不必要的全表搜索的消除可以通过强制使用一个 index 来达到，只需要在 SQL 语句中加入一个索引的提示就可以了。 <br />　　. 在全表搜索是一个最快的访问方法时，将小表的全表搜索放到缓存中，调优专家应该确保有一个专门的数据缓冲用作行缓冲。在 Oracle7 中，你可以使用 alter table xxx cache 语句，在 Oracle8 或以上，小表可以被强制为放到 KEEP 池中缓冲。 <br />　　. 确保最优的索引使用 ：对于改善查询的速度，这是特别重要的。有时 Oracle 可以选择多个索引来进行查询，调优专家必须检查每个索引并且确保 Oracle 使用正确的索引。它还包括 bitmap 和基于函数的索引的使用。 <br />　　. 确保最优的 JOIN 操作：有些查询使用 NESTED LOOP join 快一些，有些则是 HASH join 快一些，另外一些则是 sort-merge join 更快。 <br />　　 这些规则看来简单，不过它们占 SQL 调优任务的 90% ，并且它们也无需完全懂得 Oracle SQL 的内部运作。以下我们来简单概览以下 Oracle SQL 的优化。 <br />　　 我们首先简要查看 Oracle 的排序，并且看一看排序操作是如何影响性能的。 <br /><br />　　 调整 Oracle 的排序操作 <br />　　 排序是 SQL 语法中一个小的方面，但很重要，在 Oracle 的调整中，它常常被忽略。当使用 create index 、 ORDER BY 或者 GROUP BY 的语句时， Oracle 数据库将会自动执行排序的操作。通常，在以下的情况下 Oracle 会进行排序的操作： <br />　　 使用 Order by 的 SQL 语句 <br />　　 使用 Group by 的 SQL 语句 <br />　　 在创建索引的时候 <br />　　 进行 table join 时，由于现有索引的不足而导致 SQL 优化器调用 MERGE SORT <br />　　 当与 Oracle 建立起一个 session 时，在内存中就会为该 session 分配一个私有的排序区域。如果该连接是一个专用的连接 (dedicated connection) ，那么就会根据 init.ora 中 sort_area_size 参数的大小在内存中分配一个 Program Global Area (PGA) 。如果连接是通过多线程服务器建立的，那么排序的空间就在 large_pool 中分配。不幸的是，对于所有的 session ，用做排序的内存量都必须是一样的，我们不能为需要更大排序的操作分配额外的排序区域。因此，设计者必须作出一个平衡，在分配足够的排序区域以避免发生大的排序任务时出现磁盘排序（ disk sorts ）的同时，对于那些并不需要进行很大排序的任务，就会出现一些浪费。当然，当排序的空间需求超出了 sort_area_size 的大小时，这时将会在 TEMP 表空间中分页进行磁盘排序。磁盘排序要比内存排序大概慢 14,000 倍。 <br />　　 上面我们已经提到，私有排序区域的大小是有 init.ora 中的 sort_area_size 参数决定的。每个排序所占用的大小由 init.ora 中的 sort_area_retained_size 参数决定。当排序不能在分配的空间中完成时，就会使用磁盘排序的方式，即在 Oracle 实例中的临时表空间中进行。 <br />　　 磁盘排序的开销是很大的，有几个方面的原因。首先，和内存排序相比较，它们特别慢；而且磁盘排序会消耗临时表空间中的资源。 Oracle 还必须分配缓冲池块来保持临时表空间中的块。无论什么时候，内存排序都比磁盘排序好，磁盘排序将会令任务变慢，并且会影响 Oracle 实例的当前任务的执行。还有，过多的磁盘排序将会令 free buffer waits 的值变高，从而令其它任务的数据块由缓冲中移走。 <br />　　 接着，让我们看一下 Oracle 的竞争，并且看一下表的存储参数的设置是如何影响 SQL UPDATE 和 INSERT 语句的性能的。 <br /><br />调整 Oracle 的竞争 <br />　　Oracle 的其中一个优点时它可以管理每个表空间中的自由空间。 Oracle 负责处理表和索引的空间管理，这样就可以让我们无需懂得 Oracle 的表和索引的内部运作。不过，对于有经验的 Oracle 调优专家来说，他需要懂得 Oracle 是如何管理表的 extent 和空闲的数据块。对于调整拥有高的 insert 或者 update 的系统来说，这是非常重要的。 <br />　　 要精通对象的调整，你需要懂得 freelists 和 freelist 组的行为，它们和 pctfree 及 pctused 参数的值有关。这些知识对于企业资源计划（ ERP ）的应用是特别重要的，因为在这些应用中，不正确的表设置通常是 DML 语句执行慢的原因。 <br />　　 对于初学者来说，最常见的错误是认为默认的 Oracle 参数对于所有的对象都是最佳的。除非磁盘的消耗不是一个问题，否则在设置表的 pctfree 和 pctused 参数时，就必须考虑平均的行长和数据库的块大小，这样空的块才会被有效地放到 freelists 中。当这些设置不正确时，那些得到的 freelists 也是 "dead" 块，因为它们没有足够的空间来存储一行，这样将会导致明显的处理延迟。 <br />Freelists 对于有效地重新使用 Oracle 表空间中的空间是很重要的，它和 pctfree 及 pctused 这两个存储参数的设置直接相关。通过将 pctused 设置为一个高的值，这时数据库就会尽快地重新使用块。不过，高性能和有效地重新使用表的块是对立的。在调整 Oracle 的表格和索引时，需要认真考虑究竟需要高性能还是有效的空间重用，并且据此来设置表的参数。以下我们来看一下这些 freelists 是如何影响 Oracle 的性能的。 <br />　　 当有一个请求需要插入一行到表格中时， Oracle 就会到 freelist 中寻找一个有足够的空间来容纳一行的块。你也许知道， freelist 串是放在表格或者索引的第一个块中，这个块也被称为段头（ segment header ）。 pctfree 和 pctused 参数的唯一目的就是为了控制块如何在 freelists 中进出。虽然 freelist link 和 unlink 是简单的 Oracle 功能，不过设置 freelist link (pctused) 和 unlink (pctfree) 对 Oracle 的性能确实有影响。 <br />　　 由 DBA 的基本知识知道， pctfree 参数是控制 freelist un-links 的（即将块由 freelists 中移除）。设置 pctfree=10 意味着每个块都保留 10% 的空间用作行扩展。 pctused 参数是控制 freelist re-links 的。设置 pctused=40 意味着只有在块的使用低于 40% 时才会回到表格的 freelists 中。 <br />　　 许多新手对于一个块重新回到 freelists 后的处理都有些误解。其实，一旦由于一个删除的操作而令块被重新加入到 freelist 中，它将会一直保留在 freelist 中即使空间的使用超过了 60% ，只有在到达 pctfree 时才会将数据块由 freelist 中移走。 <br /><br />　　 表格和索引存储参数设置的要求总结 <br />　　 以下的一些规则是用来设置 freelists, freelist groups, pctfree 和 pctused 存储参数的。你也知道， pctused 和 pctfree 的值是可以很容易地通过 alter table 命令修改的，一个好的 DBA 应该知道如何设置这些参数的最佳值。 <br />　　 有效地使用空间和高性能之间是有矛盾的，而表格的存储参数就是控制这个方面的矛盾： <br />. 对于需要有效地重新使用空间，可以设置一个高的 pctused 值，不过副作用是需要额外的 I/O 。一个高的 pctused 值意味着相对满的块都会放到 freelist 中。因此，这些块在再次满之前只可以接受几行记录，从而导致更多的 I/O 。 <br />. 追求高性能的话，可以将 pctused 设置为一个低的值，这意味着 Oracle 不会将数据块放到 freelists 中直到它几乎是空的。那么块将可以在满之前接收更多的行，因此可以减少插入操作的 I/O 。要记住 Oracle 扩展新块的性能要比重新使用现有的块高。对于 Oracle 来说，扩展一个表比管理 freelists 消耗更少的资源。 <br />　　 让我们来回顾一下设置对象存储参数的一些常见规则： <br />　　 ．经常将 pctused 设置为可以接收一条新行。对于不能接受一行的 free blocks 对于我们来说是没有用的。如果这样做，将会令 Oracle 的性能变慢，因为 Oracle 将在扩展表来得到一个空的块之前，企图读取 5 个 "dead" 的 free block 。 <br />　　 ．表格中 chained rows 的出现意味着 pctfree 太低或者是 db_block_size 太少。在很多情况下， RAW 和 LONG RAW 列都很巨大，以至超过了 Oracle 的最大块的大小，这时 chained rows 是不可以避免的。 <br />　　 ．如果一个表有同时插入的 SQL 语句，那么它需要有同时删除的语句。运行单一个一个清除的工作将会把全部的空闲块放到一个 freelist 中，而没有其它包含有任何空闲块的 freelists 出现。 <br />　　 ． freelist 参数应该设置为表格同时更新的最大值。例如，如果在任何时候，某个表最多有 20 个用户执行插入的操作，那么该表的参数应该设置为 freelists=20 。 <br />　　 应记住的是 freelist groups 参数的值只是对于 Oracle Parallel Server 和 Real Application Clusters 才是有用的。对于这类 Oracle ， freelist groups 应该设置为访问该表格的 Oracle Parallel Server 实例的数目。<br /><br /><img src ="http://www.blogjava.net/leo821031/aggbug/59507.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-07-22 09:50 <a href="http://www.blogjava.net/leo821031/archive/2006/07/22/59507.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>谁知道在Eclipse下如何用UML建模然后转换成Java代码?</title><link>http://www.blogjava.net/leo821031/archive/2006/07/11/57602.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Tue, 11 Jul 2006 01:40:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/07/11/57602.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/57602.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/07/11/57602.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/57602.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/57602.html</trackback:ping><description><![CDATA[
		<strong>
				<font color="#008000" size="5">麻烦贴下代码,详细说明书,谢谢!!<img height="19" src="http://www.blogjava.net/Emoticons/emrose.gif" width="19" border="0" /><br />9:40:04</font>
		</strong>
<img src ="http://www.blogjava.net/leo821031/aggbug/57602.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-07-11 09:40 <a href="http://www.blogjava.net/leo821031/archive/2006/07/11/57602.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>类示csdn的树状菜单,谁知道的,麻烦贴代码出来</title><link>http://www.blogjava.net/leo821031/archive/2006/07/03/56368.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Mon, 03 Jul 2006 08:21:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/07/03/56368.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/56368.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/07/03/56368.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/56368.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/56368.html</trackback:ping><description><![CDATA[谢谢了<img src ="http://www.blogjava.net/leo821031/aggbug/56368.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-07-03 16:21 <a href="http://www.blogjava.net/leo821031/archive/2006/07/03/56368.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>AJAX框架汇总</title><link>http://www.blogjava.net/leo821031/archive/2006/06/28/55464.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Wed, 28 Jun 2006 01:39:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/06/28/55464.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/55464.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/06/28/55464.html#Feedback</comments><slash:comments>3</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/55464.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/55464.html</trackback:ping><description><![CDATA[
		<p>基于浏览器的应用框架一般分为两种： </p>
		<ul>
				<li>Aplication frameworks:提供了浏览器功能，但其最著名的还是在于通过窗口生成组件建立桌面GUI。 
</li>
				<li>Infrastructural frameworks:提供基本的框架功能和轻便式浏览器端操作，让开发者去创建具体应用，主要功能包括： 
<ul><li>基于XMLHttpRequest组件的浏览器交互功能 
</li><li>XML解析和操作功能 
</li><li>根据XMLHttpRequest的返回信息进行相应的DOM操作 
</li><li>一些特殊情况下，和其他的浏览器端技术如Flash（或Java Applets）等集合到一起应用 </li></ul></li>
		</ul>
		<p>基于服务器端的应用框架通常以下面两种方式工作(尽管它们根据不同的语言进行了分类) </p>
		<ul>
				<li>HTML/JS Generation(HTML/JS生成)：通过服务器端生成HTML和JS代码在传递给浏览器端进行直接运行 
</li>
				<li>远程交互：JavaScript调用服务器端函数(例如调用Java函数)并返回给JavaScript的回调句柄，或者请求服务器端数据信息，例如Session信息，数据库查询等。 </li>
		</ul>
		<h1>目录</h1>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1">
						<font color="#ff0000">1 Pure Javascript: Application Frameworks</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.1">
						<font color="#ff0000">1.1 Bindows</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.2">
						<font color="#ff0000">1.2 BackBase</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.3">
						<font color="#ff0000">1.3 DOJO</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.4">
						<font color="#ff0000">1.4 Open Rico</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.5">
						<font color="#ff0000">1.5 qooxdoo</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.6">
						<font color="#ff0000">1.6 Tibet</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#1.7">
						<font color="#ff0000">1.7 AJFORM</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2">
						<font color="#ff0000">2 Pure Javascript: Infrastructural Frameworks</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.1">
						<font color="#ff0000">2.1 AjaxCaller</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.2">
						<font color="#ff0000">2.2 Flash JavaScript Integration Kit </font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.3">
						<font color="#ff0000">2.3 Google AJAXSLT</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.4">
						<font color="#ff0000">2.4 HTMLHttpRequest</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.5">
						<font color="#ff0000">2.5 Interactive Website Framework </font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.6">
						<font color="#ff0000">2.6 LibXMLHttpRequest</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.7">
						<font color="#ff0000">2.7 MAJAX</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.8">
						<font color="#ff0000">2.8 RSLite</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.9">
						<font color="#ff0000">2.9 Sack</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.10">
						<font color="#ff0000">2.10 Sarissa</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#2.11">
						<font color="#ff0000">2.11 XHConn</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#3">
						<font color="#ff0000">3 Server-Side: Multi-Language</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#3.1">
						<font color="#ff0000">3.1 Cross-Platform Asynchronous INterface Toolkit</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#3.2">
						<font color="#ff0000">3.2 SAJAX</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#3.3">
						<font color="#ff0000">3.3 Javascipt Object Notation (JSON) and JSON-RPC</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#3.4">
						<font color="#ff0000">3.4 Javascript Remote Scripting (JSRS)</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#3.5">
						<font color="#ff0000">3.5 Bitkraft for ASP.NET</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4">
						<font color="#ff0000">4 Server-Side: Java</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4.1">
						<font color="#ff0000">4.1 WebORB for Java</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4.2">
						<font color="#ff0000">4.2 Echo 2</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4.3">
						<font color="#ff0000">4.3 Direct Web Remoting (DWR)</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4.4">
						<font color="#ff0000">4.4 SWATO</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4.5">
						<font color="#ff0000">4.5 AJAX JSP Tag Library</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#4.6">
						<font color="#ff0000">4.6 AJAX Java Server Faces Framework</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#5">
						<font color="#ff0000">5 Server-Side: Lisp</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#5.1">
						<font color="#ff0000">5.1 CL-Ajax</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#6">
						<font color="#ff0000">6 Server-Side: .NET</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#6.1">
						<font color="#ff0000">6.1 WebORB for .NET</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#6.2">
						<font color="#ff0000">6.2 Ajax.NET</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#6.3">
						<font color="#ff0000">6.3 ComfortASP.NET</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#6.4">
						<font color="#ff0000">6.4 AjaxAspects</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#7">
						<font color="#ff0000">7 Server-Side: PHP</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#7.1">
						<font color="#ff0000">7.1 AjaxAC</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#7.2">
						<font color="#ff0000">7.2 JPSpan</font>
				</a>
		</dd>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#7.3">
						<font color="#ff0000">7.3 XAJAX</font>
				</a>
		</dd>
		<dt>
		</dt>
		<div style="MARGIN: 5px">
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#8">
						<font color="#ff0000">8 Server-Side: Ruby</font>
				</a>
		</div>
		<dd>
				<a href="http://blog.csdn.net/baggio785/archive/2006/05/21/747753.aspx#8.1">
						<font color="#ff0000">8.1 Ruby On Rails</font>
				</a>
				<p> </p>
				<h1>1. <a name="1"></a>Pure Javascript: Application Frameworks</h1>
				<h3>1.1 <a name="1.1"></a>Bindows (成立于2003年)</h3>
				<p>
						<a href="http://www.bindows.net/" target="_blank">
								<font color="#ff0000">Bindows</font>
						</a>是一个通过DHTML、JavaScript、CSS和HTML等技术强劲联合起来的一套完整的Windows桌面式的WEB应用程序解决方案。Bindows无需下载安装客户端支撑组件（如Java、ActiveX或Flash），仅需一个浏览器。纯OO的理念体现在Bindows任何地方，Bindows或许是笔者见过的最完整最强大的AJAX应用程序平台。 <br />Bindows是商业程序的，使用了来自于MB的技术(总部位于GA USA，主要开发中心在瑞典，成立于2002年)。</p>
				<p>Bindows框架提供的功能和特性有： </p>
				<ul>
						<li>基于面相对象技术的类和API 
</li>
						<li>一套完整的Windows桌面系统，支持各种特性窗口模式，包括菜单、表单、表格、滑动条、测量仪器窗口和其他一些Windows窗口特性支持。 
</li>
						<li>是开发zero-footprint(零空间占用)SOA客户端应用程序首选工具包 
</li>
						<li>本机的XML，SOAP和XML-RPC支持 
</li>
						<li>单用户到企业级开发的支持 
</li>
						<li>内建的完美的AJAX支持 </li>
				</ul>
				<p>Bindows开发环境： </p>
				<ul>
						<li>支持企业级规模的项目开发 
</li>
						<li>跨浏览器、跨OS平台的支持 
</li>
						<li>不受服务器结构限制 
</li>
						<li>良好的与新的、现有的资源互操作性 
</li>
						<li>统一的开发接口 </li>
				</ul>
				<p> </p>
				<h3>1.2 <a name="1.2"></a>BackBase (成立于2003年)</h3>
				<p>
						<a href="http://www.backbase.com/" target="_blank">
								<font color="#ff0000">BackBase</font>
						</a>是一个完整的浏览器端框架，提供了丰富的浏览器操作功能，以及对.NET和JAVA平台的集成。 <br />商业化产品，来自于Backbase B.V(总部在Amsterdam，成立于2003年)。 </p>
				<p> </p>
				<h3>1.3 <a name="1.3"></a>DOJO (开发中,成立于2004年9月) </h3>
				<p>DOJO提供完整的轻量级窗口组件和浏览器-服务器消息映射支持</p>
				<ul>
						<li>提供创建自定义Javascript窗口组件的框架支持 
</li>
						<li>预制的丰富的窗口类型库 
</li>
						<li>B/S消息映射支持——XMLHttpRequest和其他机制 
</li>
						<li>支持浏览器中的URL操纵功能 
</li>
						<li>开源许可(<a href="http://opensource.org/licenses/afl-2.1.php" target="_blank"><font color="#ff0000">Academic Free License 2.1</font></a>)，由<a href="http://www.jot.com/" target="_blank"><font color="#ff0000">JotSpot</font></a>的<a href="http://alex.dojotoolkit.org/" target="_blank"><font color="#ff0000">Alex Russell</font></a>所领导。 </li>
				</ul>
				<h3>1.4 <a name="1.4"></a>Open Rico (开发中;成立于2005年5月;基于早期的一个proprietary 框架) </h3>
				<p>
						<a href="http://openrico.org/demos.page" target="_blank">
								<font color="#ff0000">Open Rico</font>
						</a>是一个支持Ajax架构和用户交互的多用途框架。 </p>
				<ul>
						<li>一个XMLHttpRequest response能被一个或多个的DOM对象，或者Javascript对象调用。 
</li>
						<li>支持拖拽操作 
</li>
						<li>支持基于AJAX的动画模式，如缩放和变换等 
</li>
						<li>基于Behaviors的操作库 
</li>
						<li>
								<a href="http://www.mirimar.net/mailbrowser/" target="_blank">
										<font color="#ff0000">使用指南</font>
								</a>，由RussMirimar的Yonah提供 
</li>
						<li>开源。源于Sabre航空公司解决方案，由<a href="http://looksgoodworkswell.blogspot.com/" target="_blank"><font color="#ff0000">Bill Scott</font></a>，Darren James及另外一些人维护。 </li>
				</ul>
				<p> </p>
				<h3>1.5 <a name="1.5"></a>qooxdoo (开发中; 成立于2005年5月) </h3>
				<p>
						<a href="http://qooxdoo.sourceforge.net/" target="_blank">
								<font color="#ff0000">qooxdoo</font>
						</a>，是另一个发展迅猛的应用框架，提供广泛的UI支持，正在开发基础架构等特性。 </p>
				<ul>
						<li>基础结构特性： 
<ul><li>能轻易的捕获和操纵DOM事件 
</li><li>支持调试 
</li><li>支持一个时间操作的Timer类 
</li><li>Getter/Setter支持 </li></ul></li>
						<li>UI: 
<ul><li>窗口组件库和框架 
</li><li>界面布局管理 
</li><li>图像缓存和透明PNG图片处理 </li></ul></li>
						<li>开源(LGPL). </li>
				</ul>
				<h3>
						<a name="1.6">
						</a>1.6 Tibet (开发中; 创建于2005年6月)</h3>
				<p>
						<a href="http://www.technicalpursuit.com/" target="_blank">
								<font color="#ff0000">Tibet</font>
						</a>提供了大量的易移植和完整的JavaScript API，通过这些可以快速生成大量的客户端代码，Tibet自称是企业级AJAX。</p>
				<ul>
						<li>远程脚本调用封装在XMLHttpRequest中 
</li>
						<li>URI支持 
</li>
						<li>支持所有的HTTP事件，不再仅仅是GET和POST 
</li>
						<li>低级的协议-File://和WebDav也可以当作HTTP正常使用 
</li>
						<li>Web Services调用支持，包括SOAP、XML-RPC等等 
</li>
						<li>大型的Javascript对象库 
</li>
						<li>多种多样的XML操作支持 
</li>
						<li>IDE和开发工具 
</li>
						<li>开源协议(OSI) </li>
				</ul>
				<h3>
						<a name="1.7">
						</a>1.7 AJFORM (创建于2005年6月)</h3>
				<p>
						<a href="http://redredmusic.com/brendon/ajform/" target="_blank">
								<font color="#ff0000">AJFORM</font>
						</a>是一个极易上手的AJAX框架，被用来编写入门级的AJAX代码，提供有以下功能：</p>
				<ul>
						<li>三步安装 
</li>
						<li>自动支持任意HTML表单元素 
</li>
						<li>几乎无需编码即可实现AJAX </li>
				</ul>
				<h1>
						<a name="2">
						</a>2 Pure Javascript: Infrastructural Frameworks</h1>
				<h3>
						<a name="2.1">
						</a>2.1 AjaxCaller(创建于2005年5月，目前是Alpha版)</h3>
				<p>
						<a href="http://ajaxify.com/run/testAjaxCaller/" target="_blank">
								<font color="#ff0000">AjaxCaller</font>
						</a>是一个具有多线程安全访问的XMLHttpRequest组件，主要针对Ajax开发新手，目前仍处于alpha开发阶段，仅在<a href="http://www.ajaxpatterns.org/" target="_blank"><font color="#ff0000">AjaxPatterns</font></a>的在线搜索范例中使用了这个程序。 </p>
				<ul>
						<li>用明文或者XML结构的数据实现和服务器的交互(GET/POST/PUT/DELETE) 
</li>
						<li>支持XMLHttRequest对象的构析(销毁对象，C++支持内存对象的构析操作) 
</li>
						<li>支持Response的高速缓存(尚在计划中) 
</li>
						<li>简单的库文件代码易于新手学习使用，并且支持脚本调试 
</li>
						<li>开源协议 </li>
				</ul>
				<h3>
						<a name="2.2">
						</a>2.2 Flash JavaScript Integration Kit</h3>
				<p>
						<a href="http://www.osflash.org/doku.php?id=flashjs" target="_blank">
								<font color="#ff0000">The Flash JavaScript Integration Kit</font>
						</a>可以使Flash和Javascript脚本实现相互集成。</p>
				<ul>
						<li>可以实现在JavaScript中调用Flash ActionScript脚本，反之亦然。 
</li>
						<li>几乎支持双方主要数据类型的在不同环境中的传递调用。 
</li>
						<li>开源协议，有几个Flash开源爱好者维护。 </li>
				</ul>
				<h3>
						<a name="2.3">
						</a>2.3 Google AJAXSLT (2005年6月发行) </h3>
				<p>
						<a href="http://goog-ajaxslt.sourceforge.net/" target="_blank">
								<font color="#ff0000">Google AJAXSLT</font>
						</a>，是一个Javascript框架，用来执行XSLT转换以及XPath查询。</p>
				<ul>
						<li>目前在Google Map上就使用了这个。 
</li>
						<li>开源协议(BSD) </li>
				</ul>
				<h3>
						<a name="2.4">
						</a>2.4 HTMLHttpRequest(Beta版；创建于2005年)</h3>
				<p>
						<a href="http://www.twinhelix.com/javascript/htmlhttprequest/" target="_blank">
								<font color="#ff0000">HtmlHttpRequest</font>
						</a>最大的特点就是运用XMLHttpRequest对象和标准HTML标签IFrame来实现最大限度的跨浏览跨平台的AJAX支持，其原理是在支持XMLHttpRequest的浏览器上调用XMLHttp，如果不支持，就用IFrame来模拟实现异步交互。</p>
				<ul>
						<li>目前支持的浏览器：IE6/Win, IE5.5/Win, IE5/Win, IE4/Win, Mozilla/Win, Opera7/Win, Safari/Mac, IE5/Mac 
</li>
						<li>尚未测试的浏览器：IE4/Mac, Mozilla/Mac, Opera/Other, Konqueror/Linux。 
</li>
						<li>开源协议(LGPL) </li>
				</ul>
				<h3>
						<a name="2.5">
						</a>2.5 Interactive Website Framework (创建于2005年)</h3>
				<p>
						<a href="http://sourceforge.net/projects/iwf/" target="_blank">
								<font color="#ff0000">Interactive Website Framework</font>
						</a>定位在浏览器中支持各种各样的AJAX基础应用的开源项目。自称是通过JavaScript、CSS、XML和HTML实现高性能的交互式WEB框架，包括一个可定制易读的XML解析器。实际上，IWF是一个AJAX的基础框架，并且还包括一些通用脚本代码。</p>
				<ul>
						<li>实现了线程安全的XMLHttpRequest 
</li>
						<li>对XML Document进行封装，以便创建更具有可读性的代码：<br /><blockquote>var node = doc.groceries.frozen[0].pizza[0].size;</blockquote>封装后的数据读取 
<blockquote>var node = doc.documentElement.firstChild.firstChild.getAttribute("size");</blockquote>原始的DOM操作读取 
</li>
						<li>开源协议 </li>
				</ul>
				<h3>
						<a name="2.6">
						</a>2.6 LibXMLHttpRequest (2003年6月发布) </h3>
				<p>
						<a href="http://www.whitefrost.com/servlet/connector?file=reference/2003/06/17/libXmlRequest.html" target="_blank">
								<font color="#ff0000">libXmlRequest</font>
						</a>是一个小型XMLHttpRequest封装包</p>
				<ul>
						<li>用getXML()和postXML()两个事件简化XMLHttpReuqest调用 
</li>
						<li>支持XMLHttpRequest对象池 
</li>
						<li>Response缓存处理 
</li>
						<li>源码可以使用，但是有版权保护。 </li>
				</ul>
				<h3>
						<a name="2.7">
						</a>2.7 MAJAX </h3>
				<p>
						<a href="http://unips.sourceforge.net/devblog/?page_id=2" target="_blank">
								<font color="#ff0000">MAJAX</font>
						</a>是另一个非常小巧的HttpRequest封装包，为收发字符型信息提供简单接口，并为每步动作设置回调界面。</p>
				<h3>
						<a name="2.8">
						</a>2.8 RSLite (x) </h3>
				<p>
						<a href="http://www.ashleyit.com/rs/main.htm" target="_blank">
								<font color="#ff0000">RSLite</font>
						</a>是一个XMLHttpRequest封装组件，作为Brent Ashley的JSRS(JavaScript Remote Scripting)其中的一部分功能单独发布。详情可以看JSRS的介绍</p>
				<h3>
						<a name="2.9">
						</a>2.9 Sack(开发中，成立于2005年5月) </h3>
				<p>
						<a href="http://twilightuniverse.com/2005/05/sack-of-ajax/" target="_blank">
								<font color="#ff0000">Sack</font>
						</a>也是一个很有名字的微型XMLHttpRequest封装包。调用者可以自定义回调函数或者是DOM对象。借助于回调DOM对象，可以把Response回来的数据直接以文本的方式嵌入DOM中。</p>
				<h3>
						<a name="2.10">
						</a>2.10 Sarissa (发布于2003年2月)</h3>
				<p>
						<a href="http://sarissa.sf.net/" target="_blank">
								<font color="#ff0000">Sarissa</font>
						</a>是一个JavaScript API，封装了在浏览器端独立调用XML的功能。</p>
				<ul>
						<li>可移植的XMLHttpRequest对象创造 
</li>
						<li>可移植的XPath查询 
</li>
						<li>可移植的DOM操控 
</li>
						<li>可移植的XSLT 
</li>
						<li>可移植的XML序列化 
</li>
						<li>开源协议(GPL2.0和LGPL2.1) </li>
				</ul>
				<h3>
						<a name="2.11">
						</a>2.11 XHConn (2005年4月发布)</h3>
				<p>
						<a href="http://xkr.us/code/javascript/XHConn/" target="_blank">
								<font color="#ff0000">XHConn</font>
						</a>也是一个小型的XMLHttpRequest封装库。笔者也使用改良过的XHConn，其特点就是调用简单，代码也清晰易读。</p>
				<ul>
						<li>例子： 
<blockquote>new XHConn().connect("mypage.php"，"POST"，"foo=bar&amp;baz=qux"，fnWhenDone);</blockquote></li>
						<li>开源协议许可 </li>
				</ul>
				<h1>
						<a name="3">
						</a>3 Server-Side: Multi-Language</h1>
				<h3>
						<a name="3.1">
						</a>3.1 Cross-Platform Asynchronous INterface Toolkit (2005年5月) </h3>
				<p>
						<a href="http://cpaint.sourceforge.net/" target="_blank">
								<font color="#ff0000">CPAINT</font>
						</a>是一个真正的同时支持PHP和ASP/VBScript脚本的AJAX和JSRS工具包。CPAINT在后台提供你需求的AJAX和JSRS代码，并自动返回到浏览器端相应的Javascript脚本代码，这种方式易于实时反馈需求的WEB应用程序。</p>
				<ul>
						<li>支持PHP和ASP 
</li>
						<li>所有功能函数都在统一的JavaScript文件中 
</li>
						<li>支持远程脚本和XML 
</li>
						<li>支持本地和远程函数调用 
</li>
						<li>可以创建单个或多个XMLHttp对象 
</li>
						<li>返回给后台的数据即可以是文本也可以是XML/DOM文档对象 
</li>
						<li>支持POST和GET 
</li>
						<li>用服务端代理的方式实现远程函数和数据的访问操作 
</li>
						<li>大部分浏览器中测试正常使用 
</li>
						<li>在GNU、GPL、LGPL开源协议保护下发行 </li>
				</ul>
				<h3>
						<a name="3.2">
						</a>3.2 SAJAX (2005年3月) </h3>
				<p>
						<a href="http://www.modernmethod.com/sajax/" target="_blank">
								<font color="#ff0000">SAJAX</font>
						</a>的实现方式很独特，例如：调用一个javascript方法x_calculateBudget()，将先把响应传到服务器并调用一个Java calculateBudget()方法，然后以javascript方式把值返回到x_calculateBudget_cb()中。SAJAX的名气不错，估计很多人都听过甚至用过，不过缺点就是它的这套映射理论感觉较繁锁，远不如一些轻量级的封装库好用，不过SAJAX最大的特点就是支持的平台丰富，几乎囊括了WEB下常用的编程语言和平台</p>
				<ul>
						<li>很方便从JavaScript函数映射到服务端代理操作 
</li>
						<li>支持多种平台(ASP/ColdFusion/Io/Lua/Perl/PHP/Python/Ruby) 
</li>
						<li>开源协议 </li>
				</ul>
				<h3>
						<a name="3.3">
						</a>3.3 Javascipt Object Notation (JSON) and JSON-RPC </h3>
				<p>
						<a href="http://www.crockford.com/JSON/index.html" target="_blank">
								<font color="#ff0000">JSON</font>
						</a>是一个"face-free" XML，而<a href="http://www.json-rpc.org/" target="_blank"><font color="#ff0000">JSON-RPC</font></a>是一种远程交互协议，类似于XML-RPC，对JavaScript支持较强</p>
				<ul>
						<li>
								<a href="http://www.json-rpc.org/impl.xhtml" target="_blank">
										<font color="#ff0000">支持多服务端平台</font>
								</a>: Java, Python, Ruby, Perl. 
</li>
						<li>针对不同的平台有不同的包和许可协议, 如<a href="http://oss.metaparadigm.com/jsonrpc/" target="_blank"><font color="#ff0000">JSON-RPC-Java</font></a>. </li>
				</ul>
				<h3>
						<a name="3.4">
						</a>3.4 JavaScript Remote Scripting(JSRS)(2000年) </h3>
				<p>
						<a href="http://www.ashleyit.com/rs/jsrs/test.htm" target="_blank">
								<font color="#ff0000">JSRS</font>
						</a>，较经典的远程脚本访问组件，支持将客户端数据通过服务器做代理进行远程的数据/操作交互。</p>
				<ul>
						<li>支持的浏览器：IE4+，NS4.x，NS6.x，Mozilla，Opera7和Galeon。 
</li>
						<li>服务器端脚本语言支持：ASP，ColdFusion，PerlCGI，PHP,Python和JSP(servlet)。 
</li>
						<li>开源协议。由<a href="http://www.ashleyit.com/" target="_blank"><font color="#ff0000">Brent Ashley</font></a>提供支持。 </li>
				</ul>
				<h3>
						<a name="3.5">
						</a>3.5 Bitkraft for ASP.NET </h3>
				<p>
						<a href="http://www.tiggrbitz.com/" target="_blank">
								<font color="#ff0000">Bitkraft</font>
						</a>是个基于(.NET)Web框架的CLR(公共语言运行库)，允许用独特的方式创建和操作分布式Web内容。用C#编写，运行在微软的.NET 1.1和Mono框架下，无缝式的客户端-服务器响应方式是它的最大特点。Bitkraft没有使用XML组织数据，而是用JSON代替。</p>
				<ul>
						<li>支持的浏览器： IE5+, Firefox1+, NS6 
</li>
						<li>服务器端要求：ASP.NET, Mono XSP, Cassini, Apache (modMono) .NET Framework 1.1+ 
</li>
						<li>事件驱动 
</li>
						<li>支持同步和异步的远程代理 
</li>
						<li>客户端支持所有的.NET类型或自定义类对象映射到JSON中 
</li>
						<li>用JSON取代XML 
</li>
						<li>免费，开源许可协议 </li>
				</ul>
				<h1>
						<a name="4">
						</a>4 Server-Side: Java </h1>
				<h3>
						<a name="4.1">
						</a>4.1 WebORB for Java (2005年8月) </h3>
				<p>
						<a href="http://www.themidnightcoders.com/weborb/aboutWeborb.htm" target="_blank">
								<font color="#ff0000">WebORB for Java</font>
						</a>是一个开发AJAX和基于Flash的富客户端应用程序的开发平台。<a href="http://www.themidnightcoders.com/examples" target="_blank"><font color="#ff0000">在线例子</font></a></p>
				<ul>
						<li>WebORB包括一个富客户端开发类库。提供简单的在线式API用来绑定或者调用任何Java对象、XML Web Services和EJB 
</li>
						<li>支持异步或同步的事件驱动 
</li>
						<li>不需要在服务端修改任何代码，不需要自定义方法或属性、变量等。不要求设计时指定代理等。 
</li>
						<li>同步调用不需要回调，异步调用需要一个回调方法。 
</li>
						<li>客户端可以向服务端请求指定的活动方式，不需要任何编程就可以把处理结果轻易的转变为状态。 
</li>
						<li>提供一个特定API来处理数据库查询结果-服务器代码能返回DataSet或者DataTable，而客户端以一个类似于RecordSet的JavaScript对象来显示这个结果。该对象提供检索列名和行数据的方法。 
</li>
						<li>支持数据分页技术。客户应用程序能检索页面中的数据。 
</li>
						<li>支持以参数的方式返回所有服务期端数据类型，如primitives, strings, complex types, arrays, native .net collections, remote references 
</li>
						<li>目前有两个版本：标准版(免费)，专业版(商业许可) </li>
				</ul>
				<h3>
						<a name="4.2">
						</a>4.2 Echo 2 (2005年3月) </h3>
				<p>
						<a href="http://www.nextapp.com/products/echo2/" target="_blank">
								<font color="#ff0000">Echo 2</font>
						</a>允许你用纯Java语言编写AJAX程序。 <a href="http://demo.nextapp.com/InteractiveTest/ia" target="_blank"><font color="#ff0000">Demo</font></a>. </p>
				<ul>
						<li>自动生成HTML和Javascript代码 
</li>
						<li>用XML在客户端-服务端传递消息 
</li>
						<li>如果愿意支持自定义Javascript组件 
</li>
						<li>开源协议(Mozilla Public License or GNU LGPL) </li>
				</ul>
				<h3>
						<a name="4.3">
						</a>4.3 Direct Web Remoting (DWR) (2005) </h3>
				<p>
						<a href="http://www.getahead.ltd.uk/dwr/" target="_blank">
								<font color="#ff0000">Direct Web Remoting</font>
						</a>可以在Javascript代码中直接调用Java方法的应用框架</p>
				<ul>
						<li>类似于SAJAX，可以把Javascript中的请求调用转递到Java方法中并将执行结果返回给Javascript 
</li>
						<li>可以和任何Web框架一起使用，如Struts、Tapestry等等 
</li>
						<li>开源(Apache)，目前该产品被加入到<a href="http://www.huihoo.com/web/ajax/%20//www.opensymphony.com/webwork/" target="_blank"><font color="#ff0000">WebWork</font></a>中 </li>
				</ul>
				<h3>
						<a name="4.4">
						</a>4.4 SWATO (2005) </h3>
				<p>
						<a href="http://swato.dev.java.net/" target="_blank">
								<font color="#ff0000">SWATO</font>
						</a>是一套可重用的和良好集成的Java/JavaScript库，它实现了一种更容易的方式来改变你的web应用程序的交互，通过AJAX方式实现。</p>
				<ul>
						<li>服务端Java库可以非常容易的部署到所有Servlet2.3+兼容的容器中 
</li>
						<li>客户端Javascript库可以在所有支持XMLHttpRequest的浏览器中使用 
</li>
						<li>使用JSON技术在服务端组织POJO数据，这样你可以在任何Javascript环境中(HTML、XUL、SVG)访问这些远程数据，这种方式很容易通过硬编码或者某种成熟的Javascript库集成到当前应用中 
</li>
						<li>提供一个简单接口使你能在Javascript中调用远程的POJO数据 
</li>
						<li>使用&lt;servlet&gt;和&lt;filter&gt;灵活的在web.xml中进行配置，并且可以集成(不是必须)到你的Spring框架中 
</li>
						<li>提供了几个可帮助你快速开发web应用程序的组件(如自动完成的文本框，在线表单，在线列表等等) </li>
				</ul>
				<h3>
						<a name="4.5">
						</a>4.5 AJAX JSP Tag Library </h3>
				<p>
						<a href="http://ajaxtags.sourceforge.net/" target="_blank">
								<font color="#ff0000">The AJAX JSP Tag Library</font>
						</a>是一组JSP标签库，用来AJAX程序开发。可以在J2EE下无需Javascript就能轻松开发AJAX模式的Web Form。标签库为比较通用的AJAX功能提供了5个标签：</p>
				<ul>
						<li>autocomplete: 用户在文本框中输入字符，自动从指定的数据中匹配用户输入的字符，类似于Google Suggest 
</li>
						<li>callout:可以为A标签加入气泡式的消息提示框，不过是实时的服务端取出数据 
</li>
						<li>Select/dropdown:类似于联动菜单，比如地州市的联动下拉框 
</li>
						<li>toggle:开关闸按钮，比如在一个hidden表单域中存储true和falsh，同时显示相应的img图像 
</li>
						<li>update field:更新数据，也就是无刷新提交了。 </li>
				</ul>
				<h3>
						<a name="4.6">
						</a>4.6 AJAX Java Server Faces Framework </h3>
				<p>
						<a href="http://smirnov.org.ru/en/ajax-jsf.html" target="_blank">
								<font color="#ff0000">The AJAX-JSF</font>
						</a>用来把任意的JSF应用程序转变为AJAX应用程序</p>
				<ul>
						<li>
								<a href="http://smirnov.org.ru/myfaces-ajax/ajax.jsf" target="_blank">
										<font color="#ff0000">例子</font>
								</a>：AJAX组件的 MyFaces JSF Tree(树型目录), table scroller(可滚动的表格), tabbed pane(分页栏) 
</li>
						<li>开源协议(<a href="http://www.apache.org/licenses/LICENSE-2.0.html" target="_blank"><font color="#ff0000">Apache Software License</font></a>) </li>
				</ul>
				<h1>
						<a name="5">
						</a>Server-Side: Lisp </h1>
				<h3>
						<a name="5.1">
						</a>5.1 CL-Ajax </h3>
				<p>
						<a href="http://cliki.net/cl-ajax" target="_blank">
								<font color="#ff0000">CL-Ajax</font>
						</a>实现Javascript直接调用服务端Lisp</p>
				<ul>
						<li>生成可带参数的函数 
</li>
						<li>可以回调Javascript函数或者DOM对象 
</li>
						<li>可以集成到SAJAX中 
</li>
						<li>开源许可 </li>
				</ul>
				<h1>
						<a name="6">
						</a>6 Server-Side: .NET </h1>
				<h3>
						<a name="6.1">
						</a>6.1 WebORB for .NET (2005年8月) </h3>
				<p>
						<a href="http://www.themidnightcoders.com/weborb/aboutWeborb.htm" target="_blank">
								<font color="#ff0000">WebORB for .NET</font>
						</a>是一个用.NET和XML Web Services方式开发AJAX和基于Flash的富客户端应用程序(<a href="http://www.themidnightcoders.com/examples" target="_blank"><font color="#ff0000">在线例子</font></a>) </p>
				<ul>
						<li>WebORB包括一个富客户端开发类库。提供简单的在线式API用来绑定或者调用任何.NET对象、XML Web Services 
</li>
						<li>支持异步或同步的事件驱动 
</li>
						<li>不需要在服务端修改任何代码，不需要自定义方法或属性、变量等。不要求设计时指定代理等。 
</li>
						<li>同步调用不需要回调，异步调用需要一个回调方法。 
</li>
						<li>客户端可以向服务端请求指定的活动方式，不需要任何编程就可以把处理结果轻易的转变为状态。 
</li>
						<li>提供一个特定API来处理数据库查询结果-服务器代码能返回DataSet或者DataTable，而客户端以一个类似于RecordSet的JavaScript对象来显示这个结果。该对象提供检索列名和行数据的方法。 
</li>
						<li>支持数据分页技术。客户应用程序能检索页面中的数据。 
</li>
						<li>支持以参数的方式返回所有服务期端数据类型，如primitives, strings, complex types, arrays, native .net collections, remote references 
</li>
						<li>目前有两个版本：标准版(免费)，专业版(商业许可) </li>
				</ul>
				<h3>
						<a name="6.2">
						</a>6.2 Ajax.NET (2005年3月) </h3>
				<p>
						<a href="http://ajax.schwarz-interactive.de/" target="_blank">
								<font color="#ff0000">Ajax.NET</font>
						</a>是首家支持各种方式通过Javascript访问服务端.net的免费库</p>
				<ul>
						<li>类似于SAJAX，能把Javascript请求发送到.NET方法，服务端回传给Javascript，甚至包括串行化自定义类。 
</li>
						<li>可以在Javascript中访问Session和Application数据 
</li>
						<li>缓存查询结果 
</li>
						<li>免费使用源代码 
</li>
						<li>无需更改源代码，允许给Ajax.NET添加和修改方法和属性 
</li>
						<li>所有类支持Javascript客户端返回数据，可以在JavaScript中使用DataSet：res.Tables[0].Rows 
</li>
						<li>使用HtmlControls组件访问和返回数据 
</li>
						<li>页面无需重载，用事件代理(数据访问层) 
</li>
						<li>因为只提供一个调用接口方法，所以服务端CPU占用非常少 </li>
				</ul>
				<h3>
						<a name="6.3">
						</a>6.3 ComfortASP.NET (2005年8月) </h3>
				<p>
						<a href="http://www.daniel-zeiss.de/ComfortASP/" target="_blank">
								<font color="#ff0000">ComfortASP.NET</font>
						</a>可以让开发者在纯.NET下开发类似AJAX(DHTML,JavaScript,XMLHttp)特性的应用程序。</p>
				<ul>
						<li>快速应答 
</li>
						<li>减少HTML传输 
</li>
						<li>减少页面重载 
</li>
						<li>无闪烁的浏览器内容更改 
</li>
						<li>AJAX用户体验， </li>
				</ul>
				<h3>
						<a name="6.4">
						</a>6.4 AjaxAspects (2005年8月) </h3>
				<p>
						<a href="http://ajaxaspects.blogspot.com/" target="_blank">
								<font color="#ff0000">AjaxAspects</font>
						</a>是个可以用Javascript调用服务端WebService事件的引擎</p>
				<ul>
						<li>用标准的SOAP和WSDL进行服务端-客户端通信 
</li>
						<li>用简单的类型和XML对象支持带参数的返回值 
</li>
						<li>缓存支持 
</li>
						<li>动作队列 
</li>
						<li>免费使用，开源协议 </li>
				</ul>
				<h1>
						<a name="7">
						</a>7 Server-Side: PHP </h1>
				<h3>
						<a name="7.1">
						</a>7.1 AjaxAC (2005年4月) </h3>
				<p>
						<a href="http://ajax.zervaas.com.au/" target="_blank">
								<font color="#ff0000">AjaxAC</font>
						</a>用一个单独类封装了完整的应用程序功能</p>
				<ul>
						<li>所有的功能集成在自包含的类中(另外附带一些Javascript库) 
</li>
						<li>调用PHP文件或者HTML页面非常简易，只需创建App类后把类引用传递给需要调用的Javascript对象或者HTML元素即可。 
</li>
						<li>捕获Javascript事件 
</li>
						<li>可以自定义配置数据，并且支持运行时参数更改 
</li>
						<li>无需再Javascript代码中夹杂凌乱的Html代码，所有事件都是被动态附加上的 
</li>
						<li>由于以上两个优点，所以支持良好的模版引擎 
</li>
						<li>容易Hook到PHP类和MySql数据已返回给自己的request 
</li>
						<li>能够容易的用Javascript建立窗口模式应用程序。 </li>
				</ul>
				<h3>
						<a name="7.2">
						</a>7.2 JPSpan </h3>
				<p>
						<a href="http://jpspan.sourceforge.net/wiki/doku.php" target="_blank">
								<font color="#ff0000">JPSPAN</font>
						</a>通过Javascript直接调用PHP中的函数。</p>
				<ul>
						<li>进行了严谨的单元测试 
</li>
						<li>开源许可(PHP) </li>
				</ul>
				<h3>
						<a name="7.3">
						</a>7.3 XAJAX </h3>
				<p>
						<a href="http://xajax.sf.net/" target="_blank">
								<font color="#ff0000">XAjax</font>
						</a>通过Javascript直接调用PHP中的函数</p>
				<ul>
						<li>支持用Javascript调用PHP脚本 
</li>
						<li>开源许可协议 </li>
				</ul>
				<h1>
						<a name="8">
						</a>8 Server-Side: Ruby </h1>
				<h3>
						<a name="8.1">
						</a>8.1 Ruby On Rails </h3>
				<p>
						<a href="http://www.rubyonrails.org/" target="_blank">
								<font color="#ff0000">Ruby On Rails</font>
						</a>是一个支持AJAX的完整Web框架，使用Ruby语言编写，严格按照MVC结构开发。</p>
				<ul>
						<li>当Ajax出现的时候Rails还处于其发展的早期，因此Ajax可能逐渐成为Rails框架的核心。 
</li>
						<li>生成浏览器中大多数/全部的Window应用组件和动画的Javascript脚本。 
</li>
						<li>支持服务器端调用。 
</li>
						<li>队列支持 
</li>
						<li>开源许可 </li>
				</ul>
		</dd>
<img src ="http://www.blogjava.net/leo821031/aggbug/55464.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-06-28 09:39 <a href="http://www.blogjava.net/leo821031/archive/2006/06/28/55464.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>我们的技术群</title><link>http://www.blogjava.net/leo821031/archive/2006/06/26/55102.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Mon, 26 Jun 2006 03:55:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/06/26/55102.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/55102.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/06/26/55102.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/55102.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/55102.html</trackback:ping><description><![CDATA[群1(3414290),<br />群2(满),<br />群3(满),<br />群4(满),<br />群5(满),<br />群6(满) <img src ="http://www.blogjava.net/leo821031/aggbug/55102.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-06-26 11:55 <a href="http://www.blogjava.net/leo821031/archive/2006/06/26/55102.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>大家把我们的团队BLOG设置为首页，或者加入收藏夹!</title><link>http://www.blogjava.net/leo821031/archive/2006/06/23/54678.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Fri, 23 Jun 2006 07:00:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/06/23/54678.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/54678.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/06/23/54678.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/54678.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/54678.html</trackback:ping><description><![CDATA[
		<p>谢谢配合!</p>
<img src ="http://www.blogjava.net/leo821031/aggbug/54678.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-06-23 15:00 <a href="http://www.blogjava.net/leo821031/archive/2006/06/23/54678.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>刚建立，大家多关心下</title><link>http://www.blogjava.net/leo821031/archive/2006/06/22/54549.html</link><dc:creator>小白的一生</dc:creator><author>小白的一生</author><pubDate>Thu, 22 Jun 2006 10:16:00 GMT</pubDate><guid>http://www.blogjava.net/leo821031/archive/2006/06/22/54549.html</guid><wfw:comment>http://www.blogjava.net/leo821031/comments/54549.html</wfw:comment><comments>http://www.blogjava.net/leo821031/archive/2006/06/22/54549.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.blogjava.net/leo821031/comments/commentRss/54549.html</wfw:commentRss><trackback:ping>http://www.blogjava.net/leo821031/services/trackbacks/54549.html</trackback:ping><description><![CDATA[
		<p>哈哈</p>
<img src ="http://www.blogjava.net/leo821031/aggbug/54549.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.blogjava.net/leo821031/" target="_blank">小白的一生</a> 2006-06-22 18:16 <a href="http://www.blogjava.net/leo821031/archive/2006/06/22/54549.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>