写点什么

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:475280
用户头像
臧秀涛 略懂技术的运营同学。

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

关注

评论

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

钉钉携手鸿蒙扫一扫,打造高效办公新体验

HarmonyOS SDK

harmoyos

嘉为蓝鲸WeOps:集成主流云服务商,自动化证书申请 + 一键部署全流程提速

嘉为蓝鲸

SSL证书 #WeOps 一体化运维

TK海外抢单网站源码/前后端分离,前端uniapp,后端php

网站,小程序,APP开发定制

KOL技术圈 | 下一代智能可观测平台长什么样?来看Bonree ONE的极致演绎!

博睿数据

当AI遇上供应链 第七在线助力精准决策

第七在线

CST的热仿真THs稳态求解器--针式散热片

思茂信息

cst CST软件 CST Studio Suite

Screen Wonders for Mac:点亮 Mac 桌面的奇幻之光

晨光熹微

为什么有的企业上了ERP还要上MES?

积木链小链

数字化转型 ERP 智能制造 mes

一文让你简单了解国密堡垒机定义以及作用

行云管家

堡垒机 国密算法 国密堡垒机 信创国密

专业的科学和工程分析软件 WaveMetrics Igor Pro 9 Mac

Rose

选择GPU云服务器供应商的注意事项

Ogcloud

gpu 云服务商 GPU云服务器 GPU云服务器供应商

QT软件外包开发中的测试

北京木奇移动技术有限公司

软件外包公司 QT开发公司 QT软件开发

【堡垒机小知识】堡垒机可以做到应用透明吗?

行云管家

堡垒机 IT运维 应用透明

警惕!这3个AI测试用例陷阱,让80%的团队白忙一场...

测试人

人工智能

精彩抢先看 | 博睿数据将受邀出席GOPS全球运维大会2025北京站!

博睿数据

BricsCAD 23 for Mac(CAD建模软件)v23.2.07中/英文永久激活版

Rose

QT软件外包项目的验收

北京木奇移动技术有限公司

软件外包公司 QT开发公司 QT外包公司

告别数据库瓶颈!用这个技巧让你的程序跑得飞快!

左诗右码

人工智能在音频、视觉、多模态领域的应用

测试人

支持 4K/HDR/杜比视界!nPlayer for Mac

Rose

【重磅】JimuReport 积木报表 v2.0 版本发布,免费可视化报表

JEECG低代码

数据可视化 报表 积木报表 报表工具 积木BI

装备制造MES系统解决方案:破解生产痛点,驱动智能制造升级

万界星空科技

制造业 mes 装备修理行业 装备制造 装备mes

OmniReader Pro for Mac:重塑你的阅读体验

晨光熹微

DeepChat for mac您的桌面AI伙伴

Rose

从OCR到Document Parsing,AI时代的非结构化数据处理发生了什么改变?

合合技术团队

人工智能 算法 #大数据

AI技术在图书馆业务中的应用

北京木奇移动技术有限公司

软件外包公司 AI技术应用 图书馆信息化

Boom 3D for Mac:重塑你的听觉盛宴

晨光熹微

Boom 3D Boom 3D for Mac Boom 3D激活版

企业带宽租赁的优势与应用场景有哪些?

Ogcloud

带宽租用 带宽租赁 大带宽 机房大带宽 大带宽租用

Package Builder for Mac:Mac 软件打包的得力助手

晨光熹微

ToothFairy for Mac:轻松管理蓝牙设备

晨光熹微

云智慧再次入选2024亚太区ITSM软件市场TOP10

云智慧AIOps社区

ITSM ITSM软件 工单系统

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