2024年5月26日发(作者:)

鸿蒙通用业务模型与IPC

目录

鸿蒙通用业务模型与IPC

代码位置

设备模型

业务概念

特性概念

抽象API

API寻址

why

线程间通信

消息队列

消息体

消息分发和处理

进程间通信

通信基础

注册和查找API

总结

鸿蒙通用业务模型与IPC

代码位置

目录描述

foundation/distributedschedule/services/samgr_lite鸿蒙通

用业务模型实现代码

foundation/distributedschedule/services/samgr_lite/commu

nication实现了广播业务(service)和发布订阅特性(feature)

foundation/distributedschedule/services/samgr_lite/samgr

支持跨线程的远过程调用及对应的抽象业务模型

foundation/distributedschedule/services/samgr_lite/samgr/

samgr_client跨进程远过程调用客户端进程的实现逻辑

foundation/distributedschedule/services/samgr_lite/samgr/

samgr_server跨进程远过程调用服务器端进程的实现逻辑

foundation/distributedschedule/services/samgr_lite/samgr/

samgr_endpoint跨进程远过程调用与通信紧密相关的逻辑

设备模型

鸿蒙系统支持2大种类的设备:

1. 只支持线程概念的设备,无进程概念。

2. 支持进程概念的设备,这样的设备中,设备可以运行多个进程,

进程内还可以有多个线程。

不管上述哪种设备。都可以在鸿蒙系统中部署各种各样的业务

(service)。在保持每个业务简洁的同时,多个业务协同还能完成复杂

的功能。

业务概念

业务(service)是一个抽象的概念,代表一组紧密相关的功能或者

操作,可以认为是一个软件模块,部署在线程中。多个业务模块可以

部署在同一个线程中;重要的业务模块也可以独占一个线程。实现了

下述结构(类似于Java的Interface, C++的Abstract class)的软件模

块称为一个具体的业务模块。

struct Service {

/**

* @since 1.0

* @version 1.0 */

const char *(*GetName)(Service *service); //获取业务名称

/**

* @since 1.0

* @version 1.0

*/

BOOL (*Initialize)(Service *service, Identity identity); //初始

化业务,ID为业务在业务表中的序号

/**