Mojo
是一个跨平台 IPC 框架,它诞生于 chromium ,用来实现 chromium 进程内/进程间的通信。目前,它也被用于 ChromeOS。
一、Mojo 的分层
从图中看 Mojo 分4层:
Mojo Core
: Mojo 的实现层,不能独立使用,由 C++ 实现;Mojo System API(C)
: Mojo 的 C API 层,它和 Mojo Core 对接,可以在程序中独立使用;Mojo System API(C++/Java/JS)
: Mojo 的各种语言包装层,它将 Mojo C API 包装成多种语言的库,让其他语言可以使用。这一层也可以在程序中独立使用;Mojo Bindings
: 这一层引入一种称为Mojom
的 IDL(接口定义)语言,通过它可以定义通信接口,这些接口会生成接口类,使用户只要实现这些接口就可以使用 Mojo 进行通信,这一层使得IPC两端不需要通过原始字节流进行通信,而是通过接口进行通信,有点类似 Protobuf 和 Thrift 。
除了上面提到的那些层之外,在 Chromium 中还有2个模块对 Mojo 进行了包装,分别是 Services(//services) 模块和 IPC(//ipc) 模块。
Services
: 一种更高层次的IPC机制,构建于Mojo之上,以Service