0

在很多人看来,我的要求可能有点“奇怪”:

所以给定一个像下面这样的原始文件:

message HelloRequest {
  string name = 1;
}
message HelloReply {
  string message = 1;
}
service Greeter {
  rpc SayHello (HelloRequest) returns (HelloReply);
}

我想生成 POCO 和相应的接口(而不是具体的 gRPC 服务),如下所示:

public class HelloRequest
{
    public string Name { get; set; }
}
public class HelloReply
{
    public string Message { get; set; }
}
public interface IGreeterService
{
    public HelloReply SayHello(HelloRequest request);
}

也就是说,我只使用 proto 文件作为不同语言(比如 JavaScript 和 C#)之间的某种“契约”,但跳过 gRPC 的“通信”部分,因为我们不需要 http/2 什么的。

我用谷歌搜索了很多,但似乎不存在这样的项目。现在我正在考虑通过扩展grpc-dotnet项目(可能使用 T4 模板)来制作自己的项目,但在开始之前我只需要一些/任何建议/帮助/信息。所以这是我的问题:

  1. 是否有任何项目/图书馆在做与我上面所说的类似但我还不知道的事情?

  2. grpc-dotnet 是否具有任何类型的可扩展性,允许我生成所需的 C# 类型而无需编译 proto buffs(如果有的话,我可以获得编译的数据结构吗)

  3. 在开发成本、难度等方面是否可行?

  4. 还有其他建议走正确的道路吗?

非常感谢您,任何评论/答案将不胜感激!

4

1 回答 1

0

Google 编译器中的这个 proto3 to C# 工具是否满足您的需求?

以我的经验,T4 模板很难构建和调试——但你的情况可能会有所不同。在没有现有解决方案的情况下,我会将其视为一个简单的文本解析问题。如果还没有 proto 文件的解析器,最简单的解决方案可能是编写一个快速控制台应用程序,该应用程序将从输入目录读取文件并通过手动解析文本来生成模型和接口。

于 2022-01-26T05:12:33.857 回答