没有合适的资源?快使用搜索试试~ 我知道了~
理论计算机科学电子笔记166(2007)111-125www.elsevier.com/locate/entcs使用微组件和设计模式构建演化事务服务RomainRoughen1 Philippe Merle2INRIA Futurs,JACQUARD项目,LIFL -里尔第一大学,59655 Villeneuve摘要现有事务服务的发展是有限的,因为它们与给定的事务标准紧密耦合,实现专用的提交协议,并支持固定类型的应用参与者。事务服务的下一个挑战将是处理演化问题。这种发展应该允许开发人员在设计时或运行时根据事务标准或应用程序需求调优事务服务。本文的贡献是介绍我们定义的构建各种演化事务服务的通用方法。这种常见的方法是基于微组件和设计模式的使用,其灵活性属性允许事务服务适应各种执行上下文。这种方法应用在我们的GoTM框架中,该框架支持构建实现多个事务标准和提交协议的事务服务。我们认为,使用细粒度组件和设计模式来构建事务服务是解决演化问题的有效方法,我们过去的经验证实,这种方法不会影响事务服务的效率。关键词:演化,事务服务,微构件,设计模式,CBSE,分形构件模型。1引言当前的事务服务不能很好地支持演化。在交易服务的可能演变中(例如,提交协议,事务模型),本文详细介绍了我们的方法,以解决由事务服务支持的事务标准和提交协议事实上,如今交易标准的发展越来越快,以适应中间件的发展。例如,最近发布了Web服务原子事务(WS-AT)规范,以提供事务支持Web服务[7]。但是这种事务标准的实现需要修改遗留事务服务以支持新的事务API、模型1电子邮件:Romain. inria.fr2电子邮件:Philippe. inria.fr1571-0661 © 2006 Elsevier B. V.在CC BY-NC-ND许可下开放访问。doi:10.1016/j.entcs.2006.09.011112R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111和传播协议。这就是为什么大多数事务服务通常仅与一个事务标准相关联,并且新事务标准的实现导致新事务服务的开发的原因在[21]中,我们证明了一个事务服务可以同时组成几个事务标准此事务服务是根据组成的事务OTS、JTS和WS-AT)。所得到的事务服务在事务标准之间共享一些公共实体(例如,提交协议,事务状态)并为每个事务标准的特性提供专用实体(例如,同步对象、XA资源)。类似地,我们观察到事务服务实现是为特定的应用程序上下文定制的。事务协议被选择,并且在应用程序上下文改变时保持不变。这可能会导致意外的不良表现。因此,遗留事务服务不支持提交协议的演进。在[22]中,我们展示了一个事务服务可以在运行时动态地切换几个2阶段提交协议,这取决于应用程序的执行上下文。最终的事务服务根据执行上下文选择最合适的协议。它比在进化系统中只使用一个提交协议性能更好,并且重新配置成本可以忽略不计。[21,22]中描述的演化事务服务是使用通用方法构建的。本文的贡献是介绍我们定义的这种常见方法。特别是,我们结合使用微组件和设计模式,以增加我们的方法的适应性。微组件概念可以表示组件池、消息传播策略,或要执行的命令。微组件是用Fractal组件模型[5]实现的,并集成在GoTM框架中。 我们认为我们-使用细粒度组件和设计模式来构建事务服务是解决演化问题的有效方法,我们过去的经验已经证实我们的方法不会影响事务服务的效率。本文的结构如下。第二部分介绍了分形元件模型和微元件的概念。 第3节说明了结构 使用微元件的设计模式。第4节讨论了我们的方法的好处。第5节介绍了一些相关的工作。第六节总结了本文的工作并提出了今后的工作方向。2分形微元器件我们的GoTM框架使用Fractal作为其参考组件模型来构建其微组件。本节首先介绍了分形组件模型,然后详细介绍了微组件的概念,并举例说明了使用微组件重构日志对象。R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)1111132.1分形分量模型层次化的Fractal组件模型使用了通常的组件、接口和绑定概念[5]。组件是符合Fractal模型的运行时实体。接口是一个交互点,表达了组件提供的或需要的方法。绑定是在组件接口之间建立的通信通道。此外,Fractal还支持共享和响应控制的递归[6]。具有共享特性的递归性意味着一个组件可以由任意层次的多个子组件组成,一个组件可以是多个组件的子组件。相对控制属性意味着使用Fractal构建的架构在运行时被具体化,并且可以动态地内省和管理。Fractal提供了一种架构描述语言(ADL),名为Fractal ADL[15],用于自动描述和部署基于组件的配置。图1说明了一个典型的分形组件体系结构的不同实体。粗黑框表示组件的控制器部分,而框的内部对应于组件的内容部分。箭头对应于绑定,从黑盒子突出的类似tau的结构是内部或外部接口。 内部接口只能从内容部分访问 一个组件。星形接口表示相同类型接口的集合。两个阴影框C表示共享组件。基元部件控制器内容结合运行服务器接口复合内部客户端馆藏共享组件接口接口接口组件Fig. 1. 分形组件模型。2.2微组件本文提出的方法促进了微组件作为设计、部署和执行单元微组件通过其微接口与其他组件通信。微接口识别微元件提供的功能.微接口是定义一组非常小的操作的接口(在代码库上执行的经验统计表明,GoTM微接口定义的操作不超过4个),其中操作签名与操作语义解耦。如果接口包含太多的操作,那么它被分割成几个微接口.微接口的语义依赖于提供它的微组件的语义,这种方法使得微接口操作的分解和重用变得更加微接口的定义114R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111nout出来更多的模块化来组成微组件。因此,微组件之间的依赖关系用功能依赖关系来表示。然后,通常在接口上可用的配置操作根据关注点分离属性被具体化为微组件属性。如果这个属性不是原始的,或者它被几个微接口共享,那么这个微组件属性就被隔离,具体化为一个微组件,并与其他微组件组合。该组合物使用ADL实现。在微元件的概念中,成分问题占有重要的地位。实际上,微元件不仅由它们的微界面定义,而且还由它们与其他微元件的组成来定义。微组件被识别为将粗粒度组件拆分为多个细粒度组件。当组合它们时,开发人员可以通过仅改变某些微组件来提供各种组件语义。此外,似乎可以识别用于组成微组件的架构模式。本文的其余部分描述了GoTM框架中用于构建演化事务服务的设计模式。ADL定义提供了设计模式的架构定义。我们表明,通过修改ADL定义,可以使设计模式发展到处理不同类型的执行上下文。2.3日志记录插图作为一个示例,图2描述了现有事务服务使用的对象LoggingImpl。这个对象实现了一个包含两个操作的Logging接口。 写操作将参数数据的值存储在日志(稳定存储器)中。协调器和事务的参与者使用此操作来记录提交协议的进度。如果在事务执行期间发生故障导致系统崩溃,则恢复进程将使用此信息。有两种类型的日志写入:强制和非强制。强制日志写入会立即发送到日志中,从而生成磁盘访问。非强制日志写入最终会被缓存到日志中。强制或非强制日志写入的使用由参数force的值指导。恢复进程使用read操作来分析事务服务崩溃时活动事务的进度。LoggingImpl-file:Byte[]-bufferSize:Long图二. logging的例子。当考虑操作的语义时,日志对象可以是+read():Byte[]force:Boolean,in data:Byte[])+write(i)测井«界面»R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111115noutdata:Byte[])+write(i)«界面»LoggingWriter+read():Byte[]oggingReaderL«界面»重构成几个微组件和微接口。所得到的基于微组件的架构如图3所示。写和读操作在 不 同 的 上 下 文 中 使 用 。 因 此 , 操 作 被 分 成 两 个 微 接 口 : LoggingWriter 和LoggingReader.然后,操作写语义取决于参数force的值。为了解除语义和操作签名的耦合,删除了操作写的参数force。此参数由LoggingWriter接口的两个实现替换。实现对应于可能的语义力和非力。 接口LoggingWriter的实现所共有的代码段被放置在 一 个 专 用 类 LoggingProviderImpl 中 , 该 类 实 现 了 接 口 LoggingProvider 和LoggingReader。0的情况。.1需要LoggingProviderImpl-file:Byte[]图三. 日志记录重构。组件Logging使用Fractal组件模型的共享功能。微组件LoggingProviderImpl在三个组件之间共享:提供微接口强制写入的ForceLogging策略、提供微接口非强制写入的NonForce- Logging策略和提供微接口读取的Logging。由微组件ForceLoggingPolicy和NonForceLogging Policy提供的微接口写通过集合接口写导出。使用分形ADL描述图4微元件的分形ADL配置由Fraclet工具自动生成[20]。因此,可 以 使 用 图 5 中 描 述 的 配 置 来 定 义 组 件 Logging 。 定 义 Logging 扩 展 了 定 义LoggingReader以提供接口读取(第1行)。它定义了带有签名LoggingWriter的集合接口write(第2行)。微组件LoggingProviderImpl,名为provider,包含在组件Logging 中 ( 第 3 行 ) 。 该 组 件 提 供 程 序 在 ForceLoggingPolicy 和NonForceLoggingPolicy组件之间共享(第4-9行)。最后,组件Logging使用以下命令导出组件ForceLoggingPolicy、NonForceLoggingPolicy和LoggingProviderImpl的微接口力记录器NonForceLoggingWriter-bufferSize:Long0.. 11需要L«interface»记录提供+getWriter():Writer1116R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111请填写*读bindings(第10-12行)。见图4。 组件Logging。1< 定义name=“登录“extends =“LoggingReader“>< 接口name =“write”signature =“LoggingWriter“cardinality =“collection“/>3<成分name =“provider“definition =“LoggingProviderImpl“/>< 组件name =“force”定义=“ForceLoggingPolicy“>5<组件名称=“提供“定义 =“。/provider“/>组件>7<组分name =“非强制”定义=“NonForceLoggingPolicy“> 9组件>< 结合客户端=“这个。阅读”服务器=“提供者。阅读”/>11<绑定客户端=“这个。写-力”server =“force. 写”/><绑定客户端t=“this.write-nonforce“server=“no-force. “/>13定义>图五. Fractal ADL配置日志。由于这种方法,使组件Logging的发展变得更加容易。实际上,可以向日志组件添加附加的微组件以实现新的语义(例如, 空写语义)。 组件的语义这种方法已经成功地应用于构建几个著名的两阶段提交协议的基于组件的实现[22]。这允许开发人员根据目标执行上下文(例如, 容错、性能等)。3用微组件本节介绍GoTM框架中用于构建演进事务服务的设计模式。微组件的配置和组成定义了事务服务的语义。因此,当重新配置微组件的组装时,该事务服务可以发展。3.1设计模式概述在本文中,我们重点介绍了GoTM中用于构建演化事务服务的五种设计模式:Facade、Factory、State、Command和Publish/Subscribe[12]。R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111117这些设计模式是构建任何演化事务服务的基础。 我们说明了事务服务的演变是如何由设计模式的演变驱动的。图6显示了用GoTM构建的演化事务服务的概念概述。设计模式在演化事务服务的静态和动态部分静态部分处理事务服务本身,并支持Facade和Factory设计模式 。 动 态 部 分 处 理 由 事 务 服 务 创 建 的 事 务 这 部 分 使 用 了 Facade 、 State 、Command和Publish/Subscribe设计模式。这些设计模式中的每一个都是使用几个微组件来实现的,这些微组件可以使用Fractal ADL配置来组成见图6。 架构概述3.2Facade设计模式Facade设计模式为子系统中的一组接口提供了一个高级的统一接口,使其更易于使用[12]。在GoTM中,Facade设计模式用于符合特定的事务标准(例如,JTS、OTS、WS-AT)。Facade设计模式将事务标准定义的接口转换为GoTM提供的微接口假定事务服务由静态和动态部分组成(参见3.1节),则Facade设计模式使用两个组件应用于这两个部分这种设计模式的发展与提供与各种现有和未来事务标准的兼容性的能力有关。使用Facade设计模式,可以很容易地考虑新的事务标准。实际上,这只需要实现静态和动态的Facade组件。 在GoTM中,Facade组件可以使用[19]中提出的模型自动生成,该模型描述了标准中定义的接口与GoTM组件导出的微接口图7重点关注事务服务的静态部分,并描述了一个提供三个外观的组件外观组件OTS Facade实现了OMG对象事务服务标准[17]。组件JTS Facade实现了Sun JavaTransaction Service标准[8]。组件WS-AT Facade提供对Web服务原子事务标准的支持[7]。 所有这些外观共享组件Factory。由组件Factory创建的组件实例还提供了三个外观。静态动力学118R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111缓存池缓存工厂基本工厂科巴电流工厂公司简介公司简介3.3工厂设计模式见图7。组件Facade。工厂设计模式提供了一个接口,用于创建相关或依赖对象的族,而无需指定其具体类[12]。在GoTM中,事务服务使用此设计模式在运行时构建新的事务实例。这种设计模式的进化维度涉及处理横切关注点的能力,比如工厂创建的实例的缓存和池。根据TX模型的定义,交易服务能够创建可重复或嵌套的交易。在[22]中,事务工厂进化为提供自适应性,并选择两阶段提交协议,该协议将根据当前执行上下文更快图8描述了一个用于创建事务组件的新实例的组件工厂的示例。组件工厂提供了一个微接口工厂来支持事务组件实例的创建和销毁。微组件基本工厂使用组件Tx模型创建组件的新实例。组件Tx模型表示事务组件的模板,可以多次克隆这些模板以生成事务组件的实例。工厂池工厂桌球台厂缓存工厂实例池Tx工厂Tx模型见图8。 组件工厂。此外,组件Tx模型可以动态地重新配置,以修改未来交易组件的架构。 缓存工厂介绍 在工厂中的高速缓存问题,以减少垃圾收集事务组件的引用的成本。大量无用的事务组件是R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111119非活动开始活性完成暂停做开始完成做已完成暂停存储在组件缓存池中,由缓存工厂回收。池工厂注册由组件缓存工厂创建的事务组件的实例。这些实例存储在组件实例池中,可以使用组件工厂提供的微接口池列出。组件Factory的这种封装形成了一个委托链[12]。3.4状态设计模式状态设计模式允许对象在其内部状态改变时改变其行为[12]。在GoTM中,此设计模式用于表示和控制事务的可能状态此设计模式的演化维度涉及修改状态自动机以支持各种事务模型的能力。使用组件State,GoTM能够实现符合事务标准规范的状态自动机。本节将使用微组件来具体化和配置状态自动机,重新讨论状态图9描述了一个简单的状态自动机。 状态Inactive和Completed分别附加到自动机的初始和最终状态。 当接收到事件开始时,系统变为活动状态。它可以在接收到事件挂起时挂起,然后通过事件开始移回活动状态。当接收到事件完成时,系统可以从活动状态移动到完成状态。最后,当接收到事件完成时,可以从状态Active或Completing访问状态Completed。见图9。 状态自动机。图10描述了实现所描述的自动机的组件State图9中的微组件Inactive、Active、Suspended、Completing和Completed表示自动机的状态。状态之间的绑定表示允许的转换。微组件状态管理器管理状态自动机,并允许系统通过微接口管理器在运行时重置状态自动机。 导出的微接口状态提供了访问 到具体化当前状态的微组件3.5命令设计模式命令设计模式将命令的概念封装到对象中[12]。在GoTM中,此设计模式用于处理在事务中注册的120R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111状态经理见图10。 组件状态。命令设计模式的演化维度处理可在事务参与者上执行的命令列表。由于Command设计模式的应用,GoTM可以拒绝Command组件,以支持XA资源、同步对象、CORBA资源和Web服务参与者,具体取决于组件XA Commands的内容[21]。命令设计模式现在重新使用微组件来轻松配置可用的命令。图11展示了组件Command。它包含了一个可变数量的XA参与者,可以在这些参与者上应用命令[24]。可用的命令由组件XA命令的内容定义。每个命令都由一个微组件实现,并符合XA规范[24]。通过微接口寄存器在系统中登记的参与者被存储在微组件参与者池中。用于向登记的参与者发送通知事件的策略可以是保密的。例如,微组件顺序通知(分别)。并行通知)负责按顺序通知参与者(分别并行)并执行相应的命令。因此,参与者池和XA命令组件在顺序策略和并行策略组件之间共享。通知寄存器见图11。 组件命令。状态暂停暂停开始非活动开始完成做状态管理器做完成完成活性悬浮R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111121发布同步3.6发布/订阅设计模式发布/订阅设计模式3定义了一个一对多的依赖关系, 发布者对象和任意数量的订阅者对象,以便当发布者对象改变状态时,其所有订阅者对象都被通知并自动更新[12]。在GoTM中,发布/订阅组件用于在两阶段提交协议执行期间同步事务参与者[22]。该组件的演化维度包括提供几个公共策略。GoTM中还提供了其他发布策略,并提供顺序传播或池化传播策略,以确保并发发送给订阅者的消息不超过n条(n为池的大小在图12中,组件Publish/Subscribe的架构类似于图4中描述的日志组件的架构。微组件订阅者池在组件同步策略和异步策略之间共享。微组件PublishSynchronous保证消息在返回之前被订阅者正确地传递和处理。微组件Publish Asynchronous将消息发送给订阅者,而无需等待。状态自动机微组件确保发布的消息符合共享组件状态中描述的状态自动机(第3.4节)。同步策略状态用户池发表* *同步发布状态检查器状态订户订阅异步发布发布/订阅异步策略池用户池见图12。组件发布/订阅。4讨论关注的分离。微接口的定义使组件的组成更加灵活。微接口分解了可用操作的定义,并通过不同的微组件强制重用它们。微组件的定义提供了更好的关注点分离。这允许开发人员独立地编写技术问题,例如缓存或池化3源自观察者/被观察者设计模式。发布异步状态检查器122R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111根据组件的架构配置,可以移除、替换或添加微组件。这种重新配置可以在使用Fractal ADL设计事务服务时执行,也可以在运行时使用Fractal组件模型的响应控制能力。Fraclet符号框架大大简化了微组件的定义,同时自动生成组件胶水和大多数Fractal ADL配置。软件架构模式。一旦定义了微组件,就可以使用Fractal ADL轻松组合它们。这种组合主要依赖于封装和共享的原则。封装将一组微组件的应用领域具体化为一个组件。微组件的共享允许组件透明地协作。 共享的使用还简化了正交关注点的合成以引入附加功能(例如,传播策略)。基本上,我们将共享架构模式定义为软件架构模式[2]。这种模式允许一个给定的组件直接包含在其他几个组件中。 此架构模式用于 发布/订阅、命令和外观设计模式。基于共享模式,封装架构模式使用委托链设计模式扩展了组件的定义。 封装应用于 工厂和发布/订阅设计模式。策略体系结构模式包括在实现相同接口的多个策略组件之间共享一个核心组件。这个架构模式被发布/订阅和命令设计模式所使用。池体系结构模式将提供公共接口的组件聚集在一个复合组件中。 池模式被工厂、发布/订阅和命令设计模式使用。识别这种架构模式可以帮助为CBSE提供更好的演进支持。因此,可以定义工具和规则来控制进化基于组件的应用程序。交易服务的性能。 最后,考虑到性能问题,我们过去使用GoTM的经验表明,使用微组件和设计模式不会给事务服务带来性能开销[21,22]。更好的是,它已经表明,构建在GoTM之上的进化交易服务可以比传统交易服务更好地执行[21]。5相关工作为了实现这些目标,GoTM中使用的方法利用了与CBSE相关的几项工作,例如基于mixin的方法,基于组件的框架,微组件和面向方面的设计模式:基于Mixin的方法。Mixins [4]和Traits [10]提供了一种构造面向对象程序的方法。mixin通过继承来组合,以构建一个组合不同关注点的对象,每个关注点都被实现为mixin。 trait本质上是一组参数化的方法;它充当类的行为构建块,是代码重用的基本单元然而,一旦混合R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111123对象不保留组成它的mixin的踪迹。 这意味着对象一旦被混合就不能演化以处理其他关注点。在GoTM中,我们将微组件视为可以组合以构建更大组件的mixin。一旦组成,微组件将在复合组件中被具体化,以保持对最终架构的清晰视图基于协议的框架。Medor[1]、OpenORB[3]、Dream[14]和Jonathan[11]的目标是通过反射、组件技术和组件框架的结合来开发更可配置和可重新配置的中间件技术。这些框架是基于轻量级的和respective的OpenCOM和Fractal组件模型。例如,CORBA对象请求代理(ORB)已经在OpenORB和Jonathan框架的上下文中实现为一组可配置和可重构的组件。然而,这些相应的可适应中间件框架没有解决组件框架的体系结构。此外,它们没有提供一种方法,也没有提供一些进化的方法来扩展基于组件的框架的可能性。在提供等同于这些框架的可配置属性的同时,GoTM还包含架构模式以支持事务服务的演进。微型元件。AsBaCo[16]和AOKell[23]引入了微组件来构建Fractal组件的控制器部分,作为一种进化架构。他们的贡献之一是微组件模型,它允许捕获组件控制器部分的结构;这些框架允许在启动应用程序之前验证控制器配置的一致性。因为一个微元件,在一个简单的视图中,是一个对象, 和所需的服务,微组件模型适用于分形实现,其中控制器部分由小的对象类元素组成。AsBaCo和AOKell的微组件模型为构建演化中间件指出了一个有趣的特性。然而,AsBaCo以及AOKell没有提供任何解决方案的进化中间件架构设计的问题。 基于细粒度组件方法,GoTM解决了 在设计时或运行时,方面和设计模式。方面和设计模式的结合已经在一些作品中进行了研究[9,13]。这种方法的目标是强制执行使用方面的设计模式的可跟踪性、模块性和可重用性。面向对象的编程提供了一种跟踪设计模式的方法,这些模式往往会在代码中消失。即使设计模式被具体化为方面,这种方法也没有考虑到应用程序的架构维度。特别是,设计模式在架构配置中没有被具体化,以允许应用程序发展。使用微组件,GoTM将设计模式具体化为软件架构,使其配置更容易。124R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)1116结论和今后的工作本文介绍了一种基于组件的框架来构建演化事务服务。这个框架名为GoTM,使用各种设计模式来支持进化。这些设计模式是用微组件实现的,这些微组件可以按照各种Fractal ADL配置进行组合。 使用 使用微组件和设计模式构建事务服务提供了更好的模块化特性,并且不影响事务服务的效率。此外,可以从这种细粒度的体系结构中提取一些体系结构模式。 我们以前的经验表明,在GoTM之上能够调整支持的事务标准[21]和提交协议[22]。我们未来的工作将研究更多的技术,以提供进一步的模块化,我们的框架使用方面和更高层次的抽象的事务服务设计使用模型驱动的方法。方面和微组件。我们计划研究使用面向方面的框架来介绍本文中提出的一些技术问题。特别是,Fractal Aspect Component(FAC)框架提供了一个有趣的扩展,以支持组件级的面向方面编程[18]。例如,使用FAC,工厂设计模式(见3.3节)可以被重构,以引入池和缓存关注点作为方面组件,而不是使用组件的封装和共享。模型驱动工程。我们还打算将GoTM中识别的软件架构设计模式具体化为模板组件,以强制和控制其重用。例如,我们可以将软件架构模式定义为抽象组件,并使用Fractal ADL的扩展机制来指定用于实现设计模式的具体组件。可以使用模型驱动工程(MDE)方法生成具体组件,以完成GoTM [19]中已经定义的软件架构设计模式空 房 的 GoTM 在 LGPL 许 可 下 可 在 以 下 URL 免 费 获 得 :http://gotm.objectweb.org。致谢。这项工作部分由国家计算机科学和控制研究所(INRIA)和北部-加来海峡地区资助。引用[1] Alia , M. , S. Chassande-Barrioz , P. Dechamboux , C. Hamon 和 A. Lefebvre , A MiddlewareFramework for the Persistence and Querying of Java Objects , 18th European Conference onObject-Oriented Programming(ECOOP),LNCS3086(2004),pp.291-315[2] 巴莱岛J. Lawall,A.- F. Le Meur和L. Duchien,软件体系结构中新关注点的安全集成,在:第13届IEEE计算机系统工程国际会议(ECBS)(2006年)的会议记录中出现。[3] Blair,G.美国,G. Coulson,A.安徒生湖,澳-地Blair,M.克拉克角,澳-地M. Costa,H.A. 杜兰-利蒙T.菲茨帕特里克湖约翰斯顿河S. Moreira,N. Parlavantzas和K. B.陈文辉,开放式ORB 2之设计与实作,国立成功大学资讯工程研究所硕士论文(2001).R. 鲁塞山口Merle/Electronic Notes in Theoretical Computer Science 166(2007)111125[4] 布拉查湾和W.Cook,Mixin-based inheritance,in:Proceedings of the International Symposium onObject-Oriented Programming : Systems , Languages and Applications ( OOPSLA ) , SIGPLANNotices25(1990),pp.303-311[5] Bruneton,E.,T.是的,M。勒 克 莱 尔 河谷 Q u'emandJ. - B.Stefani,An O penCom p onent ModelandIts Support in Java , in : Proceedings of the 7th International ICSE Symposium onConcentrated Software Engineering(CBSE),LNCS 3054(2004),pp. 7比22[6] Bruneton , E. , T. Coupaye 和 J. - B. Stefani , Recursive and Dynamic Software Composition withSharing , in : Proceedings of the 7th International ECOOP Workshop on Concentent-OrientedProgramming(WCOP),Malaga,Spain,2002。[7] 卡布雷拉湖F.、G. Copeland,M.法因戈尔德河W. Freund,T.Freund,J.约翰逊,S。乔伊斯角卡勒,J. 克莱因,D.Langworthy,M.Little,A.Nadalin,E.Newcomer,D.果园岛罗宾逊,T.斯托里和S. Thatte,[8] Cheung,S.,“Java事务服务(JTS)”,Sun Microsystems,Inc.,圣安东尼奥路,帕洛阿尔托,CA,1.0版(1999)。[9] Denier , S. , H. Albin-Amiot 和 P.Cointe , Expression and Composition of Design Patterns withAspects,in:Proceedingin gsofthe2`emeJour n'eeFrancophonesurlesD'eveloppementdeeLogicielsParAs pects(JFDLPA),RSTI L ' O b j e t 1 1 ( 2 0 0 5 ) .[10] Ducasse,S.,O. Nierstrasz,N. 斯恰尔利河 Wuyts和A. Bla ck,Traits:AM echanismforFine-G rainedReuse,Transactions on Programming Languages and Systems(TOPLAS),2005. 46比78[11] Dumant,B.,F. Horn,F. D. Tran和J B. Stefani,Jonathan:An Open Distributed ProcessingEnvironment in Java,Distributed Systems Engineering6(1999).三比十二[12] 伽马,E.,R.赫尔姆河Johnson,J. Vlissides和G.“设计模式:可重用面向对象软件的元素”,Addison-Westley Professional Computing,美国,1995年[13] Hannemann,J.和G. Kiczales,Design Pattern Implementation in Java and ANOJ,in:Proceedingsof the 17th Annual ACM Conference on Object-Oriented Programming,Systems, Languages,and Applications(OOPSLA),SIGPLAN37(2002),pp.161-173.[14] Leclercq,M.,诉你们俩都是-B.Stefani,DREAM: ACompponentameworkforConstructingResource-Aware Configurable Middleware,IEEE DS Online 6(2005),pp. 1-12号。[15] Medvidovic,N.和R.Taylor,A Classification and Comparison Framework for Software ArchitectureDescription Languages,IEEE Transactions on Software Engineering26(2000),pp.70比93[16] 门茨尔河谷和T.Bures,基于微组件的组件控制器:组件方面的基础,在:第12届亚太软件工程会议(APSEC)(2005年)的会议记录。729-738[17] OMG,[18] Pessemier,N.,L. Seinturier,T. Coupaye和L. Duchien,A Model for Developing Compatient-basedand Appropriate-Oriented Systems,in:Proceedings of the 5th International ETAPS Symposiumon Software Composition(SC),LNCS4089(2006)。[19] 鲁塞河和P. Merle,Towards a Model Driven Approach to Build Comprehension-Based AdaptableMiddleware , in : Proceedings of the 3rd Middleware Workshop on Reectival and AdaptiveMiddleware(RAM),AICPS80(2004),pp.195-200[20] 鲁塞河,N.佩塞米耶河Pawlak和P. Merle,使用面向属性的编程来利用基于分形的开发,在:第五届国际ECOOP分形组件模型,法国南特,2006年。[21] 鲁塞河,P. Serrano-Alvarado和P.Merle,基于一致性的方法来编写事务标准,在:第五届软件组合国际ETAPS研讨会论文集(SC),LNCS4089(2006)。[22] 鲁塞河,P. Serrano-Alvarado和P. Merle,Towards Context-Aware Transaction Services,在:第六届IFIP分布式应用和互操作系统国际会议(DAIS)会议记录,LNCS4025(2006),pp.272-288。[23] 塞 因 蒂
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 5
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 探索数据转换实验平台在设备装置中的应用
- 使用git-log-to-tikz.py将Git日志转换为TIKZ图形
- 小栗子源码2.9.3版本发布
- 使用Tinder-Hack-Client实现Tinder API交互
- Android Studio新模板:个性化Material Design导航抽屉
- React API分页模块:数据获取与页面管理
- C语言实现顺序表的动态分配方法
- 光催化分解水产氢固溶体催化剂制备技术揭秘
- VS2013环境下tinyxml库的32位与64位编译指南
- 网易云歌词情感分析系统实现与架构
- React应用展示GitHub用户详细信息及项目分析
- LayUI2.1.6帮助文档API功能详解
- 全栈开发实现的chatgpt应用可打包小程序/H5/App
- C++实现顺序表的动态内存分配技术
- Java制作水果格斗游戏:策略与随机性的结合
- 基于若依框架的后台管理系统开发实例解析
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功