grpc-net 客户端可以同步调用一个方法,但服务器可以异步处理它吗?

问题描述 投票:0回答:1

我有一个在 .NET 4.8 上运行的大型 ASP.NET MVC 应用程序,它没有任何异步方法。它调用 grpc-net 服务器上的方法。这些方法不是异步的,因为此时我无法重构 ASP.NET MVC 应用程序以在整个过程中使用异步。

客户端缺乏异步的情况被推送到我的 grpc 服务器中,这似乎很遗憾。从理论上讲,看起来这些服务器端的方法应该可以使用async,因为毕竟这个线程池和客户端的线程池没有任何关系。但我看不出有什么办法可以实现这一点。我无法将方法定义为异步,因为这样在客户端我需要 1) 在整个应用程序调用堆栈中使用 async/yield,但我目前无法这样做,或者 2) 使用

task.Result
,这在 ASP.NET MVC 中存在死锁风险。

哦,AFAICT,我也不能使用

ConfigureAwait(false)
,因为,你知道,ASP.NET。

还有其他解决办法吗?总之,我认为解决方案将导致客户端上遗留阻塞线程语义,但服务器端上产生异步/等待语义。

asp.net asp.net-mvc async-await grpc
1个回答
0
投票

客户端和服务器通过HTTP分隔。

双方之间没有任何其他限制。

它们甚至不需要使用相同的编程语言进行编码,使用相同的框架,甚至不需要在相同的操作系统中运行。

© www.soinside.com 2019 - 2024. All rights reserved.