05 — Mojo 与服务化
Mojo 是 Chromium 里的 IPC 基础设施。里可以把它理解成:用 IDL 定义接口,再通过消息管道做跨进程调用。
Mojo 解决什么
早期手写 IPC 容易出错,接口演进困难。Mojo 的价值是:
- 用
.mojom定义强类型接口。 - 自动生成绑定代码。
- 支持跨进程、跨线程通信。
- 让 Network、GPU、Storage 等服务边界更清晰。
核心概念
- mojom interface:接口定义,描述可以调用哪些方法。
- Message pipe:双端消息管道。
- Remote:调用方,用来发消息。
- Receiver:接收方,绑定到具体 C++ 实现。
- PendingReceiver:可以被传递、稍后绑定的接收端。
服务化
Chromium 把一些能力拆成服务,例如 Network Service、GPU Service。这些服务可以在独立进程中运行,通过 Mojo 和 Browser / Renderer 通信。
服务化的好处:
- 隔离崩溃和安全风险。
- 边界清晰,依赖更可控。
- 便于把高权限能力从 Renderer 中移走。
常见误区
Mojo 不是业务服务本身,也不是“网络服务”或“GPU 服务”。它是定义和连接这些服务的通信基础设施。
总结
Mojo 是 Chromium 的现代 IPC 体系:mojom 定义接口,Remote 发起调用,Receiver 接收实现。它支撑了 Chromium 的服务化和多进程架构。