鸿蒙开发实战:【ylong_http】解析

这篇具有很好参考价值的文章主要介绍了鸿蒙开发实战:【ylong_http】解析。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

简介

ylong_http 构建了完整的 HTTP 能力,支持用户使用 HTTP 能力完成通信场景的需求。

ylong_http 使用 Rust 编写,为 OpenHarmony 的 Rust 能力构筑提供支持。

ylong_http 在 OpenHarmony 中的位置

ylong_http 向 OpenHarmony 系统服务层中的网络协议栈模块提供 HTTP 协议支持,经由网络协议栈模块帮助上层应用建立 HTTP 通信能力。

鸿蒙开发实战:【ylong_http】解析,鸿蒙开发,harmonyos,http,程序员,移动开发,OpenHarmony,鸿蒙开发,网络协议

以下是对于上图关键字段的描述信息:

  • APP:需要使用上传下载能力的直接面向用户的上层应用。

  • request:提供上传下载能力的系统组件。

  • netstack:提供网络协议栈功能的系统组件。

  • ylong_http:提供 HTTP 能力的系统组件。

    • ylong_http_clientylong_http 下的模块之一,提供 HTTP 客户端能力。
    • ylong_http:ylong_http 下的模块之一,提供 HTTP 的基础能力。
  • ylong_runtimeylong 提供的 Rust 异步运行时库。

  • tokio:业界常用的第三方 Rust 异步运行时库。

  • OpenSSL:业界常用的第三方 TLS 实现库。

ylong_http 的内部架构:

鸿蒙开发实战:【ylong_http】解析,鸿蒙开发,harmonyos,http,程序员,移动开发,OpenHarmony,鸿蒙开发,网络协议

ylong_http 内部当前分为两个主要模块:ylong_http_client 客户端模块和 ylong_http 协议组件模块。

ylong_http_client 模块负责提供 HTTP 客户端功能,能够支持用户发送 HTTP 请求,并接收 HTTP 响应,内部又分为三个主要部分:

  • sync_impl:同步的 HTTP 客户端实现,该客户端实现不依赖于任何运行时,可以直接在线程模型上运行,但是整体使用同步阻塞策略。
  • async_impl:异步的 HTTP 客户端实现,该客户端实现需要使用 Rust 的异步运行时组件。异步 HTTP 客户端利用 Rust 的异步能力,具有优异的性能表现。
  • Util:同步和异步的 HTTP 客户端部分实现共通,例如自动重定向、HTTP 代理等。

sync_impl 和 async_impl 接口原型基本一致(主要是 Rust 异步语法与同步语法的差异),所以用户可以在较小的代码改动量下完成同步和异步逻辑的切换。

sync_impl 和 async_impl 的整体架构相同,分为如下模块:

  • Client:对外提供 HTTP 客户端的基本接口,例如配置客户端的相关选项,发送 HTTP 请求等。
  • ConnectionPool:主要负责大量连接管理,管理所有 Dispatcher 的生命周期,包括启动、运行、停止。HTTP 协议是基于连接的通信协议,涉及连接复用、连接管理等功能。
  • Dispatcher:主要负责单一连接管理,管理单个连接的启动、运行、停止、传输。每个连接都被一个 Dispatcher 管辖,由 Dispatcher 决定当前待发送的请求是不是使用它管理的连接。
  • Connections:连接对象,可以是 TCP 连接、TLS 连接或者是更加泛化的连接对象,在该连接上进行消息传输和接收,是 Client 和 HTTP 协议的底座。
  • Connector:负责创建连接对象。Connector 也是一个 trait,用户可以使用它来定义创建连接时的行为。

Util 中包含了同步和异步的 HTTP 客户端共通的能力,例如:

  • Redirect:HTTP 自动重定向能力。当 HTTP 响应返回重定向相关的状态码时,HTTP 客户端会进行自动重定向,并自动发送新的请求到下一跳。
  • Proxy:HTTP 代理能力。发送 HTTP 请求时,向代理发送而非直接发送给原始服务器,然后由代理服务器返回原始服务器的响应。
  • Pool:通用连接池实现,支持多个同步或异步连接的管理,便于上层同步或异步客户端复用已有连接,减少连接重复创建次数,提高性能。
  • OpenSSL_adapter:HTTPS 需要在 HTTP 的基础上使用 TLS 能力,在 OpenHarmony 上使用的是 OpenSSL,所以需要对 OpenSSL 的接口进行 Rust 封装。

