Android 進階13:幾種進程通信方式的對比總結(jié)

本文轉(zhuǎn)自:[https://blog.csdn.net/u011240877/article/details/72863432]

RPC 是什么
RPC 即 Remote Procedure Call (遠程過程調(diào)用) 是一種計算機通訊協(xié)議,它為我們定義了計算機 C 中的程序如何調(diào)用另外一臺計算機 S 的程序缀旁,讓程序員不需要操心底層網(wǎng)絡(luò)協(xié)議,使得開發(fā)包括網(wǎng)絡(luò)分布式多程序在內(nèi)的應用程序更加容易踊东。

RPC 是典型的 Client/Server 模式,由客戶端對服務器發(fā)出若干請求辱志,服務器收到后根據(jù)客戶端提供的參數(shù)進行操作会宪,然后將執(zhí)行結(jié)果返回給客戶端。

RPC 位于 OSI 模型中的會話層:

image.png

在面向?qū)ο缶幊讨兄玖脖唤凶?“遠程方法調(diào)用”。

IDL 是什么
RPC 只是一種協(xié)議把篓,規(guī)定了通信的規(guī)則纫溃。

在實際工作中客戶端與服務端會有各種各樣的平臺,就好像日常開發(fā)一樣韧掩,為了統(tǒng)一處理不同的實現(xiàn)紊浩,需要定義一個共同的接口,于是有了 IDL疗锐。

IDL 即 Interface Description Language (接口定義語言)坊谁。

它通過一種中立的方式來描述接口,使得在不同平臺上運行的對象和用不同語言編寫的程序可以相互通信交流滑臊。比如口芍,一個組件用 C++ 寫成,另一個組件用 Java 寫雇卷,仍然可以通信鬓椭。

IPC 是什么
IPC 即 Inter-Process Communication (進程間通信)颠猴。

Android 基于 Linux,而 Linux 出于安全考慮小染,不同進程間不能之間操作對方的數(shù)據(jù)翘瓮,這叫做“進程隔離”。

