多比矢量图开发(九)-和服务器端通信

来源:互联网 发布:mac切换不了输入法 编辑:程序博客网 时间:2024/05/16 04:57

从理论上来说,多比图形不关心如何取得数据,只是取得数据后如何展现。 但是很多客户都是从VB/VC/Delphi转过来的, 所以他们对B/S的应用是如何和客户端通信的并不了解。这里简单介绍一下。

B/S结构的通讯方式一般有三种,基于AJAX的异步通讯模式,基于HTTP长连接的COMMET模式,以及Flash XMLSocket,最新的Web socket技术也可以支持效率更高通讯模式, 但是需要IE9支持。

 AJAX通讯

Ajax的核心是JavaScript对象XmlHttpRequest。该对象在Internet Explorer 5中首次引入,它是一种支持异步请求的技术。简而言之,XmlHttpRequest使您可以使用JavaScript向服务器提出请求并处理响应,而不阻塞用户。

    AJAX 不是一种新的编程语言,而是一种用于创建更好更快以及交互性更强的 Web 应用程序的技术。   通过 AJAX,您的 JavaScript 可使用 JavaScript  XMLHttpRequest 对象来直接与服务器进行通信。通过这个对象,您的 JavaScript 可在不重载页面的情况与 Web 服务器交换数据。   AJAX 在浏览器与 Web 服务器之间使用异步数据传输(HTTP 请求),这样就可使网页从服务器请求少量的信息,而不是整个页面。   AJAX 可使因特网应用程序更小、更快,更友好。
HTTP长连接

iframe 是很早就存在的一种 HTML 标记, 通过在 HTML 页面里嵌入一个隐蔵帧,然后将这个隐蔵帧的 SRC 属性设为对一个长连接的请求,服务器端就能源源不断地往客户端输入数据。

    关于这种技术,可以参看以下的链接。http://blog.csdn.net/fhp0917/article/details/4171818
 Flash XMLSocket

考虑到Flash播放器在我国安装的比率在95%以上,并且Flash播放器经过严格的安全测试, 使用 Flash  XMLSocket也是非常可行的方案。

这种方案实现的基础是:

1.    Flash 提供了 XMLSocket 类。

2.    JavaScript  Flash 的紧密结合:在 JavaScript 可以直接调用 Flash 程序提供的接口。

具体实现方法:在 HTML 页面中内嵌入一个使用了 XMLSocket 类的 Flash 程序。JavaScript 通过调用此 Flash 程序提供的套接口接口与服务器端的套接口进行通信。JavaScript 在收到服务器端以 XML 格式传送的信息后可以很容易地控制 HTML页面的内容显示。

关于如何去构建充当了 JavaScript  Flash XMLSocket 桥梁的 Flash 程序,以及如何在 JavaScript 里调用 Flash 提供的接口,我们可以参考 AFLAXAsynchronous Flash and XML)项目提供的 Socket Demo 以及 SocketJS

Javascript  Flash 的紧密结合,极大增强了客户端的处理能力。从 Flash 播放器 V7.0.19 开始,已经取消了 XMLSocket的端口必须大于 1023 的限制。Linux 平台也支持 Flash XMLSocket 方案。但此方案的缺点在于:

1.    因为 XMLSocket 没有 HTTP 隧道功能,XMLSocket 类不能自动穿过防火墙;

2.    因为是使用套接口,需要设置一个通信端口,防火墙、代理服务器也可能对非 HTTP 通道端口进行限制;

如果你的应用只是部署在企业的内网中,不存在跨防火墙的问题,这种方案我们强烈推荐。

原创粉丝点击