我在API
核心中有一个休息/网络.Net
我用作聚合服务来调用gRPC services
中的某些基础.Net core
。对于WEB API
客户端,我在启动时将该通道创建为单例,并使用依赖注入将其注入需要它的位置。我也在考虑在启动时为grpc services
创建客户端,然后注入它们。在Startup上创建频道和客户端是正确的策略,还是应该在web API
的每个请求上创建和关闭频道和客户端?此外,如果创建一次通道是正确的策略,我如何确保在关闭时关闭通道.... web API/rest
服务和grpc services
都将在{{1}上运行作为docker containers。
答案 0 :(得分:0)
您绝对不应为每次通话创建新频道。 gRPC频道应该是长寿命的,如果您创建一个频道,然后继续调用该频道上的后续呼叫,您通常会获得最佳性能和资源利用率。创建通道的确切范围取决于您的应用程序 - 但在应用程序启动时仅创建一次通道是可能的方法之一(还要注意,懒惰地创建TCP / IP连接 - 新连接不会成为创建,直到您在该频道上开始第一次通话。)