【问题标题】:migrating from grpc.core to grpc-dotnet从 grpc.core 迁移到 grpc-dotnet
【发布时间】:2022-02-05 18:09:11
【问题描述】:

我们想将我们的项目从 grpc.core 迁移到 gprc-dotnet。在我的 grpc 服务器中,我引用了包 Grpc.AspNetCore。 proto 文件在不同的项目中编译并共享。当我实现我的服务器方法时:

**using Grpc.Core;**
using Sample.Shared;

namespace Sample.GrpcServer.Services;

public class CustomerService : CustomerGrpcService.CustomerGrpcServiceBase
{
    private readonly ILogger<CustomerService> _logger;
    public CustomerService(ILogger<CustomerService> logger)
    {
        _logger = logger;
    }

    public override Task<CustomerListResponse> GetCustomerList(CustomerListRequest request, ServerCallContext context)
    {
       ...
    }

ServerCallContext 类要求我导入我想要删除的 Grpc.Core。我应该如何使用 grpc-dotnet 来实现我的覆盖,例如 ServerCallContext 类?

看起来 ServerCallContext 是在包含命名空间 Grpc.Core 的包 Grpc.Core.Api 中实现的。这有点令人困惑,但可能是为了向后兼容而实现的。也许有人可以对此发表评论。因此,在这种情况下唯一真正要做的就是使用正确的 nuget 包 Grpc.AspNetCore.Server。将对 Grpc.Core 的引用从此和底层引用的程序集中提取。

【问题讨论】:

  • 嘿,你找到解决办法了吗?
  • @Fabian 我对 Grpc.AspNetCore 包进行了包分析,发现它使用与已弃用的 Grpc.Core 包相同的命名空间(Grpc.Core)。所以实际上对我们来说,除了删除对已弃用包的引用之外,别无他法。事实上,Grpc.AspNetCore 包还包含 Google.Protobuf 和 Grpc.Tools 包,因此也不必引用它们。

标签: c# grpc grpc-dotnet


【解决方案1】:

Grpc.AspNetCore 包包含一个命名空间 Grpc.Core,其中包含类似 ServerCallContext 的类,这些类也在已弃用的 Grpc.Core 包中。

我们删除了对已弃用软件包 Grpc.Core 的引用,还删除了对 Google.ProtobufGrpc.Tools 的引用,因为它们包含在 Grpc.AspNetCore 软件包中。

此链接提供有关 grpc 迁移的更多信息: https://docs.microsoft.com/en-us/aspnet/core/grpc/migration?view=aspnetcore-6.0

【讨论】:

    猜你喜欢
    • 2020-12-04
    • 2018-04-05
    • 1970-01-01
    • 1970-01-01
    • 2010-12-13
    • 1970-01-01
    • 2016-09-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多