# somb **Repository Path**: raw_nice/somb ## Basic Information - **Project Name**: somb - **Description**: 一个基于SOA的进程间通信中间件 - **Primary Language**: C - **License**: MIT - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 2 - **Created**: 2023-12-19 - **Last Updated**: 2023-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # somb ## 介绍 SOMB(Service Oriented Message Bus), 利用了SOA思想设计的进程间通信组件 SOMB目前只适用于同一个Linux操作系统内进程间的通信,底层使用了Unix Domain Socket和epoll进行消息收发处理 后期计划支持跨系统间的进程间通信(利用TCP/IP) ## 软件架构 软件通信架构说明如下图(灰色部分后期支持)  ## 通信模型基本概念了解 SOMB是采用SOA思想设计、基于服务ID的通信组件部署,将服务ID分为Method和Event两种。 同时SOMB也提供了4种通信模型:SetRequest\Request-Response(同步)\Request-Response(异步)\Event监听 ### SetRequest  ### Request-Response(同步)  ### Request-Response(异步)  ### Event监听  ## 功能说明 SOMB服务类型、通信模型、API对应关系表
| SOMB服务类型、通信模型、API对应关系表 | |||
|---|---|---|---|
| SOMB服务类型 | 通信模型 | 消费者端API | 服务生产者端API |
| Method | SetRequest | i32SOMB_Method_SetRequest | 无 *无需返回服务结果 |
| Request-Response(同步) | i32SOMB_Method_Request_Sync | i32SOMB_Method_Complete *返回Response结果 |
|
| Request-Response(异步) | i32SOMB_Method_Request_Async | i32SOMB_Method_Complete *返回Response结果 |
|
| Event监听 | i32SOMB_ServiceListener_Add i32SOMB_EventListener_Delete |
无 *Method的Event监听指的是 监听服务Available状态 |
|
| Event | Event监听 | i32SOMB_ServiceListener_Add i32SOMB_EventListener_Delete |
i32SOMB_Event_Trigger |
| 发送数据参数的使用场景 | 发送数据Buffer的申请方法 |
|---|---|
| 当发送数据是结构体时 并且结构体包含动态大小的成员变量 |
发送Buffer需要使用malloc申请,申请长度包含结构体本身大小以及动态变量的最大长度 |
| 当发送数据是结构体时 结构体不包含动态大小的成员变量 |
发送Buffer可以 1.使用malloc申请,申请长度为结构体本身大小 2.使用pb自动生成的 结构体名_size 宏 定义发送Buffer数组 |
| 当发送数据是数组时 | 直接使用数组的头(指针)作为发送参数 |
| 当发送数据是NULL | 直接NULL作为发送参数 |