ylong_http 模块负责提供 HTTP 的基础能力,例如 HTTP2 的 HPACK、HTTP3 的 QPACK 等,主要包含以下关键模块:

  • Request:HTTP 请求基础能力,根据 RFC9110 规定实现了 HTTP 请求的所有内容和行为。HTTP 请求主要用于向指定服务器发送请求。
  • Response:HTTP 响应基础能力,根据 RFC9110 规定实现了 HTTP 响应的所有内容和行为。HTTP 响应主要是服务器针对客户端请求的回应。
  • Body: HTTP 消息体能力,根据 RFC9110 规定实现了 HTTP 消息体的所有内容和行为。HTTP 消息体保存主要数据内容,以便客户端和服务器通信。 HTTP 消息体在协议中有多种形式,在 ylong_http 库中有对应实现,例如 EmptyBody 对应于空消息体,TextBody 对应于明文消息体,ChunkBody 对应于分块消息体,Mime 对应于 Multipart 消息体。
  • H1:HTTP1 的所有基础能力,例如 HTTP1 格式的请求和响应的编码器和解码器等。
  • H2:HTTP2 的所有基础能力,例如 HTTP2 格式的请求和响应的编码器和解码器、HTTP2 帧编码器和解码器、HPACK等。
  • H3:HTTP3 的所有基础能力,例如 HTTP3 格式的请求和响应的编码器和解码器、QPACK 等。

编译构建

若使用 GN 编译工具链, 在 BUILD.gn 的 deps 段下添加依赖。添加后使用 GN 进行编译和构建:

deps += ["//example_path/ylong_http_client:ylong_http_client"]

若使用 Cargo 编译工具链, 在 Cargo.toml 下添加依赖。添加后使用 cargo 进行编译和构建:

[dependencies]
ylong_http_client = { path = "/example_path/ylong_http_client" } # 请使用路径依赖

目录

ylong_http
├── docs                        # ylong_http 用户指南
├── figures                     # ylong_http 图片资源
├── patches                     # ylong_http 门禁使用的补丁资源
├── ylong_http
│   ├── examples                # ylong_http 基础组件库代码示例
│   ├── src                     # ylong_http 基础组件库源码
│   │   ├── body                # Body trait 定义和扩展 Body 类型
│   │   ├── h1                  # HTTP/1.1 相关组件实现
│   │   ├── h2                  # HTTP/2 相关组件实现
│   │   ├── h3                  # HTTP/3 相关组件实现
│   │   ├── huffman             # Huffman 编解码实现
│   │   ├── request             # Request 定义和实现
│   │   └── response            # Response 定义和实现
│   └── tests                   # ylong_http 基础组件库测试目录
│
└── ylong_http_client
    ├── examples                # ylong_http_client 库代码示例
    ├── src                     # ylong_http_client 库源码
    │   ├── async_impl          # ylong_http_client 异步客户端实现
    │   │   ├── conn            # 异步连接层
    │   │   ├── downloader      # 异步下载器实现
    │   │   ├── ssl_stream      # 异步 tls 适配层
    │   │   └── uploader        # 异步上传器实现   
    │   ├── sync_impl           # ylong_http_client 同步客户端实现
    │   │   └── conn            # 同步连接层
    │   └── util                # ylong_http_client 组件实现
    │       ├── c_openssl       # OpenSSL 封装层
    │       │   ├── ffi         # ffi 封装层
    │       │   └── ssl         # ssl 适配层
    │       └── config          # 配置选项实现
    │           └── tls         # TLS 选项实现
    │               └── alpn    # ALPN 实现
    └── tests                   # ylong_http_client 库测试目录

鸿蒙OpenHarmony知识已更新←前往

鸿蒙开发实战:【ylong_http】解析,鸿蒙开发,harmonyos,http,程序员,移动开发,OpenHarmony,鸿蒙开发,网络协议文章来源地址https://www.toymoban.com/news/detail-840408.html

