ASP.NET MVC探索深入第9部分的控制器

ASP.NET MVC探索深入第9部分的控制器

异步控制器

 

  • 只有在执行I / O绑定操作(如远程服务器)诸如ASYNC调用的福利时,ASync操作才有用,而在I / O操作期间,则不会使用ASP.NET Worker线程。
  • 异步控制器使您可以编写异步操作
  • 假设我们有三项运营,需要200,500和800毫秒。通过同步呼叫,总响应时间将略高于1500毫秒。但是,如果呼叫是异步(并行)进行的,则总响应时间将略高于800毫秒,因为这是最长任务/操作的持续时间。

笔记:

它允许您执行长期运行操作而不使运行线程空闲。它并不意味着它将花费较小的时间来完成行动。如果请求使服务调用需要两秒钟才能完成它,请求需要两秒钟,无论是同步还是异步执行。但是,在异步呼叫期间,服务器不会被阻止响应其他请求。

MVC 4 / C#4之前的异步控制器

这是我们需要做的:

  • 控制器必须派生 异步controller. 而不是控制器
  • 行动需要 分成两部分 :第一部分开始所有异步呼叫,第二部分使用这些调用的结果来返回操作结果

MVC 4或5 / C#5中的异步控制器:

来自C#5,我们有任务并行API,也可以用于实现异步调用来执行操作方法。

例子:

问题:

虽然我们的新异步控制器在请求之间实现并行性,但它依次调用方法。如果每个呼叫需要1秒钟,则此方法将在短短3秒内返回动作结果。

让’S查看我们如何并行化请求。

在这里,我们首先调用所有3个异步操作调用,只需使用task.whenall等待它们。最后,我们使用每个任务的等待来获得所有3个操作的返回值。

以自己的节奏学习MVC– MVC教程

发表评论

您的电子邮件地址不会被公开。 必需的地方已做标记 *