Atmosphere 1.0:支持Java/JavaScript的异步通信框架

Atmosphere 1.0是一个新的Java/Scala/Groovy框架,它试图将Web浏览器与应用服务器之间的通信抽象出来。在Web Socket、HTML5服务器端事件和其他特定于应用服务器的解决方案可用时,该框架可以透明地支持,此外还可将长轮询作为一种备选方案。

\

最初,Web应用程序是采用客户端/服务器模型构建的,始终由客户端向服务器发起连接。对于特定类型的应用,如仪表板(Dashboard)、报价器和在线聊天等,它们都需要实时通信功能,而传统的HTTP请求/响应循环无法满足其要求。在这些情况下,服务器必须能够以异步方式(当事件可用时)向客户端(Web浏览器)推送数据。

\

随着基于AJAX 的富互联网应用(rich internet applications,RIA)的出现,这种需求变得尤为明显。RIA不再刷新整个页面,而是采用了一种更为动态的方法,当应用服务器上有新数据可用时,仅更新页面的某些部分。最基本的解决方案是使用轮询:客户端连续不断地向服务器询问更新信息(可能基于一定的时间间隔)。这种方法非常简单,不需要特殊的支持,但是可能存在带宽方面的问题。而且如果有很多客户端的话,即使没有新数据可用,服务器也很容易就不堪重负了。

\

异步通信的另一种实现方式是HTTP流(也称Comet)。这种方案强制浏览器连接到服务器,而且在指定时间(也可以不限制时间)内保持连接。当服务器有事件需要推送到浏览器时,就可以使用这一持久连接。该方案也有些限制。持久连接是资源密集型的,可能被代理和防火墙意外关闭,而且浏览器对连接到每个应用服务器的连接数也有限制。

\

以上方法都不是标准的解决方案。本质上,Comet是一个宽泛的术语,包含了遵循上述理念的一些实现。目前已经有些努力致力于WebSocket的标准化。WebSocket是一种新的网络协议,它从一开始就是为支持异步通信而设计的。然而该协议需要Web浏览器和应用服务器双方提供显式地支持。只要双方都支持WebSocket,就可以将HTTP连接“升级”为web socket。针对WebSocket的编程也有其自身的问题,因为当前每种应用服务器都有自己的API,这很容易导致供应商的封闭。

\

Atmosphere是一个Java框架(也支持GroovyScala),可以作为以上各种方案之上的一个抽象层,使开发者无需处理底层的通信细节,从而将精力集中在实际的业务逻辑上。开发者只需利用统一的Atmosphere API编程即可,由该API在背后提供对以下各场景的支持:

\

同时,Atmosphere也提供了一个JavaScript模块(支持jQuery),该模块位于客户端,负责将Web浏览器的异步支持功能抽象出来。这种抽象的核心理念是控制连接的两端。详细文档参见:支持的应用服务器和浏览器(supported application servers and browsers)。

\

Atmosphere的主要特性是在可行的情况下(比如可以使用WebSocket),能够自动选择最高效的方案,还支持一种备选方案(比如长轮询)。它也有可能提前发现客户端和服务器之间支持的方式。请注意:使用Nettosphere时,Atmosphere可以运行在 非servlet的容器中。

\

除基本API之外,Atmosphere也提供了一些插件或扩充,能够与以下框架集成:

\
  • REST/Jersey\
  • GWT/Vaadin\
  • Socket.io\
  • Spring\
  • Guice\
  • Wicket\
  • PrimeFaces/RichFaces\

更多信息,请访问该项目的Wiki示例FAQJavadocs

\

作者Kostis Kapelonis是软件工程师,专注于企业级应用开发。

\

查看英文原文Atmosphere 1.0: Asynchronous Communication For Java/JavaScript

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值