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 上安装的示例,了解如何安装 gRPCProtobuf 并运行 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 的项目中并生成所需的源代码,应使用具有 qtgrpcgenqtprotobufgen 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 的可执行目标,该目标链接到 MyGrpcClientMyProtoMessageLib 库。

QML API

模块的 QML 类型可以通过 QtGrpc 导入获得。要使用这些类型,请将以下导入语句添加到您的 .qml 文件中

import QtGrpc

C++ API

使用 Qt 模块的 C++ API 需要与模块库链接,要么是直接链接,要么是通过其他依赖项。包括 CMakeqmake 在内的几个构建工具都已为此提供专用支持。

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 可能包含以下许可协议下的第三方模块

gRPC,版本 1.50.1

Apache License 2.0

© 2024 Qt 公司有限公司。此处包含的文档贡献权归各自所有者所有。此处提供的文档是根据自由软件基金会发布的GNU 自由文档许可证版本 1.3 许可的。Qt 和相应的商标是芬兰的 Qt 公司及其在全球其他国家的商标。所有其他商标均为各自所有者的财产。