WEB开发网
开发学院软件开发Java 在 Ajax 应用程序中实现实时数据推送:学习使用基... 阅读

在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术

 2009-11-14 00:00:00 来源:WEB开发网   
核心提示: 这些解决方案适用的用例范围狭窄,所有这些方法都已经在 Internet 上的某些解决方案中得到了应用,在 Ajax 应用程序中实现实时数据推送:学习使用基于套接字的 RIA 技术(4),然而,这些解决方案都遭遇了相同的问题:缺乏可伸缩性,如果您能够处理安全性和防火墙问题,那么其他问题也能得到处理

这些解决方案适用的用例范围狭窄。所有这些方法都已经在 Internet 上的某些解决方案中得到了应用。然而,这些解决方案都遭遇了相同的问题:缺乏可伸缩性。典型情况下,要阻塞一个请求,您需要阻塞处理请求的线程,因为如今几乎所有应用服务器都会执行阻塞 I/O。即便不是这样,Java™ 2 Platform, Enterprise Edition (J2EE) 也未提供为 HTTP 请求和响应执行非阻塞 I/O 的标准。(Servlets 3.0 API 可解决这一问题,因为这些 API 中包含 Comet Servlet。)

至此,您需要具备非阻塞 I/O(NIO)服务器,客户端应用程序通过它进行连接。由于此类套接字是纯 TCP 二进制套接字,因而将实现以下目标:

由于服务器端具有 NIO,因而可实现更高的可伸缩性。

响应缓存的问题不复存在,因为这个套接字直接受应用程序的控制。

基于上述说明,有必要指出这种方法的四个缺点:

由于使用的是二进制 TCP 套接字,因而应用程序无法真正地利用 HTTPS 层提供的 SSL 安全性。所以,要求数据安全性的应用程序可能需要提供自己的加密工具。

通常情况下,服务器套接字将在 80 以外的端口上运行,如果防火墙仅允许来自端口 80 的流量,将出现问题。因而,可能需要进行一些端口配置。

Ajax 客户端无法通过后端打开 TCP 套接字连接。

即便 Ajax 客户端能够执行 open 函数,也无法理解二进制内容,这是因为 Ajax 使用的是 XML 或 JSON(基于文本)格式。

在这篇文章中,我要强调的是如何真正地绕开第三个和第四个问题。如果您能够处理安全性和防火墙问题,那么其他问题也能得到处理。这种做法的获益极为显著。

上一页  1 2 3 4 5 6 7 8 9  下一页

Tags:Ajax 应用程序 实现

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接