去油污,易维护 Web 服务器

作者:Kevin Bedell

LJ:对于不熟悉 Ajax 的读者,您能描述一下它是什么以及它满足了什么需求吗?

BG:用过 Google 地图吗? 如果没有,请访问 maps.google.com 并试用几分钟。 它应该会让您感到震撼。 这就是 Ajax——非常酷的 Web 应用程序,可以在任何浏览器上运行,无需任何浏览器插件,只需普通的 HTML 和 JavaScript。

从技术上讲,Ajax 指的是一种特定技术:允许 Web 页面生成一个后台线程,向服务器发送请求,接收响应并动态更新 Web 页面,而无需刷新页面。 换句话说,使用 Ajax,您不必单击“提交表单”并等待浏览器返回一个新页面来与 Web 应用程序交互。 相反,当您与 Web 页面交互时,Web 应用程序可以不断发送和接收数据。

一个很好的例子说明了这如何改变游戏规则,那就是 www.tadalist.com。 该网站提供一项简单的服务:创建您自己的个人待办事项列表。 但是,如果您使用它,您会很快发现,它没有传统的笨拙的 Web 界面来标记已完成的待办事项和添加新项目等等,而是提供了一个丰富的界面,让您可以执行添加、完成和修改项目等操作,所有这些都无需重新加载页面。

多年来,Web 应用程序一直因糟糕的界面而声名狼藉。 我们都希望做得更好,而 Ajax 使之成为可能。

LJ:现在很多人都在使用 Web 2.0 这个词。 什么是 Web 2.0,Ajax 在构建它方面扮演什么角色?

BG:事实证明,Ajax 对传统 Web 应用程序带来的改变是如此之大,以至于许多人声称它代表了 Web 的重生——即 Web 2.0。 有些人讨厌这个概念,有些人喜欢它; 我对此漠不关心。 但显而易见的是,从 2005 年开始,我们看到了新一波令人兴奋的 Web 应用程序,而 Ajaxian 技术是它们的核心。

多年来,事实上的 Web 电子邮件体验很糟糕。 当然,也有一些特定于浏览器的产品,例如 Oddpost,但我们大多数人都陷于这种糟糕的界面,与桌面应用程序相比,它显得苍白无力。 现在,谷歌、雅虎和其他公司正在提供这些丰富的、跨浏览器的邮件应用程序,它们可以与桌面产品相媲美,甚至在某些方面超越了桌面产品。

Web 电脑商店一直沿用戴尔在 1990 年代后期率先推出的用户界面——一直滚动到屏幕底部,然后单击刷新价格按钮来计算成本等等——直到 Ajax 的出现。 最近,苹果公司推出了其 Web 商店的 2.0 版本,他们终于做对了,引入了一个实时页面,当您更改新选项时,它可以实时刷新电脑的价格。

亚马逊过去有一个令人讨厌的小评分页面——他们已经用了多年——您可以在那里填写冗长的 Web 表单来对您的产品进行排名。 今年,他们使用 Ajax 推出了一种实时评分系统,让您无需离开页面或填写表单即可对您的商品进行排名——据报道,被评分的商品数量增加了一个数量级。

在 Ajaxian.com 上,这个我与 Dion Almaer 共同创立的网站旨在跟踪 Ajax,我们看到基于新的 Ajax 驱动的 Web 应用程序的新企业不断涌现。 许多此类企业背后都有投资资本。 感觉有点像 1990 年代。

这就是 Web 2.0——Web 中的一股新能量,导致我们一些最喜欢的网站发生了令人兴奋的变化,以及我们将在未来几个月和几年内看到的一批新网站。 这种新能量直接由 Ajax 引起——人们意识到,这个疲惫的旧 Web 媒介毕竟还有许多新技巧。

有些人可能会说,“等一下——这个 Ajax 的东西不是新的! 它已经存在很久了。” 确实如此。 Ajax 几乎完全是微软在 1997 年称为 DHTML 的东西(实际上,它是它的一个子集)。 为什么它在 2005 年引起了各种兴奋? 嗯,事实证明,随着 Mozilla 1.0 的发布,关键的 Ajax 技术变成了跨浏览器的。 没有盛大的新闻发布会或公告——我认为 Moz 的人们这样做只是为了提高他们与 IE 特定网站的兼容性——但是随着人们发现 DHTML 在跨浏览器的方式中是可能且容易的,Web 就亮起来了。

