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