基于XML的桌面软件GUI的设计和应用

来源 :电脑知识与技术·学术交流 | 被引量 : 0次 | 上传用户:maxmax3
下载到本地 , 更方便阅读
声明 : 本文档内容版权归属内容提供方 , 如果您对本文有版权争议 , 可与客服联系进行内容授权或下架
论文部分内容阅读
  摘要:传统桌面软件的GUI(Graphic User Interface)实现方式缺乏类似HTML模式的“页面描述机制”,这个弊端导致大量冗余工作的出现。而且软件GUI的运行时动态创建也存在问题。针对这些缺陷,该文提出了基于XML的图形用户界面的表达描述和实现,在这种方式下的GUI与软件属于无耦合方式,从而从根本上解决了跨平台的问题。另外,这种方式下GUI可以与插件系统进行对接,为界面的构件化提供了可能。
  关键词:XML;桌面软件;GUI;构件
  中图分类号:TP311文献标识码:A文章编号:1009-3044(2008)27-1962-04
  Design and Application of Desktop Software’s GUI Based on XML
  LI Chu
  (Wuhan Maritime Communication Research Institute,Wuhan 430079,China)
  Abstract:The implementation of the traditional desktop software’s GUI (Graphic User Interface) lacks the way of "the page description mechanism" that similar HTML mode, this abuse cause a great deal of emergence that the redundancy work. And the dynamic establish in the runtime of the software GUI also exist a problem. Aim at these problems, this paper provides the expression description and realization of GUI based on XML,in this way the coupling of GUI and software is incompact, thus resolving the problem of the cross-platform and by the root. Moreover, under this kind of way the GUI can carry on with the plug-in system and provide a possibility for the component of the interface.
  Key words:XML;desktop software;GUI;component
  
  1 引言
  
  随着信息时代的发展,计算机软件的需求越来越复杂,规模越来越大,而且随着企业的发展和业务的扩展,需求变化是不可避免的。目前,大多数软件系统的界面、功能都是固定编码的,如果需求发生了变化,则必须修改源代码,然后将程序重新编译。需求变化中的很大一部分是类似但又十分琐碎的,然而,软件的开发人员的流动性很大,加上开发文档的缺乏,导致这种需求变化很难得到快速的满足。据统计,在一个应用程序中平均48%的代码用于用户界面,大约50%的执行时间用于执行用户界面程序[1]。随着软件系统规模的不断扩大,开发用户界面所耗费的时间和成本也将成倍增加[2],因此,怎样在较短的时间内设计出符合用户要求的用户界面,提高用户界面的开发效率,无疑是应用程序必须急待解决的一个问题。为此本文提出了一种基于XML 的用户界面实现方法。
  
  2 传统桌面软件图形用户界面实现的优势与弊端
  
  2.1 Web软件的优势
  毋庸置疑,Web软件的动态性、易于部署和表现力丰富等等关键特征奠定了这类软件在现代软件应用中的优势,随着应用的积累,Web软件的聚合效应也日渐凸显,许多大型的门户已经开始基于这种聚合效应构建未来的软件服务模式。就软件的发展趋势而言,由于用户的硬件环境越来越强大、成本越来越低,因此,未来在用户的桌面上运行的不应该仅仅是基于HTML的轻量级的应用,但就今天的技术而言,人们还不能像编写HTML那样编写桌面特征的软件,因此,一个关键的问题浮现了,那就是如何架构一种软件开发模式,即可以发挥桌面软件的技术优势,又能够很好的体现Web软件的优势,同时也可以充分发挥Web服务器的威力、技术储备效应。通过将大量的框架性质的代码归结为XML描述,可以使桌面软件开发向着“页面化”的方向前进。
  2.2 桌面软件的优势
  显然,尽管Web软件有丰富的表现力,但更丰富的用户体验还是桌面软件体现的,因此,在交互性以及业务密集型的应用之中,桌面软件依然占据主流。由于需要本机安装,因此,桌面软件的部署是一个关键问题。
  2.3 桌面软件图形用户界面实现的弊端
  大量的软件组件积累来自于传统的软件开发技术,当我们面对一个功能有限、扩展性要求不高的软件需求时,传统的技术模式不会有所谓的“劣势”,传统的软件技术特别适合开发那些功能描述相对确定的、作用域不是很宽、大的软件系统,或一个功能局限的局部系统。从许多方面看,大量的功能具体的组件,都是基于传统的技术框架实现的,类似HTML等技术,往往是起到一个对传统技术组件“组织”的作用,从许多方面看,桌面软件的体验,对具体的用户而言还是非常重要的,因此,类似HTML之类的技术不能解决软件的全部问题,许多应用还需要桌面体验很强的软件进行支撑。但当一个系统出现功能扩展方面的需求的时候,问题就出来了,在Web领域,对一个Web应用的各种考虑,大体是一致的标准思考方式,然而对桌面开发而言,却受制于团队的技术积累等多方面因素。是否存在类似于Web方式的软件描述技术来改变现在的大型桌面软件的“僵化”状态呢? [3]
  1) 桌面软件缺乏类似于HTML模式的“页面描述机制”,这是传统桌面软件开发最显而易见的弊端,这个弊端导致大量的冗余工作的出现,例如,在MFC开发中,针对不同的CMainFrame框架,我们往往必须对应不同的C 工程以解决CMainFrame的具体的表现形态,对VB6、Delphi以及.NET桌面开发都存在类似的冗余劳动;
  2) 传统软件开发模式的第二个弊端是不能为桌面软件提供一个通用的“脚本”引擎以及UI引擎使得软件可以根据不同的情况形成不同的方案。这一点与Web开发也形成鲜明的对比;
  3) 传统模式的第三个弊端是,通常情况下,对系统的扩展依赖于软件框架的源代码,尽管有“plug-in”概念,但这类概念的实现依赖于软件的技术积累,Plug-in不是通用的行为,而是“个案”。对大多数软件而言,缺乏编译后的扩展、二次开发功能,许多功能的体验完全取决于开发环节的工作,一旦开发结束,用户级别的扩展、二次开发等难度较大,成为软件适应用户不断增长的需求的关键障碍;
  4) 传统桌面软件开发模式的第四个弊端是缺乏与Web技术的结合模式。
  2.4 结合Web软件和桌面软件的必要性
  现代软件发展的趋势是软件的服务必将替代软件销售。因此,软件发布、获取的模式正在日渐改变,随着桌面软件逐渐吸收Web软件的优点。最终,Web软件与桌面软件之间的差别会变得非常模糊。
  桌面软件开发Web化的设想是将支撑功能组合的XML段落自然的写在HTML页面之中,不必进行那些重量级的编码,一样可以获得相同体验的GUI形式,这一点客观上将导致桌面系统构造工程的Web化。同时,开发者获得足够的时间去考虑如何形成功能更加强大的软件组合形式,如同网站聚合Web内容一样,这种变迁一定会发生在桌面开发过程之中。GUI页面化,不仅仅简化了软件的开发环节,同时也给软件部署的环节带来新的变化,那就是开发者可以利用成熟的HTTP协议部署、发布桌面软件功能了,这样考虑的优势是优秀技术的自然结合,而不是一种严酷的淘汰。面对大量的桌面组件的积累,更科学的考虑是如何结合现有的技术充分的利用这些积累。
  
  3 XML元素
  
  由于用户界面主要是由窗口、对话框和各种控件组成,用户操作界面是由事件驱动的, 因此我们不仅定义了界面元素,同时还定义了对应元素的事件和动作,加入了逻辑结构的判断语句。在XML 规范的基础上定义了针对界面元素的所需要的特定XML 元素、元素的属性以及元素和元素的属性之间的关系;其具体格式规范如下所介绍。
  1) <Application>元素表示一个应用程序,所有的界面元素都包含在<Application>-- </Application>中;
  2) <Form>元素表示一个窗体,它有ID 和Name 属性,其中ID 表示窗体号, Name 表示窗体名称;
  3) <Components>元素表示控件的集合,它包含所有的<Component>元素;
  4) <Component>元素表示在窗体中出现和使用的控件,它有id、type、name、posX、posY、width、height 和text 属性。其中id表示控件号, type 表示控件的类型,name 表示控件的名称,posX表示控件的x 轴坐标,posY 表示控件的y 轴坐标,width 表示控件的宽度, height 表示控件的高度,text 表示控件中包含的文本。
  5) <Events>元素表示事件的集合,它包含所有的<Event>元素;
  6) <Event>元素表示事件,它有id、name 和type。其中id 表示事件号,name 表示事件的名称, type 表示事件的类型;
  7) <Actions>元素表示动作的集合,它包含所有的<Action>元素;
  8) <Action>元素表示动作,它有id 和表示动作的名称。其中id 表示动作号,name 表示动作的名称;
  9) <if>元素表示判断语句,它包含<elseif>和<else>元素,它的cond (条件)属性表示一个条件表达式,它的值可以是true 或false。如果cond 的属性的值计算为true,那么封装在<if>或者<elseif>元素中的指令将被执行。如果cond 属性的值计算为false,便访问下一个<elseif>或<else>;
  10) <Vars>元素表示变量的集合,它包含所有的<Var>元素;
  11) <Var>元素表示定义一个变量,它有type、name 和value属性,其中type 表示变量的类型,name 表示变量名,value 表示变量的值;
  12) <Assign>元素表示对一个变量进行赋值,它有name 和value 属性,其中name 表示需要赋值的变量名,value 表示需要给变量赋的值。
  
  4 基于XML的图形用户界面GUI的表达描述
  
  4.1 基于XML的图形用户界面表达描述的特点
  可扩展标记语言( eXtensible Markup Language,XML)是由互联网联合组织(World Wide Web Consortium,W3C)在1998 年制定的一种通用语言规范,它是一门新兴的、面向Internet 应用的标记语言。采用基于XML 的界面描述可以将界面元素(如按钮、树、文本框等) 定义为XML 的标签( Tag),可方便地将界面元素的属性(标题、位置、大小等)、事件、方法以及相关信息写入XML 文件中,此XML 文件即定义了相应的用户界面。采用基于XML 用户界面描述是基于以下的考虑[4]:
  1) XML 采用树状存储格式,可以实现对界面信息的快速查询和数据提取;
  2) XML 具有良好的扩展性和自描述性,适合对界面元素进行描述;
  3) XML 的数据内容(DI)与描述数据显示方式(XSL)的信息相分离,可以动态地改变资源文件或结合其他标准,从而改变应用程序的风格和外观;
  4) XML 具有语言无关性并有众多的支持工具,可实现跨平台异构应用程序之间的界面信息共享;
  5) XML 提供了对多语种的支持,包括UTF27、UTF28、UNICODE、GB2312 (简体中文)、BIG5 (繁体中文)等,容易实现软件的国际化和本地化。
  4.2 用户界面的XML描述
  由于目前正处于第二代图形用户界面时代,而且大部分商业MIS 系统都是WIMP (Window 窗口、Icon 图标、Menu 菜单和Pointing Device 指点设备)风格的界面,因此将用前面介绍的XML 元素进行界面格式的具体描述。
  1) 用户界面的层次结构描述
  <?xml version="1.0" encoding="gb2312"?>
  <Application><! - - 应用程序- - >
  <Form><! - - 窗体- - >
  <Vars><! - - 变量列表- - ><Var>
  ......</Vars>
   <Components><! - - 控件列表- - >
   <Component>
   </Component>
   ......</Components>
  <Actions><! - - 动作列表- - >
  <Action></Action>......</Actions></Form>
  </Application>
  2) 变量的描述
  <var type=’Button’ name=’MyButton’ value=’’ />
  3) 控件的描述
  <Components>
  <! - - 按钮控件的定义- - >
  <Component id="1001" type="appliction.component.Button" name="Button">
  <Button width ="75" height="23" posX ="224" posY="368" name="add" text="添加" >
  
  <! - - 事件的定义- - >
  <Events id="100101"type = "click" name= "addNode" />
  </Button>
  .......
  </Component>
   .......
  </Components>
  4) 动作的描述
  <Actions>
  <Action id="10011" name=’TreeHandle’>
  <if cond="cmd=Tree_loadXML" > <! - - 加载XML 文件- - >
  <Tree_loadXML var1="load_xml_file" />
  <elseif cond="cmd=Tree_AddNode" >
  <Tree_AddNode var1="N_Add_PNode"/>
  <assign name='cmd' value='Tree_loadXML' /> <assign name ='NodeP' value=' ' />
  </Tree_AddNode>
  </elseif>
  </if>
  </Action>
  .......
  </Actions>
  
  5 应用实例
  
  5.1 系统概述
  以某军事项目文件规划系统为例。该系统根据用户需求科学有效地规划配置文件,辅助决策。由于用户的工作及所在部门职能不同,其功能和访问资源也不尽相同。用户需求变动要求界面生成能适应数据库结构变化。因此采用模块化的组件技术和基于XML 配置管理,实现数据层与表示层信息分离,系统在修改功能或数据结构时,只需调整相应功能模块或修改配置文件即可。
  5.2 界面自动生成
  此军事项目文件规划系统的菜单和按钮响应界面等是按不同的应用需求动态生成。以显示文件规划信息为例,界面动态生成模块需知道界面表示层信息(如动态生成控件名称)和数据层信息(如数据类型、具体值等)。前者存储在XML 文件中,后者由数据库中读取。界面动态生成流程如图1所示。
  按用户操作获取显示文件规划信息的主键值,其次从XML 配置文件中读取界面表示层信息(显示项名称、查询表名、主键名等),再用SQL 语句读取数据库中数据层信息(字段类型、长度、是否非空和具体值等)保存在结构类型struColInfo 中,运行时循环生成界面元素,按显示字段类型的不同生成文本框、选择框或日期控件,并填充文件规划信息,最后添加按钮和功能处理函数。当添加数据库字段时,只修改XML 文件即可生成新的界面。
  最后产生的界面如图2 所示。
  
  6 小结
  
  通过将桌面软件的架构模式与Web软件开发模式相结合,充分发扬了软件结构应该体现的可描述性、动态性、可扩展性等优秀特征,有效的避开了传统桌面软件开发过程中的许多冗余工作,使得个性和共性之间能够充分的结合。本文提出了基于XML 的图形用户界面的表达描述并应用到具体实例中。由于XML 是一种自解释、自描述的语言,这样基于XML 的用户界面不会依赖其所在的系统。所以它与后台系统之间完全属于无耦合方式,这样,就根本的解决了跨平台的问题。另外,将用户界面的数据结构和显示分离,从而使非常容易、快捷地实现个性化定制成为可能[5]。
  
  
  
  参考文献:
  [1] Myers B A,Rosson M B.Survey on User Interface Programming[R].New York:ACM Press,1992.
  [2] 陈效路,程景云.人机界面工具研究评述[J].计算机辅助工程,1999,(4).
  [3] 徐龙杰,万建成.基于模型的用户界面代码自动生成[J].计算机工程与应用,2004,(12).
  [4] Natanya,著.XML技术内幕[M].北京:机械工业出版社,2002.
  [5] 温薇,曹首军.基于XML 的无耦合图形用户界面GUI的表达描述[J].中国水运,2008,(1).
