一起谈.NET技术,Server-push技术(comet)----------asp.net中的异步处理+client与服务器端的长连接

简介:   server-push技术已经面世很久了,但直到GTALK的诞生才慢慢的引导出这项技术,不过到现在为止,也很少有人去应用这方面的技术,server-push倒底是一个什么样的东西呢?  故名思义,server-push即“服务器推”的意思,ajax大家都用过,它和server-push是完全相反的两个东西,ajax是从服务器端拉取数据,如果要定期更新页面上显示的数据块,那么最简单的方法就是写个计时器,server-push则不同,它的本质是将client与server建立一个长连接,即连上后不断开,一旦服务器端有新的数据就将其推送到客户端,讲到这里出现了几个问题。

  server-push技术已经面世很久了,但直到GTALK的诞生才慢慢的引导出这项技术,不过到现在为止,也很少有人去应用这方面的技术,server-push倒底是一个什么样的东西呢?

  故名思义,server-push即“服务器推”的意思,ajax大家都用过,它和server-push是完全相反的两个东西,ajax是从服务器端拉取数据,如果要定期更新页面上显示的数据块,那么最简单的方法就是写个计时器,server-push则不同,它的本质是将client与server建立一个长连接,即连上后不断开,一旦服务器端有新的数据就将其推送到客户端,讲到这里出现了几个问题。

  1.ajax与server-push的区别与相同点分别是什么?

  答:ajax与server-push的共同点是,它们同样使用javascript实现数据无刷新展示,区别在于,如果你使用ajax时时更新数据,那么无论服务器端数据有无变化,都会定期向服务器端取数据,这样便造成了一些不必要性能消耗,对服务器造成了一定的压力,而server-push则不同,它是在服务器端有新数据产生的时候才对客户端进行数据反馈,不过其缺点也产生于此,因为它会占用WEB服务器的连接数,用户访问量大且对连接数有一定限制的WEB服务器是不适用于server-push的。

  2.服务器端如何发现有新数据?

  答:这个问题需要根据具体应用环境来看,如果用于“即时通讯”工具的在线用户统计,服务器端发现有新用户登录,即向所有客户端推送数据,还有一种用得比较多的方式是在服务器端使用多线程来监控数据的更改。

  3.服务器端如何往客户端推数据?

  答:此问题是最关键的,服务器端怎么推送数据到客户端呢?.net中有个异步回调,使用它便可以实现服务器端往客户端数据的推送,.net中异步回调是怎么回事呢?其实很简单.

  e.g. 写个类,假如专门用来实现异步回调,必须注意以下几点

  1>继承IHttpAsyncHandler接口   //定义 HTTP 异步处理程序对象必须实现的协定。

  2>以下几个方法不能少

