精品国产人成在线_亚洲高清无码在线观看_国产在线视频国产永久2021_国产AV综合第一页一个的一区免费影院黑人_最近中文字幕MV高清在线视频

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

鴻蒙網絡開發學習:【ylong_http】

jf_46214456 ? 來源:jf_46214456 ? 作者:jf_46214456 ? 2024-03-25 16:36 ? 次閱讀

簡介

ylong_http 構建了完整的 HTTP 能力,支持用戶使用 HTTP 能力完成通信場景的需求。

ylong_http 使用 Rust 編寫,為 OpenHarmony 的 Rust 能力構筑提供支持。

ylong_http 在 OpenHarmony 中的位置

ylong_http 向 OpenHarmony 系統服務層中的網絡協議棧模塊提供 HTTP 協議支持,經由網絡協議棧模塊幫助上層應用建立 HTTP 通信能力。

structure

以下是對于上圖關鍵字段的描述信息

  • 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 的內部架構:

inner_structure

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_implasync_impl 接口原型基本一致(主要是 Rust 異步語法與同步語法的差異),所以用戶可以在較小的代碼改動量下完成同步和異步邏輯的切換。

sync_implasync_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 等。

鴻蒙開發知識更新前往[gitee.com/li-shizhen-skin/harmony-os/blob/master/README.md]參考。

鴻蒙開發OpenHarmony就業必修技能.png

編譯構建

若使用 GN 編譯工具鏈, 在 BUILD.gndeps 段下添加依賴。添加后使用 GN 進行編譯和構建:

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

若使用 Cargo 編譯工具鏈, 在 Cargo.toml 下添加依賴。添加后使用 cargo 進行編譯和構建:

[dependencies]
ylong_http_client = { path = "/example_path/ylong_http_client" } # 請使用路徑依賴

審核編輯 黃宇

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 接口
    +關注

    關注

    33

    文章

    8497

    瀏覽量

    150836
  • 通信
    +關注

    關注

    18

    文章

    5971

    瀏覽量

    135857
  • 網絡協議
    +關注

    關注

    3

    文章

    265

    瀏覽量

    21515
  • 鴻蒙
    +關注

    關注

    57

    文章

    2310

    瀏覽量

    42744
  • OpenHarmony
    +關注

    關注

    25

    文章

    3660

    瀏覽量

    16158
收藏 人收藏

    評論

    相關推薦

    鴻蒙OS開發學習:【尺寸適配實現】

    鴻蒙開發中,尺寸適配是一個重要的概念,它可以幫助我們在不同屏幕尺寸的設備上正確顯示和布局我們的應用程序。本文將介紹如何在鴻蒙開發中實現尺寸適配的方法。
    的頭像 發表于 04-10 16:05 ?1678次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b><b class='flag-5'>學習</b>:【尺寸適配實現】

    免費學習鴻蒙(HarmonyOS)開發,一些地址分享

    國內一流高校。通過鴻蒙班的設立,高校可以為學生提供專業的鴻蒙OS學習環境和豐富的實踐機會,培養出更多的鴻蒙開發人才,為
    發表于 01-12 20:48

    盤點那些硬件+項目學習套件:Hi3861鴻蒙開發板及入門常見問題解答

    網絡開發以及華為云接入這些內容就OK。這些內容學習起來,一個月就足夠搞定了。 2.這個板子能裝apk嗎? 不能。一般問這個問題的,都是想學鴻蒙應用
    發表于 02-01 16:55

    學習鴻蒙背后的價值?星河版開放如何學習

    需要有更多的鴻蒙人才;鴻蒙開發工程師也將會迎來爆發式的增長! 所以學習鴻蒙勢在必行,而大部分人都能適合學
    發表于 02-22 20:55

    鴻蒙實戰項目開發:【短信服務】

    UIAbility應用 網絡案例 …… 《鴻蒙NEXT星河版開發學習文檔》 +mau123789記住是v心喔! 總結 鴻蒙—作為國家主
    發表于 03-03 21:29

    鴻蒙原生應用開發-網絡管理HTTP數據請求

    http模塊提供。 使用該功能需要申請ohos.permission.INTERNET權限。 涉及的接口如下表,具體的接口說明請參考API文檔。 三、request接口開發步驟 1.從
    發表于 03-29 17:51

    鴻蒙HarmonyOS開發學習資料匯總推薦

    課程3.1 鴻蒙IoT開發入門教程https://bbs.elecfans.com/jishu_2001481_1_1.html3.2 鴻蒙設備開發入門教程
    發表于 04-20 11:33

    鴻蒙應用開發基礎術語學習 輕應用

    開發者可以通過鴻蒙輕應用,通過點擊關鍵詞解鎖詳細解釋的方式,方便快速第了解鴻蒙的基礎術語。可以獨立作為一個應用發展,也可以作為各種應用中的一個模塊。適合HarmonyOS開發者及潛在
    發表于 05-19 18:33

    開發者如何快速加入鴻蒙生態?(學習方法+職業定位)

    HarmonyOS/OpenHarmony開發者們在學習、成長中對自己的準確的定位,包括個人開發者、企業開發者、各個不同職能的開發者等對應的
    發表于 11-10 16:04

    學習鴻蒙開發給你工作帶來了哪些實質的影響呢?

    有人學習鴻蒙開發,是為了掌握一門新技術;有人學習鴻蒙開發,是為了獲得一門更好的工作;有人
    發表于 03-16 14:27

    要成為鴻蒙開發者,應該學習哪些編程語言

    據了解,鴻蒙系統是基于Linux開發的,源碼是C語言。那么,作為一名開發者,如何幫助鴻蒙系統構建生態呢?在以往安卓、蘋果系統構建過程,有哪些可以值得借鑒的地方呢?要成為
    的頭像 發表于 09-24 12:06 ?1.3w次閱讀

    鴻蒙環境下的Http網絡訪問完成設計

    1.原始的網絡訪問,再加上多線程,會使程序臃腫 ? ? ? ? 網絡請求在現代的應用開發中必不可少,我們熟知的網絡請求框架還真不少,像HttpClient、OkHttp還有volley
    的頭像 發表于 04-16 13:52 ?1731次閱讀
    <b class='flag-5'>鴻蒙</b>環境下的<b class='flag-5'>Http</b><b class='flag-5'>網絡</b>訪問完成設計

    OpenHarmony上使用的Http網絡框架教程

    簡介 鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrof
    發表于 04-12 11:13 ?4次下載

    鴻蒙開發實戰:【ylong_http】解析

    ylong_http 構建了完整的 HTTP 能力,支持用戶使用 HTTP 能力完成通信場景的需求。
    的頭像 發表于 03-12 16:57 ?585次閱讀
    <b class='flag-5'>鴻蒙</b><b class='flag-5'>開發</b>實戰:【<b class='flag-5'>ylong_http</b>】解析

    鴻蒙OS開發實例:【HarmonyHttpClient】網絡框架

    鴻蒙上使用的Http網絡框架,里面包含純Java實現的HttpNet,類似okhttp使用,支持同步和異步兩種請求方式;還有鴻蒙版retrofit,和Android版Retrofit相
    的頭像 發表于 04-12 16:58 ?801次閱讀
    <b class='flag-5'>鴻蒙</b>OS<b class='flag-5'>開發</b>實例:【HarmonyHttpClient】<b class='flag-5'>網絡</b>框架