我有一个Web api项目,可作为其他Mobile客户端的GateWay。当移动客户端调用此网关时,它会内部调用由另一个项目托管的现有服务,并将结果汇总并返回给客户端。我最近遇到一种情况,我的网关在内部进行3个呼叫,前2个正在快速返回数据,但是第3个呼叫占用大量时间,我想知道处理这种情况的最佳方法。
答案 0 :(得分:0)
确保API操作方法的返回类型为async Task<YourModelDataType>
。
例如,假设您有一个HomeController
控制器,如下所示:
public class HomeController : ApiController
{
public async Task<YourModelDataType> Index()
{
return new YourModelDataType()
{
Property1 = await ApiService1.GetData(),
Property2 = await ApiService2.GetData(),
Property3 = await ApiService3.GetData(),
};
}
}
确保等待对其他API项目的调用。这样可以提高服务器端的可扩展性。也就是说,服务器资源可自由等待其他API服务的响应,同时满足其他请求。