//启动对 HTTP 处理程序的异步调用。
    public IAsyncResult BeginProcessRequest(HttpContext context, AsyncCallback cb, object extraData) {}
    //进程结束时提供异步处理 End 方法。
    public void EndProcessRequest(IAsyncResult result){}
    //获取一个值,该值指示其他请求是否可以使用 IHttpHandler 实例。 (继承自 IHttpHandler。)
    public bool IsReusable{get { return false; ; }}
    //通过实现 IHttpHandler 接口的自定义 HttpHandler 启用 HTTP Web 请求的处理。 (继承自 IHttpHandler。)
    public void ProcessRequest(HttpContext context){throw new NotImplementedException();}
    //重点在这里,这里负责向客户端写数据   
    try
    {
      context.Response.Write(this.value);
          if (m_Callback != null)
          {
            m_Callback(this);//此处执行完毕,客户端ajax的请求便可获取到服务器端推送的数据了
           }
     }
     catch { }
     finally
     {
       m_IsCompleted = true;
     }

     上面方法中的this指的是另外一个类,此类继承接口IAsyncResult(//表示异步操作的状态)

  终上所述,server-push需要客户端与服务器端建立一个长连接,这个长连接不能断,这样服务器端一旦有东西就会通过这个管道传到客户端,数据的push又需要使用到.net的异步回调。此处没有涉及到具体的代码编写,对于没有接触过.net异步回调的朋友来说看起来可能有点吃力,不过首先明白原理,然后再慢慢的去摸索技术。

目录
相关文章
|
3月前
|
云安全 弹性计算 Linux
无需懂技术,阿里云上3分钟幻兽帕鲁服务器搭建教程
幻兽帕鲁最近非常火。有些小伙伴可能不喜欢跟陌生人一起玩,那么你可以搭建一个专有服务器和朋友一起联机游戏。自己搭建服务器不仅更私密,还能自定义游戏里的一些选项,比如调整工作速度倍率、经验获取倍率等。这篇教程将引导你在3分钟左右快速完成幻兽帕鲁服务器的搭建。
|
29天前
|
开发框架 前端开发 .NET
进入ASP .net mvc的世界
进入ASP .net mvc的世界
28 0
|
1月前
|
开发框架 中间件 .NET
C# .NET面试系列七:ASP.NET Core
## 第一部分:ASP.NET Core #### 1. 如何在 controller 中注入 service? 在.NET中,在ASP.NET Core应用程序中的Controller中注入服务通常使用<u>依赖注入(Dependency Injection)</u>来实现。以下是一些步骤,说明如何在Controller中注入服务: 1、创建服务 首先,确保你已经在应用程序中注册了服务。这通常在Startup.cs文件的ConfigureServices方法中完成。例如: ```c# services.AddScoped<IMyService, MyService>(); //
60 0
|
1月前
|
开发框架 前端开发 .NET
C# .NET面试系列六:ASP.NET MVC
<h2>ASP.NET MVC #### 1. MVC 中的 TempData\ViewBag\ViewData 区别? 在ASP.NET MVC中,TempData、ViewBag 和 ViewData 都是用于在控制器和视图之间传递数据的机制,但它们有一些区别。 <b>TempData:</b> 1、生命周期 ```c# TempData 的生命周期是短暂的,数据只在当前请求和下一次请求之间有效。一旦数据被读取,它就会被标记为已读,下一次请求时就会被清除。 ``` 2、用途 ```c# 主要用于在两个动作之间传递数据,例如在一个动作中设置 TempData,然后在重定向到另
95 5
|
1月前
|
弹性计算 缓存 数据库
2核4G服务器优惠价格,阿里云降价了,释放技术红利
2核4G服务器优惠价格,阿里云降价了,释放技术红利,2核4G配置1个月多少钱?2核4G服务器30元3个月、轻量应用服务器2核4G4M带宽165元一年、企业用户2核4G5M带宽199元一年
|
2月前
|
运维 前端开发 Java
探索新一代数据库技术——无服务器数据库
【2月更文挑战第2天】本文将介绍一种创新的数据库技术——无服务器数据库。通过分析其原理、特点和应用场景,我们将揭示无服务器数据库在解决传统数据库面临的挑战方面的优势。同时,我们还将探讨无服务器数据库对于前端、后端以及Java等技术领域的影响,并展望其未来的发展趋势。
28 0
|
2月前
|
弹性计算 运维 数据安全/隐私保护
2024年雾锁王国Enshrouded自建服务器教程,不需要技术
2024年雾锁王国Enshrouded自建服务器教程,不需要技术,雾锁王国游戏服务器怎么创建?阿里云雾锁王国服务器搭建教程是基于计算巢服务,3分钟即可成功创建Enshrouded游戏服务器,阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月,阿里云百科亲自整理雾锁王国服务器详细搭建教程,零基础不需要技术一键部署
|
2月前
|
弹性计算 运维 数据安全/隐私保护
2024《雾锁王国》服务器一键部署教程,不需要任何技术!
2024《雾锁王国》服务器一键部署教程,不需要任何技术!阿里云雾锁王国服务器搭建教程是基于计算巢服务,3分钟即可成功创建Enshrouded游戏服务器,阿里云8核32G雾锁王国专用游戏服务器90元1个月、271元3个月,阿里云百科亲自整理雾锁王国服务器详细搭建教程,零基础不需要技术一键部署
|
2月前
|
弹性计算 数据安全/隐私保护
不用任何技术,雾锁王国(Enshrouded)服务器零基础一键部署教程
不用任何技术,《雾锁王国》服务器零基础一键部署教程,今天教大家如何快速一键开服雾锁王国。该游戏目前最多支持16人游玩。雾锁王国(Enshrouded)作为一款热门多人在线游戏,为了给玩家提供稳定、流畅的联机体验,阿里云提供了高效便捷的快速部署解决方案,本文将为大家分享阿里云一键部署雾锁王国联机服务器详细教程。
|
2月前
|
运维 监控 持续交付
服务器基础知识(IP地址与自动化技术的使用)
服务器基础知识(IP地址与自动化技术的使用)
24 0

热门文章

最新文章