我遇到了一个小问题,我编写了一个 asp.net web api 服务,并在控制器上自动添加了“async”,当然这现在需要我使用 await。
我遇到的问题是我的控制器连接到服务层,然后该服务层连接到数据层-该数据层是调用 GET 的 ASYNC 版本以对另一个 REST 服务进行异步调用的层-所以这很简单,我可以将我的数据层方法转换为具有“async”关键字,然后我将等待 HttpClient GetSync 调用。
但是我的服务层支持 async / await 我需要将返回类型更改为 Task 但服务层实际上没有做任何 ASYNC 它对实际调用 HttpClient 异步方法的数据层的调用。
因此,考虑到我具有以下层结构,我有 2 个选项。
ASP.NET Web Api >> 服务层 >> 数据层
仅在数据层中使用 async 和 await 并完成它。
或者将 async 和 await 放在控制器和服务层的方法上,这需要重构,因为我需要返回 Task。
我想在我不完全理解的地方,从技术上讲,唯一的阻塞调用将在数据层中,所以要让所有线程返回线程池以供使用,我应该只关心在数据层上放置 async 和 await 吗?
我什么时候需要在控制器上使用模式???
期待任何帮助