2009-10-17 41 views
0

AJAX应用程序如何在ASP.NET AJAX中编写的应用程序如何通知客户端在服务器中触发的事件?我的意思是像Gmail这样的应用程序每当有新电子邮件到达时,Gmail会通知客户。我非常感兴趣如何在ASP.NET AJAX中使用UpdatePanel完成。我知道UpdatePanel有一个Triggers属性,但它只适用于Controls事件而不是我自己的类的事件。AJAX应用程序如何通知客户端在服务器中触发的事件?

回答

1

Ajax应用程序连续检查服务器状态以实现此效果。他们一直以客户身份工作,无法接收来自服务器的请求。

+0

感谢您的回复,但会因为连续连接到服务器而影响性能和带宽消耗? – 2009-10-18 05:57:47

+0

准确地说,您没有连续连接到服务器(连接在每次请求后关闭),但必须连续向服务器发出请求(例如,每隔10秒)。我不认为在带宽上会有任何性能损失,因为ajax消息通常非常小(响应通常在xml中,大约几千字节)。唯一的问题是您正在使用的投票模式 - 即使可能没有新消息,您仍在投票。如果您正在寻找双工通信检查,例如Java小程序。 – empi 2009-10-18 09:10:10

0

当应用程序使用AJAX时,会将新图层添加到通信模型中。在经典的Web应用程序中,客户端(浏览器)和Web服务器之间的通信是使用HTTP请求直接执行的。

当访问者请求一个页面时,服务器会立即发送完整的HTML和CSS代码。访问者填写表单并提交后,服务器将处理信息并重新构建页面。然后它将整个页面发送回客户端。等等。

当使用AJAX时,页面只在第一次被请求时被完全加载一次。除了构成页面的HTML和CSS代码之外,还会下载一些JavaScript文件:AJAX引擎。所有对服务器的数据请求将作为JavaScript调用发送到该引擎。然后,AJAX引擎异步请求来自Web服务器的信息。因此,只有小页面位被请求并发送到浏览器,因为它们是用户需要的。引擎然后显示信息而不重新加载整个页面。这导致了一个更响应的界面,因为只有必要的信息在客户端和服务器之间传递,而不是整个页面。这产生了信息立即显示的感觉,这使得Web应用程序更接近他们的桌面亲戚。

为了更好地说明在客户端(浏览器)和远程服务器,以及经典和AJAX供电的应用之间的差异之间的通信,来看看下面的图:

AJAX通信模型图 图1:经典和AJAX通信模型 alt text http://www.interaktonline.com/img/art/AJAX/ajax_comm_model_gif.gif?0.33986484845155046

AJAX与服务器通信的方法的核心在于AJAX引擎。这只不过是一些实例化和使用XMLHttpRequest对象的JavaScript代码。这是一个JavaScript对象,它允许在不刷新整个页面的情况下发送,接收和处理来自服务器和从服务器发出的HTTP请求。

在AJAX驱动的应用程序中,数据的HTTP请求可以完全在后台进行,而用户不会遇到任何中断。这意味着用户可以继续工作并使用应用程序,同时从服务器接收必要的页面部分。 XMLHttpRequest对象是作为Internet Explorer中的ActiveX对象实现的,后来在大多数现代浏览器(FireFox,Safari)中成为本机JavaScript对象。

尽管为任何类型的模型添加额外的图层都会增加响应时间,但这是一个例外。通过使用这个新层 - AJAX引擎 - 响应时间缩短,用户界面似乎更多地连接到应用程序逻辑。而且,用户不必再等待页面加载。

相关问题