已阅读5页,还剩68页未读, 继续免费阅读
(计算机应用技术专业论文)net平台下的插件式信息系统的研究与实现.pdf.pdf 免费下载
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉理1 :大学硕十学位论文 摘要 伴随着计算机科学技术的发展,企业信息系统的开发技术在不断发展。为 了应对全球化的激烈竞争,我国的相关企业越来越重视信息化建设和规范化管 理。虽然信息系统的开发有一定程度的相似度,但是豳于企业业务流程易发生 变化,导致信息系统需求的变化比较频繁,所以建立一个通用的平台来简化信 息系统的开发和实现,并保证其扩展性,就成为了当前的一个研究热点。 现有的大多信息化应用系统,在业务扩展方面都不太方便,虽然有部分系 统实现了d l l 方式的部分业务更新,但无法提供企业用户自己定制的功能。本文 采用插件技术和代码生成技术对这些问题进行了探索研究。采用代码生成技术 和插件开发技术能大大简化程序开发工作量,有效地提高了系统的可扩展性、 可配置性和可重用性。 通过分析w e b 系统开发的流程,总结了基于w e b 的快速开发平台的功能需 求和代码生成器的实现模型;讨论了代码生成技术、反射机制、元数据的获取 和c o d e d o m 结构等;并详细阐述了基于三层架构w e b 页面的代码生戚技术的 实现机制 接着,采用a o p 面向方面编程技术,讨论了插肄式信息系统的框架,并贪 绍了插件应用中关键的n e t 反射技术。对插件开发平台进行模型设计,并对权 限管理、文件下载及舨本管理等共性模块,封装成子援 牛,验证了技术方案的 可行性。 最后,结合修艇企业信怠化管理中的公文管理子系统,利用捶件技术和代 码生成技术进行了部分实现。通过实例证明,代码生成技术与捅件技术的结合, 不仅加快了w e b 系统开发速度,而且保证了系统的可扩展性和便捷性。 关键词:插件;c o d e d o m ;a o p ;软件配置;代码生成 武汉理工人学硕士学位论文 a b s t r a c t a l o n gw i t ht h ed e v e l o p m e n to fc o m p u t e rs c i e n c ea n dt e c h n o l o g y , e n t e r p r i s e i n f o r m a t i o ns y s t e m sd e v e l o p m e n tt e c h n o l o g yc o n t i n u e st od e v e l o p i nr e s p o n s et o f i e r c e9 1 0 b a lc o m p e t i t i o n ,c o m p a n i e sh a v ei n c r e a s i n g l yr e c o g n i z e dt h er e l e v a n c eo f c h i n a si n f o r m a t i o nc o n s t r u c t i o na n ds t a n d a r d i z e dm a n a g e m e n t a l t h o u g ht h e d e v e l o p m e n to fi n f o r m a t i o ns y s t e mh a sac e r t a i nd e g r e eo fs i m i l a r i t y , b u td u et o c h a n g e si nb u s i n e s sp r o c e s s e se a s y , s ot h er e q u i r e m e n tf o ri n f o r m a t i o ns y s t e m si s c h a n g i n gm o r ef r e q u e n t l y t h e r e f o r , b u i l d i n gac o m m o np l a t f o r m t os i m p l i f yt h e d e v e l o p m e n ta n di m p l e m e n t a t i o no fi n f o r m a t i o ns y s t e m sa n de n s u r i n gi t ss c a l a b i l i t y , h a sb e c o m eo n eo ft h ec u r r e n tr e s e a r c hf o c u s m o s to ft h ee x i s t i n gi n f o r m a t i o nt e c h n o l o g ya p p l i c a t i o n s ,i nt h ee x p a n s i o na r e a a r en o tv e r yc o n v e n i e n t ,a l t h o u g hs o m es y s t e m a t i cw a yt oa c h i e v ead l lp a r to ft h e b u s i n e s su p d a t e ,b u tc a nn o tp r o v i d eb u s i n e s su s e r so w n c u s t o mf u n c t i o n s 。i nt h i s t h e s i s ,i td o e sr e s e a r c ho np l u g i nt e c h n o l o g ya n dc o d eg e n e r a t i o nt e c h n i q u e s u s i n g c o d e g e n e r a t i o nt e c h n o l o g y a n d p l u g i nd e v e l o p m e n tt e c h n i q u e s c a ng r e a t l y s i m p l i l yw o r k l o a do fd e v e l o p m e n ta n de f f e c t i v e l yi m p r o v et h es y s t e ms c a l a b i l i t y , c o n f i g u r a b i l i t y , a n dr e u s a b i l i t y b ya n a l y z i n gt h ew e bs y s t e md e v e l o p m e n tp r o c e s s ,t h i st h e s i ss u m m a r i e st h e f u n c t i o n a lr e q u i r e m e n t so fw e b b a s e dr a p i dd e v e l o p m e n tp l a t f o r m a n dc o d e g e n e r a t o ri m p l e m e n t a t i o nm o d e l ;t h e n ,d i s c u s s e st h ec o d eg e n e r a t i o nt e c h n o l o g y , r e t i e c t i o n ,m e t a d a t aa n dc o d e d o ms t r u c t u r e ;d i s c u s s e s t h em e c h a n i s mb a s e do n t h r e e t i e rw e bp a g e sc o d e g e n e r a t i o nt e c h n o l o g yi nd e t a i l t h e n ,t h et h e s i sd i s c u s s e st h ep l u g - i ni n f o r m a t i o ns y s t e mf r a m e w o r kb yu s i n g a o pa s p e c t o r i e n t e dp r o g r a m m i n gt e c h n o l o g i e sa n di n t r o d u c e s n e tr e f l e c t i o n t e c h n o l o g yo ft h ep l u g - i na p p l i c a t i o n s f o ri n s t a n c e ,p l u g i nm o d e ld e s i g n ,r i g h t s m a n a g e m e n t ,f i l ed o w n l o a d sa n dv e r s i o nm a n a g e m e n t ,t h e ne n c a p s u l a t e s t h e s e f u n c t i o n si n t oas u b p l u g i n s t h er e s u l t sv e r i f yt h ef e a s i b i l i t yo ft h et e c h n i c a l s c h e m e f i n a l l y , t h ec o m b i n a t i o no f t h ed o c u m e n tm a n a g e m e n ts u b s y s t e mi ns h i p r e p a i r e 燃e 翠虹s ei n f o r m a t i o nm a n a g e m e n t ,t h es y s t e mw a s p a r t i a l l yi m p l e m e n t sb yu s i n g p l u g i nt e c h n o l o g ya n dc o d eg e n e r a t i o nt e c h n i q u e s p r o v e db y a ne x a m p l e ,c o d e g e n e r a t i o nt e c h n o l o g y a n dt h ec o m b i n a t i o no fp l u g - i nt e c h n o l o g y , n o to n l y a c c e l e r a t et h ep a c eo fw e bs y s t e md e v e l o p m e n t b u t a l s oe n s u r et h es y s t 锄 s c a l a b i l i t ya n dc o n v e n i e n c e k e yw o r d s :p l u g - i n ;c o d e d o m ;a o p ;s o f t w a r ec o n f i g u r a t i o n ;c o d eg e n e r a t i o n 独创性声明 本人声明,所呈交的论文是本人在导师指导下进行的研究工作及 取得的研究成果。尽我所知,除了文中特别加以标注和致谢的地方外, 论文中不包含其他人已经发表或撰写过的研究成果,也不包含为获得 武汉理工大学和其它教育机构的学位和证书而使用过的材料。与我一 同工作的同志对本研究所作的任何贡献均已在论文中作了明确的说 明并表示了感谢。 签名:查塑日期:型诠! 驾茎日 关于论文使用授权的说明 本人完全了解武汉理工大学有关保留、使用学位论文的规定,即 学校有权保留交向国家有关部门或机构送交论文的复印件和电子版, 允许论文被查阅和借阅。本人授权武汉理工大学可以将本学位论文的 全部内容编入有关数据库进行检索,可以采用影印、缩印或其他复制 手段保存或汇编本学位论文。同时授权经武汉理工大学认可的国家有 关机构或论文数据库使用或收录本学位论文,并向社会公众提供信息 服务。 ( 保密的论文在解密后应遵守此规定) 研究生( 签名) :拥 别戤儿步啾日期椰h 硼 武汉理工大学硕+ 学位论文 1 1课题背景 第1 章绪论 近1 0 年来,随着i t 行业的飞速发展,计算机技术已经日益渗透到我们生 活的各个领域【l 】。计算机应用的普及不仅大大提高了我们在工作中的生产效率, 带动着我国乃至世界经济的高速发展,还极大的推动着社会文明和进步。在此 过程中,企业信息化的竞争也是越演越烈。企业通过自动化、信息化的管理模 式,规范了企业的管理流程,减少了人员配置的成本。同时,遍及国防、航空、 物流、交通等各大行业在内的企业信息化进程,必然导致各种行业数据积累。 通过对这些旧的数据的研究和分析,可以给企业的决策人提供更加切合实际的 企业发展解决方案。 然而,通过研究信息系统的开发过程我们会发现一个特性,那就是信息系 统的丌发在一定程度上有很大的相似度,如信息系统一般通过数据库系统来保 存业务数据,那么在信息系统的操作过程中不可避免的就需要涉及到怎么样来 实现对数据库的操作( 通常包括数据库连接、查询、修改、删除等操作) 。但是 由于不同领域具有不同的业务需求,信息系统的丌发又必须按照实际的业务需 求来进行【2 j 。此外,不同的用户群体和不同的网络环境等也同样制约着信息系 统的设计和开发。 那么,如何建立起一个通用的平台来适应并简化不同需求和环境下实现信 息系统的开发,并保证其扩展性,也就成为了本文研究的一个重点课题。 目前,很多的组织和公司都在致力于这个方面的理论研究并提出了一些具 有一定通用性的理论成果,如w e b s e r v i c e 、p l u g - i n 等。这些理论和实践成果, 奠定了代码自动生成技术与插件的基础。丌发人员通过分析不同领域不同需求 中的系统开发流程,可以抽象出具有共同点的处理流程和步骤,并按照一定的 理论和规则封装成插件加以实现,并结合面向对象的设计原理,给信息系统的 开发人员提供合适的接口。系统丌发人员在进行信息系统的开发的过程中只需 要调用这些接口,就能使得这些插件无缝地与主程序集成在一起运行。 调查数据显示,典型的用户总是为寻找他们真f 需要1 0 的功能特征而苦 恼【3 j 。而插件开发的思想则为其提供了一个非常理想的解决方案,人们可以紧 武汉理工人学硕士学位论文 缩系统核心,将扩展功能做为插件以供用户的选择,真正实现个性化的定制4 1 。 1 2 插件开发技术的研究现状 从上世纪6 0 年代开始到现在,软件开发和研究人员一直在致力探讨与研究 各种软件开发方法【5 】。但是如何高效的进行软件开发一直困惑着计算机领域。 但是,人们普遍认为未来的软件开发出来的系统具有以下优点: ( 1 ) 维护性和扩展性强,容易进行维护和扩展。 ( 2 ) 与旧的系统兼容性强。 ( 3 ) 代码或模块具有较好的重用性【6 1 。 ( 4 ) 系统的设计满足高内聚、低耦合的要求,彼此相关度低,不会因修改 产生起连锁反应。 ( 5 ) 面对需求变动时很容易调整c 丌。 在上述期望的驱动下,软件技术人员通过总结之前的软件开发方法、并借 鉴哲学等学科的一些理论知识,提出了一系列优秀的软件设计方法。 1 ) 基于面向对象框架的设计和开发 面向对象的开发方法是一种强有力的开发方法,它在模块化、可复用性、 可扩展性、反向控制等方面有其特有的优越性【8 】。采用基于框架的方法开发软 件,可以以框架为复用部件的基本单元来实现软件工业化生产,有效地降低软 件丌发的成本,提高生产效率和软件可靠性,尤其对特定领域复杂系统的高可 靠专用软件更具有实用价值,为这些特定领域的软件开发提供了一种强有力的 技术。基于框架的软件开发过程如图1 1 所示: 图1 1基于框架的软件丌发过程 ( 1 ) 领域分析:就是在给定的某一领域,通过分析找到对所有应用程序来 说的共同的类和对象,建立领域模型,领域模型中包含了该领域中的需求关系、 武汉理工大学硕士学位论文 领域中的相关概念及它们之间的关系【9 1 。该模型注重领域实体而非实现细节【10 1 。 ( 2 ) 需求分析:为了捕获所有有效的需求,并提交一个能满足这些需求的 理想系统,结合领域分析,找出系统的共同点,给出系统需求说明书【l l 】。 ( 3 ) 框架设计:主要包括框架体系结构设计和详细设计两个部分。在体系 结构设计阶段,结合设计模型,定义抽象类,使得整个系统结构的设计支持灵 活的变化【1 2 1 。在详细设计阶段,将描述在体系结构设计中抽象出来的类,并精 确地定义它。 ( 4 ) 框架实现:是对框架中的抽象类和具体类进行编码,一般采用自顶至 下的开发方法【l3 1 。在实现过程中,还必须定义一个完整的实现标准,如编码的 统一性。这样做可以使得开发出来的框架更容易被应用程序开发人员所理解和 应用。 ( 5 ) 测试:一般分为单元测试和集成测试。其中,单元测试又分为结构测 试和功能测试【l4 1 。结构测试需要熟悉该单元的内部结构,对单元的代码和分支 结构进行测试,主要是验证单元的可靠性;而功能测试则不关心该单元的内部 结构,主要测试单元对特定输入的响应,检查是否符合该单元的功能需求f ”】。 集成测试则是测试这些软件单元集成在一起时,是否能满足整个程序的功能要 求。同其他的软件开发过程一样,以上所述的阶段都是相互重叠,不断反复的 过程。 ( 6 ) 应用程序设计和实现:就是通过对应用程序进行分析和设计,得到应 用程序在该领域的特殊要求,从而扩展框架来实现该应用程序。 2 ) 组件技术开发 组件是自包含的抽象数据类型,是软件系统中的一个具有功能性的部分, 并能够被组装在一起形成完整的程序【1 6 】。同时,它也是一个可替换单元,可以 构成软件系统的类似于硬件系统的即插即用的部分。软件丌发的发展史实际是 一部我们思维不断抽象拔高的发展过程,这种抽象概念非常类似于建模的思考 方式:即要贴切地描述事物,忽视次要的细节。抽象体现在软件丌发上就是每 个具体项目需要完成的代码行数量越来越少。组件技术就是利用某种编程手段, 将一些上层丌发人员所关心的但又不便让他们去直接操作的细节部分封装起 来,让这些开发人员不需要了解过多的细节和内部操作,只需要全心关注业务 逻辑就足够了【1 7 】。对使用者而言,组件就是实现了某种特需功能的、具有相应 的输入输出接口的黑匣子,这种做法体现了应用系统的安全机制和事物机制。 武汉理工大学硕士学位论文 软件开发技术在经过结构化的开发技术和面向对象的开发技术之后,通过 总结和创新将组件方法和软件工程方法学结合起来,形成了一种全新的软件开 发模式基于组件的软件开发模式【i 引。组件典型的例子如m i c r o s o r 公司的 a c t i v e x 和b o d a n d 公司的v c l 组件。整个软件系统的开发分为三个阶段:应 用系统的分析和设计、组件开发和组件装配。比较出名的开发模式是m i c r o s o r 公司开发的基于c o m 组件的开发模式。 通过黑箱技术这些组件被设计成为定义了一个相互协调的操作的集合( 组 件库) ,该操作集可以通过在语法上一致的接e l 来访问【l9 1 。但是每一个组件在开 发时都假定了它的存在环境,如果组件假定的环境不同,它们就不可能在一起 很好地工作。 虽然在过去的1 0 年面向对象技术已经取得了很大的进展,但是以构件为基 础的软件工程仍然未达到成熟。而以“一切都是插件”为核心思想的工程开发平 台取得了极大的成功,e c l i p s e 平台毫无疑问是插件平台的最优秀的代表。 促成e c l i p s e 等平台成功的原因主要包括以下几点: ( 1 ) 从粒度上分析,插件组件是粗粒度的,它们可以被看作是一些小应用 程序,直接为用户服务,并具有明显的特点,那就是他们基本上都是独立的, 对于其他组件依赖有限。 ( 2 ) 从相互关系上看,组建之间有明确的规则来指定它们的依赖和相互作 用关系。这些规则必须是精确的描述系统与插件如何进行配合。 ( 3 ) 在集成方法上,e c l i p s e 和类似的系统已经证明了如何遵循规则实现无 缝集成。 1 3 选题来源以及论文组织结构 1 3 1选题来源 本课题主要针对笔者参与的船舶行业信息系统项目的研发实践,结合该领 域信息化层次和特点提出的,目的是提出一个基于n e t 平台的插件式信息系统 丌发方法。 4 武汉理工人学硕士学位论文 1 3 2 论文组织结构 本文主要分为六个部分: ( 1 ) 绪论。从课题的选择入手,分别阐述了企业信息系统开发的共同点和 差异,提出了用代码自动生成技术来实现系统开发的共同点,用插件开发技术 来实现差异功能。 ( 2 ) 第2 章。通过分析当前插件开发技术,特别是e c l i p s e 插件开发平台, 分析了其优势与劣势。总结其优秀的设计思想和模式,在插件技术开发应用。 对n e t 框架,c o d e d o m 架构,对象持久化技术进行分析,解决如何在n e t 中 实现三层架构代码生成。 ( 3 ) 第3 章。a s p n e t 快速开发框架的设计与实现。首先分析基于a s p n e t 技术的w e b 开发流程以及优化方法进行分析,然后通过抽象工厂模式,桥接模 式对整体框架进行建模,最后对于实现细节进行描述。 ( 4 ) 第4 章。通过对插件接口定义,采用x m l 文件描述插件本体以及插件 的验证与装载机制进行分析,最后采用单件开发模式分析了登陆子插件的实现。 采用w e bs e r v i c e 来封装自定义流程处理,s o a p 来进行传输消息,实现插件与 宿主程序的通信。 ( 5 ) 第5 章。对于修船厂的办公自动化进行分析,运用快速开发平台来生 成基本功能门户网站,最后以公文管理子模块为实例进行分析与演示。 ( 6 ) 总结与展望。 武汉理t = 大学硕士学位论文 第2 章插件式框架的研究以及n e tf r a m e w o r k 相关概念 随着计算机技术的发展以及应用的不断深入,软件的规模越来越大、功能 越来越复杂,而用户对于软件快速适应变化的要求也越来越高【2 0 1 。对软件开发 人员来说,为了满足易变的软件需求,实现软件的模块化设计和增量、迭代的 软件丌发过程,面向插件的应用框架越来越受到人们的关注,尤其是以插件为 核心的e c l i p s e 开发平台。 2 1 e c l i p s e 插件框架的分析及相关工作 e c l i p s e 不是嵌入式环境,而是从企业开发领域衍生出的平台,它使得各个 公司能通过使用标准的机制来将自己成熟的工具作为插件集成到这套优秀的平 台上面,并提供标准用户界面f 2 。e c l i p s e 框架可以容纳任意数量的插件,这些 插件可以是完整的环境,独立的应用程序或者仅仅在现有插件中新增几个窗体。 通过a p i 来编写插件有严格的准则,这确保了不同应用程序之间的一致性。不 过,e c l i p s e 也可以向导、模板、菜单和示例的形式提供大量的帮助。使得时间 的a p i 部分相对简单【2 2 1 。e c l i p s e 框架和插件的g u i 部分都是使用j a v a 编写的 ( 易于编程和移植) ,而e c l i p s e 开发环境( 用于创建e c l i p s e 插件) 也提供了几 个有用的工具包。被称为s t a n d a r dw i d g e tt o o l k i t ( s w t ) 的工具包是用来创建 按钮和对话框等低层次功能的,而更高层次的j f a c e 提供了一个工具包,用来 帮助创建视图、队列和树,如图2 1 所示。 图2 1 描述了e c l i p s e 平台下的插件式开发方法,只有g u i 部分需要使用 j a v a 编写,而插件的其他部分不一定使用j a v a 编写。因此,其他语言( 如c 或 c + + ) 编写的应用程序无须重写全部代码就能够移植为e c l i p s e 插件,对开发人 员具有非常大的便利。 6 武汉理丁大学硕七学位论文 、 e c l i p s ep r o j e c t , 、 ,7 、- , 图2 一le c l i p s e 平台架构的插件式开发 2 2n e tf r a m e w o r k 2 2 1元数据 元数据是一种二进制信息,用以对存储在公共语言运行库中的可移植可执 行文件( p e ) 文件或存储在内存中的程序进行描述的数据【2 3 1 。当将代码编译为p e 文件时,编译器会将元数据插入到该p e 文件的元数据描述区域;在模块或程 序集中定义和引用的每个类型和成员都将在元数据中进行说明。当执行代码时, 运行库将元数据加载到内存中,并引用它来发现有关代码的类、成员、继承等 信息。 2 2 2 程序集 程序集是为了协同工作而生成的类型和资源的集合,这些类型和资源构成 了一个逻辑功能单元【2 4 1 。它包含了部署、版本控制、重复使用、激活范围控制 和安全权限等基本单元。程序集为公共语言运行库提供类型实现所需要的信息。 对于c l r ,类型必须处于程序集上下文之中。 程序集是完全自我描述性的,是一个逻辑单元而不是物理单元,它可以存 储在多个文件中。如果一个程序集存储在多个文件中,其中就会有一个包含一 武汉理t 大学硕十学位论文 个入口的主文件,该文件描述了程序集的其他文件。 程序集的一个重要特性是它包含的元数据描述了对应代码中定义的类型和 方法,程序集也包含描述程序集本身的元数据【2 5 1 ,这种程序集元数据包含在一 个称为程序清单的区域中,可以检查程序集的版本以及完成性,并且使n e t 程 序相对c o m 组件更高的可交互性。 根据程序集的运行特性可以将程序集划分为静态和动态的。静态程序集可 以包括n e tf r a m e w o r k 类型,以及该程序集的资源,它们存储在磁盘上的可移 植可执行( 简称p e ) 文件中【2 6 1 。而动态程序集则直接从内存运行并在执行前不存 储到磁盘中,可以在执行动态程序集后将其保存到磁盘上。 从构成上看,程序集包括自身的元数据、描述类型和方法的元数据、m s i l 代码和资源集,并且他们在同一个文件中的结构如图2 2 所示。 图2 2 单文件程序集 当一个程序集分布在多个物理文件中时,资源会被从m y c o m p o n e n t d l l 中 分离出来,并且m y u t i l m o d u l e 模块只包含一个类的类型元数据和m s i l 代码。 其结构图如图2 3 所示。 每一个程序集包含描述该程序中各个元素彼此之i 、日j 关系的数据集合,它们 记录在程序集清单中。程序集清单包含制定该程序集版本要求和安全标识所需 的所有元数据以及定义该程序集的范围和进行对资源和类的引用所需的全部数 据。 武汉理:1 = 大学硕十学位论文 2 2 3 反射机制 图2 - 3 多文件程序集 近年来,反射已经成为主流编程语言中必备的特色。它主要用于在应用程 序运行期间提供类型信息,一旦有了这些类型信息,开发人员就可以创建出具 有动态决议能力的应用程序【2 1 7 1 。 在n e tf r a m e w o r k 中,反射是经由t y p e 对象来操作的,其中分成两个部 分,一部分是提供该t y p e 本身的信息,比如p u b l i c 、s e a l e d 、s e r i a l i z a b l e 、a t t r i b u t e 和i n t e r f a c e 等,另外一部分是取得该t y p e 内的成员信息,如方法、属性、事件、 变量等,这一系列函数的返回值都是m e m b e r l n f o 类或其子类,如图2 4 描述了 相关类之间的关系。 户:i 占 吕吣c t ju 肛i 中m e m b e r l n f o 阁伞 i 害e t e 山r o 轧 i l 富惭帅南害胁n u n r o昌慨e 卜 亡f i e l d l n f o x 害c o n s t r u c t o m r o富m r o 图2 4 反射类层次图 9 武汉理 人学硕士学位论文 f i e l d l n f o 类代表成员变量,p r o p e r t y l n f o 类代表属性,e v e n t l n f o 类代表事件, m e t h o d b a s e 类细分为两个部分,c o n s t r u c t o r l n f o 类代表构造函数,m e t h o d l n f o 类代表成员函数。其中,t y p e 类本身也是m e m b e r l n f o 类的子类。 2 2 4a d o n e t 为了满足数据库应用软件不断提升的需求,数据库访问技术也经历了从早 期的l i b r a r y 模式到d r i v e r 模式的发展过程。此时,数据访问已经不再限定开发 人员使用特定的语言访问数据库。其中最具代表性的就是m i c r o s o f t 的o d b c 概念,它提供了一个d r i v e r 的通用架构,数据库厂商只需要依循这个标准就能 实现各式各样的d r i v e r 并挂载到o d b c 的系统中。但是,o d b c 复杂性太大以 至限制了它的广泛使用。 a d o 是m i c r o s o f t 继o d b c 提出的一个新的数据库访问技术【2 8 】,该技术不 仅提供o d b c 所提供的通用d r i v e r 外,还提供了类似c b d ( c o m p o n e n t b a s e d e v e l o p m e n t ) 的架构。 为了适应网络时代并支持轻量化d r i v e r ,a d o n e t 作为m i c r o s o t t 的新一 代产品问世了,它是一个通用型的数据库访问技术,也是一个轻量化的数据库 访问技术,具备通用的标准让a d o n e t 可以被用来访问不同的数据库,轻量 化则让数据库厂商在实现d r i v e r 时更加简单,图2 5 为a d o n e t 访问数据库 时的概念过程图。 l c l i e n t a d d l i c a t i 。n j l i n e td a t ap r o v i d e r i n a t 目ed r i v e r 目 u ed a t a b a s e 亏 图2 5a d o n e t 访问数据库概念图 如图2 5 所示,a d o n e t 是n e tf r a m e w o r k 中所包含的一组库,用于 在n e t 应用程序同各种数据存储去进行通信2 9 1 。它引入了过去没有的面向对象 1 0 武汉理- t 大学硕+ 学位论文 的结构,让系统开发更加便捷。同时,a d o n e t 还采用了标准的x m l 作为数 据交换格式,让网络上的不同系统也能相互运作。 a d o n e t 对象模型中有五大物件:c o n n e c t i o n 对象、c o m m a n d 对象、 d a t a s e t 、d a t a a d a p t e r 以及d a t a r e a d e r 对象。a d o n e t 对象分层结构如图2 - 6 所示。 图2 - 6a d o n e t 分层结构图 其中左边的对象c o n n e c t i o n 、c o m m a n d 、d a t a a d a p t e r 、d a t a r e a d e r 均为数 据库连接的对象。只有d a t a s e t 对象为数据库未连接的对象。 c o n n e c t i o n 对象主要是丌启程序和数据库之间的连结。没有利用连结对象 将数据库打开,是无法从数据库中取得数据的。这个物件处在a d o n e t 的最 底层,我们可以自己产生这个对象,或是由其他的对象自动产生【3 0 】。 c o m m a n d 对象主要可以用来对数据库发出一些指令【3 1 1 ,例如可以对数据 库下达查询、新增、修改、删除数据等指令,以及呼叫存在数据库中的预存程 序等。这个对象是架构在c o n n e c t i o n 对象上,也就是c o m m a n d 对象是透过连 结到数据源。 d a t a a d a p t e r 对象本质上是一系列c o m m a n d 对象的复合。通过建立独立的 d a t a a d a p t e r 对象,对和目标数据库交互的各种逻辑进行了全面的分析和抽象, 并把这些抽象完整的封装在d a t a a d a p t e r 对象的属性和方法中,极大地简化了程 序设计者的编程。 c o m m a n d 对象主要是在数据源以及d a t a s e t 之间执行数据传输的工作,它 武汉理t 大学硕士学位论文 可以透过c o m m a n d 对象下达命令后,并将取得的数据放入d a t a s e t 对象中。这 个对象是架构在c o m m a n d 对象上,并提供了许多配合d a t a s e t 使用的功能。 d a t a s e t 对象可以视为一个暂存x e ( c a c h e ) ,可以把从数据库中所查询到的数 据保留起来,甚至可以将整个数据库显示出来。d a t a s e t 的能力不只是可以储 存多个t a b l e 而已,还可以透过d a t a s e t c o m m a n d 对象取得一些例如主键等的 数据表结构,并可以记录数据表问的关联。d a t a s e t 对象可以说是a d o n e t 中 重量级的对象,这个对象架构在d a t a s e t c o m m a n d 对象上,本身不具备和数据 源沟通的能力;也就是说将d a t a s e t c o m m a n d 对象当做d a t a s e t 对象以及数据 源间传输数据的桥梁。 d a t a r e a d e r 对象是一次一笔向下循序的读取数据源中的数据,而且这些数 据是只读的,并不允许作其他的操作。因为d a t a r e a d e r 在读取数据的时候限制 了每次只读取一笔,而且只能只读,所以使用起来不但节省资源而且效率很好。 使用d a t a r e a d e r 对象除了效率较好之外,还因为不用把数据全部传回,可以降 低网络的负载。 d a t a s e t 类型是在s y s t e m d a t a 命名空间下定义的,而不是存在于某个n e t 数据提供者的命名空间之中【3 2 】。d a t a s e t 与提供者无关,一个d a t a s e t 实例可以 被多个n e t 数据提供者提供,甚至由x m l 数据来填充。另外一个特性是它与数 据源之间是断开连接的,所以它可以被传递于多个模块中。数据集还保存修改 过得数据,这样可以访问当前的数据,也能访问原始的数据,这在使用乐观的 并发更新时,证明对处理乐观的并发冲突很有用。 如图2 7 展示了d a t a s e t 及其相关联的类。 d a t a s e t 类可以包含多个表,也就是d a t a t a b l e 类,跟数据库一样,这罩也 可以使用d a t a r e l a t i o n 类定义表和表之间的关联。这个d a t a t a b l e 类由列、约束、 行的集合组成。列由d a t a c o l u m n 类定义,这个类有一些属性可以用来定义名称、 数据类型、默认值和最大长度等,而e x p r e s s i o n 属性允许类的值被动态创建。 这些表之间饿约束又c o n s t r a i n t s 的子类定义:u n i q u e c o n s t r a i n t 和 f o r e i g n c o n s t r a i n t 。d a t a t a b l e 中每条记录都由一个d a t a r o w 对象定义,可以使 用d a t a r o w 的i t e m 属性访问每个列的值。为了指明记录的状态,这旱还有 r o w s t a t e 属性,其类型是d a t a r o w s t a t e 枚举,包括a d d e d 、d e l e t e d 、d e t a c h e d 、 m o d i f i e d 和u n c h a n g e d 枚举值。而当访问记录的一个列,为做并发性检查,可 以使用d a t a r o w v e r i s o n 枚举( 包括c u r r e n t 、d e f a u l t 、o r i g i n a l 和p r o p o s e d ) 。 武汉理工大学硕士学位论文 r e l a t 图2 7d a t a s e t 类的关联 2 3 插件平台的基本机制 插件的实质是保持程序的主体( 平台) 不变,通过对相应的软件功能进行扩 展和加强来实现系统的特定需求【33 。当插件的接口公开后,任何公司或个人都 可以制作自己的插件来解决一些操作上的不便或增加新的功能,即实现真j 下意 义上的“即插即用”软件开发。 从整体上看,基于插件平台的应用系统主要包括四大部分:应用程序框架、 插件接口、插件和公共函数库,其结构如图2 8 所示。 图2 8 基于插件平台的应用系统结构 武汉理:1 = 大学硕士学位论文 2 3 1 插件接口定义 开发支持插件功能的应用程序必须解决主程序和插件之间相互通信的问 题。为了在主程序和插件之间能正确的相互通信,首先应该制定套通信通信 的标准,这个标准就是用来规定主程序和插件之间通信的接口【3 4 1 。简而言之, 插件接口其实就是一个调用规范,可以用i d l 描述,也可以是一段文字说明。 在软件开发的过程中,接口仅仅只是定义功能并强调功能的形式,不包括功能 的实现。插件按照这个协议的规范来实现,并加入到应用程序中,这样做极大 地提高了应用系统的灵活性。 在n e tf r a m e w o r k 环境下,插件接e li p l u g i n 是进行插件开发的一个非常 重要类,任何需要被平台直接识别的主入口必须继承该类1 3 5 1 。在实现过程中插 件标识是必须实现,且在引用过程必须引用宏c l a s sd e c l a r e ,来达到向平 台声明该插件主入口类的目的。 2 3 2 插件部署和检索 插件实现之后,需要安装到一个合适的位置供其他的程序来调用。一般来 说,一个完成的插件都会被部署到一些相关的配置文件中间,例如在w i n d o w s 平台下面插件一般被部署到注册表中。主程序启动的时候,会扫描注册表文件 并获取加载插件所需的相关信息,并对这些信息进行分析和处理,最后再根据 已知信息加载这些插件。 2 3 3 插件平台的增值服务 插件平台是实现插件式丌发的基础。它用于管理应用中需要用到的各个独 立的插件,并给它们提供统一的调用接口【3 6 】。但是,单个插件实现的功能有限, 不能满足用户在特定环境下的特定需求。这时,实现对已有插件的增值服务成 为了一个关键的技术。按照用户的特定需求,对多个插件进行组合和封装,以 达到用户使用的需要,并且能加快应用软件的开发。 1 4 武汉理工大学硕士学位论文 2 4 代码自动生成相关技术 2 4 1c o d e d o m 结构图 n e tf r a m e w o r k 中提供了名为“代码文档对象模型”( c o d e d o m ) 的机制【3 7 】, 该机制使开发人员可以在运行时根据表代码的单一模型,用多种编程语言生产 源代码。 为了能准确的描述源代码的意义,c o d e d o m 元素相互链接并形成一个数 据结构,并且这个结构图一般以某种特定的源代码的结构为模型。 s y s t e m c o d e d o m 命名空间定义可以表示源代码的逻辑结构的类型,并且这个 命名空间与具体的编程语言没有关系。s y s t e m c o d e d o m c o m p i l e r 命名空间定 义按照c o d e d o m 图生成源代码的类型,以及在受支持的语言中管理源代码编 译的类型。 如图2 - 9 所示为n e tc o d e d o m 的结构参考图: c o d e 编译块 c o d e 命名空问 c o d e 类型声明 c o d e 成员方法 c o d e 命名空问导入 c o d e 构造器 c o d e 表达式 c o d e 成员域 c o d e 片段表达式 图2 - 9c o d e d o m 结构图 c o d e d o m 在a o p 的实现中具有非常重要的作用。在源码级a o p 实现中, 除了语法分析器外,c o d e d o m 提供了所有的功能。 武汉理工人学硕十学位论文 2 4 2 对象持久化技术 持久化技术是一种对象服务,它把内存中的对象保存到磁盘等永久性外部 存储机构中,需要的时候能够从外存中读取数据并创建对割3 8 】。其实质就是将 关系数据库中的业务数据用对象的形式表示出来,并通过面向对象的方式将这 些对象组织起来,实现系统业务逻辑的过程。 关系数据库是目前广泛使用的存储机构,把对象的数据保存在关系数据库 中,需要建立对象到关系数据库的映射( o rm a p p i n g ) ,通常需要大量烦琐的编 码【3 9 1 。应用对象持久化技术,把数据持久化功能从对象中分离出来,使业务对 象与关系数据库之间不存在任何关系,消除两个组件的依赖,方便了软件丌发, 提高了软件复用,使用开发人员有更多的时间关注自己的业务逻辑。对象持久 化在软件系统中所处的位置如图2 1 0 所示。 碰二零 关系 錾 _叫对象持久 数据 爹;” 业务逻辑 业务对象 化工具 库 图2 1 0 持久化在应用系统中的位置结构图 在o r m ( o b j e c t r e l a t i o nm a p p i n g ) 过程中最重要的概念是映射( m a p p i n g ) , 通过这种映射可以使业务对象与数据库分离【4 0 】。从面向对象来说,数据库不应 该和业务逻辑绑定到一起,o r
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2020护理继续教育伤口换药考核试题及完整答案
- 2026阿斯利康合规测试内部员工分享原题及答案
- 2021年社会保障概论面试精简版题库及速记版参考答案
- 龙湖物业2021面试专属题库及考官评分标准解析
- 2023年融媒体笔试全真模拟卷题库及答案解析
- 黑龙江哈尔滨市第四十七中学校2025-2026学年度下学期七年级语文三月份阶段性测试(含解析)
- 购房协议书法律保护不
- 抖音修改实名信息申请书
- 讲好战疫故事弘扬中国精神
- 农村家禽购销协议书范本
- pr详细教学课件
- 村务监督委员选举会会议记录范文
- 福建省全国名校联盟2026届高三上学期联合开学摸底考试语文试题(含答案)
- 作物遗传育种课件
- DGTJ08-82-2020 养老设施建筑设计标准
- 2024年甘肃省白银市、武威市、嘉峪关市、临夏州中考物理试题及答案
- 2025年山西省中考英语试卷真题(含答案详解)
- 冷冻储备肉管理制度
- T/CBMCA 007-2019合成树脂瓦
- 医院培训课件:《人文关怀与人文护理》
- 2024届高考专题复习:论述类文本主观题型梳理及方法练习
评论
0/150
提交评论