到了这里,关于鸿蒙开发实战:【ylong_http】解析的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 课程分享:鸿蒙HarmonyOS系统及物联网开发实战课程(附课程视频及源码下载)

    课程名称: 鸿蒙HarmonyOS系统及物联网开发实战课程 课程介绍: HarmonyOS 是一款面向万物互联时代的、全新的分布式操作系统。在传统的单设备系统能力基础上,HarmonyOS 提出了基于同一套系统能力、适配多种终端形态的分布式理念,能够支持手机、平板、智能穿戴、智慧屏、

    2024年02月06日
    浏览(57)
  • 鸿蒙OS开发实战:【网络管理HTTP数据请求】

    应用通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 涉及的接口如下表,具体的接口说明请参考API文档。 接口名 功能描述 createHttp() 创建一个ht

    2024年04月29日
    浏览(34)
  • HarmonyOS鸿蒙ArkTS,封装http网络请求

    要想使用http请求,系统必须要具备ohos.permission.INTERNET权限,在model.json5文件中的module模块下添加如下请求权限: 在module.json5文件中 配置 在文件中定义,文件目录自定义 至此整个请求封装结束

    2024年02月20日
    浏览(57)
  • 鸿蒙HarmonyOS-HTTP网络数据请求

    应用可以通过HTTP发起一个数据请求,支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 亲爱的读者: 首先,我要感谢您抽出宝贵的时间阅读这篇文章。我深知,您的每一分每一秒都是宝贵的。为此,我在创作这篇文章时付出了巨大的努力,力求为您提供最具价

    2024年01月16日
    浏览(70)
  • 鸿蒙 HarmonyOS4.0 Http数据请求封装详解

    步骤 1、定义响应数据格式 2、封装数据请求 3、将各种请求进行模块划分 4、请求示例 项目目录 1、定义响应数据格式 2、封装数据请求 提示:具体更详细的配置请参考官网 3、将各种请求进行模块划分 熟悉vue开发的同学都知道我们不同模块的请求一般放在api目录下进行划分

    2024年02月04日
    浏览(69)
  • 鸿蒙HarmonyOS实战-ArkTS语言(基本语法)

    🔎1.简介 HarmonyOS的ArkTS语言是一种基于TypeScript开发的语言,它专为HarmonyOS系统开发而设计。ArkTS语言结合了JavaScript的灵活性和TypeScript的严谨性,使得开发者能够快速、高效地开发出高质量的HarmonyOS应用程序。 ArkTS语言具有以下特点: 静态类型检查:开发者在编写代码时可以

    2024年01月18日
    浏览(54)
  • HarmonyOS鸿蒙学习笔记(22)@Builder实战

    @Builder标签是一种更轻量的UI元素复用机制,下面通过一个简单的例子来具体说明: 比如如下布局效果:上面是一个轮播的 Swiper ,下面是一个 Grid 布局代码如下: 可以发现布局代码臃肿不易读,此时可以通过@Builder来讲上面的代码进行精简:修改后的布局,将上面的 Swiper 和

    2024年01月24日
    浏览(43)
  • 鸿蒙HarmonyOS实战-工具安装和Helloworld案例

    HarmonyOS是华为自主开发的操作系统,它在2020年9月正式发布。它最初被称为鸿蒙OS,后来更名为HarmonyOS。HarmonyOS旨在提供一种可在各种设备上无缝运行的统一操作系统,包括智能手机、平板电脑、智能穿戴设备、智能音箱、车载系统、智能家居设备等等。相比于其他操作系统,

    2024年01月17日
    浏览(40)
  • HarmonyOS 鸿蒙应用开发(十一、面向鸿蒙开发的JavaScript基础)

    ArkTS 是HarmonyOS(鸿蒙操作系统)原生应用开发的首选语言。它是用于构建用户界面的一种TypeScript方言,扩展了TypeScript以适应HarmonyOS生态系统的UI开发需求。ArkTS 融合了TypeScript的静态类型系统和现代UI框架的设计理念,为开发者提供了一种更安全高效的方式来编写HarmonyOS应用。

    2024年02月20日
    浏览(52)
  • 鸿蒙HarmonyOS实战-Stage模型(应用上下文Context)

    应用上下文(Context)是应用程序的全局信息的接口。它是一个抽象类,提供了访问应用程序环境的方法和资源的方法。应用上下文可以用于获取应用程序的资源、启动Activity、发送广播等。每个应用程序都有一个应用上下文对象,它在整个应用程序的生命周期内都是唯一的。

    2024年02月20日
    浏览(58)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包