1
关注
92
浏览

怎么实现.NET网站异步处理?

火鲤鱼用户用户来自于: 未知
2023-04-14 09:35

在架构领域,我们经常听见别人说“异步”,另外大家在面试中也经常会遇到这方面的问题。

什么是异步?

说到.NET异步,先来说几个比较容易混淆的概念:

1、多线程:一般指同一进程中多个线程协作运行。在多核计算机中多个线程将有机会同时运行于多个核上,如果线程中进行的是计算,则行成并行计算。

2、并行:一般指并行计算,是说同一时刻有多条指令同时被执行,这些指令可能执行于同一CPU的多核上,或者多个CPU上,或者多个物理主机甚至多个网络中。

3、异步:与同步相对应,是指呼叫另一操作后,不等待其结果,继续执行之后的操作,若之后没有其他操作,当前线程将进入睡眠状态,而CPU时间将有机会切至其他线程。在异步操作完成后通过回调函数的方式获取通知与结果。

在Web中为什么要使用异步?

在web应用程序看到大量在启动时的并发请求或具有突发负载(其中会增加并发情况突然),进行异步web服务调用将增加你的应用程序的响应能力。异步请求采用相同量的时间来处理与同步请求。

例如,如果某个请求生成web服务调用,则需要两秒钟来完成,请求所执行的两秒内是否执行同步或异步。但是,在异步调用,线程则无需必须等待第一个请求完成时响应其他请求。因此,异步请求可以防止出现请求排队和线程池增长时有许多并发请求调用长时间运行的操作。

异步的实现方式

异步的实现方式有多种,比如多线程。多线程将异步操作放入另一线程中运行,通过轮询或回调方法得到完成通知。

多线程实现异步调用可以采用传统的Thread类来实现,Task来实现以及async/await关键字实现。

对于Thread来说,当多个异步方法需要协助时,代码将显得十分复杂,为此我们需要一个更好的异步模型,从.NET4开始,引入了新的异步模型。下面来看一段代码:

我们不再关心任务如何去开始,何时会结束,一切变成了一些有关或无关的任务。

对于封装一个由多个异步方法组合成的异步方法,组合异步方法调用后,按顺序调用第一个异步方法,紧接着,产生需要的结果Task后返回。异步方法完成时回调指定的方法,并按顺序继续调用,所有方法完成后,把运行的最终结果设置给结果Task,那么整个任务即完成。如果异步方法有返回值,那么组合的异步方法看上去会复杂一点。类似下图所示:

为了解决这个问题,微软提供了一个非常好用的语法糖:async/await关键字。下面我们来看一段代码:

他几乎和同步方法书写一致,代码量也比较少,程序的逻辑也很清晰,当然可读性更强。

总结

关于.NET网站异步处理分享到这里,这里做个总结:

1、.NET网站异步处理可以采用3中方式实现:Thread,Task,async/await;

2、Task出现是为了Thread的不足,async/await出现也是为了弥补Task的不足。大家有没有发现这个关系就像一条线一样。其实说到底这些都是多线程技术,底层都是Thread实现,只不过微软为了代码的可读性以及逻辑的清晰性,做了语法糖,从而更加方便开发人员使用。

3、在C#5中,添加了async/await关键字,使得上面遗留的问题得以解决,而且重点是,用起来非常简单!

4、NETFramework4引入了异步编程概念,ASP.NET4.5支持任务,于是就有了async/await。

以上就是我的观点,对于这个问题大家是怎么看待的呢?欢迎在下方评论区交流~我是科技领域创作者,十年互联网从业经验,欢迎关注我了解更多科技知识!

问题动态

发布时间
2023-04-14 09:35
更新时间
2023-04-14 09:35

推荐内容

做一个有价值的个人ip网站有戏吗?
做一个小型的网站大概需要多少钱?
做一个像头条一样的网站需要多少钱?需要具备哪些条件?
做一个响应式网站的成本是多少?
做一个视频直播网站需要多少钱?
做一个视频播放的网站需要用到哪些技术呢?
有些网站文本复制不了怎么办?
做一个广告公司的网站,大概需要多少钱?
怎么实现.NET网站异步处理?
有哪些免费搭建网站的应用?
火鲤鱼 © 2025 专注小微企业服务 冀ICP备09002609号-8