结构化存储技术在整机配置中的应用
2015-05-30王涛
王涛
摘 要:同一系列不同机型之间,通常只存在比较小的差异。如何在不同机型的程序之间,做到代码复用,减小代码维护量,是进行程序设计时需考虑的很重要一个方面。文中提出一种采用结构化存储技术,保存不同配置信息的方法,应用该方法可达到上述目的。
关键词:结构化存储;配置;研究分析
1 概述
当前的工业设计中,经常会出现这样一种情况:不同型号机器之间,机械结构、硬件配置等方面差异较大,但是相应的操作软件主要功能相同,仅需修改少量代码即可适用于不同机型。为最大程序的实现代码复用,减少不同机型的代码编写工作量与后期维护工作量,可在软件中采用整机配置表的方式,通过不同的配置设置,实现适用于不同机型的目的。文章介绍一种采用结构化存储技术实现整机配置表的方法。
2 结构化存储技术介绍
结构化存储,是微软公司在推出Windows系统后,推出的一种采用COM技术架构的存储方法。该方法把文件系统的概念引入到文件内部,从而在存储结构上支持多应用程序的并发访问。所谓结构化存储方法,实际是把树状文件系统的原理应用到单个的文件中,使得单个文件也能像文件系统一样包含“子目录”,“子目录”还可以包含更深层次的“子目录”,各个“目录”可以含多个文件,把原来需要多个文件存储的内容按树状结构和层次保存到一个文件中去。采用结构化存储方法,可以极大程度的提高磁盘空间使用效率;同时便于在单个文件中明确内容的归属关系和分类关系。
3 整机配置表
为在软件中反映不同型号机器之间的区别,需要制定一份整机配置表。制定整机配置表时,首先确定机器所用的主要元器件,包括品牌、数量、功能等。不同机型,实现同一功能所用主要元器件可能存在差异,此时,可将不同机型所用元器件作为选择项列入配置表中。其次,考虑机械结构上的差异。然后,考虑功能上的差异。不同型号机器,实现的功能可能存在不同之处,可将所有型号机器实现的功能进行罗列。最后,考虑操作方式上的差异。不同型号机器在操作上,可能存在触屏操作、按钮操作、本地操作、远程操作等不同方式,在配置表中也需将所有的操作方式进行列举。此外,机器设计是在不断发展进步的,在制定配置表时,需为今后可能增加的器件、功能等预留扩展空间。实际制定整机配置表时,可能还需根据实际情况考虑其它因素,在此就不一一列举。根据以上分析,设计整机配置表结构如图1所示。
4 结构化存储设计
整机配置表制定完成后,就可在软件上将整机配置反映出来,并进行保存。此处,选用结构化存储的方式,进行保存。
4.1 配置信息结构体设计
根据上文得出的整机配置表,在软件中进行配置信息结构体设计,要求:在整机配置结构体中能完整的反映出所有可能存在的配置情况。对于同一器件的不同品牌,可在代码中通过枚举的方式,列出所有可选择品牌,便于具体操作时进行选择。其余选项中,存在多种方式进行选择的,也需通过枚举的方式,列出所有可选择项。整机配置结构体设计完成后,即可作为结构化存储的一个操作对象进行存储操作。
4.2 存储结构设计
在配置文件中,如何保存不同机型的配置信息,这是采用结构化存储方法实现整机配置表的关键。这里,根据以下要求进行存储结构设计:首先,配置文件中要包含所有不同机型的配置信息。每一种机型的配置信息,都统一采用前文中设计的整机配置结构体,保存不同配置信息。为便于操作,在配置文件中,对每一配置信息都单独命名,且名称不能重复。其次,在配置文件中,能够增加新配置,删除无效配置。最后,要在配置文件中标记出当前有效(或正在使用)的配置。根据上述要求,设计配置文件结构如图2所示。
4.3 结构化存储代码编写
存储结构设计完成后,需要在程序中编写代码,实现对配置信息的存取操作。这里,需要实现的基本操作包括:配置文件创建,配置信息列表读取,配置信息保存、修改、删除、读取等。
下面列出结构化存储基本操作代码:
4.3.1 创建配置文件
StgCreateDocfile(StringToOleStr(FStgName), FStgModeSave, 0, FStgRoot);
4.3.2 读取配置信息列表
iHRESULT := FStgRoot.EnumElements(0, nil, 0, EnumStatStg);
while EnumStatStg.Next(1, StatStg, nil) = S_OK do
begin
s := StatStg.pwcsName;
RList.Add(s);
end;
4.3.3 保存配置信息
FStgRoot.CreateStream(StringToOleStr(stmName), FStgModeSave, 0, 0, stmData);
OleStream.CopyFrom(LoadStream, LoadStream.Size);
4.3.4 读取配置信息
FStgRoot.OpenStream(StatStg.pwcsName, nil, FStgModeRead, 0, stmData);
LoadStream.CopyFrom(OleStream, OleStream.Size);
4.3.5 删除无效配置信息
FStgRoot.DestroyElement(StringToOleStr(stmName))
5 配置表应用
结构化存储结构设计完成后,即可将其应用于整机程序中。具体应用时,整机程序初始运行时,首先从配置文件中读取当前机型的配置信息,然后根据配置选择相应功能模块,从而实现相应操作。
此外,若对整机进行了设计改进,此时仅需修改相应的配置信息,然后在程序中进行简单修改,即可实现原有程序适用于新设计,同时新程序也能兼容旧机型,从而减少代码维护量。
6 结束语
采用结构化存储技术保存整机配置信息,可以有效实现代码复用,从而实现同一程序适配不同机型的目的,有效减少后期代码的维护量。但与此同时,程序中增加运用整机配置信息选择,会大量增加逻辑判断语句的应用,从而加大程序的复杂程度。因此,采用结构化存储技术保存整机配置信息的方法,需根据实际情况进行选择,不可盲目使用。
参考文献
[1]李玲娟,阮东明.结构化存储文件的结构解读和压缩存储技术实现[J].现代计算机,2001(9).
[2]李安平,孟扬.存储技术浅析[J].计算机与网络,2008(12).
[3]黄雄波,丘陵.基于Delphi下的OLE结构化存储原理与应用[J].电脑编程技巧与维护,2003(7).
[4]胡品芳.结构化存储系统中元数据集群的设计与实现[D].电子科技大学,2012.
[5]黎臻.分布式结构化存储系统设计与实现[D].电子科技大学,2011.