基本设计概念和处理流程
调用模型
模仿COM组件接口模式,利用面向对象思想多态性polymorphism,调用方保存着被调用方的基础接口指针(interface or sink钩子)(Pure Virtual Function),调用方直接调用接口指针内声明的纯虚方法,而此纯虚函数的具体逻辑由该接口的派生类实现。
示意图:
基于事件驱动的数据处理模型
在系统功能设计中,针对网络事件SocketEvent、数据库事件DatabaseEvent、定时器事件TimerEvent……的数据处理,建立数据队列服务QueueService,为每一队列建立多个子线程QueueServiceThread处理。数据队列服务提供添加事件数据的方法AddToQueue,设置数据队列服务钩子SetQueueServiceSink,由数据队列服务钩子QueueServiceSink执行具体逻辑事件的数据处理。
示意图:
再者,根据网络、数据库等特定功能,构建网络、数据库等管理服务,实现数据队列服务钩子QueueServiceSink方法,调度事件数据执行外部处理接口,外部处理接口具体由二次开发用户实现。
示意图:
事件数据设计
软件体系结构(架构 Architecture)设计
功能模块划分
数据队列服务QueueService模块设计
基本设计概念
建立一个内存链表,保存事件数据,对外部提供方法(向链表添加事件数据并通知线程,同时启动多个处理线程,从数据链表里获取事件数据,执行外部钩子方法进行处理。线程事件通知采用完成端口技术。
类与接口设计
COM接口 | 接口名 | 接口基类 | 接口实现类 |
A | 队列引擎 | IQueueServiceEngine | CQueueServiceHelper |
B | 事件服务 | IEventService | CEventServiceHelper |
C | 网络引擎 | ITCPSocketEngine | CTCPSocketEngineHelper |
D | 定时器引擎 | ITimerEngine | CTimerEngineHelper |
E | 数据库操作 | IDataBase | CDataBaseHelper |
F | 数据库引擎 | IDataBaseEngine | CDataBaseEngineHelper |
I | 调度引擎 | IAttemperEngine | CAttemperEngineHelper |
G | 服务引擎 | IServiceEngine | CServiceEngineHelper |
K | 异步引擎 | IAsynchronismEngine | CAsynchronismEngineHelper |
自动清理参数辅助类 | CAutoCleanParameters | ||
自动关闭记录集辅助类 | CAutoCloseRecord | ||
断开数据库连接辅助类 | CAutoCloseDataBase | ||
内部接口 | 类别 | 接口 | 功能 | 继承 | 实现类 |
数据队列事件 (非组件实现) |
CQueueServiceEvent (IQueueService、CThreadLock) |
设置接口、发送通知事件 | |||
数据库错误接口 | IADOError | 错误类型与描述 | : public IUnknownEx | CADOError | |
E | 数据库连接接口 | IDataBase | 数据库操作类 | : public IUnknownEx | CDataBase |
数据库钩子接口 | IDataBaseSink | 启动关闭数据库模块、数据操作处理 | : public IUnknownEx | ||
F | 数据库引擎接口 | IDataBaseEngine | 启动停止服务、注册钩子、获取接口 | : public IUnknownEx | CDataBaseEngine |
A | 数据队列接口 |