zoukankan      html  css  js  c++  java
  • 分布式系统阅读笔记(八)-----分布式对象和组件

    一、介绍

    在分布式系统中,一个完整的中间件需要展现一定的对于上层程序语言的以及底层的物理设施的抽象性。而分布式对象和分布式组件恰恰是2种重要的实现方式。

    1、分布式对象包集成了面向对象的语言的特征和优点。能够使用户用类似面向对象的语言调用的层次上去实现远程的方法调用。

    2、分布式对象有下面的一些优点:1、包装性。2、他将一个对象的实现和对象本身分离了。3、具有动态性和扩展性。

    3、分布式组件是为了克服分布式对象的一些缺点而发展而来的,他解决了在分布式系统中出现的下面的一些问题:1、不完全的独立性,接口的描述信息过少。2、程序的复杂性。3、应用开发者缺少对分布式的完全具体的掌控,不能处理一些比如安全,传输等等方面。4、分布式对象不支持部署。而统统的这些,可以在分布式组件中被逐一的解决。

    二、分布式对象

    1、分布式对象是由下面3现象而发展起来的:1、在分布式系统中,人们对于程序语言的抽象性的期望越来越高。2、类似于C++,java这样的高级语言的出现了,使得分布式中的语言变得更有扩展性了。3、伴随着面向对象思想和理念的程序思想的流行和相关的工具软件的出现,比如说UML的兴起,使得面向对象的设计理念更加广泛化。

    2、在分布式对象中,还存在着一些额外的复杂性:1、分布式对象间的交互通信。2、分布式对象的生命周期的管理。3、分布式对象的激活态和非激活态的转换随着调用和被调用的操作。3、永恒对象的管理。

    三、学习列子:CORBA

    CORBA是一个典型的基于分布式对象的中间件。里面有个很重要的概念叫做,ORB,对象请求中断器。

    1、CORBA  RMI是比较类似于 java RMI的,但是里面又有些不同的地方,有些新的概念需要了解:1、CORBA提供的对象模型。2、他的接口定义语言。3、CORBA对于多语言的实现的映射。

    2、CORBA的结构包括ORB的核心,对象适配器,stub-skeleton结构,repository,里面包含了对于名字适配器的映射关系。

    3、CORBA的远程对象引用有自己的独有的格式,里面包括了下面几个域的信息:1、对象接口的ID标识。2、指定了传输的协议。3、指定了ORB对于CORBA对象的一个标示。

    4、CORBA内部包含了多种服务:1、命名服务。2、安全服务。3、并发控制服务。3、事件通知服务。4、事务服务。等等

    5、在CORBA的客户端和服务端的调用过程中,客户端同样可以将自己的Callback回调作为参数让其远程调用,当服务端处理操作结束后,可以主动调用客户端的回调函数。

    三、分布式组件

    正如上文中所提到的,分布式对象的服务是非常庞大复杂的,尽管他现在已经被大规模的被部署和使用。人们越来越想要一个轻量级的类似于此的服务。随着分布式对象的广泛应用,他的缺点和限制 越渐渐的暴露了出来。

    1、一下为分布式对象的缺点(前文中已部分提过):1、绝对的独立性,要求能够对于分布式对象的有更多的配置和操作能力。2、交互的简化性,分布式对象的整个通信交互流程过于复杂,急需简化,明了。3、缺乏对于分布式的掌控,比如安全方面,你不能做自己想做的。4、不支持部署服务,就是说不支持可配置的部署服务。

    2、而基于组件的分布式组件服务则恰恰解决了上述的一些问题,可以用一句话来说,他是一个多个组件的复合物,并且每个组件之间具有关联性。每个组件包含了一些对外的接口。

    3、一个典型的分布式组件的例子是EJB。在EJB中,多组件是以Contain容器的方式出现的。一个容器中包含了一个客户端,还有包含了很多业务处理逻辑的组件。

    4、在Contain中,一个很重要的机理是拦截,通过拦截,可以实现很多的方便和好处。

    5、在分布式组件,是支持配置部署的,配置的描述以XML的格式可以被解析并配置。

    四、学习例子:EJB和Fractal

    EJB是一个简化后的分布式组件的中间件,而Fractal则是一个轻量级的和最简化的基于组件的服务。

    1、在EJB中,对于各个组件和角色采用的极大的分离,包括下列一些构成:1、bean provider2、the application seesembler3、the service provider4、the persistence provider5、the contain provider 6、the system administrator。

    2、在 EJB中,提供了一个或多个业务的接口给潜在的对象。EJB中通过Annotation注释的方式实现了非常多的DI(依赖注入)的控制。通过注入的方式,可以对调用多的方法进行拦截,就可以在其中做自己想做的事了,比如ACL访问控制,或者做日志操作等等。

    3、Fractal是一个轻量级的分布式组件服务,他也可以支持多语言。他的核心包含2部分,服务端接口和客户端接口。

    4、Fractal有着与EJB类似的结构,在主要的内容和外界交互之间,有一个Membranes隔膜层,里面包含了多个controller控制器,这些控制器就是实现了拦截的功能的。


    参考文献:<<Distributed Sysytems Concepts And Design>>原版第五版,author:George Coulouris,Jean Dollimore, Tim Kindberg,Gordon Blair

  • 相关阅读:
    GridView只显示日期问题
    自定义一个选择日期的用户控件
    母版页所带来的路径问题
    C#之旅(一): 泛型 和IComparable、IComparer
    使用HttpWebRequest来秒杀
    NameValueCollection Dictionary区别
    在C#中使用代理的方式触发事件 (委托和事件 )(二)(转)
    SQL2005语句实现行转列,列转行
    值类型和引用类型的区别?(转)
    2010年年终总结
  • 原文地址:https://www.cnblogs.com/bianqi/p/12184086.html
Copyright © 2011-2022 走看看