以文本方式查看主题 - 曙海教育集团论坛 (http://sun4.cn/bbs/index.asp) -- JAVA语言开发 (http://sun4.cn/bbs/list.asp?boardid=64) ---- 【Java开发技术】Java EE 迎合 Web 2.0 (http://sun4.cn/bbs/dispbbs.asp?boardid=64&id=2462) |
-- 作者:wangxinxin -- 发布时间:2010-12-11 9:38:15 -- 【Java开发技术】Java EE 迎合 Web 2.0 如果 Web 2.0 应用程序使用的是基于标准的 Java Platform, Enterprise Edition 5 (Java EE) 开发方法,那么将会面临着严重的性能和可伸缩性问题。这是因为,大量支持 Java EE 平台的底层设计原理(尤其是使用同步 API 的应用)并不适合 Web 2.0 解决方案的需求。本文将解释 Java EE 和 Web 2.0 方法之间的不一致性,并对一些使用 Java 平台开发异步 Web 应用程序的解决方案进行评估。 很多成功的企业应用程序都是使用 Java EE 平台构建的。但是,Java EE 的设计原理并不能够有效地支持 Web 2.0 应用程序。深入了解 Java EE 和 Web 2.0 原理之间的脱节可帮助您制定明智的决策,从而使用各种方法和工具在一定程度上解决这种脱节。本文将解答 Web 2.0 和标准 Java EE 平台缘何成为失败的组合,并演示为何由事件驱动的异步架构更适合 Web 2.0 应用程序。本文还介绍了一些框架和 API,它们通过支持异步设计使得 Java 平台更加适合 Web 2.0。
Java EE 原理和设想
Java EE 平台的创建目的就是为企业到客户(B2C)和企业到企业(B2B)应用程序提供支持。企业发现了 Internet 的价值之后就开始使用它增强与合作伙伴和客户之间的现有业务流程。这些应用程序通常要与一个现有企业集成系统(EIS)进行交互。大多数常见基准测试(测试 Java EE 服务器的性能和可伸缩性)— ECperf 1.1、SPECjbb2005 和 SPECjAppServer2004的用例都将这一点反映到了 B2C、B2B 和 EIS 中。类似地,标准的 Java PetStore 演示也是一个典型的电子商务应用程序。
很多有关 Java EE 架构可伸缩性的明显和暗含的设想都反映在基准测试中:
这些设想产生了以下 Java EE API 构建原理:
在 Web 1.0 中,这些原理玩转得非常好。可以将一些独特的应用程序设计为遵守这些规则。但是,这些原理不能有效支持 Web 2.0。
Web 2.0 带来的巨变
Web 2.0 应用程序具有很多独特需求,因此,不适合将 Java EE 用于 Web 2.0 实现。其中一个需求就是,Web 2.0 应用程序更多地通过服务 API 使用另一个 Web 2.0 应用程序,而不是使用 Web 1.0 应用程序。Web 2.0 应用程序的一个更为重要的因素是,极度倾向于用户到用户(C2C)交互:应用程序所有者只生成一小部分内容;用户负责生成大部分内容。
SOA + B2C + Web 2.0 = 高延迟
在 Web 2.0 环境中,聚合应用程序经常使用通过 SOA 服务 API 公开的服务和提要。这些应用程序需要在 B2C 环境中使用服务。例如,一个聚合应用程序可能从三个不同的数据源提取数据,如天气信息、交通信息和地图。检索这三种独特数据所需的时间延长了总的请求处理时间。不管数据源和服务 API 的数量是否增加,用户仍然期望得到具有高反应度的应用程序。
诸如缓存这类技术可以缓解延迟问题,但是不适用于所有场景。比如,可以缓存地图数据来减少响应时间,但通常并不适合将搜索查询结果或者实时交通信息进行缓存。
服务调用本来就是一种高延迟过程,在客户机和服务器上通常只分配很小一部分 CPU 资源。Web 服务调用的持续时间很大一部分用于建立连接和传输数据。因此,通常来讲,提升客户端或服务器端的性能对于减少调用持续时间效果甚微。
Web 2.0 对用户参与的支持引发了另外一大挑战,因为应用程序要处理来自每个活动用户的更多数量的请求。下面这些理由证明了这一点:
|