ASP.. NET MVC同步与异步WCF调用

本文关键字:异步 WCF 调用 同步 NET MVC ASP | 更新日期: 2023-09-27 18:11:18

我在做一个ASP。NET MVC,它完全通过WCF服务加载数据。我的模型只是调用WCF服务。然后控制器将模型传递给视图。我在这篇文章中读到,如果可以的话,做异步调用总是更好的。然而,我仍然不确定使用哪个呼叫。如果来自服务的数据需要一段时间才能加载,会发生什么?这是否意味着我的控制器代码将继续运行,如果数据不存在,当返回语句到达我的控制器将返回一个空视图,这也可能导致一个空指针异常,因为视图访问未填充的模型字段?

ASP.. NET MVC同步与异步WCF调用

如果你的控制器返回一个Task,那么你将会很好。如果你使用的是c# 5.0,你可以使用async/await来使你的代码比本文所展示的更易于维护。基本上你的代码看起来像这样

public async Task<ActionResult> SomeAction()
{
    var someData = await wcfServiceProxy.GetDataAsync() //alternatively an async call to your model service which should also be async
    //some work with the data here
    return View(someData);
}

或者你可以不关心并使用所有同步调用。使用同步调用的缺点是您的吞吐量会受到影响。您将能够每秒处理200个请求,而不是每秒处理50K个请求(我是凭空得出这些数字的)。当然,在大多数情况下,您根本不在乎,因为您的项目每秒处理的请求永远不会超过20个。