CN101883086B - 一种ASP.NET环境下Comet功能的实现方法 - Google Patents
一种ASP.NET环境下Comet功能的实现方法 Download PDFInfo
- Publication number
- CN101883086B CN101883086B CN 201010124371 CN201010124371A CN101883086B CN 101883086 B CN101883086 B CN 101883086B CN 201010124371 CN201010124371 CN 201010124371 CN 201010124371 A CN201010124371 A CN 201010124371A CN 101883086 B CN101883086 B CN 101883086B
- Authority
- CN
- China
- Prior art keywords
- client
- server end
- function
- data
- page
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 46
- 239000003607 modifier Substances 0.000 claims description 5
- 230000006870 function Effects 0.000 description 26
- 230000000875 corresponding effect Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 241001269238 Data Species 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000004891 communication Methods 0.000 description 1
- 230000002596 correlated effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 230000000694 effects Effects 0.000 description 1
- 239000012467 final product Substances 0.000 description 1
- 238000012544 monitoring process Methods 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Images
Landscapes
- Information Transfer Between Computers (AREA)
Abstract
本发明公开了一种在ASP.NET环境下实现Comet(又称Server Push或ReverseAjax)的方法。使用该方法,可以轻便快捷的在ASP.NET站点或应用程序中实现Comet,当服务器端相关数据发生变化时,会及时更新到客户端,从而使得客户端能够及时的更新用户界面以反映服务器端数据的变化。
Description
技术领域
本发明提出了一种实现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脚本中,按照需要直接调用服务器端方法即可。
Claims (6)
1.一种ASP.NET环境下Comet功能的实现方法,其特征在于,包含如下步骤:
a)服务器端程序在页面初始化时,自动获取ASP.NET页面上服务器端修饰符为public的方法;
b)步骤a)中获取到修饰符为public的方法,则把这些方法转换为客户端javascript函数,并自动加载到客户端;
c)在b)步骤中把服务器端公开方法转换为javascript函数时,每个javascript函数里面实现了对应的服务器端方法的异步调用;
d)服务器端会维护和支持一个消息池,所有与客户端相关的变化通知和数据都会缓存在该消息池中;
e)服务器端自动向客户端注册一个javascript回调函数,该函数每隔一段时间会自动调用服务器端方法检测消息池的的变化通知;
f)步骤e)检测到有变化数据存在,则该部分数据通过异步回调,已返回值的形式返回到客户端,客户端的脚本把这部分数据更新到页面的相关区域。
2.根据权利要求1所述的方法,其特征在于,程序自动把页面上服务器端的公开方法转换为客户端javascript函数时,会自动把相关参数和返回值的数据类型映射为javascript支持的类型,这个过程对使用人员透明。
3.根据权利要求1所述的方法,其特征在于,每个服务器端的修饰符为public方法映射到客户端时,在客户端生成的javascript函数中都包括对该方法基于XMLHTTP的异步回调。
4.根据权利要求1所述的方法,其特征在于,客户端javascript函数回调服务器端方法时,都包括对服务器端方法参数的传入以及返回值的获取和解析。
5.根据权利要求1所述的方法,其特征在于,客户端和服务器端交换参数时可以使用JSON对象数据。
6.根据权利要求1所述的方法,其特征在于,服务器端维持的消息池可以是复杂对象,这些对象中包含相应的key,用以区分不同的用户、不同的页面、不同的页面区域。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010124371 CN101883086B (zh) | 2010-03-15 | 2010-03-15 | 一种ASP.NET环境下Comet功能的实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010124371 CN101883086B (zh) | 2010-03-15 | 2010-03-15 | 一种ASP.NET环境下Comet功能的实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101883086A CN101883086A (zh) | 2010-11-10 |
CN101883086B true CN101883086B (zh) | 2013-01-02 |
Family
ID=43054976
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010124371 Active CN101883086B (zh) | 2010-03-15 | 2010-03-15 | 一种ASP.NET环境下Comet功能的实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101883086B (zh) |
Families Citing this family (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102035893A (zh) * | 2010-12-23 | 2011-04-27 | 中国农业银行股份有限公司 | 一种服务器主动推送数据的方法和系统 |
CN102760082B (zh) * | 2011-04-29 | 2016-09-14 | 腾讯科技(深圳)有限公司 | 一种任务管理方法和移动终端 |
WO2013091195A1 (zh) * | 2011-12-21 | 2013-06-27 | 华为技术有限公司 | 一种分布式系统中处理事务的方法、相关设备及系统 |
CN103077196B (zh) * | 2012-12-25 | 2016-04-20 | 宁波公众信息产业有限公司 | 一种从公网web网站到内网数据库的访问方法 |
CN104007955A (zh) * | 2013-02-26 | 2014-08-27 | 中国石油化工股份有限公司 | 一种用于钻井资料的即增即读的方法 |
CN103281355A (zh) * | 2013-05-02 | 2013-09-04 | 同济大学 | 基于模糊决策的服务器推送方法 |
CN103607441A (zh) * | 2013-11-12 | 2014-02-26 | 浪潮集团有限公司 | 一种基于web的服务器远程管理系统 |
CN103780603B (zh) * | 2013-12-31 | 2016-10-19 | 电子科技大学 | 应用内轻量级推送方法 |
CN103809757A (zh) * | 2014-02-26 | 2014-05-21 | 山东超越数控电子有限公司 | 一种人机交互系统的实现机制 |
CN105516221B (zh) * | 2014-09-24 | 2018-12-14 | 阿里巴巴集团控股有限公司 | 信息推送系统及方法 |
CN104683325A (zh) * | 2014-12-01 | 2015-06-03 | 苏州朗米尔照明科技有限公司 | 一种基于comet连接进行个性化信息推送的方法 |
CN106997298B (zh) * | 2016-01-22 | 2021-08-06 | 菜鸟智能物流控股有限公司 | 一种应用资源获取方法及装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179435A (zh) * | 2007-11-22 | 2008-05-14 | Ut斯达康通讯有限公司 | 一种主动推送网管事件的方法及网络管理系统 |
WO2009073368A1 (en) * | 2007-11-29 | 2009-06-11 | Motorola, Inc. | Method and apparatus to facilitate asynchronously invoking a browser application in a client platform |
-
2010
- 2010-03-15 CN CN 201010124371 patent/CN101883086B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101179435A (zh) * | 2007-11-22 | 2008-05-14 | Ut斯达康通讯有限公司 | 一种主动推送网管事件的方法及网络管理系统 |
WO2009073368A1 (en) * | 2007-11-29 | 2009-06-11 | Motorola, Inc. | Method and apparatus to facilitate asynchronously invoking a browser application in a client platform |
Non-Patent Citations (1)
Title |
---|
陆晓春.《基于服务器端Push的Web框架设计与实现》.《基于服务器端Push的Web框架设计与实现》.2007,第1-74页. * |
Also Published As
Publication number | Publication date |
---|---|
CN101883086A (zh) | 2010-11-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101883086B (zh) | 一种ASP.NET环境下Comet功能的实现方法 | |
US11677857B2 (en) | Configurable and dynamic transformation of web content | |
EP3491544B1 (en) | Web page display systems and methods | |
CN103942225B (zh) | 一种混合型应用客户端的资源调用方法、客户端及系统 | |
CA2743124C (en) | Techniques to automatically syndicate content over a network | |
US10193993B2 (en) | Systems and methods of token piggybacking | |
US8245125B1 (en) | Hybrid rendering for webpages | |
US10187444B2 (en) | System and method of automatic generation and insertion of analytic tracking codes | |
US20140282370A1 (en) | Methods for managing applications using semantic modeling and tagging and devices thereof | |
WO2019024658A1 (zh) | 界面呈现方法和装置 | |
CN106897336A (zh) | 网页文件发送方法、网页渲染方法及装置、网页渲染系统 | |
CN102904903A (zh) | 通信系统和通信方法 | |
CN103873918A (zh) | 图片处理方法、装置及终端 | |
CN101382947A (zh) | 在页面中确定点击分布信息的方法和装置 | |
CN102298599A (zh) | 离线浏览网页方法及其系统 | |
CN102096582A (zh) | 离线小工具集成开发环境 | |
WO2017120360A1 (en) | Computer-automated generation of application deep links | |
CN102859932B (zh) | 用于提供消息的方法及装置 | |
CN110808868B (zh) | 测试数据获取方法、装置、计算机设备及存储介质 | |
US20140245124A1 (en) | System and method thereof for browser agnostic extension models | |
CN110929183A (zh) | 一种数据处理方法、装置和机器可读介质 | |
CN101916283B (zh) | 由动态网页上获取链接信息的方法及其服务器 | |
CN104361130A (zh) | 一种在网页中搜索局域网或指定网段内设备的方法 | |
KR20120137629A (ko) | 브랜딩을 위한 단축 url 브라우징 제공시스템, 그 제공방법, 및 웹 클라이언트 | |
CN102984179A (zh) | 一种面向云计算操作系统进行Web服务跨域访问的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |