内容简介:Android 进阶:几种进程通信方式的对比总结
- 不花时间打基础,你将会花更多时间解决那些不必要的问题。
读完本文你将了解:
RPC 是什么
RPC 即 Remote Procedure Call (远程过程调用) 是一种计算机通讯协议,它为我们定义了计算机 C 中的程序如何调用另外一台计算机 S 的程序,让 程序员 不需要操心底层网络协议,使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC 是典型的 Client/Server 模式 ,由客户端对服务器发出若干请求,服务器收到后根据客户端提供的参数进行操作,然后将执行结果返回给客户端。
RPC 位于 OSI 模型中的会话层:
在面向对象编程中,它也被叫做 “远程方法调用”。
IDL 是什么
RPC 只是一种协议,规定了通信的规则。
在实际工作中客户端与服务端会有各种各样的平台,就好像日常开发一样,为了统一处理不同的实现,需要定义一个共同的接口,于是有了 IDL。
IDL 即 Interface Description Language (接口定义语言)。
它通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。比如,一个组件用 C++ 写成,另一个组件用 Java 写,仍然可以通信。
IPC 是什么
IPC 即 Inter-Process Communication (进程间通信)。
Android 基于 Linux,而 Linux 出于安全考虑,不同进程间不能之间操作对方的数据,这叫做“进程隔离”。
“进程隔离”更详细的介绍(节选自: http://blog.csdn.net/u010132993/article/details/72582655 ):
在 Linux 系统中,虚拟内存机制为每个进程分配了线性连续的内存空间,操作系统将这种虚拟内存空间映射到物理内存空间,每个进程有自己的虚拟内存空间,进而不能操作其他进程的内存空间,只有操作系统才有权限操作物理内存空间。
进程隔离保证了每个进程的内存安全。
但是在大多数情形下,不同进程间的数据通讯是不可避免的,因此操作系统必须提供跨进程通信机制。
Android 几种进程通信方式
跨进程通信要求把方法调用及其数据分解至操作系统可以识别的程度,并将其从本地进程和地址空间传输至远程进程和地址空间,然后在远程进程中重新组装并执行该调用。
然后,返回值将沿相反方向传输回来。
Android 为我们提供了以下几种进程通信机制及对应的文章链接如下:
- 文件
- AIDL
- Binder
- Messenger
- ContentProvider
- Socket
在上述通信机制的基础上,我们只需集中精力定义和实现 RPC 编程接口即可。
如何选择这几种通信方式
《Android 开发艺术探索》中总结的已经比较全面了:
这里再对比总结一下:
- 只有允许不同应用的客户端用 IPC 方式调用远程方法,并且想要在服务中 处理多线程 时,才有必要使用
AIDL
- 如果需要调用远程方法,但不需要处理并发 IPC,就应该通过实现一个
Binder
创建接口 - 如果您想执行 IPC,但只是传递数据,不涉及方法调用,也不需要高并发,就使用
Messenger
来实现接口 - 如果需要处理一对多的进程间数据共享(主要是数据的 CRUD),就使用
ContentProvider
- 如果要实现一对多的并发实时通信,就使用
Socket
Thanks
《Android 开发艺术探索》
https://zh.wikipedia.org/wiki/%E9%81%A0%E7%A8%8B%E9%81%8E%E7%A8%8B%E8%AA%BF%E7%94%A8 https://zh.wikipedia.org/wiki/%E6%8E%A5%E5%8F%A3%E6%8F%8F%E8%BF%B0%E8%AF%AD%E8%A8%80 http://blog.csdn.net/u010132993/article/details/72582655 https://developer.android.com/guide/components/processes-and-threads.html以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 进程:进程生命周期
- Python 知识巩固:通过主进程带起多个子进程实现多进程执行逻辑
- Python 中子进程与父进程
- 什么是僵尸进程,如何找到并杀掉僵尸进程?
- Python第十二章-多进程和多线程01-多进程
- 深入Node.js的进程与子进程:从文档到实践
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Data Structures and Algorithm Analysis in Java
Mark A. Weiss / Pearson / 2011-11-18 / GBP 129.99
Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course wa......一起来看看 《Data Structures and Algorithm Analysis in Java》 这本书的介绍吧!