1

我已经使用债券编译器 gbc 为我创建了一些对象和服务定义:

namespace Something;
struct SomeStruct
{
    0: string SomeName;
}
struct SomeResponse
{
    0: string ResponseString;
}
service SomeService
{
    SomeResponse DoSomething(SomeStruct);
}

Something_services.cs编译器使用此签名生成了一个类定义:

[System.CodeDom.Compiler.GeneratedCode("gbc", "0.8.0.0")]
public abstract class SomeServiceServiceBase : ISomeService, global::Bond.Comm.IService

我想知道 IService 接口并想了解更多信息,因此来到了 Bond Communications Framework Doku ( https://microsoft.github.io/bond/manual/bond_comm.html )。首先要阅读的是,不推荐使用 Bond.Comm,您应该改用 Bond-over-gRPC ( https://microsoft.github.io/bond/manual/bond_over_grpc.html )。

我有两个问题:

  • 有人知道,为什么这已被废弃但默认情况下仍由编译器使用?
  • 有人可以解释 Bond.Comm 和 Bond-over-gRPC 之间的区别吗?

提前致谢!

编辑

第三个问题出现了:如何使用文档中提到的--grpc-flag?

4

1 回答 1

2

Bond C# gRPC 绑定首先在 Bond C# 5.3.0 中发布,该版本于 2017 年 4 月 14 日发布。您需要将所有 Bond NuGet 包升级到 5.3.0 才能开始使用它。

您会看到编译器默认生成 Comm 文件,因为您使用的是早于 5.3.0 的版本。

如5.3.0 版本(和 Bond Comm 0.11.0 版本)的变更日志中所述,默认情况下不再为 C# 生成 Bond Comm 文件。要继续使用 Bond Comm C#,您需要开始传递--comm给 gbc。有一个例子说明了需要做哪些改变。

如果要开始使用 C# gRPC 绑定,则需要传递该--grpc选项。gRPC示例也展示了如何执行此操作。

于 2017-04-12T20:16:04.147 回答