LJ:在桌面上部署 Linux 的最大障碍之一是需要运行内部开发的应用程序,因为在许多公司中,这些应用程序是使用需要 Windows 才能在桌面上运行的微软技术编写的。 在这些公司中,这使得 Linux 无法进入桌面。 认为 Ajax 可以提供一种构建真正操作系统独立的业务应用程序的方式是否现实?

BG:绝对现实。 Ajax 的令人兴奋之处在于,当您将开发人员从微软的牢笼中解放出来时会发生什么。 Ajax 潮流中包含的所有技术通常首先在 Internet Explorer 上可用——其中一些技术早在八年前就已出现。 这些技术——从 Web 页面发送请求而无需刷新、轻松与 Web 页面 DOM 交互的能力等等——在 Mozilla/Firefox 和 Safari 中可用之前,一直被大多数开发人员忽略。 即使在此期间 IE 享有惊人的主导份额,社区也对将少数参与者排除在外不感兴趣。

因此,我认为 Ajax 完全是关于平台独立性的,而 Web 2.0 概念只有在 Ajaxian 技术真正跨平台之后才流行起来。

Ajax 是否足够强大到可以构建与桌面产品竞争的全功能商业应用程序? 这很难说。 当然,zimbra.com 的人认为它是。 像之前的许多人一样,他们使用 Ajaxian 技术创建了一个基于 Web 的 PIM,但与他们的许多前辈不同,他们公开地瞄准微软的市场份额。 看到 Office 12 中即将推出的令人眼花缭乱的功能,我祝他们好运。

事实上,这引出了一个有趣的观点。 Ajax 意味着 Web 应用程序比我们以往任何时候都好得多。 但与此同时,我们看到桌面技术正准备实现质的飞跃。 苹果率先发起了这场革命,多年前推出了他们漂亮的基于 OpenGL 的 Quartz 渲染引擎。 但是现在微软,凭借他们的版本(基于 Direct3D 的 Avalon),正在将华丽的图形推向主流,并且他们通过使开发此类应用程序比使用苹果的工具更容易,从而超越了苹果。

当然,Linux 社区也在紧随其后,在 Cairo 渲染库之上提供了相同类型的效果。

看看会发生什么将非常有趣。 Ajax 将 Web 带到了我们在过去十年中在桌面应用程序中使用的用户界面类型,但正当这种情况发生时,桌面应用程序正在真正地飞跃到下一个层次,而且谁知道跨浏览器技术何时才能赶上。 有些人可能会说这都是毫无意义的花哨功能,但是,伙计,眼球效应很重要。

不过,Ajax 还是有希望的。 Firefox 1.5 和 Safari .next 引入了 SVG 支持,这意味着 Web 应用程序将能够在浏览器中实时渲染高质量的、交互式矢量图形,并使用 Ajax 技术驱动这些图形(可以使用与我们修改 HTML 相同的 DOM API 动态修改 SVG)。 这可能会弥补一些差距,但 IE 对 SVG 的支持程度完全不清楚(可能有一种方法可以通过将 SVG 桥接到微软特定的东西来实现,但 IE 不太可能提供无缝的本地支持)。

使情况更加复杂的是 Java。 Java 在过去一直没有良好的桌面应用程序声誉,但在 Java 6(下一个版本,预计在 2006 年的某个时候发布)中,桌面领域将出现一些重大创新,并且他们为 Java 7 制定了一些令人兴奋的计划。 凭借 Quartz、Cairo 和 D3D/Avalon,每个主要的操作系统平台都拥有一个真正高质量的图形渲染引擎,能够驱动酷炫的应用程序。 如果 Java 人员能够成功地将所有这些引擎桥接到一个有意义的共同点——那对行业来说将是惊人的。 我没有屏住呼吸等待,但这确实是一个机会。

我跑题了,但是,是的——Ajax 将驱动一些令人兴奋的新型跨浏览器商业应用程序,但与此同时,我们将看到桌面应用程序变得令人惊叹。 时间会告诉我们市场更喜欢哪个版本。

LJ:我看到支持 Ajax 开发的 IDE 正在涌现。 您认为其中哪些会获得关注? 或者大家仍然只是使用 vi 和 emacs?

BG:我看到大多数人都在使用他们传统的编辑器。 有一些有趣的基于 Web 的编辑器工具,但我没有看到任何人真正使用它们。