“進程隔離”更詳細的介紹(節(jié)選自:http://blog.csdn.net/u010132993/article/details/72582655):

在 Linux 系統(tǒng)中氧映,虛擬內(nèi)存機制為每個進程分配了線性連續(xù)的內(nèi)存空間,操作系統(tǒng)將這種虛擬內(nèi)存空間映射到物理內(nèi)存空間脱货,每個進程有自己的虛擬內(nèi)存空間岛都,進而不能操作其他進程的內(nèi)存空間,只有操作系統(tǒng)才有權(quán)限操作物理內(nèi)存空間振峻。
進程隔離保證了每個進程的內(nèi)存安全臼疫。

但是在大多數(shù)情形下,不同進程間的數(shù)據(jù)通訊是不可避免的扣孟,因此操作系統(tǒng)必須提供跨進程通信機制烫堤。

Android 幾種進程通信方式
跨進程通信要求把方法調(diào)用及其數(shù)據(jù)分解至操作系統(tǒng)可以識別的程度,并將其從本地進程和地址空間傳輸至遠程進程和地址空間凤价,然后在遠程進程中重新組裝并執(zhí)行該調(diào)用鸽斟。

然后,返回值將沿相反方向傳輸回來利诺。

Android 為我們提供了以下幾種進程通信機制(供開發(fā)者使用的進程通信 API)對應的文章鏈接如下:

文件
AIDL (基于 Binder)
Android 進階:進程通信之 AIDL 的使用
Android 進階:進程通信之 AIDL 解析
Binder
Android 進階:進程通信之 Binder 機制淺析
Messenger (基于 Binder)
Android 進階:進程通信之 Messenger 使用與解析
ContentProvider (基于 Binder)
Android 進階:進程通信之 ContentProvider 內(nèi)容提供者
Socket
Android 進階:進程通信之 Socket (順便回顧 TCP UDP)
在上述通信機制的基礎(chǔ)上富蓄,我們只需集中精力定義和實現(xiàn) RPC 編程接口即可。

如何選擇這幾種通信方式
《Android 開發(fā)藝術(shù)探索》中總結(jié)的已經(jīng)比較全面了:

這里再對比總結(jié)一下:

只有允許不同應用的客戶端用 IPC 方式調(diào)用遠程方法慢逾,并且想要在服務中處理多線程時立倍,才有必要使用 AIDL
如果需要調(diào)用遠程方法,但不需要處理并發(fā) IPC侣滩,就應該通過實現(xiàn)一個 Binder 創(chuàng)建接口
如果您想執(zhí)行 IPC口注,但只是傳遞數(shù)據(jù),不涉及方法調(diào)用君珠,也不需要高并發(fā)寝志,就使用 Messenger 來實現(xiàn)接口
如果需要處理一對多的進程間數(shù)據(jù)共享(主要是數(shù)據(jù)的 CRUD),就使用 ContentProvider
如果要實現(xiàn)一對多的并發(fā)實時通信策添,就使用 Socket
————————————————
版權(quán)聲明:本文為CSDN博主「拭心」的原創(chuàng)文章澈段,遵循 CC 4.0 BY-SA 版權(quán)協(xié)議,轉(zhuǎn)載請附上原文出處鏈接及本聲明舰攒。
原文鏈接:https://blog.csdn.net/u011240877/article/details/72863432

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末败富,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子摩窃,更是在濱河造成了極大的恐慌兽叮,老刑警劉巖芬骄,帶你破解...
    沈念sama閱讀 222,807評論 6 518
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異鹦聪,居然都是意外死亡账阻,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 95,284評論 3 399
  • 文/潘曉璐 我一進店門泽本,熙熙樓的掌柜王于貴愁眉苦臉地迎上來淘太,“玉大人,你說我怎么就攤上這事规丽∑涯粒” “怎么了?”我有些...
    開封第一講書人閱讀 169,589評論 0 363
  • 文/不壞的土叔 我叫張陵赌莺,是天一觀的道長冰抢。 經(jīng)常有香客問我,道長艘狭,這世上最難降的妖魔是什么挎扰? 我笑而不...
    開封第一講書人閱讀 60,188評論 1 300
  • 正文 為了忘掉前任,我火速辦了婚禮巢音,結(jié)果婚禮上遵倦,老公的妹妹穿的比我還像新娘。我一直安慰自己官撼,他們只是感情好骇吭,可當我...
    茶點故事閱讀 69,185評論 6 398
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著歧寺,像睡著了一般燥狰。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上斜筐,一...
    開封第一講書人閱讀 52,785評論 1 314
  • 那天龙致,我揣著相機與錄音,去河邊找鬼顷链。 笑死目代,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的嗤练。 我是一名探鬼主播榛了,決...
    沈念sama閱讀 41,220評論 3 423
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼煞抬!你這毒婦竟也來了霜大?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 40,167評論 0 277
  • 序言:老撾萬榮一對情侶失蹤革答,失蹤者是張志新(化名)和其女友劉穎战坤,沒想到半個月后曙强,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 46,698評論 1 320
  • 正文 獨居荒郊野嶺守林人離奇死亡途茫,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,767評論 3 343
  • 正文 我和宋清朗相戀三年碟嘴,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囊卜。...
    茶點故事閱讀 40,912評論 1 353
  • 序言:一個原本活蹦亂跳的男人離奇死亡娜扇,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出栅组,到底是詐尸還是另有隱情雀瓢,我是刑警寧澤,帶...
    沈念sama閱讀 36,572評論 5 351
  • 正文 年R本政府宣布笑窜,位于F島的核電站致燥,受9級特大地震影響登疗,放射性物質(zhì)發(fā)生泄漏排截。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 42,254評論 3 336
  • 文/蒙蒙 一辐益、第九天 我趴在偏房一處隱蔽的房頂上張望断傲。 院中可真熱鬧,春花似錦智政、人聲如沸认罩。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,746評論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽垦垂。三九已至,卻和暖如春牙瓢,著一層夾襖步出監(jiān)牢的瞬間劫拗,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,859評論 1 274
  • 我被黑心中介騙來泰國打工矾克, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留页慷,地道東北人。 一個月前我還...
    沈念sama閱讀 49,359評論 3 379
  • 正文 我出身青樓胁附,卻偏偏與公主長得像酒繁,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子控妻,可洞房花燭夜當晚...
    茶點故事閱讀 45,922評論 2 361

推薦閱讀更多精彩內(nèi)容

  • 今天州袒,道館請到宋老師來給教練員做培訓,非常榮幸參加了培訓課程弓候,宋老師是世界冠軍稳析,從事跆拳道一線工作12年洗做,有著豐富...
    TY胡教練閱讀 436評論 0 0
  • 雖然一直對你心存好感诚纸,今天卻格外傾心于你。今天陈惰,你就是我的男神畦徘。 今天,有多少人在關(guān)注你抬闯,不可計數(shù)井辆。你一入場,就自...
    真冉閱讀 119評論 2 0
  • 智力和智商這里的智力,理解為他“心智能力”的強弱程度溶握,而一個人所謂的“智商”指此人參加“智力測試”所獲得的成績杯缺。說...
    工琴閱讀 248評論 0 1
  • 001 精彩對話 迪:“腦子越來越不好使了。剛接個電話睡榆,到接了第二個萍肆,第一個電話說的啥,都能忘得...
    純熙2019閱讀 850評論 21 19