一种ASP.NET环境下Comet功能的实现方法

文档序号:7743675阅读:124来源:国知局
专利名称:一种ASP.NET环境下Comet功能的实现方法
技术领域
本发明提出了一种实现Comet技术的途径,涉及web应用程序的客户端和服务器 端之间数据信息的传播技术,特别涉及一种ASP. NET环境下Comet技术实现的方法和系统。
背景技术
Comet,又被称作Server Push或者Reverse Ajax,指的是一种Web应用程序的架 构。在这种架构中,客户端程序(通常是浏览器)不需要显式的向服务器端发出请求,服务 器端会在其数据发生变化的时候主动的将数据异步的发送给客户端,从而使得客户端能够 及时的更新用户界面以反映服务器端数据的变化。这种架构既不同于传统的Web应用,也不同于新兴的Ajax应用。在传统的Web应 用中,通常是客户端主动的发出请求,服务器端生成整个HTML页面交给客户端去处理。在 AJAX应用中,同样是客户端主动的发出请求,只是服务器通常返回的是XML或是JSON格式 的数据,然后客户端使用这些数据来对页面进行局部更新。Comet架构非常适合事件驱动 的Web应用和对交互性和实时性要求很强的应用。这样的应用的例子包括各种在线监控系 统、股票交易行情分析、聊天室和Web版在线游戏等。基于Comet架构的Web应用使用客户端和服务器端之间的HTTP长连接来作为数 据传输的通道。每当服务器端的数据因为外部的事件而发生改变时,服务器端就能够及时 把相关的数据推送给客户端。通常来说,有两种实现长连接的策略HTTP 流(HTTP Streaming)这种情况下,客户端打开一个单一的与服务器端的HTTP持久连接。服务器通过此 连接把数据发送过来,客户端增量的处理它们。HTTP 长轮询(HTTP Long Polling)这种情况下,由客户端向服务器端发出请求并打开一个连接。这个连接只有在收 到服务器端的数据之后才会关闭。服务器端发送完数据之后,就立即关闭连接。客户端则 马上再打开一个新的连接,等待下一次的数据。

发明内容
本发明的目的是提供一科ASP. NET环境下实现COMET的方法。本发明的目的是按以下方式实现的,包括内容有1)函数管理器当页面初始化时,该管理器会自动把该页面服务器端修饰符为 public的方法映射为客户端同名javascript脚本函数,脚本函数中包含对服务器端对应 方法的异步回调。同时,该函数管理器会自动向客户端页面注册一个定时回调函数,该函数会自动 调用服务器端某方法,以获取服务器端的数据更新。当获取到更新时,会根据配置,自动更 新页面的某一区域。该函数管理器可以脱离消息池单独用作AJAX脚本引擎,实现AJAX功能。
2)消息池消息池中定义了标准接口,可以根据需要进行扩展,进而配合函数管 理器完成Comet功能。消息支持复杂数据类型,甚至是语音、视频,也可以包含各种与客户 端相关的key ID,用户可以根据需要进行实现。具体实现步骤如下1)服务器端程序在页面初始化时,自动获取ASP. NET页面上服务器端修饰符为 public的方法;2)步骤a)中获取到修饰符为public的方法,则把这些方法转换为客户端 javascript函数,并自动加载到客户端;3)在b)步骤中把服务器端公开方法转换为javascript函数时,每个js函数里面 实现了对应的服务器端方法的异步调用;4)服务器端会维护和支持一个消息池,所有与客户端相关的变化通知和数据都会 换存在该内存池中;5)服务器端自动向客户端注册一个javascript回调函数,该函数每隔一段时间 会自动调用服务器端方法检测消息池的的变化通知;6)步骤e)检测到有变化数据存在,则该部分数据通过异步回调,已返回值的形式 返回到客户端,客户端的脚本把这部分数据更新到页面的相关区域。程序自动把页面上服务器端的公开方法转换为客户端javascript函数时,会自 动把相关参数和返回值的数据类型映射为javascript支持的类型,这个过程对使用人员 透明。每个服务器端的public方法映射到客户端时,在客户端生成的javascript函数 中都包括对该方法基于XMLHTTP的异步回调。客户端javascript函数回调服务器端方法时,都包括对服务器端方法参数的传 入以及返回值的获取和解析。客户端和服务器端交换参数时可以使用JSON对象数据。服务器端维持的消息池可以是复杂对象,这些对象中包含相应的key,用以区分不 同的用户、不同的页面、不同的页面区域。不需要实现C0MET,该方法还用作实现AJAX。本发明的优异效果是使用该方法,可以轻便快捷的在ASP. NET站点或应用程序 中实现Comet,当服务器端相关数据发生变化时,会及时更新到客户端,从而使得客户端能 够及时的更新用户界面以反映服务器端数据的变化。


