深入理解Linux RPC - 从Linux RPC到Android Binder
扫描二维码
随时随地手机看文章
-
本课程首先通过对远程过程调用一般性原理的解释和基本框架的介绍,使大家理解远程过程调用的整体结构和主要流程。
-
接下来本课程会对RPC发展过程中的部分重要方案进行介绍,使大家了解这些不同方案的设计思想、主要特点和适用范围,在不同的项目中能够根据需求进行合理抉择。
-
最后,我们会将Android Binder作为具体案例进行解剖,对其整体架构、运作机制等进行全面、深入、详尽的学习,使大家深入了解其实现细节,理解Binder的设计特点,掌握Binder的运作原理。在牢固掌握其实现的基础上,可以对类似技术做到触类旁通,快速掌握。
-
视频课程(可无限次数回看)
-
课后实战,练习和解答(在自己的电脑上进行实际操作)
-
加入课程讨论答疑群。
远程过程调用
-
什么是RPC
-
什么是IPC
-
本课程RPC的定义——跨进程过程调用
-
Linux RPC实例
-
RPC整体架构
-
RPC各组成部分功能及运作原理
-
IDL/Interface
-
Client/Server
-
Proxy/Stub
-
Server register
-
其他
部分远程过程调用方案
-
RPC模式
-
支持语言
-
主要结构
-
关键特性
-
ONC RPC
-
Corba
-
EJB
-
Web service
-
Dubbo
-
Json-RPC
-
-
IPC模式
-
Android Binder
-
D-Bus
-
各方案主要特性对比
实例分析——Android Binder详解
-
Binder主要特点
-
整体结构
-
Native层(C /C)
-
Service注册
-
隐含ServiceManager接口获取过程
-
ServiceManager启动流程
-
App/Zygote启动时Binder相关初始化
-
ServiceManager类结构
-
掌控全局的IInterface.h
-
关键类结构
-
系统启动准备工作
-
Binder调用流程
-
Native层(C /C)
-
Service注册流程
-
Service接口获取流程
-
Service调用过程
-
Binder调用流程(续前)
-
Binder线程管理
-
Binder一次数据拷贝机制
-
Java层
-
关键类结构
-
Java service获取流程 - ServiceManager
-
Service注册流程
-
Java service获取流程 - ActivityManager
-
AIDL
实验、练习和解答
-
用Linux RPC实现加法和greet函数,greet函数接收一个字符串格式的名字如“Mike”,返回字符串“Hello Mike”。(提示:Linux RPC只支持单参数,传递多参数可利用struct实现)
-
a. 用D-Bus实现加法和greet函数;b. 参照Linux RPC格式,根据自己对RPC机制的理解,手动实现对2.a.中所完成接口的RPC封装。
-
利用WebService实现上述加法和greet函数。
-
分析Binder在进程间通过一次拷贝机制传递数据时,发送方是否需要将待发送数据放入自己与binder驱动进行mmap的内存区域?放与不放有什么影响?
-
创建一个Android应用,利用AIDL生成对应的Java类,画出生成类的类图。