ASP.NET MVC4中的异步控制器
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了ASP.NET MVC4中的异步控制器,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1794字,纯文字阅读大概需要3分钟。
内容图文
![ASP.NET MVC4中的异步控制器](/upload/InfoBanner/zyjiaocheng/857/0a2a88a7e15c498bb75e79f4ac64d98d.jpg)
在抛弃了对.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中的异步控制器全部内容,希望文章能够帮你解决ASP.NET MVC4中的异步控制器所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。