Tag: 协议缓冲区

SwiftNIO的协议缓冲区

总览 您可以在.proto文件中定义消息模式,然后使用protobuf编译器为您的语言生成数据结构,从而减少编写样板分析和数据访问代码的过程。 然后,您可以与系统的其他部分共享此.proto文件,并为这些语言生成数据访问类。 例如,您可能有一个Java后端以及一个iOS,Android和Web前端,它们都共享此.proto文件来定义共享模式。 优点 Protobuf设计为快速而紧凑。 根据Google的说法,协议缓冲区比XML 小3至10倍,并且快20至100倍 。 Protobuf与语言无关,并提供向后兼容性。 您可以使用完全不同的语言,用新的高性能系统组件替换旧的缓慢系统组件,并确信只要您使用相同的.proto模式,系统就可以继续工作。 实际上,您甚至可以在.proto文件中的消息格式中添加新字段,并且系统将继续运行。 具有旧.proto系统在解析时将仅忽略新字段。 缺点 Protobuf并不适合所有人,尽管它们支持多种语言,但可能不支持您的语言。 XML和JSON比Protobuf更具可读性。 由于它们的设计紧凑,因此当它们通过网络发送时,protobuf会删除字段名称。 仅当您具有.proto文件时,protobuf才有用。 Google设计了用于应用程序间通信的协议缓冲区。 如果您正在构建供外部消费者使用的公共API,则您确实不希望服务器的客户端使用您定义的.proto文件,为其服务生成数据访问类并以这种方式与您的服务进行通信。 入门 您将需要protobuf编译器来生成特定于语言的文件。 这里有安装说明:https://github.com/apple/swift-protobuf。 由于已经安装了Homebrew,因此选择了Homebrew选项。 $ brew install swift-protobuf 注意:此安装可能需要一些时间… 要检查其是否正确安装,可以键入: $ protoc-版本 //我的输出是libprotoc 3.5.1 .proto Protobuf使用扩展名.proto作为其文件格式。 您创建.proto文件来定义您的消息传递模式,然后运行protobuf编译器生成您的Swift代码。 您可以使用任何IDE或文本编辑器来创建.proto文件,包括Xcode。 但是,我不喜欢使用Xcode的原因是缺少适当的缩进和语法突出显示。 我最终在他们的市场中使用了VS Code以及免费的vscode-proto3 protobuf扩展。 现在,我们已经安装了protobuf编译器,让我们创建一个将通过网络发送的Movie类型。 创建一个名为movie.proto的新文件。 .proto文件的第一行是要使用的协议缓冲区版本。 在撰写本文时,我们将使用最新版本proto3。 语法=“ proto3” 接下来,我们使用message关键字声明消息类型。 对于我们来说,这将是Movie类型的消息。 消息电影{ } 接下来,为电影类型声明一个枚举。 您可以在全局范围内的message外部声明一个枚举,但是对于我们的示例,由于流派正在描述电影,因此我们将在Movie内部声明它。 消息电影{ […]