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 公司及其在全球其他国家的商标。所有其他商标均为各自所有者的财产。