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

时间:2014-07-03 05:59:32

标签: c# asp.net wcf asp.net-mvc-4 asynchronous

我正在开发一个ASP.NET MVC,它通过WCF服务完全加载其数据。我的模型只是调用WCF服务。然后控制器将模型传递给视图。我在this文章中读到,如果可以,最好先进行异步调用。但是我仍然不确定使用哪个电话。如果构成服务的数据需要一段时间才能加载,会发生什么?是否意味着我的控制器代码将继续运行,如果达到return语句时数据不存在,我的控制器将返回一个空视图,由于视图访问未填充的模型字段,这也可能导致空指针异常?

1 个答案:

答案 0 :(得分:1)

如果您的控制器返回任务,那么您将没事。如果您使用的是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个请求。