硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

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

关注

评论

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

微信逆向之朋友圈,2021最新Android大厂面试真题大全

android 程序员 移动开发

成为一个优秀的Android开发者,需要必备哪些技术&工作技能?

android 程序员 移动开发

我才知道原来Flutter内置了10多种Button控件,音视频开发工程师抖音

android 程序员 移动开发

我敢打赌!你从未见过如此简单的Dagger-导航---基于-Android-Studio-4-1

android 程序员 移动开发

当中国诗词大会邂逅了Flutter,从此我的眼里只有你!(1)

android 程序员 移动开发

惨遭社会毒打,公司倒闭突然失业,程序员该如何在下次危机对准时狠狠还击

android 程序员 移动开发

我们来剖析一下这个Android猴子的面试过程,以及被问到的问题

android 程序员 移动开发

我学习Android的一些套路,这份333页关于性能优化知识点的PDF你不能不看

android 程序员 移动开发

当你面试的时候,被问到关于Fragment的种种,5年经验Android程序员面试27天

android 程序员 移动开发

微博热门清华学霸的计划表刷屏,程序员该如何制定你的学习计划?

android 程序员 移动开发

成功逆袭:越来越胖怎么能忍,我的APK瘦身之路,完整版开放免费下载

android 程序员 移动开发

我又开发了一个非常好用的开源库,调试Android数据库有救了

android 程序员 移动开发

当事人:现在就是非常后悔,开工那天没去上班,Flutter中网络图片加载和缓存源码分析

android 程序员 移动开发

总结了30个例子之后,我悟到了Flutter的布局原理,android移动开发基础答案

android 程序员 移动开发

想掌握Android面试官必问的-Binder-机制?那别想绕开-Binder-驱动源码分析!

android 程序员 移动开发

我是如何做到在-5-分钟之内将应用大小减少-60%-的?,零基础学android编程

android 程序员 移动开发

往事只能回味!春招 Android 开发岗:我居然三天就拿到了offer

android 程序员 移动开发

怎样才是刷面试题的正确姿势?Android400道面试题+通关知识宝典助你进大厂

android 程序员 移动开发

性能优化,还得看AspectJ,android高级开发实战

android 程序员 移动开发

我们来剖析一下这个Android猴子的面试过程,以及被问到的问题(1)

android 程序员 移动开发

想搞懂Jetpack架构可以不搞懂生命周期知识吗?,阿里Android面试必问

android 程序员 移动开发

当中国诗词大会邂逅了Flutter,从此我的眼里只有你!,附架构师必备技术详解

android 程序员 移动开发

当面试官要你说一下Activity的启动模式时,怎么回答最合适?标准答案在这里

android 程序员 移动开发

彻底理解Android架构,移动应用开发就业工资

android 程序员 移动开发

怎样让你更快的完成工作去“摸鱼”,我的Android美团求职之路

android 程序员 移动开发

微信小程序之商品属性分类 —— 微信小程序实战商城系列

android 程序员 移动开发

想掌握Android面试官必问的 Binder 机制?那别想绕开 Binder 驱动源码分析!

android 程序员 移动开发

想进阶高级架构师,你需要养成这10个习惯!,掌握这套精编Android高级面试题解析

android 程序员 移动开发

我想谈谈关于-Android-面试那些事,写给有开发经验的你们

android 程序员 移动开发

微信小程序之加载更多(分页加载)实例 ,flutter瀑布流列表

android 程序员 移动开发

我又开发了一个非常好用的开源库,调试Android数据库有救了 (1)

android 程序员 移动开发

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