分享web开发知识

注册/登录|最近发布|今日推荐

主页 IT知识网页技术软件开发前端开发代码编程运营维护技术分享教程案例
当前位置:首页 > 网页技术

ASP.NET MVC4中的异步控制器

发布时间:2023-09-06 02:16责任编辑:傅花花关键词:.NETMVC

在抛弃了对.NET 3的支持之后, ASP.NET MVC 4 彻底拥抱了Task类库, 你不需要再蛋疼的给每个Action写两个方法, 也无需傻傻的手动对异步Action计数器增减了(AsyncManager.OutstandingOperations.Increment()), 现在的你只需拿起手指, 轻轻敲几下, 其他的事情都由系统帮你完成 

public class PortalController : AsyncController { ????public Task<ViewResult> News( string city) ?????????{ ??????????return Task.Factory.StartNew(() => ?RunThread(city)) ???????????????.ContinueWith(t => ??????????????????????????????{ ??????????????????????????????????????return View(new ViewStringModel() ??????????????????????????????????????????????????{ ??????????????????????????????????????????????????????Text = t.Result ??????????????????????????????????????????????????}); ??????????????????????????????}); ????} ?????private string ?RunThread(string input) ?????{ ???????????Thread.Sleep(5000); ???????????return input; ?????} }

 是不是好多了?Lamda可以让一切更爽

public Task<ViewResult> News(string city) { ????return Task.Factory.StartNew(() => RunThread(city)) ????????.ContinueWith(t => View(new ?ViewStringModel{ Text = t.Result })); }

那么, 是不是到这里就要说再见了呢? 不是的, 请继续往下看

伟大的async/await

虽然还未到正式发布的时候, 不过如果我们跟着微软的目光往前更进一步, 在ASP.NET和C# 5中, 或者我们从这里可以给.NET 4增加Async 的功能, 在有了async和await这两个关键词之后, 异步编码就更简单啦, 这其中也包括异步控制器的相关操作: 

public class PortalController : AsyncController { ????public async Task<ViewResult> News(string city) ????{ ???????????return View(new ?ViewStringModel() ????????????????????????{ ??????????????????????????????????????????????????????????????Text = await NewThread(city) ????????????????????????}); ????} ??????????private async Task<string> NewThread(string input) ????????{ ????????????????????Thread.Sleep(5000); ????????????????????return input; ?????} ?}

 总结

由于有了async和await关键字以及Task类库的帮助, 在可预见的未来里, 我们操作异步控制器就可以像操作普通的控制器一样了, 但就像其他的众多新增的.NET特性一样, 能力越大, 责任也就越大, 方便也往往意味着滥用. 异步控制器固然好, 但也并非每种场合都适合用它, 不恰当的使用它往往会导致服务器需要在不同的线程之间切换, 而这也带来了更多额外的开销. 在开发领域, 我们尤其要注意性能往往比其他任何东西都重要, 因此, 请在确实能提高性能和用户相应的情况下使用异步控制器

ASP.NET MVC4中的异步控制器

原文地址:https://www.cnblogs.com/li150dan/p/9712908.html

知识推荐

我的编程学习网——分享web前端后端开发技术知识。 垃圾信息处理邮箱 tousu563@163.com 网站地图
icp备案号 闽ICP备2023006418号-8 不良信息举报平台 互联网安全管理备案 Copyright 2023 www.wodecom.cn All Rights Reserved