声明式服务总体设计_第1页
声明式服务总体设计_第2页
声明式服务总体设计_第3页
声明式服务总体设计_第4页
声明式服务总体设计_第5页
已阅读5页,还剩39页未读 继续免费阅读

下载本文档

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

文档简介

1、.声明式服务设计声明式服务设计DService框架的总体介绍2009-12.目录目录v 简介简介v 面向服务构件模型面向服务构件模型v Dservice 概述概述v Dservice框架架构及主要处理流程框架架构及主要处理流程v Dservice构件开发构件开发.基于构件基于构件v 什么是构件什么是构件 构件是一个物理的、可替换的系统组成部分,它包装了实现体且提供了对一组接口的实现方法。构件自身必须相容于接口且实现接口,接口表示了驻留在构件内的成分所实现的服务。这些服务定义了的一个整合的行为,并从一些构件实例提供给其它客户端构件实例。(OMG对构件的定义)v 为什么使用构件为什么使用构件 通过

2、用构件替代框架内部相互协作的类,以增大构成应用成分的粒度; 利用构件的接口调用和组装实现框架扩展机制; 提升软件的复用度; .面向服务面向服务v Service-Oriented Computing一种典型使用服务作为其功能的组成部分的设计模式。.面向服务的特点面向服务的特点v 松耦合松耦合服务消费者不需要知道关于服务实现的任何细节。v 延迟绑定延迟绑定服务消费者只需要在运行时通过注册中心索取自己需要的服务实现。v动态性动态性服务消费者使用服务时不依赖于服务注册中心每次都给相同的服务对象。v位置透明位置透明服务提供者和消费者都不需要知道对方所处的位置或环境(如本地、远程、多种协议等。).v面向

3、服务构件模型面向服务构件模型.面向服务构件模型的原则面向服务构件模型的原则v 一个服务提供一种功能。一个服务提供一种功能。v 一个服务是使用特定的语法、行为通过服务规范来被其他一个服务是使用特定的语法、行为通过服务规范来被其他的服务所依赖。的服务所依赖。v 构件可以通过公开的服务规范来使用服务。构件可以通过公开的服务规范来使用服务。v 面向服务交互模式被用来解决构件在运行时对服务的依赖面向服务交互模式被用来解决构件在运行时对服务的依赖问题。问题。v 构件被描述为具有服务规范相同的特征。构件被描述为具有服务规范相同的特征。v 整个环境通过服务规范来提供一个服务的可替换性。整个环境通过服务规范来提

4、供一个服务的可替换性。.面向服务与基于构件相结面向服务与基于构件相结合的优势合的优势结合之前结合之前v 传统的基于构件模型能够识别传统的基于构件模型能够识别规范并适配组装不同的实现,规范并适配组装不同的实现,但是他阻碍不同实现间运行时但是他阻碍不同实现间运行时的动态变化。的动态变化。v 传统的面向服务模型在运行时传统的面向服务模型在运行时通过服务规范具有动态性,但通过服务规范具有动态性,但是仅靠服务规范是无法表达自是仅靠服务规范是无法表达自己的需求的。己的需求的。结合之后结合之后v 即具有运行时面向服务的动态即具有运行时面向服务的动态性,又可以根据自己的需求来性,又可以根据自己的需求来自由组合

