公开/公告号CN101883086A
专利类型发明专利
公开/公告日2010-11-10
原文格式PDF
申请/专利权人 浪潮集团山东通用软件有限公司;
申请/专利号CN201010124371.2
发明设计人 田尚杰;
申请日2010-03-15
分类号H04L29/06(20060101);H04L29/08(20060101);
代理机构
代理人
地址 250014 山东省济南市历下区山大路224号
入库时间 2023-12-18 01:00:57
法律状态公告日
法律状态信息
法律状态
2013-01-02
授权
授权
2011-05-11
实质审查的生效 IPC(主分类):H04L29/06 申请日:20100315
实质审查的生效
2010-11-10
公开
公开
技术领域
本发明提出了一种实现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,用以区分不同的用户、不同的页面、不同的页面区域。
不需要实现COMET,该方法还用作实现AJAX。
本发明的优异效果是:使用该方法,可以轻便快捷的在ASP.NET站点或应用程序中实现Comet,当服务器端相关数据发生变化时,会及时更新到客户端,从而使得客户端能够及时的更新用户界面以反映服务器端数据的变化。
附图说明
图1:页面初始化流程图:
图2:调用过程图:
具体实施方式
参照说明书附图对本发明的作以下详细地说明。
附图1说明:用户向服务器发出页面浏览请求,服务器端函数管理器会自动把相关方法映射到客户端,并返回其他相关数据。
附图2说明:客户端脚本调用相关映射函数,该函数会自动异步调用服务器端方法,服务器端接到异步调用请求后,根据编程策略,对服务器端数据进行处理,然后返回到客户端,客户端调用接收到返回数据后,在脚本中更新页面区域。
实施例
1)在Visual Studio 2005或2008的ASP.NET开发环境中,把函数管理器引入工具栏;
2)在要实现COMET或者AJAX的页面上拖入函数管理器;
3)编写服务器端函数,对需要客户端调用的函数标示为public;
4)如果有复杂应用,实现消息池;
5)在客户端javascript脚本中,按照需要直接调用服务器端方法即可。
机译: 有线/无线环境下数字权限管理的权限发行者和域机构之间的注册方法以及使用该注册方法实现SCE功能的方法
机译: 有线/无线环境下的权利发行人和域权限之间的数字版权管理注册方法以及使用注册方法实现SCE功能的方法
机译: 将一种或多种成分施用于多种种子的方法,种子处理操作期间的湿度和温度控制方法,种子处理产品的开发方法,具有一种或多种种子处理产品的生产工厂中的种子处理方法,环境受控种子处理系统,以在生产场所或测试场所处理种子,在种子生产设施中用于将处理过的种子输送到种子的方法,该方法用于将种子处理产品应用于生产工厂中的多种玉米种子的方法,作物产量增强方法,种子生产设施中用于处理生产者的种子的环境控制种子处理系统以及在预定环境条件下评估处理产品种子性能的方法