CORBA对象生命周期之生命周期的评估

2016-02-19 15:58 2 1 收藏

今天图老师小编给大家展示的是CORBA对象生命周期之生命周期的评估,精心挑选的内容希望大家多多支持、多多分享,喜欢就赶紧get哦!

【 tulaoshi.com - 编程语言 】

评估准则

!-- frame contents -- !-- /frame contents --

我们已经地讨论了CORBA对象的生命周期,包括生命周期事件,对早期和后期绑定的讨论,以及CORBA对象实现的一般分类。显然,用户希望ORB提供的应用程序能支持所有这些CORBA对象生命周期不同方面的有效实现。ORB通过对象适配器(OA)来提供这种支持。下面定义了一系列的评估准则,通过这些准则可对对象适配器进行涉及CORBA对象生命周期有效支持的分析。然后用户采纳这些不同的评估准则,并把它们应用到BOA和POA代的对象适配器中。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

·适配器结构-- 最为重要的方面是适配器的一般结构。

·对象标识-- CORBA系统中的对象标识不是小问题,必须仔细检验特定的ORB代如何为CORBA对象支持对象标识的概念。

·早期绑定-- 用户需要检验不同ORB代支持早期绑定的方式。这里值得注重的是绑定和伺服对象创建相互间有多大程度的关联。

·后期绑定-- 不同ORB为后期绑定提供的机制必须要检验,非凡是关于用来支持持久对象的应用程序的有用性。

·无状态伺服对象-- 用户想要检验ORB代为实现无状态伺服对象而提供的支持。思路是对于无状态伺服对象,用户并不真正需要每个CORBA对象代表一个伺服对象实例-- 一个单独的伺服对象可以作为多个CORBA对象的瞬态胶囊,并在每个请求的基础上设定一个非凡CORBA对象的标识。

·有状态伺服对象-- 正如前面讨论过的,对于有状态伺服对象,确保用户不必为每个请求重新激活这些伺服对象,并且激活伺服对象未超过某一阈值,这通常是很重要的。

评估BOA代

下面想在上述定义的每个与对象生命周期相关的评估准则下探讨基本对象适配器,说明对可移植对象适配器完成的工作。

1. BOA 体系结构

前面提过,BOA体系结构在很多方面是极其模糊的。应用程序要求用来有效治理对象生命周期的很多特征都不够具体。BOA定义了一些激活CORBA服务器和CORBA对象实现的函数。不幸的是,BOA侧重于服务器激活,而不是像后期绑定和动态对象激活这些重要的问题。BOA还为对象引用的生成和解释定义了一些函数。BOA隐含了伺服对象和CORBA对象间的一对一关系,即对于特定服务器支持的每个CORBA对象要求有一专用的伺服对象实例。

因为BOA规范过于模糊,所以本文使用IONA Technologies Orbix 2.x ORB作为参考实现。同样,我们的目的不是要给出不同BOA代ORB的全面比较,而是使用ORB作为例子来讨论一般的概念。

2. 对象标识

BOA代的ORB把对象引用和创建时的引用数据相关联。引用数据是8位位组序列,并由ORB控制。这就使在遵循CORBA的方式中提供给用程序定义的对象I D变得困难。Orbix ORB提供了_marker() API来为CORBA对象指明应用程序定义的引用数据。marker是一字符串,由应用程序提供,并作为引用数据的一部分由ORB存储。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

3. 早期绑定

如前所述,大多数BOA代ORB在客户端桩类层次和服务器端框架类层次之间提供了紧密的耦合。这样做的结果是伺服对象的创建通常会间接导致对象的激活,因为伺服对象继续了构造方法,这个构造方法能间接在伺服对象和ORB运行时模块之间创建绑定。这就暗示,假如用户想把对象引用返回给客户机,也就要创建和激活伺服对象实例,即使用早期绑定。

4. 后期绑定

BOA结构并没有定义ORB和应用程序之间如何交互以支持后期绑定,或是通过命令进行对象激活。因此,本文把Orbix ORB作为BOA ORB如何论述这个问题的例子。

Orbix ORB使用图3所示的装载器机制来支持后期绑定。如前所述,装载器扮演伺服对象治理器的角色。基本思想是应用程序把装载器实例注册到ORB运行时模块。ORB运行时模块在对象故障的情况下依次激活装载器上的load( )方法。这就给了装载器一个机会来激活请求对象,这样ORB就可以分派它。


来源:http://www.tulaoshi.com/n/20160219/1610795.html

延伸阅读
开始阶段 装载:把二进制形式的java类型读入jvm中。 1)通过该类型的完全限定名,产生一个代表该类型的二进制数据流; 2)解析这个二进制数据流为方法区内的内部数据结构; 3)创建一个表示该类型的java.lang.Class类的实例; 连接:把已读入的类型数据合并到虚拟机的运行时状态中。 1)验证:确保java类型数据格式正确并且适用于jvm使...
在 Android 中,多数情况下每个程序都是在各自独立的 Linux 进程中运行的。当一个程序或其某些部分被请求时,它的进程就“出生”了;当这个程序没有必要再运行下去且系统需要回收这个进程的内存用于其他程序时,这个 进程就“死亡”了。可以看出,Android 程序的生命周期是由系统控制而非程序自身直接控制。这和我们编写桌面应用程序时的思维有...
Android 系统在Activity 生命周期中加入一些钩子,我们可以在这些系统预留的钩子中做一些事情。 例举了 7 个常用的钩子: protected void onCreate(Bundle savedInstanceState) protected void onStart() protected void onResume() protected void onPause() protected void onStop() protected void onRestart() protected void onDes...
与人有生老病死一样,线程也同样要经历开始(等待)、运行、挂起和停止四种不同的状态。这四种状态都可以通过Thread类中的方法进行控制。下面给出了Thread类中和这四种状态相关的方法。 代码如下: // 开始线程      public void start( );      public void run( );      // ...
1、新建一个Activity,并把各个生命周期打印出来 2、运行Activity,得到如下信息 onCreate-- onStart-- onResume-- 3、按crtl+f12切换成横屏时 onSaveInstanceState-- onPause-- onStop-- onDestroy-- onCreate-- onStart-- onRestoreInstanceState-- onResume-- 4、再按crtl+f12切换成竖屏时,发现打印了两次相同的l...

经验教程

493

收藏

56
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部