Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> android網絡框架原理

android網絡框架原理

編輯:Android開發教程

這裡歸納寫一個android網絡框架的一般性原理:

Http網絡請求原理

學過《計算機網絡》的應該都知道http是一種應用層協議,它通過tcp實現了可靠的數據傳輸,能夠保證數據的完整性、正確性,而tcp對於數據傳輸控制的優點也能夠體現在http上,使得http的數據傳輸吞吐量、效率得到保證。

對於移動開發來說,網絡應用基本上都是C/S架構,也就是客戶端/服務器架構。客戶端通過向服務器發起特定的請求,服務器返回結果,客戶端解析結果,再將結果展示在UI上。

詳細的交互流程有如下幾步:

客戶端執行網絡請求,從URL中解析出服務器的主機名

將服務器的主機名轉換成服務器的IP地址

將端口號從URL中解析出來

建立一條客戶端與web服務器的tcp連接

客戶端通過輸出流向服務器發送一條http請求

服務器向客戶端會送一條http響應報文

客戶端從輸入流獲取報文

客戶端解析報文,關閉連接

客戶端將結果顯示在UI上

android中執行網絡請求的方式有兩種:httpclient、httpurlconnection,其實網絡框架也主要是基於此做一些功能擴展和封裝。

生產者消費者模式

早晨我在看java並發的時候發現,其實一般性的android
網絡框架就是一個典型的生產者-消費者模式。我不太了解服務端,我覺得服務端在處理客戶端的並發請求時也
對應著一個典型的生產者-消費者模式。(僅是思考,不太成熟)。這裡不會細講並發這塊內容,後續的博客會有一個專題專門來講解並發相關的內容。

客戶端請求多個mobileapi,對應著多個任務,然後多個任務會進入一個緩沖區,多個網絡執行的線程會去並發的處理這個緩沖區中的任務。典型的生產者消費者模式。

這裡寫圖片描述

更多精彩內容:http://www.bianceng.cn/OS/extra/

BlockingQueue可用於充當共享內存緩沖區,用於維護請求任務隊列。

BlockingQueue就類似一個“意見箱”。它之所以適合作為數據共享的通道,是java並發包中一個比較重要的類,具體如何實現的大家可以下去研究。這裡就不講了。它常和ThreadPoolExecutor 結合使用。

BlockingQueue是用於實現生產者和消費者的一個不錯的選擇。但是BlockingQueue並不是一個高性能的實現。更深入的我還在研究中,這裡先止於此。

命令模式

命令模式的特點就是:讓命令發送者和命令接受者之間解耦,此外,命令模式可以增加一個命令的隊列,支持對命令進行撤銷。這個模型明顯和android網絡框架一一對應,android網絡框架也支持對命令的撤銷。

這裡不會詳解命令模式,之前的設計模式系列博客已經講過這塊內容,可以去翻看前面的博客。

支持擴展

對於android網絡框架來說,可能的擴展性方向是什麼呢?應該是可以支持多種格式的請求:如String、xml、json等等。如何設計這塊的擴展性,各個網絡框架的設計殊途同歸。

異步和回調(Callback)

網絡請求肯定是異步的,但是網絡請求執行結束後,你需要把執行的結果告訴異步任務執行者,這個時候就需要回調了。不過回調也只是一種方案而已。

更多資料:

http://www.ruanyifeng.com/blog/2012/12/asynchronous%EF%BC%BFjavascript.html

http://quinnhe.iteye.com/blog/2192940

http://www.jianshu.com/p/3141d4e46240

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved