广告
返回顶部
首页 > 资讯 > 后端开发 > ASP.NET >ASP.NET MVC使用异步Action的方法
  • 176
分享到

ASP.NET MVC使用异步Action的方法

ASP.NET MVC异步Action 2022-11-13 18:11:27 176人浏览 安东尼
摘要

在没有使用异步Action之前,在Action内,比如有如下的写法: public ActionResult Index() { CustomerHelper cHelper

在没有使用异步Action之前,在Action内,比如有如下的写法:

public ActionResult Index()
{
    CustomerHelper cHelper = new CustomerHelper();
    List<Customer> result = cHelper.GetCustomerData();
    return View(result);
}

以上,假设,GetCustomerData方法是调用第三方的服务,整个过程都是同步的,大致是:

→请求来到Index这个Action
asp.net线程池中抓取一个线程
→执行GetCustomerData方法调用第三方服务,假设持续8秒钟的时间,执行完毕
→渲染Index视图

在执行执行GetCustomerData方法的时候,由于是同步的,这时候无法再从线程池抓取其它线程,只能等到GetCustomerData方法执行完毕。

这时候,可以改善一下整个过程。

→请求来到Index这个Action
→ASP.net从线程池中抓取一个线程服务于Index这个Action方法
→同时,ASP.NET又从线程池中抓取一个线程服务于GetCustomerData方法
→渲染Index视图,同时获取GetCustomerData方法返回的数据

所以,当涉及到多种请求,比如,一方面是来自客户的请求,一方面需要请求第三方的服务或api,可以考虑使用异步Action。

假设有这样的一个View Model:

public class Customer
{
    public int Id{get;set;}
    public Name{get;set;}
}

假设使用Entity Framework作为ORM框架

public class CustomerHelper
{
	public async Task<List<Customer>> GetCustomerDataAsync()
	{
		MyContenxt db = new MyContext();
		var query = from c in db.Customers
					orderby c.Id ascending
					select c;
		List<Customer>	result = awai query.ToListAsycn();
		return result;				
	}
}

现在就可以写一个异步Action了。

public async Task<ActionResult> Index()
{
	CustomerHelper cHelper = new CustomerHelper();
	List<Customer> result = await cHlper.GetCustomerDataAsync();
	return View(result);
}

Index视图和同步的时候相比,并没有什么区别。

@model List<Customer>
@foreach(var customer in Model)
{
	<span>@customer.Name</span>
}

当然,异步还设计到一个操作超时,默认的是45秒,但可以通过AsyncTimeout特性来设置。

[AsyncTimeout(3000)]
public async Task<ActionResult> Index()
{
	...
}

如果不想对操作超时设限。

[NoAsyncTimeout]
public async Task<ActionResult> Index()
{
	...
}

综上,当涉及到调用第三方服务的时候,就可以考虑使用异步Action。async和await是异步编程的2个关键字,async总和Action

到此这篇关于ASP.NET mvc使用异步Action的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。

--结束END--

本文标题: ASP.NET MVC使用异步Action的方法

本文链接: https://www.lsjlt.com/news/169495.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • ASP.NET MVC使用异步Action的方法
    在没有使用异步Action之前,在Action内,比如有如下的写法: public ActionResult Index() { CustomerHelper cHelper...
    99+
    2022-11-13
    ASP.NET MVC 异步Action
  • Redux中异步action与同步action的使用
    异步action action:Object{} => 同步actionaction:function() => 异步action  同步action异步act...
    99+
    2022-11-13
  • Asp.net MVC 中Ajax的使用方法
    本篇内容介绍了“Asp.net MVC 中Ajax的使用方法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!...
    99+
    2022-10-19
  • ASP.NET MVC基于异常处理的解决方法
    今天就跟大家聊聊有关ASP.NET MVC基于异常处理的解决方法,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。EntLib的异常处理应用块(Exception Handling Ap...
    99+
    2023-06-17
  • ASP.NET MVC框架的使用方法是什么
    ASP.NET MVC框架的使用方法如下:1. 创建ASP.NET MVC项目:打开Visual Studio,选择“创建新项目”,...
    99+
    2023-10-10
    ASP.NET MVC
  • ASP.NET MVC 应用提速的十种方法
    【编者按】本文作者为 DZone 社区的最具价值博主(MVB) Jonathan Danylko,主要介绍为 ASP.NET MVC 应用提速的十种方法。由国内 IT...
    99+
    2022-10-18
  • 使用Spring MVC实现统一异常处理的方法
    这篇文章将为大家详细讲解有关使用Spring MVC实现统一异常处理的方法,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。1 描述 在J2EE项目的开发中,不管是对底层的数据库操作过程,还是业...
    99+
    2023-05-31
    springmvc 异常处理
  • Python异步方法怎么使用
    本篇内容介绍了“Python异步方法怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!为什么要异步编程...
    99+
    2022-10-19
  • ASP.NET MVC使用jQuery的Load方法加载静态页面及注意事项
    使用使用jQuery的Load方法可以加载静态页面,本篇就在ASP.NET MVC下实现。 Model先行: public class Article { ...
    99+
    2022-11-13
  • Vue 中 Promise 的then方法异步使用及async/await 异步使用总结
    目录1.Promise 的 then 方法使用  2. async await 使用3. async/await处理多个异步请求1.Promise 的 then 方法使用 ...
    99+
    2023-01-12
    Promise 的 then 方法使用 async await 使用 async/await处理多个异步请求
  • Spring中的使用@Async异步调用方法
    目录使用@Async异步调用方法Async简介给Spring的TaskExecutor去完成本次记录Async使用场景异步请求与异步调用的区别异步请求的实现SpringBoot中异步...
    99+
    2022-11-12
  • ajax使用不同namespace的action的方法有哪些
    这篇文章主要介绍“ajax使用不同namespace的action的方法有哪些”,在日常操作中,相信很多人在ajax使用不同namespace的action的方法有哪些问题上存在疑惑,小编查阅了各式资料,整...
    99+
    2022-10-19
  • C#使用Task实现异步方法
    目录一、async和await特性的结构1. 异步和同步2.async和await二、什么是异步方法1.异步方法的结构2.异步方法三种返回类型理解3.异步方法的控制流三、await表...
    99+
    2023-05-14
    C# Task异步 C# 异步
  • 异步JavaScript编程中的Promise使用方法
    异步? 我在很多地方都看到过异步(Asynchronous)这个词,但在我还不是很理解这个概念的时候,却发现自己常常会被当做“已经很清楚”(* ̄? ̄)。 如果你也有类似的情况,没关系,搜索一下这个...
    99+
    2022-06-04
    使用方法 JavaScript Promise
  • 使用Java实现异步编程的方法
    本篇文章给大家分享的是有关使用Java实现异步编程的方法,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。什么是异步?为什么要用它?异步编程提供了一个非阻塞的,事件驱动的编程模型。...
    99+
    2023-05-31
    java 异步编程 ava
  • MVC+proxy的原理及使用方法
    这篇文章主要讲解了“MVC+proxy的原理及使用方法”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MVC+proxy的原理及使用方法”吧!目录创建业务层UserService接口定义需要完...
    99+
    2023-06-20
  • stream_socket_client的异步使用方式
    函数的基本介绍 PHP 5、7、8,stream_socket_client用于建立网络或IPC socket连接。函数的参数和返回为: stream_socket_client( string $address, int &$...
    99+
    2023-09-10
    网络
  • Vue3异步组件Suspense的使用方法详解
    Suspense组件 官网中有提到他是属于实验性功能:<Suspense> 是一项实验性功能。它不一定会最终成为稳定功能,并且在稳定之前相关 API 也可能会发...
    99+
    2023-01-28
    Vue3异步组件 Vue3异步组件Suspense的使用方法
  • java中@Async异步调用的方法
    本篇内容主要讲解“java中@Async异步调用的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“java中@Async异步调用的方法”吧!前言异步调用与同步调用同步调用:顺序执行,通过调用返...
    99+
    2023-07-02
  • SpringBoot中异步调用@Async的方法
    本篇内容主要讲解“SpringBoot中异步调用@Async的方法”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringBoot中异步调用@Async的方法...
    99+
    2022-10-19
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作