当前位置: 首页 > 知识库问答 >
问题:

在ASP.NET MVC(Web开发)中使用Asyn和Sync操作有什么不同吗[重复]

仲孙景胜
2023-03-14

在HTTP协议中,客户端必须等待服务器处理请求并返回HTML/JSON。异步操作和同步操作之间的重要/不同之处是什么?我的意思是没有GUI可能冻结,如果同步操作使用。

[HttpGet]
[Route("{id}")]
public async Task<ActionResult<Employee>> GetByID(int id)
{
    return await _employeeRepo.GetAsyncByID(id);
}

同步方法

[HttpGet]
[Route("{id}")]
public ActionResult<Employee> GetByID(int id)
{
    return _employeeRepo.GetByID(id);
}

异步不会冻结主线程,但当没有UI时,它又有什么不同呢

共有1个答案

杜轩昂
2023-03-14

正如您所说,为控制器方法使用异步任务的选择与客户端无关,客户端仍将以相同的方式等待HTTP响应。异步控制器方法的使用允许服务器更容易地在内部使用异步方法来管理其性能。

在第一个示例中,假设_emplyeerepo正确使用异步,那么请求线程在DB访问层等待DB调用返回时是空闲的。这意味着在等待数据库时,有一个线程可用于其他请求。

但是,在第二个示例中,为HTTP请求服务的线程被阻塞,直到DB返回。

 类似资料:
  • 我在Eclipse上使用PITclipse对代码进行PIT变异测试。PITclipse中有三种类型的操作符:DEFAULT、strong和ALL)。 它们与每个操作符中列出的突变体列表有什么不同?

  • 相同版本的代码优化是否有任何差异:OracleJava编译器ApacheJava编译器IBMJava编译器OpenJDKJava编译器。如果有什么代码可以展示不同的优化?或者他们使用相同的编译器?如果没有已知的优化差异,那么我在哪里可以找到关于如何测试不同优化的编译器的资源?

  • 我注意到ctx在处理程序之间是不同的,即使这些处理程序在相同的管道中,例如 在MyHander1中 那么调用ctx.write()和ctx.channel().write()有什么区别吗?

  • 问题内容: 我正在使用Zend框架构建一个Web应用程序。我想包括一些AJAX类型的表格和模式框,但我也希望我的应用程序尽可能地易于访问。我希望我的应用程序可以通过AJAX进行增强,但也可以在没有AJAX的情况下完全正常运行。 因此,作为一般准则…什么时候不应该使用AJAX?我的意思是,我应该在没有AJAX的情况下使应用程序可用吗?还是这些天每个人都启用了AJAX的浏览器? 问题答案: 如果您在A

  • 响应代码应该是什么,它同时具有创建和更新操作:

  • 问题内容: 有人可以告诉我中间操作和终端操作有什么区别吗? 操作组合到管道中以处理流。所有操作都是中间操作或终端..means?。 问题答案: Stream支持几种操作,这些操作分为和操作。 此操作之间的区别在于,中间操作是惰性的,而终端操作不是。当您在流上调用中间操作时,该操作不会立即执行。仅在对该流调用终端操作时才执行该命令。在某种程度上,一旦调用了终端操作,便会存储并调用一次中间操作。您可以