如何在 matlab 中访问 gRPC 服务器?

How to access gRPC server in matlab?

我们已将我们的数据访问逻辑移至微服务,它目前作为 gRPC 和 C++ 实现,我们能够在 C# 客户端和 C++ 客户端中利用它。

现在我们必须在 Matlab 客户端(旧版)中使用这个 DataAccess grpc。所以,我试图找到一种从 Matlab 访问 gRPC 的方法,发现没有官方支持。

我找到了两个解决方案,

使用Java

我已经按照 . i have created a sample grpc 客户端 java 中的建议使用 Eclipse 进行了尝试。但是当我尝试从 matlab 访问 class/methods 时,我遇到了以下问题,

    Java exception occurred:
java.lang.NoSuchMethodError: com.google.common.base.Preconditions.checkArgument(ZLjava/lang/String;CLjava/lang/Object;)V
        at io.grpc.Metadata$Key.validateName(Metadata.java:630)
        at io.grpc.Metadata$Key.<init>(Metadata.java:638)
        at io.grpc.Metadata$Key.<init>(Metadata.java:568)
        at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:743)
        at io.grpc.Metadata$AsciiKey.<init>(Metadata.java:738)
        at io.grpc.Metadata$Key.of(Metadata.java:594)
        at io.grpc.Metadata$Key.of(Metadata.java:590)
        at io.grpc.internal.GrpcUtil.<clinit>(GrpcUtil.java:84)
        at io.grpc.internal.AbstractManagedChannelImplBuilder.<clinit>(AbstractManagedChannelImplBuilder.java:83)
        at io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:37)
        at io.grpc.netty.NettyChannelProvider.builderForAddress(NettyChannelProvider.java:23)
        at io.grpc.ManagedChannelBuilder.forAddress(ManagedChannelBuilder.java:37)

有人讨论过 here,它说不可能了。谁能告诉我这现在是否可行,或者我遗漏了什么?

使用 Matlab Proto 编译器 [Farsounder]

接下来我尝试使用Farsounder solution v2.5.0 for creating stub files based on 。 只有在创建 protoc.exe 之后,我才意识到它是用于 Proto V2 的。所以,现在我正在尝试使用 Protov3Matlab.

但是这里的构建说明并不清楚,它有一个 cmake 文件,我不知道如何 运行 它。谁能帮我为 windows 环境构建这个?

我是 Java 和 Matlab 的新手,如果我遗漏了任何明显的东西,请见谅。

提前致谢。

我能够创建 protoc.exe。 步骤:

  1. 检查了最新的 protobuf 源。
  2. 使用 farsounder matlab 源和 cmake 文件更新了源。
  3. 已关注 https://github.com/protocolbuffers/protobuf/blob/master/cmake/README.md 构建源代码。