5、实际的应用。自由组合实际的应用。.面向服务构件模型分析方法面向服务构件模型分析方法1. 将应用完全分解抽象成为服务,并确保将应用完全分解抽象成为服务,并确保各个服务在语意和行为上相对独立。各个服务在语意和行为上相对独立。.分析方法(分析方法(2)2. 服务定义好之后就可以定义一系列构件,服务定义好之后就可以定义一系列构件,实现这些服务,如果确认服务是相关的,则可以实现这些服务,如果确认服务是相关的,则可以在一个构件中实现他们。在一个构件中实现他们。.分析方法(分析方法(3)3. 使用一个核心构件通过服务组合起其他构件,使用一个核心构件通过服务组合起其他构件,该构件用于处理和引导业务逻辑的执行。

6、该构件用于处理和引导业务逻辑的执行。.vDService概述概述.OSGi框架与服务框架与服务v OSGi service platform是一个是一个开放并且提供统一接口标准的体系框架,基于开放并且提供统一接口标准的体系框架,基于这个体系框架,各方开发人员可以协调地联合这个体系框架,各方开发人员可以协调地联合起来开发,部署以及管理向用户提供的各种服起来开发,部署以及管理向用户提供的各种服务。务。 v OSGi 服务层定义了一个和生服务层定义了一个和生命周期层紧密结合的动态协作命周期层紧密结合的动态协作模型。一个服务(模型。一个服务(service)就是一个通过服务登记来注册就是一个通过服务登

7、记来注册到一个或者多个到一个或者多个 Java 接口接口下的下的 Java 对象。对象。.使用使用OSGi服务开发的局服务开发的局限性限性v 需要组合服务以提供更高层的服务。需要组合服务以提供更高层的服务。v 需要开发人员自己管理服务的发布、解除、发现并跟踪需要开发人员自己管理服务的发布、解除、发现并跟踪服务等非功能性需求。服务等非功能性需求。v 需要服务提供者启动时主动激活服务,延长启动时间。需要服务提供者启动时主动激活服务,延长启动时间。v 服务提供者无法按需分配服务占用的资源。服务提供者无法按需分配服务占用的资源。v 侵入式开发,完全依赖侵入式开发,完全依赖OSGi框架的框架的APIv

8、.Declarative Servicesv Declarative Services 是一个基于是一个基于OSGi框架面向服框架面向服务的构件模型。务的构件模型。v Declarative Services 采用服务组件的延迟加载以及采用服务组件的延迟加载以及组件生命周期管理的方式来控制对于内存的占用以及快速组件生命周期管理的方式来控制对于内存的占用以及快速的启动的启动 .v 在在 Declarative Services 中,中,Component 可以是可以是 Service 的提供者和引用者的提供者和引用者.v Declarative Services使用使用XML来描述构件。来描述构

9、件。.DService简介简介v DService框架是提供了一个简单的、可框架是提供了一个简单的、可扩展的、基于扩展的、基于POJO的面向服务构件开发模型;是基于的面向服务构件开发模型;是基于OSGi扩展规范中的扩展规范中的Declarative Services Specification的参考实现;的参考实现;v 他提供声明元数据的方式开发他提供声明元数据的方式开发OSGi环境中的服务构件,环境中的服务构件,由框架管理构件实例,从而简化了因管理动态环境而导致由框架管理构件实例,从而简化了因管理动态环境而导致的非功能性需求;的非功能性需求;v 他可以通过集成功能性或非功能性方面构件快速开发

10、出一他可以通过集成功能性或非功能性方面构件快速开发出一个业务构件。非侵入式编程,开发人员只需要关心自己的个业务构件。非侵入式编程,开发人员只需要关心自己的业务逻辑。业务逻辑。.设计目标设计目标v 简化开发:所有的构件实现都是简单的简化开发:所有的构件实现都是简单的POJO,不需要依赖任何不需要依赖任何DService或者或者OSGi规范的规范的API。 v 关注点分离:通过方面构件的引入,每一类方面构件负责关注点分离:通过方面构件的引入,每一类方面构件负责处理某一方面的问题,实现关注点的分离,从而简化设计处理某一方面的问题,实现关注点的分离,从而简化设计和开发的复杂度。和开发的复杂度。 v 延

11、迟激活:服务构件模型必须允许延迟激活一个服务构件,延迟激活:服务构件模型必须允许延迟激活一个服务构件,延迟激活允许直到需要的时候才加载和创建服务构件对象,延迟激活允许直到需要的时候才加载和创建服务构件对象,因此,可以减少资源的开销。因此,可以减少资源的开销。 v 向后兼容:服务构件模型必须提供和已经存在的向后兼容:服务构件模型必须提供和已经存在的OSGi服服务模型相似的操作。务模型相似的操作。 .特性特性v 简化开发方式简化开发方式v 服务的动态性管理服务的动态性管理v 服务对象依赖注入服务对象依赖注入v 面向方面开发的支持面向方面开发的支持v 构件延迟实例化构件延迟实例化v 构件框架高可扩展

12、性构件框架高可扩展性v 可扩展的元数据可扩展的元数据v 编译期代码织入编译期代码织入.特性(特性(1)v 简化开发方式:开发一个应用之需要开发若干简化开发方式:开发一个应用之需要开发若干POJO和相和相应的应的xml元数据,不再需要关注非业务的需求。元数据,不再需要关注非业务的需求。 非侵入式开发:无OSGi或DService相关API。 容器管理构件:容器控制组装构件和控制构件生命周期。v 服务的动态性管理:服务的动态性管理:Dservice框架与框架与OSGi框架相结合,框架相结合,任何关于服务的管理都由任何关于服务的管理都由DService框架来完成。框架来完成。 发布服务:框架将以服务

13、工厂的形式为构件发布服务。 引用服务:框架自带服务跟踪器,监听OSGi环境的服务。 受管服务:构件实现的服务可以受管于Configuration Admin。 .特性(特性(2)v 服务对象依赖注入:框架可以为构件实例管理所有的服务服务对象依赖注入:框架可以为构件实例管理所有的服务依赖。依赖。 依赖注入:包括方法注入和字段注入 绑定策略:声明引用服务对象的策略 引用基数:是引用单个还是多个指定规范的服务,是可选的还是强制的引用。v 面向方面开发的支持:开发人员可以实现自己的拦截器,面向方面开发的支持:开发人员可以实现自己的拦截器,拦截构件实例中的公共方法,拦截点可以位于方法前、方拦截构件实例中

14、的公共方法,拦截点可以位于方法前、方法后、出异常后和最终(法后、出异常后和最终(finally)。)。 切入点表达式:需要拦截的方法也可以用过简单的表达式来进行匹配,或者开发人员自己定义需要拦截方法的规则 .特性(特性(3)v 构件延迟实例化:构件实例可以等到需要他构件延迟实例化:构件实例可以等到需要他时才被创建,这样可以避免启动占用太多的时间和空间。时才被创建,这样可以避免启动占用太多的时间和空间。v 可扩展:可扩展:Dservice框架的高可扩展性可以让开发人员自框架的高可扩展性可以让开发人员自己为框架动态的增加其自定义的功能(比如提供一个远程己为框架动态的增加其自定义的功能(比如提供一个

15、远程的的OSGi服务、使用服务、使用JMX等)。等)。 v 编译期代码织入:生成子类继承用于开发的构件实现类,编译期代码织入:生成子类继承用于开发的构件实现类,保持用户代码纯洁、可调试。保持用户代码纯洁、可调试。.vDservice框架的组成结构框架的组成结构.子模块构成子模块构成.loong-dservice-Impl E-R图图.DService框架主要流程框架主要流程.构件容器类图构件容器类图.容器启动流程容器启动流程.构件工厂类图构件工厂类图.启动工厂、生产实例启动工厂、生产实例启动构件工厂启动构件工厂生产构件实例生产构件实例.构件实例类图构件实例类图.构件实例处理流程构件实例处理流程

16、.发布服务的构件(方面构件)发布服务的构件(方面构件).发布服务流程发布服务流程.引用服务的构件(方面构件)引用服务的构件(方面构件).引用服务的构件启动流程引用服务的构件启动流程.引用服务构件引用服务构件-服务消失服务消失.DService Maven插件插件.DService构件编译流程构件编译流程.元数据解析模块元数据解析模块.vDService构件开发构件开发.环境环境v 工具工具 JDK1.5或以上版本 Maven 2.0.9或以上版本 /download.html Eclipse 3.4或以上版本 M2eclipse v Maven plugin g

温馨提示

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

评论

0/150

提交评论