图1 页面初始化流程图图2 调用过程图
具体实施例方式
参照说明书附图对本发明的作以下详细地说明。 附图1说明用户向服务器发出页面浏览请求,服务器端函数管理器会自动把相 关方法映射到客户端,并返回其他相关数据。
附图2说明客户端脚本调用相关映射函数,该函数会自动异步调用服务器端方 法,服务器端接到异步调用请求后,根据编程策略,对服务器端数据进行处理,然后返回到 客户端,客户端调用接收到返回数据后,在脚本中更新页面区域。实施例1)在Visual Studio 2005或2008的ASP. NET开发环境中,把函数管理器引入工 具栏;2)在要实现COMET或者AJAX的页面上拖入函数管理器;3)编写服务器端函数,对需要客户端调用的函数标示为public ;4)如果有复杂应用,实现消息池;5)在客户端javascript脚本中,按照需要直接调用服务器端方法即可。
权利要求
一种ASP.NET环境下Comet功能的实现方法,其特征在于,包含如下步骤a)服务器端程序在页面初始化时,自动获取ASP.NET页面上服务器端修饰符为public的方法;b)步骤a)中获取到修饰符为public的方法,则把这些方法转换为客户端javascript函数,并自动加载到客户端;c)在b)步骤中把服务器端公开方法转换为javascript函数时,每个js函数里面实现了对应的服务器端方法的异步调用;d)服务器端会维护和支持一个消息池,所有与客户端相关的变化通知和数据都会换存在该内存池中;e)服务器端自动向客户端注册一个javascript回调函数,该函数每隔一段时间会自动调用服务器端方法检测消息池的的变化通知;f)步骤e)检测到有变化数据存在,则该部分数据通过异步回调,已返回值的形式返回到客户端,客户端的脚本把这部分数据更新到页面的相关区域。
2.根据权利要求1所述的方法,其特征在于,程序自动把页面上服务器端的公开 方法转换为客户端javascript函数时,会自动把相关参数和返回值的数据类型映射为 javascript支持的类型,这个过程对使用人员透明。
3.根据权利要求1所述的方法,其特征在于,每个服务器端的public方法映射到客户 端时,在客户端生成的javascript函数中都包括对该方法基于XMLHTTP的异步回调。
4.根据权利要求1所述的方法,其特征在于,客户端javascript函数回调服务器端方 法时,都包括对服务器端方法参数的传入以及返回值的获取和解析。
5.根据权利要求1所述的方法,其特征在于,客户端和服务器端交换参数时可以使用 JSON对象数据。
6.根据权利要求1所述的方法,其特征在于,服务器端维持的消息池可以是复杂对象, 这些对象中包含相应的key,用以区分不同的用户、不同的页面、不同的页面区域。
7.根据权利要求1所述的方法,其特征在于,不需要实现C0MET,该方法还用作实现 AJAX。全文摘要
本发明公开了一种在ASP.NET环境下实现Comet(又称Server Push或ReverseAjax)的方法。使用该方法,可以轻便快捷的在ASP.NET站点或应用程序中实现Comet,当服务器端相关数据发生变化时,会及时更新到客户端,从而使得客户端能够及时的更新用户界面以反映服务器端数据的变化。
文档编号H04L29/06GK101883086SQ20101012437
公开日2010年11月10日 申请日期2010年3月15日 优先权日2010年3月15日
发明者田尚杰 申请人:浪潮集团山东通用软件有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1