精华内容
下载资源
问答
  • 设计模式之代理模式

    千次阅读 2013-04-11 22:45:37
    最近《软件体系/设计模式》要汇报代理模式,查找了很多代理模式的资料,整理了下面的一些关于代理模式的文章.  一.模式产生的原因 在面向对象系统中,有些对象由于某些原因,比如:对象开销太大、某些操作需要安全控制、...

            最近《软件体系/设计模式》要汇报代理模式,查找了很多代理模式的资料,整理了下面的一些关于代理模式的文章.
            (铁血肯德基-Eastmount 制作)

    一.模式产生的原因
            在面向对象系统中,有些对象由于某些原因,比如:对象开销太大、某些操作需要安全控制、或者要访问的对象在远程的机器上,直而采用接访问会给使用者或系统结构带来很多麻烦。
            现在,我们可以在访问此对象时添加一个对此对象的访问层——代理。
            例如:Web安全课程中讲述的浏览网页的代理工具WebScarab、购买火车票时的代售点、银行交易支付的支付宝等。
    上面这些例子都用到了代理的概念,那么究竟什么是代理模式呢?
    二.模式的定义和结构
            模式定义
            代理模式(Proxy Pattern/Surrogat):给某一个对象提供一个代理,并由代理对象控制对原对象的引用。代理模式是一种对象结构模式。
            简而言之:一个客户不想或者不能直接引用一个对象,此时可以通过代理的第三者来实现间接引用,代理对象可以在客户端目标对象之间起到中介作用,可以通过代理对象去掉客户不能看到的内容和服务或者添加客户需要的额外服务.
            下面是一张代理模式的JAVA结构图:

            代理模式结构图简化为如下:

            代理模式抽象成类并设立一些方法后的结构图为:

            代理模式包含如下角色:
            Proxy:代理主题角色.内容包含对真实主题的引用,并提供了与真实主题角色相同的接口,以便在任何时候都可以替代真实主题.
            Subject:抽象主题角色.声明真实主题和代理主题的共同接口,这样可以在任何使用真实主题的地方可以使用代理主题.
            RealSubject:真实主题角色.定义真实的对象.
            上面是代理模式的3个角色,下面介绍代理模式的常见几种模式及分类.
    三.常见代理模式 
            根据《Java与模式书中对代理模式的分类,代理模式分为8种,这里将几种常见的、重要的列举如下:
            1.远程(Remote)代理:为一个位于不同的地址空间的对象提供一个局域代表对象。比如:你可以将一个在世界某个角落一台机器通过代理假象成你局域网中的一部分。
            2.虚拟Virtual)代理:根据需要将一个资源消耗很大或者比较复杂的对象延迟的真正需要时才创建。比如:如果一个很大的图片,需要花费很长时间才能显示出来,那么当这个图片包含在文档中时,使用编辑器或浏览器打开这个文档,这个大图片可能就影响文档的阅读,这时需要做个图片Proxy来代替真正的图片。
            3.保护Protector Access)代理:控制对一个对象的访问权限。比如:在论坛中,不同的身份登陆,拥有的权限是不同的,使用代理模式可以控制权限(当然,使用别的方式也可以实现)。
            4.智能引用(SmartReference)代理:提供比对目标对象额外的服务。比如:纪录访问的流量(这是个再简单不过的例子),提供一些友情提示等等
            5.动态(DynamicProxy)代理:较为高级的代理模式,InvocationHandler接口和Proxy(动态代理类).
    这里就不详细介绍各种代理模式分类了,详见设计模式书中.其中动态代理是较为特殊的代理模式.
    四.实例分析

            实例一:男孩女孩
            一个男孩boy喜欢上了一个女孩girl,男孩一直想认识女孩,直接去和女孩打招呼吧,又觉得不好意思。于是男孩想出了一个办法,委托女孩的室友Proxy去帮他搞定这件事(获得一些关于女孩的信息,QQ、手机号、人人号等,
            其结构图为:

            它的抽象主题角色是GirlInfo,代理主题角色是Proxy,真实主题角色是Girl,通过Client实例化.代码实现如下:

             实例二:论坛
             在论坛中已注册用户和游客的权限不同,已注册的用户拥有发帖,修改自己的注册信,修改自己的帖子等功能;而游客只能看到别人发的帖子,没有其他权限.为了简化代码,更好的显示出代理模式的骨架,我们这里只实现发帖权限的控制.
             其结构图为:

            它的抽象主题角色是MyForum,代理主题角色是MyForumProxy,真实主题角色是MyForumReal.代码实现如下:

    五.代理模式的优点
             分析问题:
             (1).当我们在网站上浏览图文信息时,进场使用代理模式,访问网页时调用的不是真实装载的图片,而是在代理对象方法中先使用一个线程向浏览器装载一个缩小的图片.
            如果要仔细查看这个图片,则点击缩小的图片(代理图片)并调用响应的方法,在后台使用一个线程来调用真实的装载大图片的方法将图片加载到本地,并在网页中显示出来.
            这就一个通过代理模式实现图片的加载放在后台操作,使其不影响前台的浏览.
            (2).远程代理可以将网络的细节隐藏起来,使得客户端不必考虑网络的存在,使计算机具有更快的响应和处理速度.

            综上所述:
            代理模式的常见优点如下:
            1.代理模式能够协调调用者和被调用者,在一定程度上降低了系统的耦合度;加载图片中后台操作不影响前台效果;
            2.在远程代理中使得客户端可以访问在远程机器上的对象,远程机器具有更好的计算性能和处理速度,响应客户端请求;
            3.代理模式通过使用一个小对象来替代一个大对象,以减少系统资源的消耗,对系统进行优化并提高运行速度,主要表现在虚拟代理;
            4.保护代理可以控制对真实对象的使用权限;
            5.copy-on-write可以大幅度的降低拷贝庞大实体时的开销. 

    六.代理模式的缺点
            1.由于在客户端和真实主题之间增加代理对象,因此有些类型的代理模式可能会造成请求的处理速度慢;
            2.实现代理模式需要额外的工作,有些代理模式的实现非常复杂;
            3.如果是一个很小的系统,功能也不是很繁杂,那么使用代理模式可能就显得臃肿
    ,需要修改原有的方法.
    七.总结
            代理模式是一个常用的模式,代理模式能够协调调用者和被调用者,能够在一定程度上降低系统的耦合度在项目中比如打开网页中的图片缩略图,远程管理系统都经常使用到代理模式。当我们直接访问一个对象很困难,或者说不能访问,此时只能是找个代理去访问,然后把结果反馈给自己。代理模式中各种分类这里就不具体介绍它们的实现代码和实例了.想学习的同学建议看看清华大学出版社刘伟编写的代理模式书及课件.
            最后说明一下,该文章的知识来自于:自己的分析与理解,《大话设计模式》,《Head First 设计模式》,还有清华大学出版社刘伟编写的相关课件,还有3个博客的相关阅读.建议可以看看下面的3个作者的理解.
            http://tech.ddvip.com/2008-10/122362574376324.html
            http://blog.csdn.net/hguisu/article/details/7542143
            http://blog.csdn.net/ai92/article/details/216424
            在这里感谢上面所有的书籍,课件,博主.由于作者才接触CSDN博客,可能格式内容不是很好,还请海涵!文章中有不足之处或错误的地方,作者能力有限,请见谅.希望文章能帮助大家更好的了解代理模式.(铁血肯德基-Eastmount制作)

    展开全文
  • CORBA——公共对象请求代理体系结构

    千次阅读 2016-11-28 15:30:07
    公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。...

          公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。简而言之,CORBA 允许应用程序和其他的应用程序通讯,而不论他们在什么地方或者由谁来设计。CORBA 1.1 由对象管理组织在 1991 年发布。他定义了接口定义语言(IDL)和应用编程接口(API),从而通过实现对象请求代理(ORB)来激活客户/服务器的交互。CORBA 2.0 于 1994 年的 12 月发布。他定义了如何跨越不同的 ORB 提供者而进行通讯。

           ORB 是一个中间件,他在对象间建立客户-服务器的关系。通过 ORB,一个客户可以很简单地使用服务器对象的方法而不论服务器是在同一机器上还是通过一个网络访问。ORB 截获调用然后负责找到一个对象实现这个请求,传递参数和方法,最后返回结果。客户不用知道对象在哪里,是什么语言实现的,他的操作系统以及其他和对象接口无关的东西。

           在传统的客户/服务器程序中,开发者使用他们自己设计的或者公认的标准定义设备之间的协议。协议的定义依赖于实现的语言,网络的传输和其他许许多多因素。ORB 将这个过程简单化。使用 ORB,协议定义是通过应用接口,而该接口是接口定义语言(IDL)的一个实现,他和使用的编程语言无关的。并且 ORB 提供了很大的灵活性。他让程序员选择最适当的操作系统,运行环境和设计语言来建设系统中每个组件。更重要的是,他允许集成已经存在的组件。

            CORBA 是在面向对象标准化和互操作性道路上的一个信号。通过 CORBA,用户不必要知道软硬件的平台和他们处在企业网的什么地方就可以操作。

           ORB 结构

           下面我来用些图形说明一下:

    通过 ORB 发送请求

           上面的图形说明的是客户端发送一个请求到对象的实现。客户端是希望对某对象执行操作的实体。对象的实现是一片代码和数据来实际实现对象。ORB 负责下面的必要的机制:对该请求找到对象的实现,让对象的实现准备好接受请求,和请求交换数据。客户端的接口完全独立于对象的位置,其实现的语言和其他不影响对象接口的东西。

    ORB 接口的结构

           上面的图形显示的是一个独立的对象请求代理(ORB)的结构。ORB 的接口是灰色的矩形。箭头说明 ORB 的调用关系。

           为了提出一个请求,客户端可以使用动态调用接口(Dynamic Invocation Interface)(和目标对象的接口独立)或者一个 OMG 的 IDL 占位程序(具体的占位程序依赖于目标对象的接口)。客户端也可以直接和 ORB 在某些地方交互。

           对象的实现通过 OMG 的 IDL 产生的骨架或者是一个动态骨架的调用来接受请求。对象的实现可能在处理请求或其他的时候调用 ORB。

           对象接口定义的定义可以有下面两种方式。接口可以通过接口定义语言静态的定义,这叫做 OMG 的 IDL。该语言按照可以进行的操作和该操作的参数定义对象类型。或者(也可以作为补充),接口可以加入到 Interface Repository service。该服务描述了该接口作为一个对象的组件,并允许运行时访问这些组件。在任何 ORB 实现中,IDL 和 Interface Repository 有相同的表达能力。

    客户端使用占位程序或者动态调用接口

            客户端通过访问对象的对象引用和了解对象的类型及要求执行的操作来发布一个请求。客户调用占位程序例程来请求或者动态构造请求。

           无论动态还是占位程序的接口都可以相同实现。接收方不可能知道请求是如何发布的。

    对象的实现接受请求

              ORB 向对象实现定位适当的代码,传递参数,传输控制。这一切都通过 IDL 骨架或者动态骨架。骨架对于不同的接口和对象适配器是不同的。在执行该请求的时候,对象的实现可能由 ORB 通过对象适配器来获得一定的服务。当请求完成,控制和输出值返回给客户。

            对象的实现可能会选择使用的对象适配器。该决定基于对象的实现要求的服务。

    接口和 Implementation Repositories

            上图说明的是接口和实现信息如何让客户和对象实现访问的。接口用 OMG 的 IDL 和/或 Interface Repository 定义。该定义用于产生客户占位程序和对象的实现的骨架。

           对象的实现的信息在安装时就提供好了,储存在 Implementation Repository 中以便请求发布的时候使用。

    2009-09-07                   

    注:源自原百度博客“至美心”

    展开全文
  • CORBA公共对象请求代理体系结构

    千次阅读 2008-08-01 14:39:00
    CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范。或者说 CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,...

     CORBA(Common Object Request Broker Architecture公共对象请求代理体系结构)是由OMG组织制订的一种标准的面向对象应用程序体系规范。或者说 CORBA体系结构是对象管理组织(OMG)为解决分布式处理环境(DCE)中,硬件和软件系统的互连而提出的一种解决方案;OMG组织是一个国际性的非盈利组织,其职责是为应用开发提供一个公共框架,制订工业指南和对象管理规范,加快对象技术的发展。

    OMG组织成立后不久就制订了OMA(Object Management Architecture,对象管理体系结构)参考模型,该模型描述了OMG规范所遵循的概念化的基础结构。OMA由对象请求代理ORB、对象服务、公共设施、域接口和应用接口这几个部分组成,其核心部分是对象请求代理ORB(Object Request Broker)。对象服务是为使用和实现对象而提供的基本服务集合;公共设施是向终端用户应用程序提供的一组共享服务接口;域接口是为应用领域服务而提供的接口;应用接口是由开发商提供的产品,用于它们的接口,不属于OMG标准的内容。ORB提供了一种机制,通过这种机制,对象可以透明的发出请求和接收响应。分布的、可以互操作的对象可以利用ORB构造可以互操作的应用。

    CORBA标准由对象管理组织(OMG)设立并进行控制,CORBA定议了一系列API,通信协议,和物件/服务信息模型用于使得异质应用程序能够互相操作,这些应用程序用不同的程序语言编写,运行在不同的平台上。CORBA因此为定义明确的物件提供了平台和位置的透明性,这些物件是分布式计算平台的基础。

    CORBA分布计算技术,是由绝大多数分布计算平台厂商所支持和遵循的系统规范技术,具有模型完整、先进,独立于系统平台和开发语言,被支持程度广泛的特点,已逐渐成为分布计算技术的标准。COBRA标准主要分为3个层次:对象请求代理、公共对象服务和公共设施。最底层是对象请求代理ORB,规定了分布对象的定义(接口)和语言映射,实现对象间的通讯和互操作,是分布对象系统中的"软总线";在ORB之上定义了很多公共服务,可以提供诸如并发服务、名字服务、事务(交易)服务、安全服务等各种各样的服务;最上层的公共设施则定义了组件框架,提供可直接为业务对象使用的服务,规定业务对象有效协作所需的协定规则。

    CORBA(公共对象请求代理架构):这是个和微软com,com+齐名的同类软件技术规范,由OMT提出。
    用于在不同进程(程序)之间,甚至是不同物理机器上的进程(程序)之间通讯。底层技术依靠RPC[远程过程调用]实现。
    面向对象的软件,以数据为中心设计,对象类既具有模块的封装性和类属等特性,还具有继承特性
    ,极大地提高了类的可扩充性和可再用能力。对象类较之于传统软件的功能模块而另具有的优点是:
    (1)易于理解,具有完整的语义特征;
    (2)易于扩充和修改,具有较高的通用性和适应性;
    (3)易于构造组装,具有规范的外部接口。
    开发应用组件必须遵循标准,以保证软件组件的互操作性,只有遵循统一的标准,不同厂商的、不同时期的、不同程序设计风格的、不同编程语言的、不同操作系统的、不同平台上的软件或软件部件才能进行交流与合作。为此,OMG(ObjectManageGroup)提供了一个对象标准CORBA,它定义了一个网连对象的接口,使得对象可以同时工作。基于CORBA的对象请求代理ORB为客户机/服务器开发提供了中间件的新格式。
    作为OMG成员的微软公司撇开CORBA而另辟了COM(ComponetObjectModel),即组件对象模型,并把COM定位成基于对象的软件开发模型,尽管COM被认为是微软鼓噪出来的技术,但支持COM的开发工具却不断增多,其中大部分来自于微软,包括VisualBasic和VisualC ++。
    公共对象请求代理结构:CORBA标准
    全球性网络使线上的所有设备和软件成为全球共享的浩瀚的资源,计算机环境也从集中式发展到分布式环境,开放式系统的发展使用户能够透明地应用由不同厂商制造的不同机型不同平台所组成的异构型计算资源,因此,分布式处理和应用集成自然而然地成为人们的共同要求,那么什么是分布式处理和应用集成呢?它们的功能和关键技术是什么呢?简单地讲,分布式处理和应用集成就是指在异构的、网络的、物理性能差别很大的、不同厂商的、不同语言的信息资源的基础上构建信息共享的分布式系统,并且能够有效地进行应用系统和分布式处理的集成。分布式处理的关键在于定义可管理的软件构件,即面向对象技术中的“对象”。应用集成的关键在于为跨平台、跨机种、跨编程语言的产品提供统一的应用接口。OMG组织针对当今信息产业的要求,公布了CORBA标准,即公共对象请求代理体系结构(Common Object Request Broker Architecture),这是一个具有互操作性和可移植性的分布式面向对象的应用标准。

    CORBA的核心是对象请求代理ORB,它提供对象定位、对象激活和对象通讯的透明机制。客户发出要求服务的请求,而对象则提供服务,ORB把请求发送给对象、把输出值返回给客户。ORB的服务对客户而言是透明的,客户不知道对象驻留在网络中何处、对象是如何通讯、如何实现以及如何执行的,只要他持有对某对象的对象引用,就可以向该对象发出服务请求。
    CORBA允许用户以两种不同的方式提出对象请求:
    1)静态调用:
    通过给定接口的存根,在编译了对象代码后,进入客户端的程序。因此,静态调用必须在编译时就知道对象及其类型。
    2)动态调用:
    通过ORB的动态调用接口DII,在运行时生成访问对象的代码。
    不管客户以哪一种形式提出请求,ORB的任务是:找出所要对象的位置,激活该对象,向对象传递此请求。对象执行所请求的服务后,把输出值返回给ORB,然后再由ORB返回给客户。
    CORBA的重要概念是:
    1.对象连接
    CORBA广泛地支持对象的实现,在单服务器系统中也可以实现由接口定义语言定义的接口。ORB的灵活性既可以直接集成已有的应用,又不会使新对象受某些原则的制约。
    对象连接提供了有不同类型对象实现时,使用ORB服务的方法,服务包括:对象引用、方法调用、安全控制、对象实现的激活与静候等。
    2.接口定义语言(IDL)
    CORBA用IDL来描述对象接口,IDL是一种说明性语言,它的语法类似于C++。
    IDL提供的数据类型有:基本数据类型、构造类型、模板类型、和复合类型、操作说明。这些类型可以用来定义变元的类型和返回类型,操作说明则可以用来定义对象提供的服务。
    IDL还提供模块构造,其中可以包含接口,而接口是IDL各类型中最重要的,它除了描述CORBA对象以外,还可以用作对象引用类型。
    IDL提供了接口继承性,派生接口可以继承其基类接口所定义的操作与类型。IDL的接口继承性有其特殊性,此处不赘述。
    总之,CORBA的IDL是一种说明性语言,描述面向对象系统开发所遵循的接口与实现相分离的基本原则。
    3.动态调用接口
    把IDL说明编译成面向对象程序设计语言的实代码后,客户可以调用已知对象的操作。在某些应用中,用户并不了解应用接口编译信息,但也要求调用对象的操作,这时就要动态调用接口来调用用户的操作了。例如,图形用户接口应支持用户浏览接口公共库,以获得每个对象所支持的操作信息,用户可根据自己的需求从浏览对象中挑选出所需的对象操作,具体的对象操作的调用实际上是用动态调用接口来完成的。
    4.接口公用库
    接口公用库持久地存储IDL的接口说明,借助于接口公用库,可以实现对象继承性层次结构的导航,并且提供了有关对象支持的所有操作的描述。接口公用库最常见的功能是为接口浏览器提供信息,帮助应用开发者找出潜在的可重用的软件部件。ORB可以利用接口公用库检查运行时的操作参数类型,但接口公用库的基本功能是提供类型信息,为动态调用接口发送请求提供信息支持。

    展开全文
  • 公共对象请求代理体系结构CORBA简介

    千次阅读 2009-04-14 20:23:00
    CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构和对象技术规范,其核心是一套标准的语言、接口和协议,以...

    CORBA(Common Object Request Broker Architecture, 公共对象请求代理体系结构)是由OMG(对象管理组织,Object Management Group)提出的应用软件体系结构对象技术规范,其核心是一套标准的语言、接口和协议,以支持异构分布应用程序间的互操作性及独立于平台和编程语言的对象重用

     


    CORBA的发展历程

    1. 对象管理组织(OMG)简介

    OMG成立于1989年,作为一个非营利性组织,集中致力于开发在技术上具有先进性、在商业上具有可行性并且独立于厂商的软件互联规范,推广面向对象模型技术,增强软件的可移植性(Portability)、可重用性(Reusability)和互操作性(Interoperability)。

    该组织成立之初,成员包括Unisys、Sun、Cannon、Hewlett-Packard、Philips等在业界享有声誉的软硬件厂商,目前该组织拥有800多家成员。

    2. CORBA主要版本的发展历程

    ● 1990年11月,OMG发表《对象管理体系指南》,初步阐明了CORBA的思想;
    ● 1991年10月,OMG推出1.0版,其中定义了接口定义语言(IDL)、对象管理模型以及基于动态请求的API和接口仓库等内容;
    ● 1991年12月,OMG推出了CORBA 1.1版,在澄清了1.0版中存在的二义性的基础上,引入了对象适配器的概念;
    ● 1996年8月,OMG基于以前的升级版本,完成了2.0版的开发,该版本中重要的内容是对象请求代理间协议(IIOP,Internet Inter-ORB Protocol)的引入,用以实现不同厂商的ORB真正意义上的互通;
    ● 1998年9月,OMG发表了CORBA 2.3版,增加了支持CORBA对象的异步实时传输、服务质量规范等内容。目前,宣布支持CORBA 2.3规范的中间件厂商包括Inprise(Borland)、Iona、BEA System等著名的CORBA产品生产商。

     

     

    ORBObject Request Broker

    CORBA体系结构的核心就是ORB。可以这样简单理解:ORB就是使得客户应用程序能调用远端对象方法的一种机制

     

     

    具体来说就是:当客户程序要调用远程对象上的方法时,首先要得到这个远程对象的引用,之后就可以像调用本地方法一样调用远程对象的方法。当发出一个调用时,实际上ORB会截取这个调用(通过客户Stub完成,“提高”篇中会详细解释),因为客户和服务器可能在不同的网络、不同的操作系统上甚至用不同的语言实现,ORB还要负责将调用的名字、参数等编码成标准的方式(Marshaling)通过网络传输到服务器方(实际上在同一台机器上也如此),并通过将参数Unmarshaling的过程,传到正确的对象上(这整个过程叫重定向,Redirecting),服务器对象完成处理后,ORB通过同样的Marshaling/Unmarshaling方式将结果返回给客户。

    因此,ORB是一种功能,它具备以下能力:

    1.对象定位(根据对象引用定位对象的实现)

    2.对象定位后,确信Server能接受请求

    3.将客户方请求通过Marshaling/Unmarshing方式重定向到服务器对象上

    4.如果需要,将结果以同样的方式返回。

    IDL(Interface Definition Language)

    IDL接口定义语言,是CORBA体系中的另一个重要概念。如果说ORB使CORBA做到平台无关,那么IDL, 则使CORBA做到语言无关。

    正像其名字中显示的那样,IDL仅仅定义接口,而不定义实现,类似于C中的头文件。实际上它不是真正的编程语言。要用它编写应用,需要将它映射它相应的程序设计语言上去,如映射到C++JAVA上去。映射后的代码叫Client Stub Code Server Skeleton Code

    IDL的好处是使高层设计人员不必考虑实现细节而只需关心功能描述。IDL可以说是描述性语言。设计IDL的过程也是设计对象模型的过程。它是编写CORBA应用的第一步,在整个软件设计过程中至关重要。

    IDL的语法很像C++,当然也像Java。很难想像一个程序设计人员是不懂CJava的,所以,几乎所有的程序设计人员都能迅速理解IDL。而这正是IDL设计者所希望的。

     

    Stub Code Skeleton Code

    Stub code Skeleton Code 是由IDL Complier自动生成的,前者放在客户方,后者放在服务器方。不同厂商的IDL complier生成的Stub Skeleton会略有区别,但影响不大。

    如上面的grid.idl, 编译后,Stub Code包含以下文件:

    grid.java

    _gridStub.java

    gridHelper.java

    gridHolder.java

    gridOperations.java

    Skeleton Code则包含以下文件:

        gridOperations.java

        gridPOA.java

        gridPOATie.java

    (在Stud Code 也包含gridOperations.java, 是因为在使用Call back机制时会用到。)

     

    GIOP IIOP

    我们知道,客户和服务器是通过ORB交互的,那么,客户方的ORB和服务器方的ORB又是通过什么方式通信呢?通过GIOP(General Inter-ORB Protocol)。也就是说,GIOP一种通信协议,它规定了两个实体:客户和服务器ORBs间的通信机制。

     

        ORBs通信机制

     

    GIOP在设计时遵循以下目标:

    Ø  Widest possible availability

    Ø  Simplicity

    Ø  Scalability

    Ø  Low cost

    Ø  Generality

    Ø  Architectural neutrality

    也是说,GIOP设计的尽可能简单,开销最小,同时又具有最广泛的适应性和可扩展性,以适应不同的网络。

    GIOP定义了以下几个方面:

    1The Common Data Representation (CDR) definition.

    通用数据表示定义。它实际上是IDL数据类型在网上传输时的编码方案。它对所有IDL数据类型的映射都作了规定。

    2GIOP Message Formats.

    它规定了ClientServer两个角色之间要传输的消息格式。主要包括RequestReply两种消息。

    一个Request 消息有以下几部分组成:

      A GIOP message header

    A Request Header

    The Request Body

    相应的,一个Reply消息则包括

    A GIOP message header

    A Reply Header

    The Reply Body

     

    GIOP1.1规定 GIOP message header格式如下:

    // GIOP 1.1

    struct MessageHeader_1_1 {

    char magic [4];

    Version GIOP_version;

    octet flags; // GIOP 1.1 change

    octet message_type;

    unsigned long message_size;

    };

     Request Header格式如下:

    // GIOP 1.1

    struct RequestHeader_1_1 {

    IOP::ServiceContextList service_context;

    unsigned long request_id;

    boolean response_expected;

    octet reserved[3]; // Added in GIOP 1.1

    sequence <octet> object_key;

    string operation;

    Principal requesting_principal;

    };

     Request Body则按CDR规定的方式编码,它主要对方法调用的参数进行编码, 如方法:

       double example (in short m, inout Principal p);

     可表示成:

    struct example_body {

    short m; // leftmost in or inout parameter

    Principal p; // ... to the rightmost

    };

    3GIOP Transport Assumptions:

    主要规定在任何面向连接的网络传输层上的一些操作规则。如:Asymmetrical connection usageRequest multiplexingOverlapping requestsConnection management等。

     

    另外,因为CORBA是基于对象的,GIOP还需定义一套Object Location的机制。

     

    GIOP因为是一种通用协议,所以不能直接使用。在不同的网络上需要有不同的实现。目前使用最广的便是Internet上的GIOP,称为IIOPInternet Inter-ORB Protocol)。IIOP基于TCP/IP协议。IIOP消息格式定义如下:

    module IIOP { // IDL extended for version 1.1

    struct Version {

    octet major;

    octet minor;

    };

    struct ProfileBody_1_0 { // renamed from ProfileBody

    Version iiop_version;

    string host;

    unsigned short port;

    sequence <octet> object_key;

    };

    struct ProfileBody_1_1 {

    Version iiop_version;

    string host;

    unsigned short port;

    sequence <octet> object_key;

    sequence <IOP::TaggedComponent> components;

    };

    };

     

    Dynamic Invocation Interface (DII) Dynamic Skeleton Interface (DSI)

    动态调用接口(DII)和动态骨架接口(DSI)是用来支持客户在不知道服务器对象的接口的情况下也能调用服务器对象。

     

     

     

     

    Object Adapter (对象适配器)

    对象适配器是ORB的一部分。它主要完成对象引用的生成、维护,对象定位等功能。对象适配器有各种各样。Basic Object Adapter(BOA, 基本对象适配器)实现了对象适配器的一些核心功能。而Portable Object AdapterPOA)

     

    还有其他一些专有领域的对象适配器如Database Object Adapter等。

    展开全文
  • J2EE体系架构设计

    千次阅读 2007-06-21 23:24:00
    J2EE体系结构设计务实 9/10/2003 URL: http://www.zdnet.com.cn/developer/tech/story/0,...对于我们学习和研究J2EE体系结构来说,了解与掌握J2EE体系结构的设计方法及一些常用模式是必须的;模型-视图-控制(model-v
  • 软件体系结构与设计模式笔记

    千次阅读 2012-12-26 22:35:35
    软件体系结构与设计模式笔记 第1章软件体系结构概述 ü SEI软件体系结构讨论群定义如下:一个程序/系统构件的结构,它们之间的相互关系,以及在设计和交付的整个过程中的原则和指导方针。 ü Mary Shaw和David ...
  • 本章进一步学习结构型设计模式中的代理模式 本章主题 介绍代理代理设计模式 代理模式的UML 图 代理模式的变体 利用Python3.x 代码实现的真实用例 代理模式的优点 门面模式和代理模式之间的比较 常见问题 1. 理解...
  • 架构设计——架构知识体系

    万次阅读 多人点赞 2018-08-23 13:45:58
    架构设计——架构知识体系   1、什么是架构和架构本质 在软件行业,对于什么是架构,都有很多的争论,每个人都有自己的理解。 此君说的架构和彼君理解的架构未必是一回事。 我们主要针对互联网服server系统...
  • 设计模式--静态代理模式详解

    千次阅读 2017-07-08 10:29:44
    代理模式的基本概念:   概念:为其他对象提供一种代理,以控制对这个对象的访问(例如火车票代售处,就是火车站的代理)。代理对象起到中介作用,可去掉功能服务(退票服务)或增加额外的服务(手续费)。 ...
  • 而有这么一种机制,我们可以将我们指责中的一部分隔离开来,让一个所谓的代理来帮我们解决一部分和主体业务关系不大的业务,从而让我们能更专心的设计我们的主体业务。这就是代理模式的初衷,也是很多流行框架的应用...
  • 代理类所能代理的类完全由代理类确定,装饰类装饰的对象需要根据实际使用时客户端的组合来确定被代理对象由代理对象创建,客户端甚至不需要知道被代理类的存在;被装饰对象由客户端创建并传给装饰对象。我们可以动态...
  • 公用对象请求代理(调度)程序体系结构(Common Object Request Broker Architecture),缩写为 CORBA,是对象管理组织(Object Management Group)对应当今快速增长的软硬件的协同工作能力的要求而提出的方案。...
  • 【文章一】腾讯蓝鲸体系架构及设计思想 原文文章链接:http://os.51cto.com/art/201507/484679_all.htm 作者介绍  党受辉(咖啡党)  腾讯游戏 蓝鲸产品中心总监  目前负责腾讯游戏运维支撑体系(蓝鲸)的建设...
  • 仅供参考,以下是个人的课堂笔记,只有设计模式部分,这门课的sk老师非常负责,在学生中口碑很好,如果认真听课,课后及时总结,最后会更易读懂代码的架构以及为何这样设计的原因,对编程也有很大的帮助。...
  • 在阿里云生态日,袋鼠云首席架构师正风分享了《新零售业务中台设计及实践》。他从行业背景及建设目标、业务中台的理念、技术体系与建议、产品体系与建议、案例分享五个方面进行了分享。在分享中,他主要介绍了客户...
  • 设计模式与软件体系结构【期末全整理答案】

    万次阅读 多人点赞 2020-07-13 19:01:19
    若本文对你有帮助,请点赞、关注我呦! 期末试题基本出自这些题,请提前复制黏贴到word文档里,方便考试时直接查找。 单选题汇总 ...2、常用的基本设计模式可分为(A)。 A.创建型、结构型和行为型 ...
  • 有一个OEM制造商代理做HP笔记本电脑(Laptop),后来该制造商得到了更多的品牌笔记本电脑的订单Acer,Lenovo,Dell,该OEM商发现,如果一次同时做很多个牌子的本本,有些不利于管理。利用工厂模式改善设计,用JAVA语言...
  • Python详细知识体系总结(2021版)

    万次阅读 多人点赞 2020-12-18 14:32:35
    Python知识体系总结(持续更新ing) 本文专注整理一些有关Python学习的知识体系,不定期更新。 整理的Python知识体系主要包括基础知识,Python热门的应用方向,推荐书籍,FAQ以及一些常见面试题目,包含了作为一个...
  • 网络安全体系  ISO 的 OSI/RM 是著名的网络架构模型,但是,OSI/RM 并没有在安全性方面作专门的设计,因此该模型本身的安全性是很弱的。为了改善网络的安全状况,提高网络安全强度,ISO 又在 OSI/RM 的基础上提出...
  •  2.5层代理的另一个重要功能就是实现虚拟机的迅速迁移,文献[8—9]都设计了2.5层代理的映射功能,通过将虚拟地址和实际地址进行一次映射以隔离上层应用使用的网络地址和底层网络进行交换时使用的物理地址之间的...
  • 1. 数据库设计的原则 1) 准确记录账户基本信息,特别是状态。 2) 交易时要正确记录下交易信息和账户状态。 3) 交易记录是历史性的,不可篡改。 4) 交易是连续的,对时间要求准确。 5) 交易记录...
  • 软件体系结构基础

    千次阅读 2020-12-27 12:57:33
    体系结构的模式选择设计模式做阐述,风格选择典型的三种体系结构风格做阐述,框架选择MVC、J2EE、PCMEF与PCBMER框架做阐述,同时也对特定领域的软件体系结构的类属模型、参考模型,分布式系统结构的多处理机结构、...
  • 设计模式 模式的分类: 结构化分解:整体-部分模式 工作的组织:主控-从属模式 访问控制:代理模式 管理:命令处理器模式、视图处理程序模式 通信:转发器-接收器模式、 客户机-分配器-服务器模式、出版者-订阅...
  • 前言 相信很多初学者都对JavaAPI中的IO包感到...不过,IO包的设计其实就是使用了装饰者模式,了解了这个模式再去看IO包就会发现很清晰了。 定义 Coding Common WithFactory IO包中的装饰者 与代理模式的区别 总结 ...
  • OSI安全体系结构

    千次阅读 2018-11-22 12:20:34
    OSI安全体系结构 数据链路层:点到点通道协议(PPTP),以及第二层通道协议L2TP 网络层:IP安全协议(IPSEC) 传输层:安全套接字层(SSL)和传输层安全协议TLS 会话层:SOCKS代理技术 应用层:应用程序代理 OSI安全...
  • Java知识体系总结(2021版)

    万次阅读 多人点赞 2021-01-09 16:20:53
    本期特别推荐Top5: 重磅 | 4133字 | 图文并茂详解计算机网络 【计算机网络知识体系总结】❤️入门篇❤️(熬夜肝文,建议收藏) MySql知识体系总结(SQL优化篇) 【Vue知识体系总结】❤️万字详解Vue组件化开发❤️...
  • 图中我们也可以看到,用于装饰的装饰器类可以被独立出来,可单独发展,这无疑能够简化具体被修饰类的设计,使其专注于其核心功能的实现。 class IHello { public : virtual ~ IHello () {} // 将多态基类...
  • 徐州师范大学信息传播学院毕业论文(设计)开题报告 论文(设计)题目 智能代理在网络教学平台设计中的应用与开发 学生学号 01830417 学生姓名 承晓霞 所学专业 教育技术 年 级 01级 指导教师 杨成 
  • 常用设计模式总结

    万次阅读 多人点赞 2019-07-31 19:13:12
    设计模式(Design pattern)是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结,是可复用面向对象软件的基础。使用设计模式是为了可重用代码、让代码更容易被他人理解、保证代码可靠性。 ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 73,612
精华内容 29,444
关键字:

代理体系设计