【毕业学位论文】(Word原稿)基于和欣Domain的沙箱模型的研究与设计-计算机软件与理论_第1页
【毕业学位论文】(Word原稿)基于和欣Domain的沙箱模型的研究与设计-计算机软件与理论_第2页
【毕业学位论文】(Word原稿)基于和欣Domain的沙箱模型的研究与设计-计算机软件与理论_第3页
【毕业学位论文】(Word原稿)基于和欣Domain的沙箱模型的研究与设计-计算机软件与理论_第4页
【毕业学位论文】(Word原稿)基于和欣Domain的沙箱模型的研究与设计-计算机软件与理论_第5页
已阅读5页,还剩51页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

保密 2 年 申请同济 大学工学 硕 士学位论文 二 七 年 三 月 基于和欣 沙箱模型的研究与设计 ( 国家“ 863”计划资助项目 编号: 2001 培养单位: 电子与信息工程学院 一级学科: 计算机软件与理论 研 究 生: 余明冈 指导教师: 陈榕 教授 副 指导教师 :顾伟楠 教授 保密 2 年 A in 2007 by 863” o. 2001 书脊 基 于 和 欣 D o m a i n 的 沙 箱 模 型 的 研 究 与 设 计 余 明 冈 同 济 大 学 学位论文版权使用授权书 本人完全了解同济大学关于收集、保存、使用学位论文的规定,同意如下各项内容:按照学校要求提交学位论文的印刷本和电子版本;学校有权保存学位论文的印刷本和电子版,并采用影印、缩印、扫描、数字化或其它手段保存论文;学校有权提供目录检索以 及提供本学位论文全文或者部分的阅览服务;学校有权按有关规定向国家有关部门或者机构送交论文的复印件和电子版;在不以赢利为目的的前提下,学校可以适当复制论文的部分或全部内容用于学术活动。 学位论文作者签名: 余明冈 年 月 日 同济大学学位论文原创性声明 本人郑重声明:所呈交的学位论文,是本人在导师指导下,进行研究工作所取得的成果。除文中已经注明引用的内容外,本学位论文的研究成果不包含任何他人创作的、已公开发表或者没有 公开发表的作品的内容。对本论文所涉及的研究工作做出贡献的其他个人和集体,均已在文中以明确方式标明。本学位论文原创性声明的法律责任由本人承担。 学位论文作者签名: 余明冈 年 月 日摘要 I 摘要 操作系统自 布以来仍然延用着面向单机的设计模型。随着网络时代的来临,信息技术正面临“以机器为中心”向“以网络为中心” 的转变, 实现网络服务和移动计算的关键技术是面向构 件、中间件的编程技术,以及一整套的运行环境、开发环境等平台技术。 此外,移动代码( 成为构成 行环境的常用构件,却使 到越来越大的威胁。这些恶意移动代码的攻击特征归纳起来主要有五种:读文件;写文件;主动执行程序;访问禁用端口;读写系统设备。现在针对一些恶意移动代码的保护措施如防火墙和实时病毒监控技术一定程度上缓解了移动代码的威胁,可一旦出现一种新特征的病毒、木马或者蠕虫绕过这些技术的识别和监控,伪装成授权用户对数据进行感染和破坏,传统操作系统仍将束手无 策。 所以无论从应用需求还是安全运行的角度,传统操作系统模型已经难以应付目前新运行环境的诸多问题。为了在 架下实现以服务的安全性、可用性和服务质量保证( 核心的高可信计算,本文根据和欣 型和恶意代码一般特征,在和欣新一代网络操作系统上首次引入了面向方面的动态可配置安全语义沙箱模型,提出了移动构件用户态隔离运行的控制方法。 本文首先介绍了 术、和欣操作系统和和欣 型。为了在互联网平台上提供可信计算环境,本文分析和归纳了以往传统平台上的沙箱模型,并结合 态多面聚合技术,在和欣平台上设计并提出了可配置安全语义沙箱模型,并阐述了设计特点和优化技术,使用户灵活控制代码的运行,同时使可疑代码的隔离环境透明化。论文阐述了和欣沙箱宿主 实现,包括客户程序集的运行机制,动态聚合监控方面和运行监控机制,这些设计充分利用了 言和和欣操作系统对面向方面编程的支持,并成功运行于 平台上。 关键词 : 面向方面编程;和欣 态聚合;沙箱隔离摘要 2 of of by of is to OA is of of on to of be as 1) 2) 3) 4) ) to as of of or of to be or no of of of of to a of oS OA OP is in on of 要 3 as as a of of in OP at an on up on a by of of is in AR OP 86 RM 要 4 目录 第 1 章 引言 . 6 景介绍 . 6 内外研究的现状 . 7 题研究的意义 . 9 文各部分的主要内容 . 9 第 2 章 相关技术与概念 . 11 术 . 11 件技术 . 11 向方面编程 . 13 术 . 16 欣操作系统 . 18 欣 型 . 19 箱技术 . 19 预技术( . 21 全模型 . 23 统 . 24 第 3 章和欣沙箱体系架构 设计 . 27 箱模型的设计与研究 . 27 欣沙箱模型的体系架构 . 29 计目的 . 29 系架构与模块组成 . 30 欣沙箱体系结构的设计特点 . 32 欣沙箱体系结构的特点 . 32 箱模型在实现优化上的考虑 . 32 第 4 章 和欣沙箱宿主 设计 . 33 箱宿主介绍 . 33 序集的加载运行机制 . 33 侧面的动态聚合 . 38 摘要 5 监控机制 . 45 第 5 章 工作总结与展望 . 48 作总结 . 48 作展望 . 48 致谢 . 49 参考文献 . 50 个人简历 在读期间发表的学术论文与研究成果 . 51 第 1 章 引言 6 第 1 章 引言 景介绍 移动代码( 不是一个新概念,理论上说,能引起远程系统不同动作的任何代码都可以被看作移动代码。移动代码是整个分布式计算领域正常工作的前提。它包括域名服务( 据信息、远端程序调用( 远端命令和系统远端外壳的执 行脚本。这种移动代码之所以非常流行,一是因为它有利于合理分配客户机服务器上的计算负荷,二是因为它可以降低对网络带宽的要求。 件就属于这种代码。只有在显示和查看 件时其文件内容才被执行。像微软 档中的宏一样,只有在文档被读时,宏才被解释执行。又例如 过 种功能强大的文本编辑器)人们可以阅读查看内部 息中嵌入的 序段才被激活。 件和 应用程序也是这样的例子。活动内容并没有带来新的危害,相反,它有助于暴露普通安全机制的不充分性。例如,当利用移动代码来更新 ,其界面范围相当小,使得系统更安全。但是,在调用 界面范围就扩展成整个 面,那么整个 安全漏洞都可能被发现。 可以通过以下两个因素来判断一个移动代码是否可靠。 (1) 移动代码的来源是否可靠,即是否来自一个不安全的链接,或者是否由一个没有经过认证的程序员编写; (2) 移动代码是否能够保证自身免于外界恶意输入的干 扰。 第一个因素表征的情况是恶意用户通过在代码中加入某些代码来达到非法目的,比如现在常见的包含木马和病毒的应用程序均属于此类。第二个因素往往是由于程序员自身水平的限制而产生的,程序员无法保证他所编写的代码不存在安全隐患。这两种情况非常普遍,甚至是难以预防,而系统安全的目标是无论出现以上哪种情况,均必须保证操作系统和其他系统资源的安全性。 最简单的解决方法是禁止不可靠的应用程序运行。但在实际操作过程中仅第 1 章 引言 7 仅依靠禁止是不够的。首先,移动代码的不断增加引起两种反应。一方面,人们尽力增强系统安全性以便较好地控制和利用 移动代码有利的一面,另一方面,人们恐惧移动代码不利的一面,想把它阻止在外围。但是大量此类的程序被广泛使用,无法全部摒弃(例如 前已经发现了近 30 个漏洞,但是依然非常流行)。如果摈弃会阻碍时代发展,因为移动代码和活动内容流通途径很多( 而滤掉每一个 息和部分消息是不可能的。其次,寻找具有同样功能的此类应用程序的替代品十分困难。 图灵奖获奖演说中曾提到 “代码的可靠性由编写代码的程序员的可靠性决定,我们只能完全相信自己编写的代码” 。因此, 综合考虑重写代码的困难,单纯依靠禁止或者重写不可靠应用程序来保障安全性是不可行的。 内外研究的现状 为了有效实现了对应用程序和系统的保护,就要使一个用户即便完全控制了可疑程序的情况下,依然无法对系统可靠性、完整性和可用性进行进一步的破坏。所有的破坏都必须限制在该应用程序自身拥有的资源之内,如显示窗口、临时文件和存储区等。从另一个角度讲,系统应该遵循最低权限原则,即仅仅为应用程序提供最少的能够满足它的合法行为的系统资源和权限。这样也就保证了一个应用程序所能产生的危害被牢牢的限制在它所处的运行环境中, 无法对外界进行干扰。相对而言,现在流行的系统,如 于应用程序的保护无法满足以上要求。当前一个没有被保护的应用程序被攻陷后,非法用户将具有执行该应用程序的账号的全部权限。如果应用程序的执行者是者 么非法用户将具有访问任何系统资源的权限,这种情况是不可接受的。 针对此类操作系统对于应用程序保护能力的不足,许多安全策略通过将一个应用程序限制在它的执行环境中来辅助提高系统的安全性。下面列举了 6 种此类的传统安全策略,同时讨论了它们的特点和不足。 ( 1)由 应用程序自身实现安全性 此种安全策略要求所有不可靠的应用程序必须全部按照某种简单安全的模式重新编写。很明显该方法不可行,因为重写这些应用程序,特别是在很短的时间内,需要较多时间和资金。比较可行的方法是一旦发现漏洞立刻编写漏洞第 1 章 引言 8 补丁,同时为所有的此类应用程序安装该补丁。从历史角度来看,这也是一个失败的方法,当应用程序代码量较大、应用较广泛时更是如此。例如某一段时间内, 程序曾经每个月都有新的漏洞出现,编写补丁的速度远远跟不上发现漏洞的速度,造成安全性没有任何保障。另外,目前还没有一个可靠的方 法能够通知所有用户关于漏洞的存在并且说服用户安装补丁。尽管如此,目前很多常见的应用程序只能依靠此类安全策略提供非常有限的安全保障。用户更需要一个通用的外在的安全保护措施。 ( 2)为操作系统添加新的保护功能 此类安全策略中比较有代表性的是 方案,即为 核提供 能。以下几个原因表明这个方法同样不实用。首先,这种方法无论开发还是安装均需要修改操作系统内核。因此很难得到广泛应用。其次,很多用户不希望借助专家来帮助他们重新编译操作系统。第三,修改内核风险很大,修改掉原来的漏洞有 可能会引入新的更严重的漏洞。 最好能够采用一个用户级方法,使用操作系统原有的访问控制方法作为补充。用户级的方法在最坏的情况下也仅仅是不能发挥作用,而不会对系统的安全性请成讲一步的损害。 ( 3)使用现有的访问监控器( 传统的操作系统访问监控模块(即通过用户 行的访问控制)无法直接保证系统免于受到不可靠程序的攻击。当某个帐号被攻陷后,访问控制器最多能够阻止攻击蔓延到新的帐号,但是此时破坏往往已经造成了。而且,在某些操作系统中,如果某个帐号(如 攻陷了, 整个操作系统会遭到攻击,此时访问监控器几乎没有任何作用。 ( 4) 防火墙 防火墙通过过滤网络数据流限制不可靠应用程序对于网络资源的访问。防火墙采取的包过滤手段无法区分不同类型的 信,也就无法检测出其中的恶意数据。理论上讲可以通过协议分析来获得所有的通信协议格式,但是这种方法代价极高,同时系统的复杂性和不可靠性也会增大。另外,防火墙策略无法限制用户对于内部系统资源的访问。 ( 5) 术 过字节码和沙箱技术实现安全性保障。它具有两个主要缺陷。第一,于原有系统的安全性提高没有任何 帮助。原有的代码(如 C 代码等)不第 1 章 引言 9 能运行在 境中,用 言重写原有的应用程序更不现实。第二, ( 6) CCxx为编译器提供了一个运行时校验代码的工具。 要通过在语句中添加特殊的校验代码来实现。但是, 要在编译时提供安全策略,而不是在运行时,同时 统无法处理已有的应用程序。 综上所述,当前大部分限制型安全策略无法达到期望的安全性要求。重写应用程序开销太大;修改内核比较困难并且风险较大。传统基于主 机的访问控制策略和防火墙的防护性能有所不足。对现存应用程序的需求也使得 术和 术不可行。因此,本文提出一种沙箱模型,其设计目标就是基于和欣术架设移动代码的安全策略可灵活配置的运行平台。 题研究的意义 和欣操作系统 属于国家“ 863” 课题 项目,是定位在网络时代的操作系统。为了解决不可靠应用程序对于系统的 网络 安全威胁,本文在和欣操作系统提出了一个可行的解决方案,即通过和欣沙箱模型对不可靠应用程序进行限制。通过将不可靠的以及危险的应用程序运行于某个封闭的特定运行环境中来限制它们的行为 ,从而减少或者消除潜在的安全隐患。 通过安全策略方面类封装和截取操作系统的系统调用,过滤掉可能有害的调用请求,也就限制了不可靠应用程序对于系统资源的访问,提高了系统的安全性。这种方法具有以下优势: (1) 能够灵活地透明地对应用程序强迫实行安全限制; (2) 能够在不修改代码的情况下提高常用的不可靠应用程序的安全性; (3) 提供比当前操作系统更高级的用户级安全保证; 文各部分的主要内容 网络时代的来临 ,对 移动代码安全运行 提出了新 的要求。国内外的许多研究机构和厂商在不同领域对如何更加 可靠 的 运行移动 构件 ,使其更加适合网络计算环境 的需求展开了研究。 本文以国家“ 863”软件专项“基于中间件技术的入式操作系统及跨操作系统中间件运行平台”为背景,探讨并提出了第 1 章 引言 10 在和欣操作系统上通过架设和欣 现沙箱模型,为移动代码的安全运行提供一个可靠灵活的运行平台。 第一章: 引言 介绍了网络计算的背景情况、移动代码带来的利弊以及国内外发展的现状。并介绍了课题研究的意义。 第二章: 相关技术与概念 介绍了面向方面编程和沙箱计数的主要概念,以及和欣 件技术、和欣操作系统的特性和和欣 型的设计。 第三章: 本章首先探讨了沙箱模型的设计方法和思路,然后介绍了和欣沙箱模型的设计目的、模块组成和框架结构,并阐述的这种设计的优点特性。 第四章: 本章主要介绍的是沙箱宿主的设计细节,首先对沙箱宿主做总体介绍,然后对用户程序集如何被加载到沙箱宿主中运行的机制做了详细分析,以及沙箱宿主如何动态聚合监控侧面构件,并灵活监控用户程序集的运行。 第五章: 总结本论文的研究工作,并对以后的研究工作提出了展望。 第 1 章 引言 11 第 2 章 相关技术与概念 件技术是面向构件编程的编程模型,它规定了一组构件间相互调用的标准,使得二进制构件能够自描述,能够在运行时动态连接。 容微软的 是和微软 比, 除了 过时的约定,禁止用户定义 非自描述接口;完备了构件及其接口的自描述功能,实现了对 扩展;对 用户界面进行了简化包装,易学易用。由此可知, 微软 一个子集,同时又对微软的 行了扩展,在 台 具的支持下,使得高深难懂的构件编程技术很容易被 C/C+程序员理解并掌握。 相比于微软的 术, 术完全放弃对非自描述数据类型的支持。对于 代的软件开发来讲,这是一个很好的选择。 代需要对数据进行远程传输,如果数据本身不带有对它自己的描绘的话,那在数据的传输和交换过程中就要付出更多的代价。为了支持字符串,数组,结构等非自描叙性数据, 供了一系列用于封装这些数据的自描叙数据类型。例如 。 般用来存储用户的常量字符串,它有一个定长的存储区,可 以存储用户的字符串,它还保存该字符串的长度。 供存储字节的缓冲区,可以存放任何数据, 存放的是一个 象, 来定义一个多维、定长、自描述数据类型的数组, 一个通用数据类型,它可以存储任何类型的数据。 同时这些数据对象本身是与微软定义的自描叙数据类型是兼容的。这就为件能够在 面正常的跨地址空间,远程调用提供了基本的前提。而且 描述数据类型与传统的数据类型之间转化更加灵活,它提供了一系列对字符串和字节流等进行自描述包装的数据类型 和方法。另外, 描述数据类型不仅可以在堆上分配,而且可以在栈上分配,提高了系统的效率。 第 1 章 引言 12 在 ,构件的一些相关运行信息都存放在系统的全局数据库注册表中,构件在能够正确运行之前,必须进行注册。而构件的相关运行信息本身就应该是构件自描述的内容之一,所以 术选择了把该类信息封装在构件所在的二进制文件中。 构件导出接口的描述方法之一是使用类型库( 据( 于描述构件信息的数据),类型库本身是跟构件的 件打包在一起的。但类型库信息却不是由构件自身来来解释,而是靠系统程序 提取和解释,这也不符合构件的自描述思想。而 可以通过构件 身提供的导出函数,非常容易的获得该信息。 在大多数情况下,一个构件会使用到另一些构件的某种功能,也就是说构件之间存在相互的依存关系。 ,构件只有关于自身接口(或者说功能)的自描述,而缺少对构件依赖关系的自描述。在网络计算时代的今天,正确的构件依赖关系是构件滚动运行、动态升级的基础。在 构件封装中,除了构件本身的类信 息封装在构件内外,还对构件的依赖关系进行了封装。即把一个构件对其它构件的依赖关系也作为构件的元数据封装在构件中,我们把这种元数据称为构件的导入信息( 对于面向 务的应用软件开发,以及开发操作系统这样的大型系统软件而言,采用 件技术具有以下的意义: 不同软件开发商开发的具有独特功能的构件,可以确保与其他人开发的构件实现互操作。 实现在对某一个构件进行升级时不会影响到系统中的其它构件。 不同的编程语言实现的构件之间可以实现互操作。 提供一个简单、统一的编程模型 ,使得构件可以在进程内、跨进程甚至于跨网络运行。同时提供系统运行的安全、保护机制。 件与微软的 件二进制兼容,但是 开发工具自动实现构件的封装,简化了构件编程的复杂性,有利于构件化编程技术的推广普及; 件技术是一个实现软件工厂化生产的先进技术,可以大大提升企业的软件开发技术水平,提高软件生产效率和软件产品质量;软件工厂化生产需要有零件的标准, 件技术为建立软件标准提供了参考,有利于建立企业、第 1 章 引言 13 行业的软件标准和构件库。 向方面编程 向方面编程),是 司 使开发者更好地将那些本不应该彼此纠缠在一起的任务(例如运算和异常处理)分离开,从而为程序提供更好的封装性和互操作性。可以说是 向对象编程)的补充和完善。 入封装、继承和多态性等概念来建立一种对象层次结构,用以模拟公共行为的一个集合。当我们需要为分散的对象引入公共行为的时候, 显得无能为力。 也就是说, 许你定义从上到下的关系,但并不适合定义从左到右的关系。例如口志功能。日志代码往往水平地散布在所有对象层次中,而与它所散布到的对象的核心功能毫无关系。对于其他类型的代码,如安全性、异常处理和透明的持续性也是如此。这种散布在各处的无关的代码被称为横切( 码,在 计中,它导致了大量代码的重复,而不利于各个模块的重用。 而 术则恰恰相反,它利用一种称为“横切”的技术,剖解开封装的对象内部,并将那些影响了多个类的公共行为封装到一个可重用模块,并将其名为“ 即方 面。所谓“方面”,简单地说,就是将那些与业务无关,却为业务模块所共同调用的逻辑或责任封装起来,便于减少系统的重复代码,降低模块间的藕合度,并有利于未来的可操作性和可维护性。 表的是一个横向的关系,如果说“对象”是一个空心的圆柱体,其中封装的是对象的属性和行为 ;那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱属性和行为 :那么面向方面编程的方法,就仿佛一把利刃,将这些空心圆柱体剖开,以获得其内部的消息。而剖开的切面,也就是所谓的“方面”了。然后它又以巧夺天功的妙手将这些剖开的切面复原,不留痕迹。 使 用“横切”技术, 软件系统分为两个部分:核心关注点和横切关注点。业务处理的主要流程是核心关注点,与之关系不大的部分是横切关注点。横切关注点的一个特点是,他们经常发生在核心关注点的多处,而各处都基本相似。比如权限认证、日志、事务处理。 作用在于分离系统中的各种关注点,将核心关注点和横切关注点分离开来。正如 司的高级方案构第 1 章 引言 14 架师 说, 核心思想就是“将应用程序中的商业逻辑同对其提供支持的通用服务进行分离。” 实现 技术,主要分为两大类:一是采用动态代理 技术,利用截取消息的方式,对该消息进行装饰,以取代原有对象行为的执行;二是采用静态织入的方式,引入特定的语法创建“方面”,从而使得编译器可以在编译期间织入有关“方面”的代码。然而殊途同归,实现 技术特性却是相同的,分别为 : ( 1) 连接点( 是程序执行中的一个精确执行点,例如类中的一个方法。它是一个抽象的概念,在实现 ,并不需要去定义一个 ( 2) 切入点( 本质上是一个捕获连接点的结构。在 ,可以定义一个 捕获 相关方法的所有调用。切入点需要在方面中定义,以便编织器在确定的位置织入通知( ( 3) 通知( 是 可执行代码,是执行“方面”的具体逻辑。是增加到切入点的可执行代码,实现横切关注点的功能。例如添加日志功能就是一个通知,切入点捕捉对象方法的每个调用,然后动态地插入通知( 即日志记录代码。 ( 4) 方面( 合起来就是 类似于定义的一个类,但它代表的更多是对象间横向的关系。封装横切关注点, 类似编程语言中的类。方面主要定义切入点( 通知( 方面编译器来编译,以便将横切关注点织入( 现有的对象中。 ( 5) 引入( 为对象引入附加的方法或属性,从而达到修改对象结构的目的。有的 具又将其称为 述的技术特性组成了基本的 术,大多数 具均实现了这些技术。它们也可以是研究术的基本术语。 实现主要有三个关键的部分,一是识别和分离关注点,二是各自的实现,最后是关注点的重新组合。重组时一方面要指 定重组的规则,另一方面要实现重组的自动化。由 现的系统由两个突出的特点,一个每个关注点的实现都是独立的,二是最终的系统是由松散耦合的模块化的关注点来搭建的。 术的优势是显而易见的。在面向对象的世界里,人们提出了各种方法和第 1 章 引言 15 设计原则来保障系统的可复用性与可扩展性,以期建立一个松散耦合、便于扩展的软件系统。例如 出的“设计模式”,为我们提供了设计的典范与准则。设计模式通过最大程度的利用面向对象的特性,诸如利用继承、多态,对责任进行分离、对依赖进行倒置,面向抽象,面向接口,最终设计出灵活、可扩展 、可重用的类库、组件,乃至于整个系统的架构。在设计的过程中,通过各种模式体现对象的行为、暴露的接口、对象间关系、以及对象分别在不同层次中表现出来的形态。然而鉴于对象封装的特殊性,“设计模式”的触角始终在接口与抽象中大做文章,而对于对象内部则无能为力。 通过“横切”技术, 术就能深入到对象内部,方便地截取方法之间传递的消息。由于将核心关注点与横切关注点完全隔离,使得我们能够独立的对“方面”编程。它允许开发者动态地修改静态的 型,构造出一个能够不断增长以满足新增需求的系统,就象现实世界中的对象会在其生 命周期中不断改变自身,应用程序也可以在发展中拥有新的功能。 设计软件系统时应用 术,其优势在于 : 在定义应用程序对某种服务 (例如日志 )的所有需求的时候。通过识别关注点,使得该服务能够被更好的定义,更好的被编写代码,并获得更多的功能。这种方式还能够处理在代码涉及到多个功能的时候所出现的问题,例如改变某一个功能可能会影响到其它的功能,在 把这样的麻烦称之为“纠结( 。 利用 术对离散的方面进行的分析将有助于为开发团队指定一位精于该项工作的专家。负责这项工作的最佳人选将可以 有效利用自己的相关技能和经验。 持久性。标准的面向对象的项目开发中,不同的开发人员通常会为某项服务编写相同的代码,例如日志记录。随后他们会在自己的实施中分别对日志进行处理以满足不同单个对象的需求。而通过创建一段单 独的代码片段, 供了解决这一问题的持久简单的方案,这一方案强调了未来功能的重用性和易维护性 :不需要在整个应用程序中一遍遍重新编写日志代码, 得仅仅编写监控方面( 为可能,并且可以在这之上为整个应用程序提供新的功能。 总而言之, 术的优势使得需要 编写的代码量大大缩减,节省了时间,控制了开发成本。同时也使得开发人员可以集中关注于系统的核心商业逻辑。第 1 章 引言 16 此外,它更利于创建松散祸合、可复用与可扩展的大型软件系统。 制 使用户能够在完全不用修改源代码的情况下简单而方便的动态聚合两个 件类,从而生成一个具有两个 件类所有接口实现的新构件类。 术是由 象、动态聚合和对象环境组成。 态聚合(或织入 拆卸是本文沙箱模型实现安全语义 动态可配置的关键技术。 在 ,聚合体现了组件软件的重用性,聚合的目的就是使两个组件对象特征成为一个组件对象 (外部对象 )的特征,而另外一个组件对象对客户透明。 然而 聚合体现的只是一种静态的聚合方式,外部对象 B 在聚合内部对象 A 时,只有在创建内部对象 A 时才可发生聚合,也就是在 时候将外部对象指针作为参数传入。 件的聚合模型在 合模型的基础上,实现了动态聚合方式,加 上 对象环境以及 件自动代码工具, 件的聚合简单而灵活,可随时聚合,随时卸载,发展为面向方面的聚合模型。 ( 1) 象 象属于必须实现特殊基接口 特殊构件类,其特征是只有象才可被其它构件对象聚合 , 同时也可以聚合其它 象。 件对象基接口 实现仅做简单的转接。如果 方法调用则会被委托给外部对象上。外部对象保存 象的 接口指针,用于 象真正的接口查询,类似于 非委

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论