结构化的配置文件设计与实现

  • 格式:pdf
  • 大小:1.43 MB
  • 文档页数:2

162 •电子技术与软件工程 Electronic Technology & Software Engineering数据库技术• Data Base Technique【关键词】结构化 配置文件 INIXML软件是由数据结构与算法组成,数据结构在软件中是一个重要的组成部分,它是业务逻辑中数据的抽象,一个软件往往由很多数据结构组成,这些数据结构承载了软件业务逻辑结构化的配置文件设计与实现文/张名明 许坤 凌旺中方方面面的数据,包括初始化数据,运行时数据,结果数据等。

其中初始化数据往往存在于配置文件中,通过修改其中的数据达到修改程序行为的目的。

通常的实现思路是软件利用INI 或者XML 格式的配置文件,实现一套解析的方法,并将解析后的数据填入初始化数据结构中;写入配置文件也一样,先将数据从初始化数据结构中取出,再依照INI 或者XML 的格式,将数据填入配置文件中。

目前常用的处理方式存在大量重复的工作,需要有一种抽象层次更高的配置文件格式,以解决上述问题。

1 传统配置文件分析传统的配置文件格式简单直观,技术较成熟,但也有一些不能避免的缺点:INI 格式结构单一,只能存储简单的键值对类型,缺乏灵活性,技术陈旧。

XML 格式结构比较复杂,没有结构化的描述,不易于读写,额外字符较多,文件体积较大。

一般的配置文件读取流程分为:(1)准备配置文件;(2)解析配置文件;(3)保存配置项到初始化数据结构;(4)使用配置项内容,其中解析配置文件功能需要在已有INI 或者XML 读写库上做二次开发,从前到后将解析到的配置项内容保存到内部初始化数据结构中,供后续的初始化流程使用。

通常这部分解析读取流程需要大量重复的工作量,也容易引入错误。

故考虑设计一套抽象层次更高的配置文件格式,提供规定的语法,能够满足结构化数据格式的需求,并且具有简单直接,易读写以及占用体积小等优点。

2 设计与实现检验报告数据。

(2)解析获取到的检验报告数据,导入到国家免费孕前优生健康检查项目信息系统中。

数据交互系统功能包含用户角色、权限分配、检查结果查询、按身份证号查询、按姓名查询、指定卡号查询、导入当前报告等功能。

信息录入人员,按照角色分配的权限进入数据交互界面,通过按身份证号或姓名或指定卡号查询到计划怀孕夫妇的检查报告名称及具体检查结果,可以选择导入或批量导入数据到孕前优生系统。

数据交互系统操作界面如图1所示。

4 孕前优生系统Web Service数据交互的安全国家免费孕前优生健康检查项目信息系统是基于互联网的,面向国家、省、市、县、乡(镇)各级服务机构开发的B/S 系统,各级服务机构在互联网模式下实现信息的录入;同时各级服务机构内部的信息系统一般是基于机构内部的局域网内部系统,物理上与外部的互联网是隔离的。

基于Web Service 技术的孕前优生系统数据交互,是实现孕前优生系统(互联网)与各服务机构内的信息系统(局域网)的数据交互,这就对各系统之间数据交互的安全性提出了非常高的要求。

而Web Service 技术异构平台互通性、可穿越防火墙实现自由通信的特性正是对这种安全性要求的完美实现。

实现方式:Web Service 服务端部署在互联网,Web Service 穿透防火墙与目标服务器即各级服务机构内部的数据库连接,通过加密技术取得数据。

5 结束语本文中基于Web Service 开发的数据交互系统,是在孕前优生系统无接口、无中间库文件的情况下实现的数据共享,希望国家孕前优生系统开发商,尽快提供一套统一的标准接口文档或中间库文件,由信息录入人员直接在孕前优生系统界面调用服务机构内部系统数据,这样会更方便信息录入。

在国家免费孕前优生健康检查项目信息系统没有开放统一的交互接口,又强调国家库数据安全、网络安全的前提下,在各级服务机构检查报告系统多以内部局域网特别重视机构内部信息安全的前提下,通过基于Web Service 技术的孕前优生系统数据交互系统的实现,能帮助信息录入人员安全、快速、及时、准确的上报孕检人员的孕前优生健康检查项目。

此系统的实现能大大减少信息录入人员的工作量,提供工作效率,也能有效减少检查项目的漏报、错报、少报的情况。

<<上接161页参考文献[1]彭左旗,王媛媛,马立广,赵君,张宏光,辛晓娜,张亚,马旭.国家免费孕前优生健康检查项目信息系统的设计与应用[J].中国计划生育学杂志,2014(06).[2]欧阳辉,陈凯,赵亚龙,刁彩媚.基于Web Service 的HIS 与异地医保接口的研究与实现[J].电脑知识与技术,2015(13).[3]商新娜.Web 应用中的海量数据访问缓存技术[J].北京联合大学学报(自然科学版),2007(03).[4]蔡月茹,柳西玲.Web Service 基础教程[M].清华大学出版社,2005[5]李俊旭,常朝稳.Web Service 安全通信模型的研究[J].网络安全技术与应用,2009(02).作者简介谢栋梁(1977-),男,广东省广州市人。

