从 .net Core 中的 webapi 调用 grpc 服务的策略



我在 Core 中有一个 rest/web API .Net我将其用作聚合服务来调用一些底层gRPC services也在 .Net core 中。 对于WEB API客户端,我在启动时将通道创建一次为单例,并使用依赖项注入将其注入到我需要的地方。 我还在考虑在启动时向grpc services创建客户端,然后注入它们。 在启动时创建通道和客户端是正确的策略,还是我应该根据web API的每个请求创建和关闭通道和客户端? 此外,如果创建一次通道是正确的策略,我如何确保通道在关闭时关闭......web API/rest服务和grpc services都将作为 docker 容器在Kubernetes Cluster上运行。

您绝对不应该为每次调用创建一个新频道。 gRPC 通道应该是长期存在的,如果创建一次通道,然后继续调用该通道上的后续调用,则通常会获得最佳性能和资源利用率。创建通道的确切范围取决于您的应用程序 - 但在应用程序启动时仅创建一次通道是可能的方法之一(另请注意,TCP/IP 连接是延迟创建的 - 直到您开始对该通道的第一次调用,才会创建新连接(。

最新更新