接上篇:
一、 系统状态图结构
系统运行时状态图如下:
系统在三个开始状态上进行通讯处理,对于守护服务,从接收开始状态进入系统,建立子进程后,接收过程就交由子进程处理直到对方挂断或系统终止。发送过程有两个入口,一个是发送开始,一个是发送终止,每一次新的发送总是建立一个新的发送进程,并且注册一个新的发送通道,直到发送终止,才能撤消通道,销毁该子进程,或一次发送完成自动撤消通道销毁子进程。
接收过程的通道销毁和子进程的销毁是根据系统的进程退出机制进行的,该机制用以自动清理系统资源,和销毁作废进程。
建立通道时,系统定义可自动销毁或命令销毁两种通道,自动销毁则完成一次或一个通讯循环后自动销毁,否则必须按照命令规则或退出机制进行销毁。
二、 系统数据结构和程序结构
1、 共享内存名:WINMM_SHARE_MENORY_XXX
其中XXX为用途名,如: IN à接收用共享缓冲
OUTà发送用共享缓冲
DEADà死信队列用共享缓冲
2、 共享内存空间:由系统设定值给出,单位 KB。
在系统Config中有节[MEMORY_SPACE]中的键值给出:
SPACE_MEMORY_IN = xxxx //给出接收用共享内存的大小(KB)
SPACE_MEMORY_OUT = xxxx //给出发送用共享内存的大小(KB)
SPACE_MEMORY_DEAD = xxxx //给出死信用共享内存的大小(KB)
3、 发送队列结构
OUT_Qheader/OUT_QTAIL:队列指针[固定结构数组,0--300]
OUT_Idle_Pointer:共享内存空闲块链表,作为内部存储分配用。
结构如图:
中间件系统有自己的共享内存区的分配与释放程序和分配策略,因此,对共享内存设置的最小默认值不得小于1MB,对于需要图象数据或音视频数据传输用途的应用程序,缓冲区应该更大一些。
4、 接收队列结构
IN_Qheader/IN_QTAIL:队列指针[固定结构数组,0--300]
IN_Idle_Pointer:共享内存空闲块链表,作为内部存储分配用。
结构同上。
5、 死信队列结构
DEAD_Qheader/DEAD_QTAIL:队列指针[固定结构数组,0--300]
DEAD_Idle_Pointer:共享内存空闲块链表,作为内部存储分配用。
结构同上。
6、 系统内部结构
通道注册结构链表:
当有新通道请求操作时,首先检查是否该通道已经注册,然后决定是否建立新的注册。通道信息包括进程识别信息,socket信息,和标志信息等,一个通道被注册,表明有一个通讯子进程为该通道服务,此时,只需简单的将数据放入队列,该服务子进程自动处理相关数据。
链表在操作系统区域上被分配。
共享内存空闲块连表:
共享内存在系统的初始状态是一个整块存储区域,随着系统的数据收发,它被切割分配,形成不规则的小块,中间夹杂着已分配的块,因此形成了空闲块链表,该链表块的分配被切割,块的释放被回收,回收使相临的块合并。
链表在共享存储区域上操作。
7、 中间件程序结构
中间件引导服务程序:
系统服务程序,目的时引导中间件系统(根据注册表的安装信息),完成引导后,自动退出服务。注意,中间件系统程序可以手动启动,或直接由系统的启动菜单启动,因此,配置中间件系统的启动策略时,应该根据系统需求灵活设置。
中间件系统程序:
中间件系统主程序。
中间件环境设置程序:
完成中间件运行环境的设置。
三、 用户应用接口
用户应用程序接口以DLL动态连接库的形式提供,系统为每一种编程语言提供动态库函数说明文件,WinMM.Dll和WinMMC.H、WinMMP.Pas等,并给出说明和使用的例子。
应用程序需要将DLL拷贝到应用程序目录下才能使用接口,在发布应用程序时,动态库程序应随之一同发布。
安装完成中间件系统后,首次运行时,系统提示需要软件锁,插入随系统附带的软件锁后,中间件获得系统运行许可。
四、 Cfg设置程序
安装了中间件程序后,使用设置程序可以设置中间件的运行环境,运行环境的改变需要重新启动系统才能有效。
中间件作为系统的一个服务,在系统启动时自动启动。
设置程序用系统注册表探知中间件的安装状态和安装信息。设置程序随中间件安装一道被安装在系统的中间件目录下。
向用户发布使用中间件的应用系统,必须安装中间件,并且正确设置运行环境。
五、 说明文档
安装说明:是中间件程序安装帮助文档,帮助用户正确的安装中间件系统。
设置说明:是中间件运行环境设置帮助文档,帮助用户正确的设置中间件系统的运行环境,和调整中间件系统的运行状态、占用资源。
六、 附录
中间件系统常见故障的排除:
系统提示信息注释:
名词解释:
注意:本概要设计是对中间件系统结构进行的框架式设计,细节设计请参看系统设计说明书。
2004/4/27 CCC