今天对server push 终于有了一个全面的了解,也纠正了一些之前在概念上的认识。
首先说comet概念,comet并不是一个framework,以前一直以为是个framework,今天才知道他是一个概念,一个没有标准的概念。每个vendor提供的解决方案不同。apache,jboss,grizzly都有各自的解决方案。这样在服务器移植的时候就会有很大的麻烦。幸好servlet3中的Asynchronous及时出现,他提供了一种通用(之所以通用是因为他是规范,各vendor必须实现它)的方式来实现push。(当然与各vendor提供方案不一样,但是它当然也属于comet范畴)。
servlet3中的asynchronous是对现有的servlet的一次升级,他可以返回一个不带response对象的响应,然后迅速释放链接。并将response对象及所对应的request对象放入一个AsyncContext对象里,然后启动线程。然后将线程由nio接管。所以线程可以很快回收。之后再某个特定的点向response写入东西。页面可以有所响应。
从上面对servlet3中的asynchronous的描述中可以看出,他并不是针对server push而开发的技术。要想了解他所能解决的问题,那就先和之前的servlet做一个对比。以前的servlet技术,在服务器接受到客户端的请求后,他会启用线程来处理这个请求,这个线程直到server给client做出响应后被回收,之后链接断开。假如说sever为了给client做出响应,要经过很耗时的计算,那么这个请求的链接及处理请求的线程将一直被占据。显然对整个网站的吞吐量都会造成负面影响。而servlet3中的asynchronous技术可以将请求的链接及处理的线程转换为相对cheaper的nio来处理,释放掉昂贵的链接及线程。
servlet3中的asynchronous其实对ajax的帮助很大,虽然asynchronous不依赖ajax也能发挥出他全部的作用。但是因为页面有ajax的存在所以页面的请求在不知不觉中比传统的page-by-page要多出许多,这就更需要系统提供更多的链接及线程,asynchronous显然可以胜任。
总结:servlet3中的asynchronous并不是为了与ajax配合而产生的,当然更不是为了push。但是他却可以很好的被他们利用。
其他资源:http://www.javaworld.com/javaworld/jw-02-2009/jw-02-servlet3.html?page=1
其他方案:在html5中提出的SSE规范以及WEB-SOCKET规范是从页面发起与服务器端建立长连接,并有消息触发的模型,也可以实现server push。但因为目前两个规范都处于draft阶段故暂时没有考虑(今天是2011-02-16)
分享到:
相关推荐
这些文件名称列表揭示了一个关于Web开发的教程结构,主要涵盖了JSP(JavaServer Pages)、Servlet、JavaScript、Ajax和jQuery这五个关键的技术。接下来,我们将详细探讨这些技术及其在实际应用中的重要性。 **JSP...
5. **Ajax(Asynchronous JavaScript and XML)**:Ajax是一种创建动态网页的技术,允许在不重新加载整个页面的情况下,与服务器交换数据并局部更新页面。在这个项目中,Ajax可能用于在用户交互时发送异步请求,获取...
源代码.rar”包含了与Web开发相关的多个课程的源代码,主要聚焦于JavaServer Pages (JSP)、Servlet、JavaScript、Ajax以及jQuery这五种技术。以下是这些技术的详细解释和它们在Web开发中的重要性: 1. **JavaServer...
【标题】"serverpush做的webRoom"涉及到的技术和概念主要集中在服务器推送(Server Push)以及Web实时通信领域,尤其在构建一个基于DWR(Direct Web Remoting)的在线聊天室应用上。首先,我们来详细了解这些关键点...
**基于 AJAX 和 Webservice 的长轮询方式 ServerPush 技术模拟** 在现代网页应用中,实时性成为了不可或缺的需求,例如股票更新、聊天室、在线游戏等场景。传统的 HTTP 协议是基于请求-响应模式的,即客户端发起...
在Web开发中,服务器主动向客户端推送数据的技术被称为Server Push,它是实时Web应用程序的重要组成部分,尤其是在构建聊天室、实时通知系统或在线游戏等场景中。本项目是一个利用Ajax反向推送(Comet技术)实现的...
在IT领域,异步套接字(Asynchronous Socket)服务器和客户端是网络编程中的核心概念,主要用于构建高效、可扩展的通信系统。本项目提供的代码示例深入探讨了这一技术,帮助开发者理解如何在实际应用中实现异步通信...
在这个项目中,jsp(Java Server Pages)和servlet是Java在Web应用中的关键组件。jsp允许开发者在HTML中嵌入Java代码,方便地处理动态内容,而servlet则充当了HTTP协议的服务器端处理器,负责接收和响应客户端请求,...
此外,可能还会讲解AJAX(Asynchronous JavaScript and XML)在Servlet和JSP通信中的应用,实现异步数据更新。 学习这些源代码,你需要了解以下知识点: - **HTTP协议**:理解HTTP请求和响应的基本结构,这对于...
【劳力管理系统】是一个基于Web的应用程序,使用了多种技术栈,包括JSP、SQL Server数据库、Ajax、Servlet以及Struts框架。这个项目对于初学者来说是一个很好的实践平台,可以帮助他们提升在IT行业的专业技能。 ...
【JSP+Servlet+SQL Server小项目详解】 在这个个人博客项目中,开发者运用了Java Web技术栈中的核心组件——JSP(JavaServer Pages)和Servlet,以及前端样式表CSS和脚本语言JavaScript,构建了一个功能完备的博客...
本项目是基于J2EE平台开发的一个完整实例,利用了JSP、Servlet、JavaBean、Ajax以及SQL Server 2005数据库技术,具有较高的学习和参考价值。 1. **JSP(JavaServer Pages)**:JSP是Java Web开发的重要组成部分,它...
Ajax(Asynchronous JavaScript and XML)技术是现代Web开发中的关键组成部分,它允许在不刷新整个页面的情况下与服务器进行异步数据交互。Servlet是Java Web开发中的一个标准,用于处理和响应HTTP请求。在这个实例...
【标题】"Ajax PushServer" 是一个基于C#开发的实时数据推送服务示例,它利用Ajax技术实现Web端的即时通信。在传统的HTTP协议中,客户端与服务器之间的交互是基于请求-响应模型的,而Ajax Push(也称为Comet技术)...
5. **JSP(JavaServer Pages)**:虽然描述中没有明确提到JSP,但在实际应用中,Servlet通常与JSP配合使用,Servlet处理逻辑,JSP负责呈现视图。聊天室的界面可能就是一个JSP页面,展示聊天记录和输入框。 6. **多...
本项目基于JSP(JavaServer Pages)和Servlet技术,构建了一个功能完善的网上商店平台,利用SQL SERVER 2000作为后端数据存储。下面我们将详细探讨这个项目的各个关键技术点。 1. **JSP技术**: JSP是Java平台上的...
Glint - An Asynchronous Parameter Server for Spark Glint 是一个异步参数服务器(Parameter Server),旨在解决机器学习算法中的模型尺寸超出单台机器内存的问题。Glint 基于 Spark 实现,提供了高效、可扩展的...
Ajax,即Asynchronous JavaScript and XML,是一种在不刷新整个页面的情况下与服务器交换数据并更新部分网页的技术。在客户端,我们可以使用JavaScript的XMLHttpRequest对象或者更现代的fetch API来实现Ajax请求。...
**Ajax(Asynchronous JavaScript and XML)** Ajax是创建动态网页的一种技术,它允许在后台与服务器交换数据并局部更新页面,而无需刷新整个页面。Ajax的核心是利用JavaScript在浏览器端发送异步HTTP请求,并处理...
在本示例中,我们使用AJAX来验证用户名是否存在,这涉及到JSP(JavaServer Pages)、Servlet以及相关的web配置。 **JSP基础** JSP是Java的一种动态网页技术,它允许开发者在HTML代码中嵌入Java代码,以实现服务器...