【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

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

  • 2012-12-11
  • 本文字数:1393 字

    阅读完需:约 5 分钟

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 框架(也支持 Groovy Scala ),可以作为以上各种方案之上的一个抽象层,使开发者无需处理底层的通信细节,从而将精力集中在实际的业务逻辑上。开发者只需利用统一的 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 示例 FAQ Javadocs

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

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

2012-12-11 07:474596
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 130.1 次阅读, 收获喜欢 34 次。

关注

评论

发布
暂无评论
发现更多内容

活动预约!华为云企业快成长大数据技术创新论坛成都站6月16日举行

说山水

大文件上传功能在标签服务的简单应用和代码实现

袋鼠云数栈

大数据 标签体系 企业号 6 月 PK 榜

业务与应用同步发展:应用现代化的策略建议

NGINX开源社区

众多国央企专家齐聚一堂,探索财务共享未来模式

用友BIP

财务共享

科兴未来|第二届集成电路“太湖之芯”创业大赛,报名正式开始

科兴未来News

积聚产业发展新动能|2023开放原子全球开源峰会OpenAtom OpenHarmony分论坛成功举办

开放原子开源基金会

开源 OpenHarmony 开放原子全球开源峰会 开放原子

局域网办公的重要性,如何选择企业IM即时通讯APP?

WorkPlus

为开发者打造的开源低代码开发平台

力软低代码开发平台

软件测试/测试开发丨学习笔记之Python函数

测试人

Python 程序员 软件测试 自动化测试 函数

Sentinel支持异步调用链的实现原理

互联网架构师小马

Java sentinel

膜拜!Alibaba最新发布SprinBoot:进阶原理实战与面试题分析指南

互联网架构师小马

Java spring 微服务 Spring Boot 框架

科兴未来|第七届“红船杯”嘉兴全球创业创新大赛开启报名

科兴未来News

数字经济 新能源 生物医药 新材料 高端装备

集群限流的两种模式

互联网架构师小马

Java 集群限流

与 NGINX 团队直接交流 | 微服务之月火热报名中

NGINX开源社区

nginx 微服务 运维

集群限流功能是如何实现的?

互联网架构师小马

Java sentinel 集群限流

【游戏行业部】重回游戏公平,向游戏打金工作室宣战!

网易智企

游戏 反外挂 游戏安全

openEuler 开源汇智赢未来|2023开放原子全球开源峰会OpenAtom openEuler 论坛成功召开

开放原子开源基金会

开源 openEuler 开放原子全球开源峰会 开放原子

热点参数限流功能的实现与流量效果控制

互联网架构师小马

架构训练营模块3作业——外包学生管理系统的架构文档

Geek_3d7c4d

#架构训练营

MaxCompute中如何处理异常字符

阿里云大数据AI技术

大数据 数据处理 企业号 6 月 PK 榜

GitHub收获70K+Star!阿里巴巴总结的「百亿级别并发设计手册」太香了

互联网架构师小马

Java 系统设计 高并发

假如你是CEO,遇到人才瓶颈又该如何破局?数智人力给您答案!

用友BIP

人力资源 数智人力

数智人力帮您搭建人才梯队,从此挖掘人才不再靠缘分!

用友BIP

数智人力

HummerRisk 开发手册:Restful Api 使用

HummerCloud

开源 云原生 云安全

透明LED显示屏报价方案

Dylan

方案 屏幕亮度 报价 像素 LED显示屏

OpenInfra基金会在亚洲、欧洲正式设立运营中心

说山水

软件测试|超好用超简单的Python GUI库——tkinter

霍格沃兹测试开发学社

python 3.5+ GUI

爆赞!GitHub上首本IntelliJ IDEA操作手册,标星果然百万名不虚传

互联网架构师小马

Java IDEA

浅析数智化转型深层次的挑战

用友BIP

数智平台

内网IM即时通讯软件WorkPlus,快速连接工作的沟通利器

WorkPlus

开源赋能 工业铸魂|2023开放原子全球开源峰会开源工业软件分论坛圆满举行

开放原子开源基金会

开源 开放原子全球开源峰会 开源工业软件

Atmosphere 1.0:支持Java/JavaScript的异步通信框架_Java_Kostis Kapelonis_InfoQ精选文章