网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

详细解读ASP.NET的异步

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/05
部分时间间隙,在这间隙中向该客户端发送的消息将丢失,解决方案是维护另一个用户是否在线的表,如果用户不在线,则处理离线消息,如果在线,并且正在连接中,则按上述处理,如果不在连接中,则缓存在服务器,当客户端再次连接时,首先检查缓存的消息,如果有未接消息,则获取消息并立即返回。

发送消息的处理程序。

  1. public class SendMessage : IHttpHandler  
  2. {  
  3.  
  4.     public void ProcessRequest(HttpContext context)  
  5.     {  
  6.         var clientID = context.Request.QueryString["clientID"];  
  7.         var message = context.Request.QueryString["message"];  
  8.         WebAsyncResultCollection.Instance.SendMessage(clientID, message);  
  9.     }  
  10.  
  11.     public bool IsReusable  
  12.     {  
  13.         get 
  14.         {  
  15.             return true;  
  16.         }  
  17.     }  

可以在任何需要的位置向客户端发送消息。

【不完善】我们需要定时刷新客户端集合,对于长时间未处理的客户端进行超时结束处理。

通过异步处理程序构建的长连接消息推送机制,单台服务器可以轻松支持上万个并发连接。

异步Action

在ASP.NET MVC 4中,添加了对异步Action的支持。     

498)this.width=498;'' onmousewheel = ''javascript:return big(this)'' alt="" src="/uploadfile/201301/5/B815529419.png" />

在ASP.NET MVC4中,整个处理过程都是异步的。

在图中可以看到,最右边的ActionDescriptor将决定如何调用我们的Action方法,而如何调用是由具体的Action方法形式决定,ASP.NET MVC会根据不同的方法形式创建不同的ActionDescriptor实例,从而调用不同的处理过程。对于传统的方法,则使用 ReflectedActionDescriptor,他实现Execute方法,调用我们的Action,并在 AsyncControllerActionInvoker包装成同步调用。而异步调用在ASP.NET MVC 4  中有两种模式。

异步Action模式一:AsyncController/XXXAsync/XXXCompleted

我们可以使一个Controller继承自AsyncController,按照约定同时提供两个方法,分别命名为 XXXAsync/XXXCompleted,ASP.NET MVC则会将他们包装成ReflectedAsyncActionDescriptor。   

  1. public class DefaultController : AsyncController  
  2. {  
  3.     public void DoAsync()  
  4.     {  
  5.         //注册一次异步  
  6.         AsyncManager.OutstandingOperations.Increment();  
  7.         Timer timer = null;  
  8.         timer = new Timer(o =>  
  9.         {  
  10.             //一次异步完成  
  11.             AsyncManager.OutstandingOperations.Decrement();  
  12.             timer.Dispose();  
  13.         },null, 5000, 5000);  
  14.     }  
  15.  
  16.     public ActionResult DoCompleted()  
  17.     {  
  18.         return Content("OK");  
  19.     }  

  • 上一篇资讯: ASP.NET显示渐变图片
  • 网学推荐

    免费论文

    原创论文

    设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
    版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号