深入理解Linux?RPC?-?從Linux?RPC到Android?Binder
-
本課程首先通過對遠程過程調(diào)用一般性原理的解釋和基本框架的介紹,使大家理解遠程過程調(diào)用的整體結(jié)構(gòu)和主要流程。
-
接下來本課程會對RPC發(fā)展過程中的部分重要方案進行介紹,使大家了解這些不同方案的設(shè)計思想、主要特點和適用范圍,在不同的項目中能夠根據(jù)需求進行合理抉擇。
-
最后,我們會將Android Binder作為具體案例進行解剖,對其整體架構(gòu)、運作機制等進行全面、深入、詳盡的學(xué)習(xí),使大家深入了解其實現(xiàn)細節(jié),理解Binder的設(shè)計特點,掌握Binder的運作原理。在牢固掌握其實現(xiàn)的基礎(chǔ)上,可以對類似技術(shù)做到觸類旁通,快速掌握。
-
視頻課程(可無限次數(shù)回看)
-
課后實戰(zhàn),練習(xí)和解答(在自己的電腦上進行實際操作)
-
加入課程討論答疑群。
遠程過程調(diào)用
-
什么是RPC
-
什么是IPC
-
本課程RPC的定義——跨進程過程調(diào)用
-
Linux RPC實例
-
RPC整體架構(gòu)
-
RPC各組成部分功能及運作原理
-
IDL/Interface
-
Client/Server
-
Proxy/Stub
-
Server register
-
其他
部分遠程過程調(diào)用方案
-
RPC模式
-
支持語言
-
主要結(jié)構(gòu)
-
關(guān)鍵特性
-
ONC RPC
-
Corba
-
EJB
-
Web service
-
Dubbo
-
Json-RPC
-
-
IPC模式
-
Android Binder
-
D-Bus
-
各方案主要特性對比
實例分析——Android Binder詳解
-
Binder主要特點
-
整體結(jié)構(gòu)
-
Native層(C /C)
-
Service注冊
-
隱含ServiceManager接口獲取過程
-
ServiceManager啟動流程
-
App/Zygote啟動時Binder相關(guān)初始化
-
ServiceManager類結(jié)構(gòu)
-
掌控全局的IInterface.h
-
關(guān)鍵類結(jié)構(gòu)
-
系統(tǒng)啟動準備工作
-
Binder調(diào)用流程
-
Native層(C /C)
-
Service注冊流程
-
Service接口獲取流程
-
Service調(diào)用過程
-
Binder調(diào)用流程(續(xù)前)
-
Binder線程管理
-
Binder一次數(shù)據(jù)拷貝機制
-
Java層
-
關(guān)鍵類結(jié)構(gòu)
-
Java service獲取流程 - ServiceManager
-
Service注冊流程
-
Java service獲取流程 - ActivityManager
-
AIDL
實驗、練習(xí)和解答
-
用Linux RPC實現(xiàn)加法和greet函數(shù),greet函數(shù)接收一個字符串格式的名字如“Mike”,返回字符串“Hello Mike”。(提示:Linux RPC只支持單參數(shù),傳遞多參數(shù)可利用struct實現(xiàn))
-
a. 用D-Bus實現(xiàn)加法和greet函數(shù);b. 參照Linux RPC格式,根據(jù)自己對RPC機制的理解,手動實現(xiàn)對2.a.中所完成接口的RPC封裝。
-
利用WebService實現(xiàn)上述加法和greet函數(shù)。
-
分析Binder在進程間通過一次拷貝機制傳遞數(shù)據(jù)時,發(fā)送方是否需要將待發(fā)送數(shù)據(jù)放入自己與binder驅(qū)動進行mmap的內(nèi)存區(qū)域?放與不放有什么影響?
-
創(chuàng)建一個Android應(yīng)用,利用AIDL生成對應(yīng)的Java類,畫出生成類的類圖。