其他文献
摘要:Multisim8是一款优秀仿真软件,使用该软件可对电路进行各种参数分析。我们在享受其便利的同时,也遇到因缺少元器件导致电路仿真无法进行的阻力。解决此问题的方法就是为元件建立仿真模型并新建或扩充已有的元器件库。在不熟悉Spice编程原理的情况下,我们可通过相关网址查找到元件厂商提供的元件模型,利用模型导入的方法来建立需要的新元件。通过对新元件应用电路的仿真分析,新元件完全符合要求。在此基础上
摘要:考试网络化已经成为未来发展的趋势,为了适应教学和管理的需要,利用ASP技术设计并开发了B/S 模式网上考试平台系统。文章详细地对考试系统的需求进行分析,对功能模块进行设计并进行了部分实现。  关键词:考试;B/S模式  中图分类号:TP311文献标识码:A 文章编号:1009-3044(2008)24-1208-02  ASP-based Technology Design and Impl
摘要:JSP是目前比较热门的一个话题,它继承了Java的所有优点。可是在编写JSP程序的过程中,常遇到中文乱码问题,而且使用平台不同,中文乱码问题的解决方法也不同,无形中增加了学习JSP的难度。在此,通过剖析其产生原因后,提出了相应的解决方法,并归纳出几点结论。  关键词:JSP;中文问题;Unicode   中图分类号: TP311 文献标识码: A文章编号:1009-3044(2008)33-
语文是一门学习语言文字运用的综合性、实践性课程。受新型冠状病毒(2019-nCoV)肺炎疫情影响,在教育部发出“停课不停学”的倡导下,各级各类学校积极响应,形成了一场覆盖全国的信息化教学行动。基于语文综合实践活动课程对当下特殊学习情境的适应性以及对学生语文素养形成的意义,在这一特殊时期,教师应针对线上居家学习的现实和小学生身心发展规律,利用家庭学习资源、网络学习资源、社会学习资源等,统筹语文与生活
摘要:根据计算机实践教学的需要,分析介绍了在WEB应用服务器GlassFish中,利用jspSmartUpload组件实现文件上传的方法。为实现准确、快速、安全的收取学生课堂作业,提供了一种较为简明的方法。  关键词:JSP;文件上传  中图法分类号:TP393文献标识码:A文章编号:1009-3044(2008)16-21368-03  The Application of JSP Upload
随着跨文化交流日益频繁,人们对英美文学和英美文化的关注也日渐提高,英美文学作品的译介也呈现出一派繁荣的景象。如何在浩瀚的英美文学海洋中梳理出清晰的脉络,选出优秀的作品,并且领会其中的思想及其背后的文化内涵,这些问题常常困扰着英美文学爱好者。近年来关于英美文学品读和赏析的研究,呈现出向更加深刻、系统、细致的方向发展的趋势,并且涌现出了一批无论在文学理论还是文化理解上都具有独到见解的著作。其中,由张珍
摘要:分布式计算是研究如何利用网络上大量的闲置计算资源来解决大型计算问题的一种计算科学。文中介绍了分布式计算的工作原理,包括中间件技术、网格技术、移动Agent技术、Web Service等在内的几种典型的分布式计算技术。  关键词:分布式计算;中间件;网格;移动Agent;Web Service  中图分类号: TP393文献标识码:B文章编号:1009-3044(2008)20-30283-0
摘要:采用Jsp技术设计和构建的数据结构在线学习平台, 实现了优质教育资源和教育方法的共享,具有很强的交互性和可维护性,不受时间和空间等条件的约束,学生可根据自己的实际情况进行学习和在线测试。  关键词:Jsp;WEB技术;C/S结构  中图分类号:G642文献标识码:A文章编号:1009-3044(2008)21-30569-01    《Construction of data》the Onl
摘要:本文通过分析某企业VPN解决方案,详细介绍VPN方案的特点,同时比较IPSec VPN和SSL VPN两种架构的优缺点,指出必须根据不同的环境选择相适应的VPN安全策略。  关键词:IPSec VPN;SSL VPN;网络安全;远程接入  中图分类号:TP393文献标识码:A文章编号:1009-3044(2008)15-2pppp-0c    Analysis of a Large Engi
摘要:IC卡也称智能卡,是一种便携式的数据存储媒介,因其便携性、抗干扰、寿命长等优势,在银行卡、借书卡、公交卡等领域广泛使用,IC卡考勤系统对于单位人员管理具有重要意义,基于Visual C 实现的IC卡考勤系统,具有成本低、可移植、通用性好等优势。  关键词:IC卡;VC;考勤系统  中图分类号:TP391文献标识码:A文章编号:1009-3044(2008)15-21111-03    Th