Qt GRPC
Qt GRPC 是客户端实现,与 Qt Protobuf 模块结合使用,可以在 `.proto` 文件中定义消息和服务,然后使用提供的代码生成器生成客户端代码,允许在 Qt 框架中访问字段和 gRPC 服务。由 Qt GRPC 生成的代码允许客户端通过与 gRPC服务器(无论服务器是否使用 Qt)进行通信来使用调用或流消息。
概述
gRPC 是一个跨平台的高性能远程过程调用 (RPC) 框架,为大语言生成客户端/服务器绑定。通常,您用它来连接微服务架构中的服务,或将移动应用程序和浏览器连接到后端服务。gRPC 客户端和服务器可以在各种环境中运行并相互通信,您可以使用 gRPC 支持的任何语言进行编写。更多详情请参见gRPC 简介
使用模块
模块先决条件:
protoc
,Google 协议缓冲区编译器,必须安装以便从.proto
规范文件生成代码。请参见 Protoc 安装。- 如果您还安装了 gRPC 库,您将能够使用本机 gRPC 通道。请参阅C++ 中的 gRPC 了解详细信息。
- 可能需要OpenSSL 工具包。
注意:检查 使用 vcpkg 在 Windows 上安装的示例,了解如何安装 gRPC
和 Protobuf
并运行 Qt GRPC 示例。
要开始使用 Qt GRPC 功能,您应该在 .proto
文件中定义所需的服务和消息。
// The service definition. service Salutation { // Sends a greeting rpc SendHello (HelloRequest) returns (HelloReply) {} } // The request message containing the user's name. message HelloRequest { string name = 1; } // The response message containing the greetings message HelloReply { string message = 1; }
要将 .proto
文件添加到基于 Qt 的项目中并生成所需的源代码,应使用具有 qtgrpcgen
和 qtprotobufgen
Qt 插件的 protoc
编译器。
- Qt Protobuf 插件可以生成类,您可以使用这些类对关联的 protobuf 消息进行序列化和反序列化。
- Qt GRPC 插件可以从 proto 文件生成 gRPC 客户端类。
可以使用 Qt 提供的以下命令在 CMake 中自动化处理 proto
文件到源代码的转换:
作为结果,使用 Qt GRPC 功能的 CMake 项目文件的全部示例如下:
cmake_minimum_required(VERSION 3.16...3.22) project(MyProject) find_package(Qt6 REQUIRED COMPONENTS Protobuf Grpc) qt_standard_project_setup() qt_add_protobuf(MyProtoMessageLib PROTO_FILES path/to/helloworld.proto PROTO_INCLUDES path/to/proto/include ) qt_add_grpc(MyGrpcClient CLIENT PROTO_FILES path/to/helloworld.proto PROTO_INCLUDES path/to/proto/include ) qt_add_executable(MyApp main.cpp) target_link_libraries(MyApp PRIVATE MyGrpcClient MyProtoMessageLib Qt6::Protobuf)
上面的示例调用 qt_add_grpc()
CMake 函数生成名为 MyGrpcClient
的库。
注意:如果 .proto
文件 API 包含消息,则应调用 qt_add_protobuf()
CMake 函数以生成项目中的 protobuf 消息类。
最后,示例创建了一个名为 MyApp 的可执行目标,该目标链接到 MyGrpcClient 和 MyProtoMessageLib 库。
QML API
模块的 QML 类型可以通过 QtGrpc
导入获得。要使用这些类型,请将以下导入语句添加到您的 .qml 文件中
import QtGrpc
C++ API
使用 Qt 模块的 C++ API 需要与模块库链接,要么是直接链接,要么是通过其他依赖项。包括 CMake 和 qmake 在内的几个构建工具都已为此提供专用支持。
CMake 构建
使用 find_package()
命令在 Qt6
包中定位所需的模块组件
find_package(Qt6 REQUIRED COMPONENTS Grpc)
target_link_libraries(mytarget PRIVATE Qt6::Grpc)
有关更多详细信息,请参阅使用 CMake 构建概述。
文章和指南
参考文献
许可证和商标
Qt GRPC 可在来自 Qt 公司 的商业许可证下使用。此外,它还符合 GNU 通用公共许可证,版本 3。有关详细信息,请参阅 Qt 许可证。
gRPC® 是 Linux 基金会的注册商标。请参阅 https://grpc.org.cn/ 获取更多信息。
示例
许可证和归属
Qt GRPC 模块可在来自 Qt 公司 的商业许可证下使用。此外,它还符合自由软件许可证:GNU 通用公共许可证,版本 3。有关详细信息,请参阅Qt 许可证。
此外,Qt 6.7.2 中的 Qt GRPC 可能包含以下许可协议下的第三方模块
Apache License 2.0 |
© 2024 Qt 公司有限公司。此处包含的文档贡献权归各自所有者所有。此处提供的文档是根据自由软件基金会发布的GNU 自由文档许可证版本 1.3 许可的。Qt 和相应的商标是芬兰的 Qt 公司及其在全球其他国家的商标。所有其他商标均为各自所有者的财产。