LJ:由于 Ajax 实际上是一种客户端/浏览器端技术,您是否看到服务器端开发人员也在使用它?

BG:是的,毫无疑问。 我看到一些对 JavaScript 一无所知的人正在学习如何使用 Ajax,因为它为用户界面提供了如此引人注目的升级,以至于他们真的别无选择。 好消息是,所有这些 Web 2.0/Ajax 的热潮促使人们创建了非常易于使用的框架,使 Ajax 变得容易。

Prototype、Scriptaculous、dojo、Java 人员的 DWR、几乎所有语言的 JSON 以及许多其他工具都可以使各种出色的 Ajax 效果变得如此容易实现。

而且,服务器端框架已经开始将 Ajax 直接构建到其中,并将继续这样做。 在未来几年,服务器端开发人员可能会在不编写太多 JavaScript 的情况下完成一些非常出色的 Ajax 应用。

LJ:Ajax 开发是否存在新的安全风险?

BG:没有什么根本性的风险,尽管当我们朝着新的方向推动浏览器时,偶尔会出现一些漏洞。 但是,我应该提一下 Greasemonkey。

我讨厌微软的 Money,以及我用过的任何其他个人理财软件包。 从表面上看,它们似乎拥有所有正确的功能,但界面始终无法完全按照我想要的方式工作,而且我总是卡在执行这些愚蠢的手动任务和跳过重重障碍的过程中。 我真正想要的是能够调整程序界面工作方式的能力。

使用 Greasemonkey,您可以做到这一点——对于 Web 应用程序。 Greasemonkey 是一个 Firefox 插件,可让您将 JavaScript 代码注入到 Web 页面中。 因此,如果您不喜欢 Amazon.com 的用户界面的某些内容,请更改它! 您可以完全访问页面的 DOM,因此您可以执行任何您想执行的操作。 此外,Greasemonkey 还是一个供人们分享其自定义功能的社区。 例如,有一个很棒的插件可以使亚马逊在其他网站上向您显示其商品的价格。

虽然我们早就知道,您在 HTML 中发送的任何内容都可能被黑客入侵,并且我们的服务器端点需要准备好接收各种格式错误的请求,但随着 Ajax 将更多逻辑推送到客户端,我们中的一些人可能会忘记这一教训,而像 Greasemonkey 这样的工具使人们可以轻而易举地利用编写不佳的应用程序。

谈到令人兴奋——终于,一个社区能够获取一个商业化的、现成的应用程序,并轻松地对其进行修改以执行各种新事物。 您可能会争辩说,开源多年来一直在赋予这种能力,但 Greasemonkey 概念将其提升到了一个全新的水平——一个不了解如何使用 CVS、gcc、C++ 等等的全新受众。

Ajax 不会引入新的安全风险,但它可能会促进不安全的 Web 站点的创建。

LJ:对于我们的许多读者来说,要获得使用 Ajax 的许可,他们需要参考网站来向他们的管理层展示。 有哪些好的 Ajax 开发参考网站?

BG:Google 地图仍然是旗舰应用程序。 当然,您应该访问 ajaxian.com,我们在那里不断展示新的 Ajax 应用程序。 查看 zimbra.com 以了解模仿浏览器中桌面应用程序的最新尝试; Gmail 是一个更 Web 化的 Ajax 风格丰富交互的示例。 查看 script.aculo.us 上的一些演示,了解可能实现的功能(轻松拖放、过渡效果等等)。 Backbase.com (www.backbase.com) 也提供了一些很棒的演示,展示了 Ajax 如何改变特定的垂直应用程序类型。

LJ:对于有兴趣学习的读者,有哪些好的资源?

BG:有些人对我们自己的网站 Ajaxian.com 给予了好评,认为它是一个很好的资源。 Dion Almaer——我的 Ajaxian 合作伙伴和该网站的编辑——每天都在网站上发布新的信息,做得非常好。 您肯定会及时了解正在发生的事情!

对于 Ajax 新手,所有出版社都有一些很棒的书籍即将出版,例如 Manning 的 Ajax in Action、Apress 的 Ajax Foundations 等等。 Dion 和我也有一本即将出版:Pragmatic Press 出版的 Pragmatic Ajax。 我在那本书中最喜欢的部分是其中一章,我们在其中引导您从头开始构建您自己的 Google 地图版本。

LJ:感谢您接受采访!

加载 Disqus 评论