大学本科学历。

职称:高级工程师。

主要研究方向为医院信息化。

作者单位南方医科大学南方医院新塘医院 广东省广州市增城市 511340Data Base Technique •数据库技术Electronic Technology & Software Engineering 电子技术与软件工程• 1632.1 配置文件格式分析考虑到在高级程序设计语言中,结构化的数据结构通常是用类或者结构体实现,将一份配置文件设计为由一组配置项组成,每个配置项由配置项名称与配置项内容组成,每个配置项内容可以由下面的任意一项构成:(1)矢量值:整形值,浮点型值,Bool 值,字符串。

(2)数组:由一系列矢量值组成,数组中的每一项类型必须相同。

(3)组合:一个配置项的集合。

(4)列表:一系列的配置内容组成,包括矢量值,数组,组合以及列表。

2.2 配置文件格式设计在具体实现过程中,参考类C 语言和Python 类脚本语言的编程范式,并考虑到工程实践的需求,将以上配置项需求设计成以下的格式:(1)配置项格式,形式如:name = value;其中name 由字符,数字及下划线组成,并以字母或下划线开头,value 必须是a 、b 、c 、d 四种配置项内容中的一种,(2)组合配置项格式,形式如:{settings …},组合配置项可以包含任意多个配置项,但每个配置项名称必须唯一。

(3)数组配置项,形式如:[ value, value ... ],数组配置项可以包含0或n 个元素,每个元素都必须是类型相同的矢量值。

(4)列表配置项,形式如:( value, value ... ),数组配置项可以包含0或n 个元素,每个元素可以a 、b 、c 、d 四中配置项内容中的一种,且每个元素类型无需一致。

(5)整形配置项,包含两种类型:1.包含可选前导符(‘+’、‘-’)的n 个0-9数字;2.十六进制字符,以‘0x ’作为前缀,接着n 个十六进制字符(‘0’ - ‘9’, ‘A ’ - ‘F ’,‘a ’ - ‘f ’)。

(6)浮点型配置项,由n 个数字和1个小数点组成,并包含一个可选前导符(‘+’、‘-’),以及一个可选的指数,指数由一个字符(‘e ’、‘E ’),一个可选的符号字符以及n 个数字组成。

(7)Bool 型配置项,由‘true ’或者‘false ’组成,或者其他大小写混合的变种。

(8)字符串型配置项,由双引号分隔的任意文本组成。

文字双引号可以通过在它们前面加上反斜杠来转义:'\“'。

转义序列'\\','\ f','\n','\ r'和'\ t'也可被识别,并具有同C 语言中的含义。

(9)注释,包含三种类型:1.脚本风格,以’#’开头到行结尾的字符将作为注释,2.C语言风格,’/*’到’*/’之间的字符将作为是注释,3.C++语言风格,以‘//’开头到行结尾的字符将作为注释。

通过以上a-i 条语法规范定义的示例配置文件如下所示:# Example application configuration file version = "1.0";application={Window= {title = "My Application"; size = { w = 640; h = 480; }; pos = { x = 350; y = 250; };};list = ( ( "abc", 123, true ), 1.234, ( /* an empty list */ ) );misc= {pi = 3.141592654; int = 1234;columns = [ "Last Name", "First Name", "MI" ];bitmask = 0x1FC3; // hex }; };2.3 配置文件存取库实现原理配置文件的语法接近编程语言,故参考一般代码的编译方法,简化后的配置文件存取库实现词法分析和语法分析两个步骤。

在特定的编程语言平台,利用通用的词法分析和语法分析工具如Flex 以及Bison 等,通过导入对应的词法分析和语法分析规则,可以比较方便地将配置文件一步一步转换成配置项集合,配置项集合一般可以考虑通过各种编程语言通常会提供的Map 结构来实现,并额外增加配置项查询,增加,修改和删除方法,即可实现一套特定编程语言平台的通用配置文件存取库。

3 结语经过对配置文件结构化需求的分析,改进后的配置文件格式具备较完善的结构化特性,更接近程序语言,方便机器和人读写,弥补了旧式配置文件在存储结构化数据时的不足,并且因为配置文件格式只定义了数值,不存在计算表达式,所以也不会有代码注入等安全隐患。

通过提供一份配置文件存取库实现原理,使得软件开发者只需要按照原理设计实现一套对应语言的配置库模块,就可以获得结构化配置方面所有的功能,并且该配置库可以重复使用,减少了配置功能方面重复的工作量,提高了软件开发的效率,也减少了缺陷率。

参考文献[1]周霞,彭文惠.XML 技术与应用教程[M].北京:电子工业出版社,2015.[2]刘艳春,洪晓慧.Struts2 框架核心配置文件的研究与应用[J].计算机技术与发展,2013(02).[3]滕海坤,刘心声,李伦彬.嵌入式Java编译器的研究与设计[J].单片机与嵌入式系统应用,2018(04).作者简介张名明(1987-),男,江苏省扬州市人。