




已阅读5页,还剩62页未读, 继续免费阅读
(计算机应用技术专业论文)基于组件的管理信息系统中代码自动生成技术的研究.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理工大学硕士学位论文 摘要 伴随着网络的迅猛发展,管理信息系统的开发在市场中占有的分量越来 越大。但在管理信息系统开发中,重复代码的编写工作是一件繁琐的体力劳 动,例如建立大批量数据库表、生成系统界面等,程序员成为了高度脑力劳 动和繁琐的体力劳动的矛盾混合体。代码生成技术为解决管理信息系统的快 速开发问题具有重大的意义。代码生成器的使用可以将软件以最快的速度推 向市场,可以自动完成重复的繁琐编码工作。 论文研究了基于组件的代码自动生成技术,该技术是降低管理信息系统 类软件开发强度、缩短开发周期的可行性方法;并指出了以n e t 作为自动生 成的平台优于以往微软开发技术如c 0 m d c o m 技术,在此基础上,从自定义n e t 组件相对于n e t 原始控件在开发管理信息系统的优势加以分析,提出了基于 自定义组件的代码自动生成技术。 总结了代码自动生成技术在管理信息系统中的应用,分析了代码生成技 术的优势和劣势、代码生成器的实现方法,提出了基于数据库设计文档的代 码自动生成技术。 对管理信息系统的模型进行总结和抽象,提出了代码生成器的模型,并 讨论了代码生成技术所包含的关键技术,如v b a 技术、映射技术,提出了利 用代码生成技术自动生成数据库、管理信息系统界面的方法。 以实验室监测仪器网络化管理系统为例,探讨了基于代码自动生成的管 理信息系统开发的实现流程,并对基于代码自动生成的软件开发方式与传统 的软件开发方式进行比较,指出代码自动生成技术的可行性及其不足之处。 通过测试和实际使用证明,基于组件的代码自动生成能够使管理信息系 统的开发和维护更方便、更快捷、更科学,有效地提高开发人员的工作效率, 把开发人员和维护人员从单调的代码编写中解放出来,使其能够开发出更符 合客户需求的管理信息系统。 关键词:n e t 组件;自定义组件;代码自动生成;管理信息系统;数据库 武汉理工大学硕士学位论文 a b s t r a c t 、聃t ht h es w i f td e v e l o p m e n to ft h en e t w o r k , t h ed e v e l o p m e n to fm a n a g e m e n t i n f o r m a t i o ns y s t e m ( m i s ) a r eo c c u p i e dm o r ea n dm o r ew i d e l yi nt h em a r k e t ,b u t t h e r ea r el o t so f r e d u n d a n tw o r ki nt h es o f t w a r ed e v e l o p m e n tp r o c e s s ,a sf o l l o w s , t h ee s t a b l i s h m e n to fm a s sd a t a b a s e ,t h ep r o d u c t i o no fs y s t e ms u r f a c ea n ds oo n , t h ep r o g r a m m e rh a sb e c o m eac o n t r a d i c t o r ym i x t u r eo ft h eh i g h l ym e n t a ll a b o r a n dt h et r i v i a lp h y s i c a ll a b o r a u t o m a t i cc o d eg e n e r a t i o n t e c h n i q u e sh a v et h eg r e a t s i g n i f i c a n c ef o rt h es o l u t i o no f t h ep r o b l e m so f s w i f td e v e l o p m e n to f m i s t h eu s e o ft h ec o d eg e n e r a t o rc a np u s ht h es o f t w a r et ot h em a r k e tq u i c k l y , a n d a u t o m a t i c a l l yc o m p l e t et h ec o d i n gw o r ko f r e p e a t e da n dt r i v i a l 1 1 1 et h e s i sp r e s e n t e dt h ea u t o m a t i cc o d eg e n e r a t i o nt e c h n i q u e sb a s e do nt h e c o m p o n e n t ,w h i c h i sf e a s i b l em e t h o dt or e d u c et h ed e s i g ni n t e n s i t ya n ds h o r t e nt h e d e s i g nc y c l eo fm i ss o f t w a r e ;i th a sa l s op o i n t e do u tt h a ti ti se x c e l l e dt om a k e t h e n e ta s d e s i g np l a t f o r m t h a nt h e f o r m e r l y m i c r o s o f tt e c h n i c a ll i k e c o m d c o mt e c h n o l o g y m o r e o v e r , a c c o r d i n gt ot h es u p e r i o r i t yo f n e t c o m p o n e n t ,i tp r e s e n t e dt h ea u t o m a t i cc o d eg e n e r a t i o n t e c h n i q u e s b a s e do n c u s t o mc o m p o n e n t t h et h e s i ss u m m a r i z e dt h e a p p l i c a t i o n o f a u t o m a t i cc o d e g e n e r a t i o n t e c h n i q u e s i nm i s ,a n da n a l y z e di t s a d v a n t a g e sa n dd i s a d v a n t a g e s a n dt h e r e a l i z a t i o nm e t h o d ,p r o d u c e dt h ea u t o m a t i cc o d eg e n e r a t i o nt e c h n i q u e sb a s e do n t h ed a t a b a s ed e s i g nd o c u m e n t s 1 1 1 et h e s i ss u m m a r i z e da n da b s t r a c t e dt h em o d e lo fm i s ,p r o d u c e dt h ec o d e g e n e r a t o rm o d e l ,d i s c u s s e dt h ek e yt e c h n o l o g i e s ,s u c ha sv b at e c h n o l o g y 、t h e m a p p i n gt e c h n o l o g y , a n dp r o d u c e dt h em e t h o do fa u t o m a t i cp r o d u c ed a t a b a s ea n d t h em a n a g e m e n ti n f o r m a t i o ns y s t e mu s i n gc o d eg e n e r a t i o n t e c h n i q u e s t h et h e s i st o o kt h en e t w o r km a n a g e m e n ts y s t e mo fl a b o r a t o r y sm o n i t o r i n s t r u m e n ta sa l le x a m p l e ,d i s c u s s e dt h er e a l i z a t i o nf l o w o ft h ed e s i g no f m a n a g e m e n ti n f o r m a t i o ns y s t e mb a s e do nt h ec o d ea u t o m a t i cg e n e r a t o r , c o m p a r e d t h ed e s i g nm o d e lm e t h o db a s e do nc o d ea u t o m a t i cg e n e r a t o rw i t ht h et r a d i t i o n a l 武汉理工大学硕士学位论文 s o f t w a r ed e s i g nm e t h o d ,p o i n t e do u tt h ef e a s i b i l i t ya n dt h ed e f i c i e n c yo ft h ec o d e g e n e r a t i o nt e c h n i q u e s t h r o u g ht e s t s t h ec o d ea u t o m a t i cg e n e r a t o rb a s e do n t h em o d u l ec o u l d 出 t h ed e s i g na n dm a i n t e n a n c eo fm i sm o r ec o n v e n i e n t l y , q u i c k l ya n ds c i e n t i f i c a l l y , i te n h a n c e dt h er e s e a r c h e r s w o r k i n ge r i c i e n c ye f f e c t i v e l y , r e l e a s e d t h e r e s e a r c h e r sa n dm a i n t e n a n c ep e r s o nf r o mt h eb a r r e nc o d ec o m p i l a t i o n , t od e s i g n t h en e c e s s a r ym i sw h i e hs a t i s f i e dt h ec u s t o m e r s k e y w o r d s :n e t c o m p o n e n t ;c u s t o mc o m p o n e n t ;g e n e r a t i n g t h ec o d e a u t o m a t i c a l l y ;m a n a g e m e n ti n f o r m a t i o ns y s t e m ;d a t a b a s e i i i 武汉理工大学硕士学位论文 1 1 研究背景 第1 章绪论 随着计算机平台从单机、机群、局域网到互联网的转移,软件技术的发 展正进入一个变革性的阶段。管理信息系统( m i s 。m a n a g e m e n ti n f o r m a t i o n s y s t e m ) 的开发在市场中占有的分额越来越大,国内外很多软件公司都对管理 信息系统进行了很多的专题研究。从未来的软件发展和客户需求来看,管理 信息系统的市场需求还会不断扩大。本文提出了一种新型的软件开发方法, 并着重探讨软件的协同性和动态性、以特定的m i s 领域的代码自动生成为基 础,探讨基于组件的软件系统的开发方法与技术。 管理信息系统,是一个由人、计算机等组成的能进行信息的收集、传递、 储存、加工、维护和使用的系统“3 。从概念上,管理信息系统由四个部件构成: 信息源、信息处理器、信息用户和信息管理者。它们的联系如图卜l 所示。 信息源是信息的产生地;信息处理器负责信息的传输、加工、保存等任务; 信息用户是信息的使用者,利用信息进行决策;信息管理者负责信息系统的 设计、实现和维护。 图卜1管理信息系统构成图 传统的信息类软件开发模式受限于开发周期和成本、入员调配上的因素, 不太适合于规模较大项目的设计和实现。在m i s 、e r p 等信息类软件系统开 发过程中,开发人员在开发不同的系统,有大量时间用于界面开发等重复性 工作,浪费大量的人力,严重制约程序员工作效率的进一步提高;并且因为 机械的重复编码工作对人力资源的大量消耗,设计和开发人员没有足够时间 和精力研究客户需求,从而造成更大浪费,进而延误软件推向市场的时间。 武汉理工大学硕士学位论文 代码自动生成技术相对于计算机技术的发展而言属于一门比较新的技 术,在软件系统开发过程中,代码生成技术的使用可以使代码更健壮,缩短 软件进入市场的时间,它可以自动完成重复的繁琐编码工作,降低软件开发 的强度,缩短开发周期,减少重复代码的书写。信息系统开发工作中,能尽 可能重用己有代码和设计,将对加快开发进度和提高软件产品质量有很大帮 助。如果能够按照一定的方式和流程,自动的生成全部或者大部分的管理信 息系统代码,一方面能够缩短软件项目开发周期,降低成本;另一方面,能 够解放开发人员的生产力,提高软件产品的设计质量。因此,代码自动生成 技术越来越引起各大软件公司和各种计算机方面研究机构的重视,对降低软 件开发的强度,缩短开发周期,减少代码的重复书写等有着重要的意义。 1 2 国内外研究综述 1 2 1 管理信息系统的发展 管理信息系统在现代社会已深入到各行各业,由于计算机技术的迅速发 展和普及,管理信息系统事实上已成为计算机管理信息系统。管理信息系统 是一个历史范畴,它的内涵随着时间的变化而不断地变化。从最早的业务处 理系统到流行的管理信息系统,从简单的部门信息管理到企业战略信息管理, 反映了信息技术与管理活动相互融合的进程嘲。 2 0 世纪5 0 年代,企业将目光首先集中到物料需求方面,建立库存模型以 控制合理库存。1 9 6 5 年,实现使库存压缩到最低水平的物料需求计划( m r p , m a t e r i a lr e q u i r e m e n t sp l a n n i n g ) 管理方法。在此基础上增加能力需求计 划,使系统具有生产计划和能力平衡,且具有反馈能力的闭环m r p 系统。闭 环m r p 进一步扩展,形成了制造资源计划( m r p i i ,m a n u f a c t u r i n gr e s o u r c e s p l a n n i n g ) ,以物料需求为核心,将企业各个环节联系起来扩大信息共享,使 生产、销售、财务、采购等紧密结合在一起,组成全面生产管理的集成优化 模式。9 0 年代又形成企业资源计划( e r p ,e n t e r p r i s er e s o u r c e sp l a n n i n g ) 。 它既具有m r p i i 的实用性,还考虑到混合型生产需要,为企业提供了全方位 的解决方案。针对e r p 数据库设置复杂,实施过程太长等弊端,又出现动态 企业模型( d e m ,d y n a m i ce n t e r p r i s em o d e l ) ,把各种生产类型和制造环境 2 武汉理工大学硕士学位论文 的生产经营过程集成起来,超越企业边界把业务工作流程在标准参考模型的 基础上,进行业务流程映射,灵活加以组合,以适应各种情况“1 。 管理信息系统是一个不断发展的新型学科,其定义随着计算机技术和通 讯技术的进步也在不断更新,在现阶段普遍认为管理信息系统是由人和计算 机设备或其他信息处理手段组成并用于管理信息的系统。随着计算机和数据 库技术的迅猛发展,管理信息系统也出现了长足的进步,从主机终端模式到 客户机服务器模式,再到b s 三层体系,管理信息系统向着高度信息共享的 方向不断发展o ,。 主机终端模式是实现信息共享的最初模式,其特点是系统稳定、易于维 护,缺点是对主机资源要求过高,对大规模应用支持不够,难于实现跨硬件 和跨平台的信息共享,终端应用任务简单,造成了不必要的浪费。客户机服 务器模式是2 0 世纪9 0 年代兴起的一种全新的计算模式,它一方面充分共享 服务器的资源,另一方面充分利用了客户机的本地资源,可支持大规模的应 用,但其维护费用与推广费用比较大。3 。b s 三层体系结构正越来越受到企业 信息管理应用的青睐,这种模式的特点是所有应用服务都有专门的应用服务 器处理,减轻了数据服务器的处理负担,可利用服务器群集技术,支持大规 模用户的应用,客户端也只要一个浏览器,使用很方便0 1 ,但其数据安全性不 高、对服务器要求过高、数据传输速度慢、软件的个性化特点明显降低,难 以实现传统模式下的特殊功能要求。例如通过浏览器进行大量的数据输入或 进行报表的应答、专用性打印输出都比较困难和不便。 b s 与c s 这两种技术各有利弊,建立c s 、b s 结构相结合的网络构架 已成为必然趋势。信息发布采用b s 结构,保持了瘦客户端的优点。装入客 户机的软件可以采用统一的w w w 浏览器。而且由于w w w 浏览器和网络综合服 务器都是基于工业标准,可以在所有的平台上工作。数据库端采用c s 结构, 通过o d b c j d b c 连接。这一部分只涉及到系统维护、数据更新等,不存在完 全采用c s 结构带来的客户端维护工作量大等缺点。并且在客户端可以构造 非常复杂的应用,界面友好灵活,易于操作,能解决许多b s 存在的固有缺 点。对于原有的基于c s 体系结构的应用,只需开发用于发布的w w w 界面, 就可非常容易地升级到这种体系结构,并保留原来的某些子系统。这样就充 分地利用现有系统的资源。 管理信息系统是一个交叉性综合性学科,组成部分有:计算机学科( 网 3 武汉理工大学硕士学位论文 络通讯、数据库、计算机语言等) 、数学( 统计学、运筹学、线性规划等) 、 管理学、仿真等多学科。随着科学技术的高速发展,管理信息系统涉及的范围 还要扩大。 1 2 2 基于组件的软件开发技术 组件是软件系统中的一个具有功能性的部分,它可以与其他的组件集成 去形成一个更大的部分或者是一个完整的应用程序。组件也是一个可替换单 元,可以构成软件系统的即插即用( p l u ga n dp l a y ) 的软件成分,因此,采用 组件技术的软件系统更易于开发且具有更大的灵活性。组件技术就是利用某 种编程手段,将一些人们所关心的,但又不便于让最终用户去直接操作的细 节进行了封装,同时对各种业务逻辑规则进行了实现,向用户屏蔽了内部操 作细节,同时也体现了应用系统安全机制和事务机制嘲。完成后的组件是与语 言本身己经没有了任何的关系,甚至可以实现跨平台。对使用而言,它就是 实现了某些功能的、有输入输出接口的黑匣子。 软件开发技术的发展经历了由结构化一面向对象一组件软件技术这样一 个过程,从本质上来说,这也是一个软件重用思想不断深化、发展的过程。 将组件方法和软件工程方法学结合,就形成了一种新的软件开发模式基 于组件的软件开发模式“。基于组件的开发模型( c b s d ) 如图1 - 2 所示。将 一个软件系统的开发分为三个阶段:应用系统的分析和设计,组件开发和组 件装配。 面向对象软件的基本组成单元是类和对象,基础核心是“类”的概念。 类的封装问题是细粒度概念,对于整个软件来说,完全从类的分析、设计、 构建开始完成项目的开发耗费是巨大的。而组件提供了更粗粒度的封装方法。 组件的粒度可以用组件提供的功能的数量来度量,特别是功能点的数目来进 行度量。用功能点度量比用代码行度量更具有优势,因为用不同的编程语言 实现相同的功能代码行的差异比较大嘲。 4 武汉理工大学硕士学位论文 购封编 买装制 组现新 件有组 软件 件 应用系统分析与设计 系统需求分析 软件体系结构 领域工程 组 件 生 声 组件库 组 件 装 配 图1 - 2 基于组件的软件开发模型 由于组件数量、种类等的不断增多,组件库的管理方面的研究方兴未艾。 在组件库管理系统方面,美国军方与政府资助的项目建立了组件库系统如 c a r d s ,a s s e t ,d s r s 等“”。s t a r s 项目就组件库之间共享资源和无缝互操作 问题,提交了( a l o a f ,a s s e tl i b r a r yo p e na r c h i t e c t u r ef r a m e w o r k ) 开 发体系结构的组件库框架1 2 版“”。另外,在软件产品线系统方面,成功应 用实例有瑞典c e l s i u st e c hs y s t e m 公司和美国空军电子系统中心( e s c ) 的产 品线系统“”。 1 2 3 代码自动生成技术 代码生成即c o d eg e n e r a t i o n ,在使用v i s u a ls t u d i o 等开发工具的时候, 很多代码框架都是自动生成“”。代码生成可以看作是一种自动转换机制或者 一种由源模型到目标模型的映射,它是用工具程序( 代码生成器) 生成文档、 界面、程序段和控件等“1 。编译器其实是代码自动生成的一个例子,从高级语 言生成机器语言,编写程序的行为可以认为是在干涉编译器,影响它生成代 码的行为。 代码生成有不同的层次,最低级的是i d e 那样的函数框架,其次是m f c 那样的工程向导,再高级的是i d l 的接口定义语言,再然后是类似微软提出 5 武汉理工大学硕士学位论文 的d s l ( d o m a i ns p e c i f i cl a n g u a g e ) 。 国内夕 很多软件公司和各种计算机方面的研究机构都一直在研究代码自 动生成的技术。比如微软公司,微软的各种开发工具( 甚至包括像o f f i c e 这 类非严格意义上的开发工具) 就都提供了丰富的代码自动生成功能。这些功 能体现在各种各样的开发向导上如著名的m f c 应用程序框架、v i s u a lb a s i c 的“所见即所得”开发环境等。 代码生成器可以用在很多不同类型的应用软件开发中。最常用的在数据 库访问和用户界面上。最多的是用在数据库访问方面,因为数据访问的代码 是重复性非常高的。另外,生成数据访问层提供了技术平台的可移植性,并 为平台可移植的益处提供了标准。用户界面编码也有很大的重复性,所以它 也成为生成器的通常的目标。另外,个用户界面生成器也可以提供多方面 的实现,比如针对同一份定义,生成胖客户端和瘦客户端等。 对应用程序分类是困难的,特别是代码生成器的多样性。一种区分的方 法是观察生成器的输入和输出。在输入端可以使用代码,或者设计模型作为 输入。在输出端,可以根据一些条件创建输出,或者设计部分实现的新的代 码,或者设计完全实现并且需求不会扩展的代码“。 基于这样的输入和输出,我们可以得到一些生成器的模型: ( 1 ) c o d em u n g e r 。c o d em u n g e r 读入代码作为输入,然后创建新的代码作 为输出,这些新代码可以部分的或者完全的依赖于生成器的设计。 ( 2 ) 内联代码增强器。这种模型读入代码作为输入,以输入代码作为基础 创建新代码,但是有一部分代码基于原始代码的设计扩展而来,嵌入式s q l 语言,比如p r o * c ,就是内联代码增强器的例子。s q l 是用c 代码写的,生成 器从实现了命令和查询的c 代码中的s q l 扩展,创建c 代码。 ( 3 ) 混合代码生成器。这种模型使用代码作为输入,然后使用输入代码为 基础创建新代码,但是返回输出代码到输入的文件中。向导经常就作为混合 代码生成器来实现。代码中嵌入的特别的注释,来定义生成器添加新代码的 范围。 ( 4 ) 局部代码生成器。局部代码生成器使用一个抽象的定义( 如数据库设 计文档模型等) 来作为输入,然后创建输出代码,用户自己使用子类来做扩 展,以完整实现设计。 ( 5 ) 层生成器。这种类型的生成器从一个抽象的设计创建完整的输出代码 6 武汉理工大学硕士学位论文 集。这种代码意味着不作任何扩展。这是目前开源和商业生成器最普遍的形 式。 1 3 本文研究内容 根据大规模标准化生产的软件开发趋势与所存在问题的分析,现提出了 自己的解决方案基于n e t 组件的代码自动生成平台的研究设想。该设想 主要围绕组件的标准化、自动化生产以及可复用组件的管理、组装等问题进 行探索性的研究,结合管理信息系统的特征,论述了软件复用在开发该系统 中的实际应用。通过软件复用技术的系统分析,对基于复用的信息管理系统 的项目开发的关键技术进行了较深入的研究和实践,为基于复用的软件项目 开发提供参考。 本文采用面向对象的编程思想,结合v i s u a ls t u d i o n e t 和s q ls e r v e r 相关技术,实现系统的平台无关性,以及数据的标准化,有助于以后系统的 扩展性;采用组件技术,提高系统的灵活性和可扩展性;采用中间件技术, 提高系统的可靠性和稳定性;采用软件复用的思想,结合组件技术,实现某 些代码的自动生成,降低软件开发的强度,缩短开发周期,减少代码的重复 书写。 7 武汉理工大学硕士学位论文 第2 章n e t 介绍 m i c r o s o f t n e t 是为了简化在第三代因特网的高分布式环境下的应用程 序开发,基于开发的互联网标准和协议实现异质语言和平台的高度交互性而 构建的新一代计算和通信平台“。 m i c r o s o f t n e t 代表了一个集合、一个环境、一个可作为平台支持新一 代i n t e r n e t 编程结构1 。 ( 1 ) n e t 首先是一个环境,这是一个理想化的支持未来互联网环境,应该 以一个整体的服务的形式展示在最终用户的面前,用户只需要知道自己想要 做什么,而不需要一步步的在网上搜索、操作来达到自己的目标。 ( 2 ) n e t 谋求的是一种理想的互联网环境,而要搭建这样的一种互联环 境,首先需要解决的问题是针对现有的互联网的缺陷,来设计一种下一代的 i n t e r n e t 结构,这种结构是面向软件和应用层次的一种有别于浏览器只能景 泰浏览的可编程i n t e r n e t 软件结构。 ( 3 ) n e t 的最终目标就是让用户在任何地方、任何时间,以及利用任何设 备都能访问他们所需要的信息、文件、程序,而不需要知道这些东西存在什 么地方,甚至不需要知道如何获取,只需要发出请求,然后只管接受就是了。 而所有的后台的复杂性完全屏蔽起来。 2 1 n e tf r a m e w o r k n e tf r a m e w o r k 的目的是便于开发商更容易地建立网络应用程序和w e b 服务,它的关键特色是提供了一个多语言组件开发的执行的环境。从层次结 构来看,n e tf r a m e w o r k 又包括三个主要组成部分:通用语言运行环境 ( c o m m o nl a n g u a g er u n t i m e ) ,服务框架( s e r v i c e sf r a m e w o r k ) ,上层的两类 应用模板面向w e b 的网络应用程序模板( w e bf o r m s 或w e bs e r v i c e ) 和 w i n d o w s 应用程序模板( w i n f o r m s ) “” 图2 1 显示了n e t 框架的各个组成部分和它们之间的关系。 8 武汉理工大学硕士学位论文 图2 - i n e t 框架的逻辑视图 公共语言运行期( c l r ,c o m m o nl a n g u a g er u n t i m e ) 通过提供运行期执行 环境,建立了n e t 框架的基础。所开发的在此环境中运行的应用和组件称为 托管( m a n a g e d ) 应用和组件。之所以称为托管,是因为c l r 管理这些应用和 组件中的代码的执行过程,并提供大量服务简化其开发和部署。c l r 最主要的 一个特征是其自动内存管理和垃圾回收功能。这一特征有助于集中实现组件 行为而不用担心内存管理、内存分配相关的编程错误。 c l r 可以用具有良好设计的、简单直观的a p i 或者基于构造的对象模型来 表述组件功能,例如可以用元数据a t t r i b u t e 说明性地描述属性、方法和事 件。 c l r 另一个重要特征是一旦实现了组件,c l r 就可以自动在一个或多个应 用程序中应用,而不需要任何额外的注册。包含组件的配件可以按照并行的 方式进行改版和部署。也就是说,c l r 可以使多个版本的组件共存。这样就可 以进一步开发和部署组件的版本而不会因为疏忽而破坏任何依赖于当前组件 版本行为的现有应用程序。同时,c l r 提供真正的语言互操作性,可以从任 何n e t 框架编程语言( 如c # ,v i s u a lb a s i c n e t ,m i c r o s o f tj s c r i p t n e t 和m i c r o s o f tv i s u a lj # ) 中开发、使用和继承组件,这样组件开发者可以使 用任何喜欢的语言开发组件。 9 武汉理工大学硕士学位论文 n e t 框架类库位于c l r 的上层,它用一种一致、直观的方式显示了类的 丰富层次结构,其范围覆盖了大量不同应用程序和组件开发方案。通过提供 共同的基础和可以让所有组件及应用程序共享的a p i ,n e t 框架类库真正实 现了基于组件的编程。大多数类库可以分成多个部分( 如图2 - i ) 。每个逻辑部 分都与一组相关的命名空间相互关联。而命名空间用于在类库中基于共同且 的、功能或技术目标刨建逻辑与层次的类的分组。基类库( b c l ,b a s ec l a s s l i b r a r y ) 包括许多常用的命名空间如:s y s t e m ,s y s t e m c o l l e c t i o n s 和 s y s t e m d i a g n o s t i c s 。在所有的应用程序和组件中它提供了基本的功能,包 括最初的基本类型( i n t 3 2 、s t r i n g 和b o o l e a n ) 和常用的数据结构( 例如数组、 堆和哈希表) 。b c l 还包括诸如网络连接、协议实现、文件和i o 流的类、多 线程、文本处理、正则表达式、全球化支持和反射等功能。很多的高层类库 都是以此为基础而构建的。 表示数据访问的a d o n e t 层,作为s y s t e m d a t a 命名空间和其子命名空 间的一部分嵌入到n e t 框架中。a d o n e t 提供了对断开或离线缓冲的关系数 据进行操作的能力。数据访问层能访问各类数据库引擎,对微软的s q ls e r v e r 提供非常高性能的连接。 x m l 层是a d o n e t 层的对应层,包括了s y s t e m x m l 命名空间及其子命名 空间中的类。x u l 层能有效地访问有结构和无结构的瑚i 数据。此外,它还 提供各种基于行业标准的实现如可扩展样式表语言转换( x s l t ,e x t e n s i b l e s t y l e s h e e t l a n g u a g et r a n s f o r m a t i o n s ) ,x m l 路径语言( x p a t h ) 和x m l 模式 ( s c h e m a ) 。这一层的类库也赋予了x m l 格式串行化对象的能力。 g d i + 层代表由s y s t e m d r a w i n g 命名空间和其子命名空间提供的面向对象 制图和绘画功能,包含原始物体、向量技术和格式化文本,并能使用和创建 不同格式的图像文件,包括j p e g ,g i f ,b m p 和t i f f 等。 组件黻由s y s t e 吐c 删t m o d e l 和s y s t 印lc a 甲0 n e 训l i d d e ld e s i g n 命名空间的 类组成,提供把类转变成可设计的、定制的、串行和反串行的组件结构的设 计工具。微软的v i s u a ls t u d i o n e t 就是以此模型构建的。这一层使得不同 应用开发技术能够共享类似的组件创建和技术以及设计模式。 图2 - l 中的最顶层描述了应用开发技术:a s p n e r ( e bf o r m s 和) 矾w e b 服9 d 以及 w i n d o w sf o r m s ,即它提供基于n e t 框架支持的图形化w i n 3 2 客户端和服务器端应用程序 开发。在s y s t e mw i n d o w s f o r m s 命名空间中实现的w i n d o w sf o r m s 以开发w i n 3 2 平台 1 0 武汉理工大学硕士学位论文 的应用程序为目标。而在s y s t e m w e b 命名空间和其子命名空间中实现的 a s p 。n e t 和w e bf o r m s 支持w e b 应用程序以及x m lw e b 服务开发。 2 2a d o n e t a d o n e t 是n e t 平台中专门用于存取后端数据库与迸行数据操作的一组 类。a d o n e t 虽然是a d o 的改进版,但是它比a d o 的功能要强大了许多。a d o n e t 还引入了过去所没有的面向对象的结构,让数据应用程序的编写更为结构化。 除此之外,a d o n e t 也采用了标准的x m l 作为数据交换格式,让网络上的不同 系统也能相互运作。“” 如图2 2 显示了使用a d o n e t 时要用到的主要对象。 10 1 e d b c o n n e c t i 。n i s q l c o n n e c t i 。n i i l0 o 】e d b c o m m a n d io l e d b d a t “d a p t e rji s q l d a t a a d a p t e r j s q l c o m m a n d l0 l 0 1 e d b d a t a r e a d e rd a t a s c c s q l p a t a r e a d e r 图2 - 2a d o n e t 的主要对象 ( 1 ) 0 1 e d b c o n n e c t i o n 和s q l c o n n e c t i o n 对象,代表数据库连接;类似 于a d o 的c o n n e c t i o n 对象。 ( 2 ) o l e d b c o m m a n d 和s q t d b c o m m a n d 对象,代表将要直接发送到数据库 的s q l 文本字符串。类似于a d o 的c o m m a n d 对象。 ( 3 ) 0 1 e d b d a t a a d a p t e r 和s q l d a t a a d a p t e r 对象,用于保存数据库的 s e l e c t 、i n s e r t 、u p d a t e 和d e l e t e 命令。这些对象可以作为数据库和d a t a s e t 对象之间的中介。可以使用f i l l 方法填充d a t a s e t 对象并从数据库断开连接, 然后使用u p d a t e 方法重新连接到数据库,并将在d a t a s e t 对象中所做的更改 保存回数据库。 ( 4 ) d a t a s e t 对象包含实际数据的副本,类似于断开连接的a d o r e c o r d s e t 对象。d a t a s e t 对象可以包含d a t a r e l a t i o n 对象和c o n t r a i n t 对 武汉理工大学硕士学位论文 象,这两个对象分别代表数据库之间的关系和这些表中数据的约束。d a t a s e t 对象还可以包含d a t a t a b l e 对象,这对象又可以包含d a t a c o l u m n 和d a t a r o w , 使用d a t a t a b l e m a p p i n g 对象和d a t a c o l u m n m a p p i n g 对象,数据集可以将数据 库中的表和列映射为相应的d a t a t a b l e 对象和d a t a c o l u m n 对象。 ( 5 ) s q l d a t a r e a d e r 对象和o l e d b r e a d e r 对象代表连接的、仅向前移动 的、只读数据读取器、如果能够保持与数据库的持续连接,并且只希望读取 数据而不进行更改,在这中情况下,就不需创建d a t a s e t 对象。数据读取器 类似于连接的、单向、只读a d or e c o r d s e t 对象。 在a d o n e t 的主要对象中,d a t a s e t 是其核心对象之一,它提供了独立于 数据源的数据访问,为了实现这种平台互用性和可伸缩的数据访问,a d o n e t 采用了基于y o a l 数据的传输格式。当数据传输时,a d o n e t 是将d a t a s e t 表述 为x m l ,然后x m l 格式传递给其他组件。d a t a s e t 的这种设计使我们能够使用 x m l 方便地通过w e b 将数据传输。 a d o n e t 结构的另一个核心对象是n e t 数据提供程序( d a t ap r o v i d e r ) , 它用于实现数据操作和对数据的传递、单向、只读访问。n e t 数据提供程序、 d a t a s e t 和x m l 之闯的关系如图2 3 所示。 2 3 n e t 的优势 数据库 图2 - 3a d o n e t 框架图 对于那些以w i n d o w s 以n e t 为现阶段主流的开发技术和应用平台的公司 而言,m i c r o s o f t 现在主推的n e t 成为了公司以后开发的一个主流技术“”。 武汉理工大学硕士学位论文 以往使用微软开发技术的开发人员一直习惯使用a s p 进行w e b 编程,使 用v i s u a lb a s i c ,v c 进行企业级的应用程序编程,基于c o m d c 渊技术设计 应用程序。当今社会进入互联网时代,使用以往的工具、技术进行软件开发 时总存在着一些缺点。例如:用a s p 开发w e b 程序时,比较单一,交互性差, 缺乏灵活性,对用户的一些特殊数据无法处理;而用c o m d c o m 技术开发的程 序,很难在互联网上大规模部署和使用。首先,不可能大规模下载a c t i v e x , 其次,不能轻易跨越防火墙并受限于某些网络协议。 n e t 正好能解决以上的问题。这是因为n e t 开发的程序天生就是互联网 的w e b 程序,更易于让程序员使用不同的语言快捷刨建功能强大的互联网 应用程序的开发平台。n e t 公共语言运行时,不管是v i s u mb a s i c ,v c ,a s p , c # 开发的程序,源代码都被编译为i l ( 中间语言) ,要运行这个程序时在编 译成真正的本机代码,所有的工作都是由c l r 管理。因此,使用不同的n e t 开发语言进行开发,等开发完成了可以编译成标准的i l ,这样就可以把不同 语言开发出来的软件进行“软件聚集”,然后“缝合”一起变成一个完整的应 用程序“”。例如:n e t 的多层应用程序可用v i s u a lb a s i c n e t 编写用户界 面,使用c # 编写业务层,再用v c 来实现数据访问层。 c o m 组件和n e t 组件也有不同之处,d c o m 不能轻易地跨越防火墙并受限 于网络协议,而n e t 组件不像非d c o m 组件,它可以使用非专用的,独立于平 台的x m l 与其他在网络上任何位置的组件通信,n e t 组件不需要注册到注册 表内,部署也更加简便。 基于以上的优点,本文采用n e t 作为代码生成的目标,进行代码自动生 成技术的研究及实现。 2 4 本章小结 本章对n e t 平台架构及其优势,以及n e t 相关知识进行了介绍,阐明了 采用n e t 作为自动生成的目标的原因和必要性,指出了以n e t 作为自动生成 的平台优于以往微软开发技术如c o m d c o m 技术的地方。 1 3 武汉理工大学硕士学位论文 第3 章自定义组件技术的研究及实现 3 1 组件技术 组件技术是在面向对象技术基础之上丰富演化而来的“”。组件是软件系 统中的一个具有功能性的部分,它可以与其他的组件集成去形成一个更大的 部分或者是一个完整的应用程序。在数据库应用程序中,采用组件技术可以 达到隔离前端应用程序与数据库的目的。连接相应数据库之后,就不必考虑 低层细节,可以改变数据访问实现逻辑而不影响前端“”。组件也是一个可替 换单元,可以构成软件系统的即插即用( p l u ga n dp l a y ) 的软件成分,因此, 采用组件技术的软件系统更易于开发且具有更大的灵活性1 。 组件具有以下特点: ( 1 ) 封装性。组件是包装、分发和传递的单元。一个组件应当能够也必 须能够与其他组件实现交互操作。组件的一个重要特性就是它是一个“黑盒”。 其内部结构对于组件的客户来说是不可见的,
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
评论
0/150
提交评论