【问题标题】:Difference between AJAX Helper and async/awaitAJAX Helper 和 async/await 的区别
【发布时间】:2015-01-14 16:19:41
【问题描述】:

在查看 Scott Allen 在 Plural Sight 上的教程视频时:

Building Applications with ASP.NET MVC 4ASP.NET MVC 5 Fundamentals

我遇到了两个不同的术语:AJAX Helperasync/await

对我来说“听起来”都是在异步模式下运行的(如果我错了,请纠正我)。两者之间究竟有什么区别?

【问题讨论】:

  • async/await 是服务器端以异步方式执行的方式,内部线程接管工作,但使用ajax,它是客户端的方式,浏览器会这样做,即发送@987654327 @,成功回调,一旦响应到达客户端。

标签: asp.net ajax asp.net-mvc asp.net-mvc-4 asp.net-mvc-5


【解决方案1】:

它们实际上是完全不同的。理解差异的关键在于考虑 HTTP 协议。

在 HTTP 协议中,您有一个请求和一个响应。而已。客户端发出请求,服务器创建并发送响应。

当您在请求处理程序(例如 MVC 操作)中使用 asyncawait 时,您仍然只有一个响应。 async 不会更改 HTTP 协议。所以,async/await 所做的就是在异步工作完成时释放请求线程。但是在完成异步工作时,没有任何东西发送到客户端(尚未创建响应)。您可以将async/await 视为“屈服”于 ASP.NET 运行时,而不是客户端浏览器。

AJAX 是一种不同的方法。 AJAX 是从浏览器发出附加 HTTP 请求的约定,而不更改当前页面。如果您正在编写 SPA,或者说,如果您想加载“占位符”页面并然后加载内容,则可以使用 AJAX。

有关详细信息,请参阅my MSDN article on async ASP.NET 的“异步代码不是灵丹妙药”部分。

【讨论】:

  • .Net Core MVC 还是这样吗?我注意到在 Core MVC 应用程序的控制器方法中使用了异步,我想知道这是否正在取代 Ajax。我来自 MVC 5 背景,正在过渡到核心。
  • 还是一样。 async 不能永远更改 HTTP 协议。 AJAX(虽然现在通常没有 XML)是执行多个请求时的一种选择。其他选择可以包括其他协议,例如 websockets。
猜你喜欢
  • 2021-09-20
  • 1970-01-01
  • 1970-01-01
  • 2019-10-08
  • 2020-09-16
  • 2021-08-25
  • 1970-01-01
  • 2012-03-20
相关资源
最近更新 更多