JPH08339338A - 分散オブジェクトシステムにおいてオブジェクトのタイプを決定する方法及び装置 - Google Patents

分散オブジェクトシステムにおいてオブジェクトのタイプを決定する方法及び装置

Info

Publication number
JPH08339338A
JPH08339338A JP8065026A JP6502696A JPH08339338A JP H08339338 A JPH08339338 A JP H08339338A JP 8065026 A JP8065026 A JP 8065026A JP 6502696 A JP6502696 A JP 6502696A JP H08339338 A JPH08339338 A JP H08339338A
Authority
JP
Japan
Prior art keywords
computer
target
interface identifier
proxy
client
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP8065026A
Other languages
English (en)
Inventor
Peter Vanderbilt
ヴァンダービルト ピーター
David M Brownell
エム. ブロウネル デイビッド
Alain Demour
デモア アレイン
Dwight F Hare
エフ. ヘア ドワイト
Michael L Powell
エル. パウル マイケル
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sun Microsystems Inc
Original Assignee
Sun Microsystems Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sun Microsystems Inc filed Critical Sun Microsystems Inc
Publication of JPH08339338A publication Critical patent/JPH08339338A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/465Distributed object oriented systems

Abstract

(57)【要約】 【課題】 分散オブジェクト環境コンピューティングシ
ステムにおいて、遠隔のコンピュータ上に存在するオブ
ジェクトのタイプをチェックする方法を提供する。 【解決手段】 まず、遠隔の場所に存在するオブジェク
トが特定のタイプであるか否かを判定するため、タイプ
チェック方法を発動する。発動の際、ターゲットインタ
ーフェイス識別子をアーギュメントとして含める。次
に、ターゲットインターフェイス識別子が、第1のコン
ピュータ上に存在するプロクシオブジェクトによって保
持されている仮想インターフェイス識別子に等しいか、
あるいはそのベースであるか否かの判定が行われる。タ
ーゲットインターフェイス識別子が仮想インターフェイ
ス識別子に等しいか、あるいはそのベースであると判定
された場合、その旨の肯定表示がクライアントプロセス
へ返される。そうでない場合、ターゲットインターフェ
イス識別子は実インターフェイス識別子と比較される。

Description

【発明の詳細な説明】
【0001】
【発明の属する技術分野】本発明は一般的に、分散コン
ピューティングシステム、クライアント-サーバーコン
ピューティング、およびオブジェクト指向プログラミン
グの分野に係わり、特に、分散オブジェクトシステムに
おいて、オブジェクトのタイプを決定する方法および装
置に関するものである。
【0002】
【従来の技術および発明が解決しようとする課題】ここ
数年来、従来のプログラミング手法で開発されたソフト
ウェアの納期の遅れと予算超過の傾向が強まるにつれ
て、オブジェクト指向プログラミング手法への関心が高
まっている。このことは、手順モデルと「線形」コード
を強調する従来のプログラミング技法が多くの状況下に
おいて設計と保守が困難であることに起因している。一
般的に、従来の手法を用いて作成された大きなプログラ
ムは「脆い(brittle)」、すなわち、わずかな変更でさ
えもプログラミングコードの多くの要素が影響を受け
る。従って、ユーザーの要望に応じたソフトウェアへの
小規模な変更でも、全プログラムの大幅な再設計と書換
えが必要になることがある。また、情報の量はそれを処
理する我々の能力を超える速さで生まれているので、デ
−タを扱う能力は押しつぶされつつある。コンピュ−タ
のハ−ドウエアの性能はここ10年間にわたって劇的に
向上してきたが、ソフトウエアはそうではなかった。情
報処理システムの設計、開発、そしてメンテナンスに対
する従来のソフトウエアのアプローチは我々の能力をデ
−タの管理という範囲に限定されたままである。
【0003】オブジェクト指向プログラミング戦略は、
こうした問題の解決に向いている。その理由は、オブジ
ェクト手法は、手順よりもむしろデータの取扱いに重点
を置くので、プログラマーに現実世界の問題をモデル化
するにあたって、より直感的アプローチを提供するから
である。更に、オブジェクトは関連データと手順とをカ
プセル化しており、オブジェクトのインターフェースを
介してのみ関連データ及び手順へのアクセスを可能にす
ることによって、これらの情報がプログラムの他の部分
から隠されている。したがって、オブジェクトのデータ
および/または手順への変更は、プログラムの他の部分
から比較的隔離された状態にある。こうして、特定のオ
ブジェクトのコードへの変更が他のオブジェクトのコー
ドに影響を及ぼすことがないので、従来の方法を用いて
書かれたコードに比べて保守の容易なコードが提供され
る。更に、オブジェクトは本来モジュール的な性質であ
り、個々のオブジェクトを種々のプログラムに再使用す
ることができる。したがって、プログラマーは「試行正
(tried and true)」のオブジェクトのライブラリを作成
し、種々のアプリケーションにオブジェクトを反復して
使用することができる。このことによりソフトウェアの
信頼性が高まるとともに、信頼性のあるプログラミング
コードが繰り返し用いられるので、開発時間が短縮され
る。このモジュール−ル性によってソフトウエアの信頼
性が増し、一方では信頼性のあるプログラミングコ−ド
を繰り返し使用できるので開発時間が短縮される。オブ
ジェクト指向の設計とプログラミング技法に関する更な
る説明は、David A. Taylor 著、Object-Oriented Tech
nology, Addison-Wesley 1990, および General Electr
ic Research and Development Center の Object-Orien
ted Modeling and Desig n, Prentice-Hall,1991, およ
び Bertrand Meyer 著、Object-Oriented Softwear Con
struction, Prentice-Hall 1988, を例として参照され
たい。
【0004】しかし、オブジェクト指向方法論の利点を
十分に活用すること、特に、モジュール性によってもた
らされる利点の達成は今後の課題である。特に、プログ
ラマーや他のユーザーが、種々のプログラミング言語で
作成されたオブジェクトや、ネットワークによって相互
接続された種々のコンピューティングプラットフォーム
に存在するオブジェクトに、ユーザーのプログラミング
コードを大幅に修正せずにアクセスできるように、透明
性のよい方法でアクセスが可能であることが大いに望ま
しい。
【0005】ネットワークによって接続された種々のコ
ンピュータ上にオブジェクトが配置されている状況は普
通、クライアント-サーバーコンピューティングと呼ば
れる。クライアント-サーバーコンピューティングにお
いては普通、コンピュータどうしを接続するネットワー
クによる相互通信が可能な1セットコンピュータがあ
る。これらコンピュータの何台かは、他のコンピュータ
へのサービスまたは機能のプロバイダ(提供者)を演ず
る。そのようなサービスまたは機能のプロバイダーは
「サーバー」として知られ、、またそのようなサービス
または機能のコンシューマ(消費者)は「クライアン
ト」と呼ばれる。クライアント-サーバーモデルはま
た、同じコンピュータ上で走る個別のプログラムどうし
が、ある保護された機構を介して通信を行い、機能のプ
ロバイダーおよびコンシューマーとして作用しているケ
ースへと一般化する。
【0006】クライアント-サーバーモデルに基づくオ
ブジェクト指向手法を用いてそのような分散システムを
提供しようとする試みがなされて来ており、その場合、
サーバーオブジェクトが、サーバーオブジェクトにリク
エストを行うクライアントオブジェクトへのインターフ
ェイスを提供する。通常、そのような分散システムにお
いては、これらサーバーはデータとそれに対応する方法
から成るオブジェクトである。クライアントオブジェク
トは、分散システムによって仲介されるコールをサーバ
ーオブジェクトに対して行うことによって、サーバーオ
ブジェクトの機能を得る。サーバーオブジェクトは、コ
ールを受信すると適当な方法を実行し、その結果をクラ
イアントオブジェクトに返す。クライアントオブジェク
トとサーバーオブジェクトとは、種々の分散オブジェク
トの場所をつきとめてオブジェクト間での通信を形成さ
せるオブジェクトリクエストブローカ(ORB)を介し
て通信を行う。
【0007】分散システムにおけるオブジェクトメタフ
ァー(object metaphor)は、その実装実行(implement
ation)からオブジェクトのインターフェイスを分離
し、それによりソフトウェアデザイナーがオブジェクト
の実装の詳細に煩わされることなく、利用可能な種々の
オブジェクトの機能を利用することができるという、有
用な技法である。プログラマーはオブジェクトのインタ
ーフェイスのみを認識していればよい。更に、オブジェ
クト指向分散システムは、ネットワークを介して接続さ
れている種々のコンピューティングプラットフォームに
存在する単一のインターフェイスの多重実装実行(mult
iple implementation)を可能にする。したがって、ネ
ットワークに所属する1台のマシンで作業をするプログ
ラマーは、自分があるオブジェクトについて詳細な知識
を持っていなくても、遠隔のオブジェクトがコールさ
れ、方法が実行され、データが適切に返されるという確
信をもって、そのオブジェクトにアクセスすることがで
きる。そのようなシステムは、オブジェクト指向手法の
モジュール性とカプセル化の利点を十分に活用すること
によって、オブジェクト指向手法の固有の利点を最大に
することができる。
【0008】分散オブジェクトシステムのもうひとつの
利点は、場所独立性である。すなわち、分散オブジェク
トはネットワーク中の、クライアントのアドレススペー
ス中の、クライアントのマシンの複数アドレススペース
中の、およびネットワーク全体の複数のマシン中のどこ
に配置されていてもよい。すべてのオブジェクトは、そ
れらの場所に関係なく均一に処理される。更に、分散オ
ブジェクトシステムは、アプリケーション開発者がオブ
ジェクトの既存のインベントリーに依存して基礎レベル
機能を提供することができるので、従来のシステムより
も大きな機能を提供する。分散オブジェクトシステムは
また、ユーザーが定義する、プラットフォームに対して
独立したインターフェイスを介してアプリケーションど
うしが共同するので、ポータブル性を改善するととも
に、開発コストの低減を容易にする。分散オブジェクト
システムはその他にも多くの利点を実現する。
【0009】ソフトウェア産業は、オブジェクト管理グ
ループ(OMG)を形成することによって、分散オブジ
ェクト技術に対するこの需要に応えた。OMGの目標
は、オブジェクト管理アーキテクチャー(OMA)の定
義であり、これは主として4つのコンポーネントから成
る。すなわち、オブジェクトリクエストブローカ(OR
B)、オブジェクトサービス(object service)、共通
施設(object facilities)、およびアプリケーション
オブジェクト(application object)である。オブジェ
クトリクエストブローカは、基本的オブジェクト通信と
マネージメントサービスとを提供して分散オブジェクト
システムの基礎を形成する。オブジェクトリクエストブ
ローカの標準は共通オブジェクトリクエストブローカア
ーキテクチャー(CORBA)仕様に記載されている。
【0010】分散オブジェクトシステムのOMG仕様の
ひとつの実装が、分散オブジェクト環境(Distributed
Object Environment = DOE)と呼ばれる。この実装
においては、ORBの機能は分散オブジェクト管理施設
(DOMF)によって実行される。換言すれば、DOM
Fは分散オブジェクトシステムのための基本的オブジェ
クトサービスを提供する。DOEの基本的要素と機能
は、California 州 Mountain View 市の SunSoft 社よ
り 1994 年 5 月発行の Interface User's Guide and Re
ference: Project DOE External Developer's Release
2 に記載されている(SunSoft は Sun Microsystems, I
nc. の商標である)。
【0011】分散オブジェクトシステムにおいては、す
べてのオブジェクトにはそれぞれのタイプがある。クラ
イアントにはタイプが分かっている。しかし、いくつか
の場合に、クライアントは、いずれかのオブジェクトの
一般的なタイプを知っているが、そのオブジェクトを更
に具体的なタイプとして取り扱いたいことがある。ある
オブジェクトを一般的なタイプから具体的なタイプへ変
換するこの手順を「絞り込み」 (narrowing)という。例
えば、オブジェクトが一般的に「プリンタ」であること
をクライアントが知っていて、「PostScript カラープ
リンタ」に関してより具体的な操作を行うことができる
と好都合であることが分かるかも知れない。すなわちク
ライアントは、プリンタの正確なタイプを絞り込むこと
ができることを希望する。クライアントは「プリンタ」
オブジェクトに「PostScript カラープリンタに間違い
ないか?」と問い合わせることを希望する。またいくつ
かの場合、クライアントは逆の手順として、オブジェク
トのタイプの範囲を拡大することを希望するかも知れな
い。オブジェクトのタイプを絞り込み、あるいは拡大し
たいというクライアントの要求を考慮すると、分散オブ
ジェクトシステムにおいて、オブジェクトがどのタイプ
であるか、オブジェクトに問い合わせる方法と装置があ
ることが望ましい。
【0012】
【課題を解決するための手段】本発明は、また上記およ
びその他の目的を達成するため、分散オブジェクト環境
コンピューティングシステムにおける遠隔のコンピュー
タ上に配置されたオブジェクトのタイプをチェックする
方法と装置とを提供する。このタイプチェック方法にお
いては、遠隔の場所にあるオブジェクトが特定のタイプ
であるか否かを問い合わせる。特定のタイプは仮想(app
arent)インターフェイス識別子によって言及されるのが
普通である。まず、遠隔の場所にあるオブジェクトが特
定のタイプであるか否かを判定するためのタイプチェッ
ク方法が発動される。発動の際、ターゲットインターフ
ェイス識別子がアーギュメントとして含まれる。次に、
ターゲットインターフェイス識別子が、第1のマシンに
あるプロクシに保持されている仮想識別子に等しいか、
あるいはそのベースであるか否かの判定が行われる。タ
ーゲットインターフェイス識別子が仮想識別子に等しい
か、あるいはそのベースである旨判定されると、その旨
の肯定表示がクライアントへ返される。一方、ターゲッ
トインターフェイス識別子が仮想識別子に等しくない
か、あるいはそのベースでない旨判定されると、ターゲ
ットインターフェイス識別子は実(real)インターフェイ
ス識別子と比較される。多くの実施例において、実イン
ターフェイス識別子を決定するためにサーバーホストに
コールを行わなければならない。いくつかの実施例にお
いては、そのような問い合わせの結果を格納するためロ
ーカルの格納場所を設けることができる。次にターゲッ
トインターフェイス識別子は実インターフェイス識別子
と比較され、ターゲットインターフェイス識別子が実イ
ンターフェイス識別子に等しいか、あるいはそのベース
であるか否かの判定が行われてから、その結果がクライ
アントへ返される。
【0013】格納場所(cache)を利用する実施例におい
ては、実インターフェイスチェックのステップはまず、
ターゲットインターフェイス識別子が実インターフェイ
ス識別子に等しいか、あるいはそのベースであるか否か
の判定を格納場所が行うことができるか否かをチェック
するサブステップを含む。できる場合、適当な結果が返
される。できない場合、ターゲットインターフェイス識
別子が実インターフェイス識別子に等しいか、あるいは
そのベースであるか否かの判定を行うよう、第2のコン
ピュータへコールが行われる。
【0014】ひとつの好ましい構成において、実インタ
ーフェイスをチェックするためサーバーホストにコール
を行う必要がある場合、第2のコンピュータ上でクライ
アントホストとORBデーモンとの間に接続が形成され
る。次にORBデーモンを用いて実インターフェイス識
別子とターゲットオブジェクトに関するインターフェイ
ス def を識別する。更に具体的には、ORBデーモン
は、プロクシから転送されたターゲットオブジェクト識
別子を用いて実インターフェイス識別子とインターフェ
イス def の場所を見いだす。ターゲットオブジェクト
識別子は、第2のコンピュータへのターゲットオブジェ
クトを識別するように編成されている。次にインターフ
ェイス def を用いてターゲットインターフェイス識別
子が実インターフェイス識別子に等しいか、あるいはそ
のベースであるか否かの判定を行い、場所が見いだされ
たサーバープロクシへ結果が返される。
【0015】更にひとつの好ましい構成において、実イ
ンターフェイスをチェックするためサーバーホストにコ
ールを行う必要がある場合、第2のコンピュータ上でプ
ロクシとサーバープロセスとの間に接続が形成される。
次にサーバープロセスによって、ターゲットインターフ
ェイス識別子が実インターフェイス識別子に等しいか、
あるいはそのベースであるか否かの判定が行われ、その
結果がクライアントへ返される。
【0016】また、本発明は、遠隔のコンピュータ上に
あるオブジェクトのタイプをチェックし、出力プロクシ
オブジェクトを返すための方法と装置とを提供する。キ
ャスト(cast = 役割)チェック機能は、ターゲットイ
ンターフェイス識別子を、仮想インターフェイス識別子
と、プロクシオブジェクトの発生源であるすべての親オ
ブジェクトのインターフェイスと、比較することによっ
て、プロクシオブジェクトのキャストをチェックする。
このキャストチェック機能に問題がなければ、プロクシ
オブジェクトは、ターゲットインターフェイス識別子に
対応するクラスへ拡張されてから、返される。キャスト
チェック機能に問題があれば、上記の遠隔タイプチェッ
ク機能が実行される。このタイプチェック機能に問題が
あれば、ナル(null = ゼロ)プロクシが返される。この
機能に問題がなければ、プロクシファクトリー表を用い
て出力プロクシが作成され、適当なプロクシファクトリ
ーを表示する。出力プロクシはプロクシオブジェクトと
同じ種類で、ターゲットインターフェイス識別子と同じ
タイプである。出力プロクシもターゲットインターフェ
イス識別子に関連するクラスへ拡張される。
【0017】
【発明の実施の形態】以下、添付図面を参照して本発明
の実施の形態を説明する。なお、図面の説明にあたって
同一の要素には同一の符号を付し、重複する説明を省略
する。
【0018】以下の説明においては、説明の目的で、本
発明を完全に理解できるように特定のデータや構成につ
いて述べる。ここに説明する好ましい実施例は、SunMic
rosystems, Inc. の営業部門である SunSoft 社によっ
て作成された分散オブジェクト環境(DOE)システム
の一部分として実装される。しかし、本発明が、緊密に
結合されたプロセッサーの種々の構成、メーカー別、ま
たはモデルにおいて、また、緩やかに結合されたマルチ
プロセッサーシステムの種々の構成において、特定の詳
細事項を用いることなく実行可能であることが、当業者
には明らかであろう。
【0019】I.用語の定義 「分散オブジェクトシステム」とは一般的に、分散され
たオブジェクト手法の実装であり、オブジェクトリクエ
ストブローカ(ORB)を介して通信を行う分散された
オブジェクトを有するコンピュータシステムをいう。
【0020】「オブジェクトリクエストブローカ(OR
B)」は、基本的オブジェクト通信と管理サービスを提
供することにより分散オブジェクトシステムの基礎を形
成する。オブジェクトリクエストブローカデーモンは、
ホストコンピュータ上のORBの具体化であるホストコ
ンピュータ上で走るプロセスである。したがって、分散
オブジェクトシステム内の各ホストは、それ自体のOR
Bデーモンを有する。ORBデーモンの目的のひとつ
は、サーバープロセスの起動である。ORBデーモンが
まとまって全ORBの一部分を成す。
【0021】「クライアントプロセス」は、クライアン
トコンピュータ上で走っている、つまり活動している(a
ctive)ソフトウェアプロセスである。「サーバープロセ
ス」はサーバーコンピュータ上のソフトウェアプロセス
である。クライアントプロセスとサーバープロセスと
は、同じマシン上に存在したり、時には同じプロセスで
さえあり得る。
【0022】「インターフェイス定義言語(IDL)」
とは、オブジェクトのインターフェイスを定義するのに
用いる言語である。
【0023】「オブジェクト」または「分散オブジェク
ト」という用語は、オブジェクトのインターフェイスを
介する作用によって操作することのできるカプセル化さ
れたコードとデータとのパッケージをいう。したがっ
て、当業者にとっては、分散オブジェクトは、従来のプ
ログラミングオブジェクトを定義する基本的特性を含む
ものと見えるであろう。しかし、分散オブジェクトは、
以下の二つの重要な特徴を含むことにより、従来のプロ
グラミングオブジェクトとは異なる。第1の特徴は、分
散オブジェクトが多言語的であることである。分散オブ
ジェクトのインターフェイスは、様々なプログラミング
言語にマップされ得るインターフェイス定義言語を用い
て定義される。こうしたインターフェイス定義言語のひ
とつがIDLである。第2の特徴は、分散オブジェクト
は場所独立性がある、すなわち、分散オブジェクトはネ
ットワーク内のどこにでも配置され得ることである。こ
のことは、単一のアドレス空間内、例えばクライアント
のアドレス空間内に存在する従来のプログラミングオブ
ジェクトに対して著しく対照的である。分散オブジェク
トは、リクエストを他のオブジェクトへ送っているか、
他のオブジェクトからのリクエストに応答しているかに
よって、オブジェクトクライアントかオブジェクトサー
バーかの何れかとなる。リクエストおよび応答は、オブ
ジェクトの場所と状態とを認識しているオブジェクトリ
クエストブローカ(ORB)を介して行われる。
【0024】「クライアントオブジェクト」は、他のオ
ブジェクトへ情報の供給または機能の実行のリクエスト
を送るオブジェクトである。情報を供給する、または機
能を実行するオブジェクトは、「サーバーオブジェク
ト」と呼ばれる。すなわち、クライアントオブジェクト
は、サーバーオブジェクトを「コール」してサーバーオ
ブジェクト上に定義されている方法を「発動」(invoke)
する。サーバーオブジェクトは「ターゲットオブジェク
ト」とも呼ばれる。オブジェクトは多言語性であるの
で、クライアントオブジェクトとサーバーオブジェクト
とは、互いに相手の実装プログラミング言語の知識を持
つ必要がない。分散オブジェクトシステムにおけるクラ
イアントオブジェクトとサーバーオブジェクトはインタ
ーフェイス定義言語のみを用いて通信すればよい。上に
述べたように、クライアントオブジェクトによるサーバ
ーへのリクエストと、サーバーオブジェクトの回答は、
ORBによって処理される。クライアントオブジェクト
とサーバーオブジェクトは、同じプロセス内、同じホス
トコンピュータ上、または2台の異なるホストコンピュ
ータ上の異なるプロセス内に存在することができる。
【0025】「オブジェクトレファレンス」とは、他の
オブジェクトへのポインターを含むオブジェクトをい
う。更に、オブジェクトレファレンスはサブオブジェク
トの識別に用いることができるメモリーの一部(サブオ
ブジェクト識別子)を含むことができる。サブオブジェ
クト識別子以外は、オブジェクトレファレンスの形成と
定義とは当業者には周知である。一般的に、オブジェク
トレファレンスはクライアントプロセス内にのみ存在す
る。オブジェクトレファレンスは一般的にひとつのプロ
セスで格納して次のプロセスで検索したり、あるいはい
ずれかのプロセスから持ってくることはできない。オブ
ジェクトレファレンスはサーバープロセスにおいてオブ
ジェクトが形成されるときに形成され、IDLオペレー
ションによって転送することができる。各オブジェクト
レファレンスは唯一のオブジェクトを言及できるが、数
個のオブジェクトレファレンスが同じオブジェクトを言
及することができる。
【0026】情報のパケットを「マーシャル(整頓)す
る」とは、この情報をネットワーク通信ラインを介して
転送するように準備することである。これは、使用する
ネットワーク通信プロトコルに従ってデータを整理する
ことをしばしば意味する。
【0027】情報のパケットを「アンマーシャル(整頓
解除)する」とは、本質的にマーシャリング手順を逆に
することであって、非ネットワーク環境において意味を
もつフォーマットにおいて情報のパケットを作成するこ
とである。
【0028】「オブジェクトインターフェイス」は、あ
るオブジェクトが提供する作用、属性、及び例外の仕様
である。一実施例において、分散オブジェクトのオブジ
ェクトインターフェイスは、IDLを用いて書くことが
できる。上に述べたように、オブジェクトはそれらのイ
ンターフェイスを介して処理を行う。したがって、イン
ターフェイスを使用することにより、処理の際の方法と
他のオブジェクトのデータを定義する他のプログラミン
グ言語をオブジェクトが認識する必要性を軽減する。
【0029】「パラメーター」は、リクエストされた方
法とともにリクエストされたサービスを実行するのに必
要な情報をサーバーオブジェクトに提供するため、クラ
イアントオブジェクトから送られたデータ要素である。
【0030】II.具体的実施例 分散オブジェクト操作環境においては、リクエストと応
答は、オブジェクトの場所と状態を認識しているオブジ
ェクトリクエストブローカ(ORB)を介して授受され
る。そのようなORBの実装に適したひとつのアーキテ
クチャが、共通オブジェクトリクエストブローカアーキ
テクチャ(CORBA)仕様によって提供される。CO
RBA仕様は、サービスをリクエストするクライアント
へ目標オブジェクトがサービスを提供することができ
る、分散クライアント-サーバー環境におけるオブジェ
クトに関して分散コンピューティング環境世界を定義す
るため、オブジェクト管理グループ(OMG)によって
開発された。以下の考察においては、「オブジェクト」
と「分散オブジェクト」とは、以下の発明が両者に向け
られているので、互換性をもって用いられる。
【0031】本発明の好ましい実施例において、分散オ
ブジェクトはネットワークによって相互接続された1台
以上のコンピュータ上にある。このネットワークは任意
の適当な形式を取ることができる。例を用いて、代表的
なネットワーク編成2を図11に示す。このネットワー
ク編成2は、伝送線4に結合された第1のコンピュータ
3を含む。このネットワーク2は更に、データや命令が
ネットワーク化されたコンピュータ間でやりとりできる
ように、他のコンピュータ6、7及び8に加えてサーバ
ー、ルーター等5も含む。コンピュータネットワークの
設計、構成、及び実装は当業者には周知である。
【0032】コンピュータ3、6、7、及び8としての
使用に適した代表的なコンピュータ10の概略を図12
に示す。コンピュータ10は、中央処理装置(CPU)
12を含み、これはランダムアクセスメモリ(RAM)
14と双方向的に、またリードオンリーメモリ(RO
M)16と一方向的に結合されている。普通は、RAM
14は「スクラッチパッド」メモリーとして用いられ、
現在、CPU12上で作動中のプロセスのための、分散
オブジェクト及びそれらに対応するデータと命令を含
む、プログラミング命令とデータを含む。ROM16は
普通、コンピュータがその機能を実行するために用いる
基本的な操作命令、データ及びオブジェクトを含む。更
に、ハードディスク、CD ROM、磁気光(フロプテ
ィカル)ドライブ、テープドライブ等のような大容量記
憶装置18が双方向的にCPU12に接続されている。
大容量記憶装置18は一般的に、普通はCPUによって
頻繁には用いられない追加のプログラミング命令、デー
タ、及びオブジェクトを含むが、アドレススペースはC
PUによる、例えばバーチャルメモリー等のためのアク
セスが可能である。上記の各コンピュータは更に普通は
キーボード、ポインター器具(例えばマウスまたはスタ
イラス)及び/またはネットワーク接続を含む入出力源
19を含む。追加の大容量記憶装置(図示せず)をネッ
トワーク接続を介してCPU12に接続することができ
る。上記のハードウェア要素及びソフトウェア要素、更
にネットワーキング装置の設計と構造は標準的なもので
あることが、当業者には理解されるであろう。
【0033】次に、図1を参照し、分散オブジェクトシ
ステム20の例を説明する。実施例において、分散オブ
ジェクトシステムは Sun Microsystems, Inc. の分散オ
ブジェクト環境(DOE)によって実装される。このシ
ステムは、クライアントコンピュータ22、サーバーコ
ンピュータ24、および各コンピュータ上と分散オブジ
ェクトシステム全体にわたって存在するオブジェクトリ
クエストブローカ(ORB)26を含む。更に、クライ
アントオブジェクト29を含むクライアントプロセス2
8、プロクシオブジェクト30、その仮想(apparent)イ
ンターフェイス32、ローカルクライアント格納場所3
4、およびスタブ(stub)36も示す。サーバープロセス
38は、オブジェクト40と41、オブジェクト40の
実インターフェイス42、およびスケルトン44を含
む。ネットワーク通信装置46は、クライアントコンピ
ュータ22とサーバーコンピュータ24との間の通信を
提供する。
【0034】分散オブジェクトシステム20は、ひとつ
のクライアントプロセス28を持ったただ1台のクライ
アントコンピュータ22と、ひとつのサーバープロセス
を持ったただ1台のサーバーコンピュータ24を示して
いる。しかし、分散オブジェクトシステムには任意の数
のコンピュータやプロセスがあり得ること、いずれのコ
ンピュータにも多くのプロセスがあり得ることを理解す
べきである。また、いずれのコンピュータまたはプロセ
スも、そのコンピュータまたはプロセスがあるオブジェ
クトに関する情報をリクエストしているか、あるいは、
リクエストを受けているかによって、クライアントにも
サーバーにもなり得る。あるプロセスが、あるターゲッ
トオブジェクトに関する情報をリクエストしている場
合、それはクライアントプロセスと呼ばれ、あるプロセ
スがターゲットオブジェクトを含む場合、それはサーバ
ープロセスと呼ばれる。また、クライアントプロセス2
8とサーバープロセス38が、共に同じホストコンピュ
ータ上で実行されていることも考えられる。ここで説明
する方法は同じホスト質問(inquiries)を処理するのに
用いることができるが、多くの場合、同じホスト質問の
処理には更に効率のよい方法が用いられる。クライアン
トコンピュータ22とサーバーコンピュータ24は、ス
ーパーコンピュータ、ミニコンピュータ、ワークステー
ション、パーソナルコンピュータ、パーソナルディジタ
ルアシスタント、およびその他の電子計算機を含む、オ
ブジェクト支持能力のある任意のタイプのコンピューテ
ィング装置でよい。一般的に、クライアントプロセス2
8とサーバープロセス38は、画成されたメモリースペ
ース内をコンピュータ上で走るソフトウェアプロセスで
ある。これらのプロセスは、種々のプログラミング言語
で書くことができる。プロセスは、オペレーティングシ
ステム、アプリケーションプログラム、データーベー
ス、デバイスドライバー、ネットワーク通信、または、
その他のソフトウェアに基づくプログラムであり得る。
【0035】クライアントプロセス28のメモリースペ
ース内には、スタブ36、任意の数のクライアントオブ
ジェクト29、任意の数のプロクシオブジェクト30、
およびローカルクライアントメモリー格納場所34が含
まれる。スタブ36は、クライアントプロセス28とサ
ーバープロセス38の通信を可能にするソースコードコ
ンポーネント(source code component)である。スタブ
は、クライアントプロセス28のネイティブ言語で機能
コールまたは手順コールを受けて、サーバープロセス3
8へコールを行うためにサポートライブラリを用いる。
サーバープロセス38内の類似のソフトウェアがスケル
トン44である。スケルトンは、スタブが提供するもの
に対して逆のマッピングを実行する。スケルトンは、コ
ール用にエンコードされた情報を取り上げ、コールのサ
ーバープロセス側に関してネイティブプログラミング言
語でデータ構造またはオブジェクトレファレンスを再構
成する。スタブ36とスケルトン44は共にORBにお
いて部分的に実装される。各インターフェイスには唯一
性のスケルトンとスタブがあり、したがって、クライア
ントプロセスには任意の数のスタブが、また、サーバー
プロセス中には任意の数のスケルトンがある。インター
フェイス定義言語(IDL)コンパイラーは、スタブと
スケルトンを発生させることが望ましい。
【0036】以下で更に詳細に説明するように、クライ
アント格納場所34は、いくつかの実施例においては、
オブジェクトのタイプの判定をスピードアップするのに
用いられる。そのような格納場所を用いることの欠点
は、システムのオーバーヘッドが多少増えることであ
る。ここに説明する、それを用いた実施例においては、
クライアント格納場所34は、クライアントプロセス2
8と同じメモリースペース内にある。特定のタイプのオ
ブジェクトが予め判定されている場合、その情報はクラ
イアントプロセスメモリースペースに格納され、そこで
はネットワーク46を介してコールを行うよりもはるか
に速くアクセスされ得る。図5はクライアント格納場所
34の構造を示す。クライアント格納場所34は本質的
に、数値テーブル152へのポインターを伴うメインテ
ーブル150である。メインテーブル150の各列は、
実インターフェイスID(実インターフェイス識別子)
フィールド154とポインターフィールド156を有す
る。メインテーブル150の各列のエントリーは、ユニ
ーク数値テーブル152に対応する。すなわち、実イン
ターフェイスIDフィールド154に含まれる各実イン
ターフェイスIDに関して、ユニーク数値テーブル15
2を指向する、ポインターフィールド156に含まれる
ポインター157がある。
【0037】数値テーブル152の各列のエントリー
は、対応する数値フィールド160を伴ったインターフ
ェイスタイプフィールド158を有する。したがって、
インターフェイスタイプフィールド158に含まれる特
定のインターフェイスタイプに関して、数値フィールド
160内に含まれる対応数値がある。メインテーブルと
数値テーブルの各列の記入方法には二通りある。コンパ
イラーがスタブとスケルトンからの情報を持っている場
合、列を作成してコンパイル時に数値を割り当てる。ま
た、クライアントプロセス28がオブジェクトコールを
行ってこの情報を知ると、クライアントプロセス28は
将来使用するために列とテーブルを作成する。クライア
ント格納場所34が具体的にどのように用いられるか、
以下に説明する。
【0038】次に、図1に戻ると、クライアントオブジ
ェクト29は、クライアントプロセス28のメモリース
ペース内に存在するオブジェクトである。例えばターゲ
ットオブジェクト40のタイプを判定するためのターゲ
ットオブジェクト40へのコールの発生源は、クライア
ントオブジェクトでも、クライアントプロセス自体で
も、またはクライアントプロセス内の他のエンティティ
であってもよい。プロクシオブジェクト30は、その名
称が示唆するように、クライアントプロセスがコールし
ようとしている実際のターゲットオブジェクトの代理の
役割りを果たす。したがって、クライアントプロセスは
各ターゲットオブジェクト毎に通信相手のプロクシを形
成する。プロクシはターゲットオブジェクトに関するオ
ブジェクトレファレンスを含み、したがってプロクシは
ターゲットオブジェクトの場所を見いだすことができ
る。図1は、クライアントプロセスがコールしようとし
ているターゲットオブジェクト40が他のコンピュータ
24の他のプロセス38に存在する状況を示す。この状
況においては、クライアントプロセス28は、(ターゲ
ットオブジェクト40をコールしていると想定して)プ
ロクシオブジェクト30へコールを行う。プロクシオブ
ジェクトはクライアントプロセスと同じアドレススペー
ス内にあるので、プロクシへのコールは、C++(また
は他の適当な)機能コールをもって行うことができる。
プロクシオブジェクトは、マーシャリングを行い、ネッ
トワーク46を介して情報をスケルトンのひとつに送
る。スケルトンは、ターゲットオブジェクト40に問い
合わせ中、クライアントプロセスのような働きをする。
スケルトンは所望の情報を受け取り、それをプロクシオ
ブジェクト30に送り返し、一方、プロクシオブジェク
ト30はクライアントプロセス28へ結果を返す際、タ
ーゲットオブジェクト40のような働きをする。
【0039】図1に示すように、ORB26は各コンピ
ューティング装置(この場合、クライアントコンピュー
タ22とサーバーコンピュータ24)上とネットワーク
46全体に存在する。ORBは基本的オブジェクト通信
と管理サービスとを提供する。
【0040】上記に定義したように、オブジェクトのイ
ンターフェイスがオブジェクトの性質を特定する。ここ
で、ターゲットオブジェクト40の実インターフェイス
42がオブジェクトに関する実際の情報を含み、プロク
シオブジェクト30の仮想インターフェイス32がター
ゲットオブジェクトに関する一般的情報を含むことがで
きる。インターフェイスID(インターフェイス識別
子)はインターフェイスの一部であって、オブジェクト
のタイプを識別する。例えば、インターフェイスID
は、オブジェクトが「プリンタ」のタイプである旨示す
ことができる。したがって、実インターフェイス42の
実インターフェイスIDがターゲットオブジェクトに関
する特定のタイプの情報(例えば「私は postscript pr
inter である」)を示すことができ、仮想インターフェ
イスID(仮想インターフェイス識別子)が一般的タイ
プの情報(例えば「私は printer である」)を示すこ
とができる。
【0041】特定のタイプが、一般的タイプが記述する
オブジェクトのクラスのメンバーであれば、一般的タイ
プは特定のタイプの「ベース」であると言われる。例え
ば、カラーポストスクリプトプリンタはひとつのプリン
タであるから、より一般的なタイプである「プリンタ」
は、より具体的なタイプである「カラーポストスクリプ
トプリンタ」のベースである。あるカラープリンタは必
ずしもカラーポストスクリプトプリンタではないから、
「カラーポストスクリプトプリンタ」というタイプは
「カラープリンタ」のベースではないであろう。オブジ
ェクト指向プログラミングの面からは、もしも特定のタ
イプが一般的タイプのサブクラスであるならば、一般的
タイプは特定のタイプのベースであると言える。したが
って、インターフェイスIDはオブジェクトのタイプを
示す故、ターゲットインターフェイスID(ターゲット
インターフェイス識別子)が仮想インターフェイスID
または実インターフェイスIDのどちらのベースである
かを比較および判定することができる。
【0042】図2を参照し、クライアントが本発明の一
実施例に従って、ターゲットオブジェクトのタイプを判
定することができる方法60を説明する。説明する実施
例においては、この方法は IS A コマンドを実行するこ
とによって行われる。 IS A法の目標は、ターゲットオ
ブジェクト40が特定のインターフェイスをサポートす
るか否かを判定することである。いくつかの場合、クラ
イアントはターゲットオブジェクトについてある程度の
一般的な情報は知っているかも知れないが、ターゲット
オブジェクトが特定のタイプであるか否かは知らないか
も知れない。例えば、クライアントプロセス28はター
ゲットオブジェクトがプリンタであることを知っている
かも知れないが、ターゲットオブジェクトに対して「あ
なたはカラーポストスクリプトプリンタですか?」と尋
ねたい。この IS A 法は、「イエス」または「ノー」の
答を返すブール関数である。その他の場合、クライアン
トはターゲットオブジェクトのタイプについては何も知
らず、それがオブジェクトの特定のタイプであるか否か
を知りたいに過ぎない。例えば、クライアントは、ター
ゲットオブジェクトが、ある種の特性を有すると思われ
る「フォルダー」であるか否かを知りたいことがある。
【0043】まずステップ62において、ターゲットイ
ンターフェイスIDをこの方法に対するアーギュメント
として、プロクシオブジェクト30をコールして IS A
法を発動する。ターゲットインターフェイスIDは、ク
ライアントプロセスがターゲットオブジェクトについて
判定しようとしている情報である。したがって、クライ
アントは、ターゲットインターフェイスIDによって識
別されたインターフェイスをターゲットオブジェクトが
サポートするか否かを問い合わせている。上記の例を用
いれば、ターゲットインターフェイスIDは「カラーポ
ストスクリプトプリンタ」であろう。
【0044】プロクシは、ターゲットオブジェクトの一
般的なタイプを、更にはその特定のタイプをも知ってい
るかも知れない。プロクシは常にターゲットオブジェク
トについて多少のタイプ情報を持っているかも知れない
が、それは単に、ターゲットがルートタイプである「オ
ブジェクト」であるということしか知らないかも知れな
い。プロクシの持つこのタイプ情報は、仮想インターフ
ェイスIDである。仮想インターフェイスIDはプロク
シオブジェクト内にフィールドとして格納されるか、あ
るいは潜在的にプロクシに知らされる。例として、C+
+に実装されたシステムにおいて、ターゲットオブジェ
クトについての何らかの一般的情報を判定するためにC
++タイプの情報を用いることができる。各プロクシオ
ブジェクトは IS A 方法を実装するための機能(CHECK
ID 機能と呼ばれる)を持つが、各機能はプロクシのタ
イプによって異なる。この機能は、任意の適当な形式で
実装可能である。例として、それはC++仮想機能でも
あり、ステップ64において、ターゲットインターフェ
イスIDを、プロクシオブジェクトに含まれている仮想
インターフェイスIDと比較する。ターゲットインター
フェイスIDが仮想インターフェイスIDのベースであ
るか、あるいはそれに等しい場合、IS A 方法はステッ
プ66において「イエス」を返して終了する。そうでな
い場合、IS A方法はステップ68に進む。
【0045】ステップ68において、コールを行って遠
隔 IS A 機能を実行する。クライアントプロセスのアド
レススペース内に含まれるプロクシオブジェクト内に必
要な情報が見いだされなかったので、このステップはネ
ットワークを介して効果的にコールを行う。遠隔 IS A
機能を実行するのに適した二つの方法を図3、図4に示
し、以下に説明する。要するに、遠隔 IS A 機能は、タ
ーゲットオブジェクトが所望のタイプであるか否かをサ
ーバーに直接問い合わせる。従って、ターゲットインタ
ーフェイスIDが実インターフェイスIDのベースであ
るか、あるいはそれに等しいか否かが判定される。それ
への応答として、ブールの「イエス」または「ノー」の
答を受け取る。
【0046】答を受け取った後、ステップ76は、IS A
機能が「イエス」または「ノー」いずれの結果を返し
たかを判定する。結果が「イエス」の場合、ステップ7
8は「イエス」を返し、IS A 方法は終了する。結果が
「ノー」の場合、ステップ80は「ノー」を返し、IS A
方法は終了する。
【0047】次に図3を参照して、第1の実施例に従っ
て遠隔 IS A 機能(図2のステップ68)を実行するの
に適したプロセス68aを説明する。この実施例におい
ては、実インターフェイスIDはオブジェクトレファレ
ンスの一部ではない。まず、ステップ92において、プ
ロクシオブジェクトはサーバーのホストマシン上でOR
Bデーモンとの接続を形成する。ホストのアイデンティ
ティ(識別データ)はオブジェクトレファレンス内のホ
ストネームフィールド内に与えられる。この情報は、オ
ブジェクトリクエストブローカによってサーバーのOR
Bデーモンのネットワークポート番号を識別するのに用
いられる一方、ORBデーモンは接続を容易にする。例
として、分散オブジェクトシステムにおける接続の形成
と管理に適した機構は、本出願人の別出願である、「弁
理士書類番号:SUN1P018,発明の名称:分散オ
ブジェクトシステムにおけるオブジェクト間の通信のた
めの接続を管理する方法および装置,発明者Brownell
他」に開示されている。
【0048】適切な接続が形成された後、ステップ94
において、クライアントからサーバーのORBデーモン
へ、ターゲットオブジェクトに関する実インターフェイ
スIDとインターフェイス def とを求めるコールが行
われる。図6に示すように、ターゲットのオブジェクト
レファレンス172からのオブジェクトIDがこのコー
ルのアーギュメントとして用いられる。このオブジェク
トレファレンスはプロクシオブジェクト内に含まれてい
るので、クライアントは直接、オブジェクトIDにアク
セスができる。次にORBデーモンは、オブジェクトI
Dを用いてサーバーホストのBOAデーターベース17
6内の特定の列にアクセスするが、このBOAデーター
ベース176は、サーバーのホストマシン上で利用可能
な分散されたオブジェクト(ターゲットオブジェクトを
含む)の各々に関するインターフェイス def と実イン
ターフェイスIDとを識別する。インターフェイス def
は、分散オブジェクトシステムの全インターフェイス
上の情報を含むインターフェイス格納場所内のオブジェ
クトである。インターフェイス格納場所については、C
ORBA仕様書のインターフェイス格納場所の章に記載
されている。インターフェイス def は、ターゲットイ
ンターフェイスIDを実インターフェイスIDと比較す
るため、それ自体の「比較」オペレーションを持つ。こ
のオペレーションは、C++機能など、任意の適切な形
式で実装可能である。
【0049】次に、図3に戻り、いったんORBデーモ
ンがインターフェイス def と実インターフェイスID
を識別すると、それらは、ステップ96においてプロク
シオブジェクトへ返される。ステップ98において、イ
ンターフェイス def の比較オペレーションが、プロク
シオブジェクトによってターゲットインターフェイスI
Dをアーギュメントとして、コールされる。ステップ1
00において、インターフェイス def オブジェクトは
このリクエストを受け取る。ステップ102において、
インターフェイス def オブジェクトの比較オペレーシ
ョンがターゲットインターフェイスIDを実インターフ
ェイスIDと比較し、結果をプロクシへ返す。次に、コ
ントロールは図2のステップ76へ戻り、そこで比較オ
ペレーションの結果を処理する。
【0050】次に、図4を参照して、図2のステップ6
8である遠隔 IS A 機能に関する第2の実装68bを説
明する。この第2実施例においては、実インターフェイ
スIDはオブジェクトレファレンスの一部である。ま
ず、この実施例のステップ112において、ローカルク
ライアント格納場所を用いてターゲットインターフェイ
スIDを実インターフェイスIDと比較する。図5に、
すでに説明したクライアント格納場所34を記号を用い
て示す。図5を参照すると、比較は下記のように行われ
る。実インターフェイスIDがオブジェクトレファレン
スから知られると、この実施例ではまず、適切なインタ
ーフェイス id を見いだすため、実インターフェイスI
Dフィールド154を介してメインテーブル150の中
を見る。次に対応するポインターフィールド156を用
いてポインター157にアクセスする。このポインター
157は、既にターゲットインターフェイスIDに関す
る比較情報を持っているかも知れない(例えば)数値テ
ーブル152を指向する。例えば、もしも実インターフ
ェイスIDが「白黒ポストスクリプトプリンタ」であっ
て、ターゲットインターフェイスIDが「プリンタ」で
あれば、値は「イエス」であろう。ポストスクリプトプ
リンタはプリンタなので、この値(すなわち結果)は
「イエス」である。同様に、ターゲットインターフェイ
スIDが「カラープリンタ」であれば、白黒ポストスク
リプトプリンタはカラープリンタではないので、値は
「ノー」であろう。場合によっては、特定のターゲット
インターフェイスIDに関して、クライアント格納場所
34の数値テーブル152にまだエントリーがないかも
知れない。その場合、クライアント格納場所は「イエ
ス」または「ノー」の値を提供しない。
【0051】再び図4を参照すると、ステップ114で
クライアント格納場所を用いて得られた結果を処理され
る。ターゲットインターフェイスIDが実インターフェ
イスIDのベースであるか、あるいはそれに等しい場
合、ステップ118は、「イエス」の結果を発生し、そ
れが上に説明したように図2のステップ76においてク
ライアントへ返される。そうでない場合、ステップ11
6は「ノー」の結果を発生し、これも図2のステップ7
6に返される。クライアント格納場所が、特定の実イン
ターフェイスIDと特定のターゲットインターフェイス
IDとの間の関係に関する情報を持っていない(あるい
は十分な情報を持っていない)場合、「知らない」分岐
をたどってステップ119へ行く。
【0052】先に説明した実施例のように、先ずステッ
プ119においてサーバーホストのORBデーモンとの
間に接続を形成しなければならない。次に、ステップ1
20において、プロクシオブジェクトは、ターゲットイ
ンターフェイスIDをアーギュメントとして用いて、サ
ーバープロセス内のスケルトンへ遠隔 IS A コールを行
う。ネットワークを横切るこのコールは、クライアント
プロセスのメモリースペース内のローカルクライアント
格納場所が、必要な情報を含まない場合にのみ必要であ
る。ステップ122において、スケルトンはプロクシか
らこのリクエストを受信する。ステップ124におい
て、スケルトンは、ターゲットインターフェイスIDを
実インターフェイスIDと比較するため、C++に実装
された比較オペレーションを実行する。スケルトンはサ
ーバープロセスと同じメモリースペース内にあるので、
スケルトンは実インターフェイスIDへ直接アクセスで
きる。すなわち、インターフェイス毎にユニークなスケ
ルトンがあるので、スケルトンは本質的に実インターフ
ェイスIDへアクセスできる。
【0053】ステップ124は、ターゲットインターフ
ェイスIDが実インターフェイスIDのベースである
か、あるいはそれに等しいか否かを判定し、その結果を
プロクシへ返す。次に、ステップ126は、結果である
「イエス」または「ノー」の値でローカルクライアント
格納場所を更新し、上に説明した図2のステップ76へ
戻る。クライアント格納場所は下記のように更新され
る。再び図5を参照すると、クライアント格納場所34
のメインテーブル150内のいずれかの実インターフェ
イスIDに関して、ポインター157が、その実インタ
ーフェイスIDに関する数値テーブル152を示す。次
に問い合わせの対象であるターゲットインターフェイス
IDが、スケルトン(「イエス」または「ノー」)によ
って数値フィールド160へ返された値とともに、数値
テーブル152のインターフェイスタイプフィールドへ
入力される。このようにして、スケルトンへのこのコー
ルの結果を、将来の使用にそなえてクライアント格納場
所34内へローカルに保存することができる。利点とし
て、同じ IS A 問い合わせが再発動された場合、ネット
ワークを介してスケルトンをコールするよりも速くロー
カルクライアント格納場所で結果が得られる。
【0054】IS A 機能の第三に可能な実施例におい
て、図3のステップ94ないしステップ98を組み合わ
せることができる。格納場所をORBデーモン内に形成
し、ORBデーモンがインターフェイス def をコール
する。
【0055】図6は、オブジェクトレファレンス-BO
Aデーターベースの関係170を示す。IS A 方法の第
1の実施例において、オブジェクトレファレンス172
はターゲットオブジェクトに関する情報を含む可変長語
である。このオブジェクトレファレンスはプロクシオブ
ジェクト内に含まれる。オブジェクトレファレンス17
2は、ホスト名、ポート番号、オブジェクトID、およ
びサブオブジェクトIDに関する情報を含むフィールド
を有する。ホスト名はターゲットオブジェクトが存在す
るマシンの名称であり、ポート番号はサーバープロセス
のORBデーモンのネットワークポート番号である。IS
A 方法の第2の実施例において、オブジェクトレファ
レンス174は第1の実施例のオブジェクトレファレン
スに類似しているが、オブジェクトレファレンス174
は実インターフェイスIDを含むフィールドも有する。
【0056】同じく図6に、BOAデーターベース17
6を示す。BOAデーターベース176は、分散オブジ
ェクトシステムにおける各オブジェクトに関する情報の
テーブルである。分散オブジェクトシステムにおける各
マシンは、そのマシン上のすべてのオブジェクトの追跡
を続けるそれ自身用のデーターベースを有する。テーブ
ルの各列はひとつのオブジェクトに対応し、ひとつのオ
ブジェクトが形成される毎にひとつの列が追加され、情
報が記入される。ORBデーモンはこのテーブルの作成
と保守を行う。このテーブル176は、オブジェクトI
D、インターフェイス def、実装 def、レファレンスデ
ータ、および実インターフェイスIDなど、各オブジェ
クトの情報を含む。インターフェイス def と実装 def
とは、それぞれタイプ「InterfaceDef」とタイプ「Impl
ementationDef」のオブジェクトへのオブジェクトレフ
ァレンスであり、インターフェイスの定義および実装の
定義の短縮形である。両者とも、OMGの書類、「The
Common Object Request Broker: Architecture and Spe
cification", No.93.12.43, December 1993」に記載さ
れている。このテーブル176は、示したデータの他に
も情報を保持することができる。
【0057】分散オブジェクトシステムにおいて、OR
Bは多くのオブジェクトアダプターを持つことができ
る。分散オブジェクトシステムのDOE実施例において
は、オブジェクトアダプターはひとつだけであり、それ
がベーシックオブジェクトアダプター(BOA)であ
る。しかしORBに関しては、多くのアダプターが存在
できることが考えられ、その場合、各オブジェクトアダ
プターに対応するBOAデーターベース176のような
表があり得る。
【0058】次に図7を参照して、本発明のもうひとつ
の面の実施例に従って、NARROW オペレーション180
を説明する。NARROW 方法の目標は、新しいプロクシオ
ブジェクトをクライアントプロセスへ返すことである。
新しいプロクシは普通、入力プロクシよりも具体的な仮
想タイプ(apparent type)を有する。要するに、NARROW
オペレーション180は、古いプロクシ(ここでは入力
プロクシと呼ぶ)と同じクライアントプロセス内のメモ
リースペース内に新しいプロクシ(ここでは出力プロク
シと呼ぶ)を形成する。この新しい出力プロクシは、入
力プロクシと同じ種類のものである。入力プロクシは、
クライアントプロセスの最初のコールの対象となる最初
のプロクシオブジェクトに与えられた用語である。NARR
OW 方法のこの実施例においては、プロクシオブジェク
トの実装には、ローカル、リモート(遠隔)、およびナ
ル(ゼロ)の3種類がある。ローカルプロクシオブジェ
クトは、クライアントプロセスと同じメモリースペース
内にあるターゲットオブジェクトに関して用いられる。
リモートプロクシオブジェクトは、クライアントプロセ
スとは別のサーバープロセスメモリースペース内にある
ターゲットオブジェクトに関して用いられる。ナルプロ
クシオブジェクトはどのオブジェクトをも表さない。ナ
ルプロクシの実装は、ナルオブジェクトまたはナルポイ
ンターを返すことにより、あるいは例外を投入すること
によって行う。他のタイプのプロクシオブジェクトが存
在することも考えられ、他のタイプのプロクシを処理で
きるという融通性は、既述のシステムの特徴と考えられ
る。例えば、他の種類のプロクシには、同じオブジェク
トを表すが他のマシン上で他のサーバープロセスによっ
て実装される模写された(replicated)プロクシが含まれ
る。
【0059】次に図7を詳細に参照すると、NARROW 方
法を実装するためにクライアントプロセスが、ターゲッ
トインターフェイスに対応するクラスへコールを行う
と、ステップ182において NARROW 発動180が開始
される。オブジェクトレファレンスをアーギュメントと
して用いる。例えば、ターゲットインターフェイスID
が「カラープリンタ」である場合、クラス「カラープリ
ンタ」に関する NARROW方法が用いられる。オブジェク
トの各クラスに関して、定義されたユニークな NARROW
方法がある。また、各インターフェイスにも定義された
ユニークなクラスがある。
【0060】次に、ステップ184において、NARROW
方法は、ターゲットインターフェイスIDをアーギュメ
ントとして CHECK CAST 機能を実行するため、入力プロ
クシオブジェクトへコールを行う。ステップ186は、
図10を参照して以下に更に詳細に説明するように CHE
CK CAST 機能を実行する。 CHECK CAST は、ターゲット
インターフェイスIDがプロクシオブジェクト自体の仮
想インターフェイスIDに等価か、あるいは何れかの親
の何れかのインターフェイスIDに等価か否かを判定す
るため、プロクシオブジェクトインターフェイスの受継
ぎツリー(inheritance tree)をチェックする。例えば、
プロクシオブジェクトの仮想インターフェイスIDが
「プリンタ」であって、プロクシオブジェクトが(親を
持ち)クラス「プリンタ」およびクラス「ポストスクリ
プトプリンタ」から受継ぐ場合、 CHECK CAST 機能は、
ターゲットインターフェイスIDを「プリンタ」、「カ
ラープリンタ」および「ポストスクリプトプリンタ」と
比較する。 CHECK CAST 機能は、プロクシオブジェクト
またはナルを返す。次に CHECK CAST 機能を詳細に説明
する。
【0061】次に、図10で CHECK CAST 機能186を
示す。ステップ260において、ターゲットインターフ
ェイスIDはプロクシオブジェクトの仮想インターフェ
イスIDと比較される。等価比較(equals comparison)
というものが用いられる。例えば、ターゲットインター
フェイスIDが「カラープリンタ」である場合、仮想イ
ンターフェイスIDも正確に「カラープリンタ」であり
さえすれば、条件は充たされる。この比較オペレーター
は、図2のステップ64において用いた比較オペレータ
ーとは異なることに注目されたい。ステップ64におい
ては、比較オペレーターは「XXに等しいか、またはX
Xのベースである」であったが、図10のステップ26
0においては、比較オペレーターは「XXに等しい」で
ある。
【0062】ターゲットインターフェイスIDが仮想イ
ンターフェイスIDに等しい場合、ステップ272にお
いて、プロクシオブジェクト自体へのポインターが返さ
れ、プロクシオブジェクトもターゲットインターフェイ
スIDに関するクラスへ拡大される。プロクシのクラス
がインターフェイスクラスと実装クラスとの組み合わせ
であるので、この拡大が必要である。C++においては
多重の受継ぎが用いられる。NARROW の結果は、実装ク
ラスを隠すために拡大を用いることができるように、イ
ンターフェイスクラスとぴったり同じプロクシクラスで
なければならない。これで CHECK CAST 機能が終了した
ので、コントロールは NARROW 方法のステップ188へ
戻る。図7のステップ188を以下に詳細に説明する。
図10のステップ260において、ターゲットインター
フェイスIDが仮想インターフェイスIDに等しくない
場合、機能はステップ264へ進む。
【0063】ステップ264では、プロクシオブジェク
トがインターフェイス受継ぎツリーの中に親を持ってい
るか否かを判定する。この機能で用いられるように、
「親」は直接および間接の両方の親であると定義する。
例えば、あるオブジェクトが何れの親クラスから何も受
継がない場合、ステップ264の結果は「ノー」とな
る。この場合、ナルすなわちゼロが返され、コントロー
ルはNARROW 方法のステップ188へ進む。しかし、オ
ブジェクトがひとつ以上の親から受け継げば、ステップ
264での結果は「イエス」となり、コントロールはス
テップ268へ進む。
【0064】ステップ268は、CHECK CAST 機能が、
ターゲットインターフェイスIDを受継ぎツリー内の各
親のインターフェイスと比較することを可能にするルー
プである。しかし、タイプ「リモートプロクシ」または
タイプ「ローカルプロクシ」に対応する親クラスは比較
には用いない。このループは様々な方法で実装すること
ができる。一実施例においては、受継ぎツリーをさかの
ぼって、各親のインターフェイスIDをターゲットイン
ターフェイスと比較する再帰機能を用いて実装すること
ができる。実際、完全な CHECK CAST 機能を再帰機能と
して実装することができる。また、受継ぎツリーはサイ
クルを持たず、方向付けされた(directed)非循環(acycl
ic)グラフとして実装されるであろう。インターフェイ
ス受継ぎツリーがサイクルを持ち得ないようにIDLが
定義されるので、再帰機能は終了する。非再帰であるも
うひとつの実施例において、この受継ぎツリーを本質的
に「平坦化し」、受継ぎツリーの各節に関する明示の比
較コードを提供するC++コードを、IDLコンパイラ
ーが提供するであろう。
【0065】図10のステップ268を継続すると、ス
テップ268はまずカウンター iをゼロに初期化し、次
にカウンター i がプロクシオブジェクトの親の数に等
しいか否かをチェックする。カウンター i が親の数に
等しい場合、このことは、すべての親のインターフェイ
スIDがターゲットIDと比較され、一致するものが発
見されなかったことを意味する。この場合、ステップ2
66はナルを返し、コントロールは NARROW 方法のステ
ップ188へ進む。しかし、受継ぎツリー内の必ずしも
すべての親がチェックされなかった場合、カウンター i
は親の数より小さく、コントロールはステップ270
へ進む。ステップ270において、ターゲットインター
フェイスIDは、それが現在の親の節のインターフェイ
スIDと等価であるか否かを見るため、比較される。両
者が等価である場合、一致が発見され、コントロールは
ステップ272へ進む。例えば、もしプロクシオブジェ
クトが、「ポストスクリプトプリンタ」から受け継いだ
仮想インターフェイス「カラーポストスクリプトプリン
タ」を持っていて、ターゲットインターフェイスIDが
「ポストスクリプトプリンタ」であれば、ステップ27
0の繰り返しの中に一致があることになる。ステップ2
72は、ターゲットインターフェイスに対応するクラス
へと拡大されたプロクシオブジェクトを返す。ステップ
272の後、コントロールは NARROW 方法のステップ1
88へ戻る。
【0066】ステップ270において、ターゲットイン
ターフェイスIDが親インターフェイスIDに等しくな
い場合、コントロールはステップ268へシフトバック
し、カウンター i は1だけ増やされ、そして受継ぎツ
リーをさかのぼった次の親インターフェイスIDがター
ゲットインターフェイスIDと照合チェックされる。ス
テップ268から270のこのループは、ターゲットイ
ンターフェイスIDが親インターフェイスIDに一致す
るまで(ステップ272)、または一致が見いだされず
にすべての親インターフェイスが比較される(ステップ
266)まで、継続する。
【0067】図7のステップ188は、CHECK CAST 機
能の結果に基づくデシジョンブロックである。一致が発
生してプロクシオブジェクトが返されると、CHECK CAST
機能は良好であったことになる。一致が発見されなけ
れば CHECK CAST 機能は不成功であって、ナルが返され
る。ステップ188において、 CHECK CAST 機能が成功
であった場合、NARROW 方法が行われ、プロクシオブジ
ェクトを更に絞り込む必要はない。一方、 CHECK CAST
機能が不成功であった場合、方法はステップ190へ続
く。次にステップ190は、遠隔 IS A 機能を実行して
上に説明したように「イエス」または「ノー」という結
果を受信する。例えば、図3と図4に関して上に説明し
た IS A 機能のいずれかが、このステップを実行するの
に良好に働く。つぎに、デシジョンブロック192は遠
隔 IS A 機能から結果を判断する。結果が「ノー」であ
った場合、ステップ198はターゲットクラスに関して
ナルプロクシを返し、NARROW 方法は終了する。「ノ
ー」という結果は、ターゲットオブジェクトがターゲッ
トインターフェイスIDをサポートしないという意味で
ある。例えば、ターゲットオブジェクトがポストスクリ
プトプリンタであり、ターゲットインターフェイスID
が「モダン」である場合、結果は「ノー」であろう。
「イエス」という結果は、ターゲットオブジェクトがタ
ーゲットインターフェイスIDをサポートするという意
味である。例えば、ターゲットオブジェクトがカラーポ
ストスクリプトプリンタであって、ターゲットインター
フェイスIDが「カラーポストスクリプトプリンタ」で
あれば、結果は「イエス」となるであろう。
【0068】ステップ192での結果が「イエス」であ
れば、ステップ194は新しい出力プロクシを形成す
る。この新しい出力プロクシは、入力プロクシと同じ種
類であって、ターゲットインターフェイスタイプと同じ
タイプである。このステップ194を図8を参照して更
に詳細に説明する。新しい出力プロクシが形成された
後、ステップ196は、ターゲットインターフェイスI
Dに対応するクラスへと拡大されたこの出力プロクシを
返す。出力プロクシは、クライアントプロセスのメモリ
ースペース内のクライアントプロセスに返される。ステ
ップ196の後、NARROW 方法は完了する。
【0069】次に図8を参照し、図7の新しいプロクシ
出力形成ステップ194を更に詳細に説明する。まずス
テップ212が、入力プロクシの種類に基づいて必要な
出力プロクシの種類を決定する。出力プロクシは入力プ
ロクシと同じ種類であろう。例えば、上記の例におい
て、ローカル、リモート、およびナルの3種類のプロク
シがあった。したがって、この例においては、入力プロ
クシがローカルプロクシであったとすると、出力プロク
シはローカルプロクシであろう。入力プロクシがリモー
トプロクシであれば、出力プロクシはリモートプロクシ
であろう。ここでも、他の種類のプロクシの使用も可能
にするのが本発明の特徴のひとつである。唯一の制約
は、他の種類のプロクシを用いた場合、出力プロクシは
入力プロクシと同じ種類と考えられるであろう、という
ことである。プロクシの種類が決定されると、ステップ
214ではプロクシファクトリーテ−ブルを用いて、決
定されたプロクシの種類と与えられたターゲットインタ
ーフェイスタイプとに関する適切なプロクシファクトリ
ーを決定する。例として、代表的なファクトリーテ−ブ
ルの構成を図9に示す。
【0070】次に図9を参照すると、ファクトリーテ−
ブル240の各列242は、オブジェクトのひとつのク
ラスを表し、各コラム244は別の種類のプロクシを表
す。列とコラムはセル246において交差する。特定の
種類のプロクシ(コラム)と与えられたインターフェイ
スのタイプ(列)に基づいて、テ−ブル240は新しい
出力プロクシの形成に用いる適切なプロクシファクトリ
ーを示す。例えば、入力プロクシの種類が「リモート」
であって、与えられたターゲットインターフェイスのタ
イプが「プリンタ」であれば、適切なプロクシファクト
リーは#1である。このファクトリーは、インターフェ
イスのタイプが「プリンタ」で種類が「リモート」であ
るプロクシオブジェクトを形成する。各セル246ごと
にひとつのユニークなプロクシファクトリーがある。す
なわち、与えられたプロクシファクトリーを実装するC
++コードは、一般的には異なるが、コードを実装する
プロクシファクトリーの一部は共通のコードを用いるこ
とができる。IDLコンパイラーは、プロクシファクト
リーをプロクシファクトリーテ−ブルに登録する。
【0071】次に図8に戻り、一旦適当なプロクシファ
クトリーが決定されると、ステップ216は、入力プロ
クシをアーギュメントとして、適当なプロクシファクト
リーをコールすることによって、出力プロクシを形成す
る。プロクシファクトリーは所望の出力プロクシを返す
が、これは入力プロクシと同じ種類で、ターゲットイン
ターフェイスIDと同じタイプである。次にロジック
は、図7を参照して先に説明したようにステップ196
へ進み、そこで出力プロクシはターゲットインターフェ
イスIDに対応するクラスへと拡大される。
【0072】本発明の数個の実施例のみを詳細に説明し
たが、本発明はその精神と範囲から逸脱することなく他
の多くの具体的な形態において実施できるものと解釈す
べきである。特に、図1のネットワーク通信装置46
は、必ずしも電子式ケーブル接続ネットワークである必
要はない。すなわち、図11の伝送線4は他の形態にお
いて実施してもよい。例えば、コンピュータどうしは、
赤外線、マイクロウェーブ、または他の電磁媒体を介し
て通信することができる。したがって、提示された例は
説明のためであって、制限するためではなく、本発明は
ここに示された詳細事項に限られるのではなく、添付の
請求項の範囲内において修正が可能であると考えるべき
である。
【図面の簡単な説明】
【図1】クライアントコンピュータ上で走るクライアン
トプロセス、サーバーコンピュータ上で走るサーバープ
ロセス、および各プロセス内のオブジェクトを示す分散
オブジェクトシステムの構成図である。
【図2】ターゲットオブジェクトが特定のタイプである
か否かを判定するための方法を説明するフローチャート
である。
【図3】図2の遠隔 IS A 機能を実装するための方法を
説明するフローチャートである。
【図4】図2の遠隔 IS A 機能を実装するための方法を
説明するフローチャートである。
【図5】クライアント格納場所を構成する表をシンボル
的に表した構成図である。
【図6】オブジェクトレファレンスの二つの実施例を示
し、BOAデーターベース内のインターフェイスIDに
アクセスするのに、オブジェクトレファレンスのひとつ
の実施例がどのように用いられるかを示す説明図であ
る。
【図7】ターゲットオブジェクトの決定方法とプロクシ
オブジェクトの返却方法を説明するフローチャートであ
る。
【図8】インプットプロクシと同じ種類でターゲットイ
ンターフェイスと同じタイプの出力プロクシを形成する
ために用いるステップを説明するフローチャートであ
る。
【図9】プロクシファクトリテーブルの説明図である。
【図10】図7の CHECK CAST 機能を実装するために用
いるステップを説明するフローチャートである。
【図11】コンピュータネットワークにおいて相互接続
された種々のコンピュータの構成図である。
【図12】図11に示したコンピュータの、いくつかの
主要コンポーネントを示す構成図である。
【符号の説明】
2…ネットワーク、3,5,6,7,8…コンピュー
タ、4…ネットワーク接続、10…コンピュータ、12
…中央処理装置(CPU)、14…RAM、16…RO
M、18…大容量記憶装置、19…入出力源、26…オ
ブジェクトリクエストブローカ、28…クライアントプ
ロセス、29…クライアントオブジェクト、30…プロ
クシオブジェクト、32…仮想インターフェイス、34
…キャッシュ、36…スタブ、38…サーバープロセ
ス、40,41…サーバオブジェクト、42…実インタ
ーフェイス、44…スケルトン、46…ネットワーク通
信装置。
───────────────────────────────────────────────────── フロントページの続き (72)発明者 デイビッド エム. ブロウネル アメリカ合衆国, カリフォルニア州 94306, パロ アルト, パーク ブル バード 2569 ナンバーティー−201 (72)発明者 アレイン デモア アメリカ合衆国, カリフォルニア州 94107, サン フランシスコ, アーカ ンソー 808 (72)発明者 ドワイト エフ. ヘア アメリカ合衆国, カリフォルニア州 95076, ラ セルバ ビーチ, ブリー ブ アベニュー 1 (72)発明者 マイケル エル. パウル アメリカ合衆国, カリフォルニア州 94301, パロ アルト, エマーソン ストリート, 2305

Claims (49)

    【特許請求の範囲】
  1. 【請求項1】 第1のコンピュータ上に存在するクライ
    アントと、第2のコンピュータ上で実行されコンピュー
    タ制御されるプロセス内に存在するターゲットオブジェ
    クトとを含む分散オブジェクト環境コンピューティング
    システムにおいて、ターゲットオブジェクトのタイプを
    チェックするためコンピュータに実装される方法であっ
    て、コンピュータの制御のもとで、 a)前記クライントが、前記ターゲットオブジェクトが
    特定のタイプであるか否かを、またターゲットオブジェ
    クト識別子が前記ターゲットオブジェクトのあり得るタ
    イプを表すか否かを判定するため、前記ターゲットイン
    ターフェイス識別子をア−ギュメントとして用いてタイ
    プチェック方法を発動するステップと、 b)前記ターゲットインターフェイス識別子が、前記第
    1のコンピュータ上に存在するプロクシオブジェクトに
    よって保持されている仮想インターフェイス識別子に等
    しいか、あるいはそのベースであるか否かを判定し、前
    記仮想インターフェイス識別子はターゲットオブジェク
    トのあり得るタイプを表すものであり、前記ターゲット
    インターフェイス識別子が前記仮想インターフェイス識
    別子に等しいか、あるいはそのベースであると判定され
    た場合、肯定表示がクライアントに返されるステップ
    と、 c)前記ターゲットインターフェイス識別子が前記仮想
    インターフェイス識別子に等しくないか、あるいはその
    ベースでないと判定された場合、更に、前記ターゲット
    インターフェイス識別子を実インターフェイス識別子と
    比較し、前記実インターフェイス識別子は前記ターゲッ
    トオブジェクトのタイプを表すものであり、ここで、前
    記ターゲットインターフェイス識別子が前記実インター
    フェイス識別子に等しいか、あるいはそのベースである
    と判定された場合、肯定表示が前記クライアントへ返さ
    れ、そして前記ターゲットインターフェイス識別子が前
    記実インターフェイス識別子に等しくないか、あるいは
    そのベースでないと判定された場合、否定表示が前記ク
    ライアントへ返されるステップとを備える方法。
  2. 【請求項2】 前記比較ステップが前記第2のコンピュ
    ータによって行われる、請求項1記載の方法。
  3. 【請求項3】 前記ターゲットインターフェイス識別子
    が前記仮想インターフェイス識別子に等しくないか、あ
    るいはそのベースでないと判定された場合、コンピュー
    タ制御のもとで、更に、 a)前記第2のコンピュータ上のオブジェクトリクエス
    トブローカデーモンとの間に接続を形成するステップ
    と、 b)前記オブジェクトリクエストブローカデーモンを利
    用し、前記実インターフェイス識別子と前記ターゲット
    オブジェクトに関するインターフェイスとの識別にあた
    って、オブジェクトリクエストブローカデーモンが実イ
    ンターフェイス識別子とインターフェイスの場所を見い
    だすために、前記第1のコンピュータから転送された、
    前記第2のコンピュータへのターゲットオブジェクトを
    識別するように構成されたターゲットオブジェクト識別
    子を利用するステップと、 c)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するために前記インターフェイスを
    利用するステップと、 d)前記インターフェイスの判定の結果を前記第1のコ
    ンピュータ上に存在するプロクシオブジェクトへ返すス
    テップとを備える請求項2記載の方法。
  4. 【請求項4】 前記比較するステップが、まず、前記タ
    ーゲットインターフェイス識別子が前記実インターフェ
    イス識別子に等しいか、あるいは、そのベースであるか
    否かの判定が前記第1のコンピュータ上のキャッシュメ
    モリーをチェックすることによって行うことが可能であ
    るかをチェックし、前記判定がキャッシュメモリをチェ
    ックすることによって行うことが不可能である場合、前
    記ターゲットインターフェイス識別子が前記実インター
    フェイス識別子に等しいか、あるいは、そのベースであ
    るか否かを判定するため、前記第2のコンピュータへコ
    ールが行われるサブステップを含む、請求項1記載の方
    法。
  5. 【請求項5】 前記クライアントが、前記第1のコンピ
    ュータ上で実行されコンピュータ制御されるクライアン
    トプロセスであり、前記キャッシュメモリがクライアン
    トプロセス内に存在する、請求項4記載の方法。
  6. 【請求項6】 前記ターゲットインターフェイス識別子
    が前記仮想インターフェイス識別子に等しくないか、あ
    るいはそのベースでないと判定された場合、それに引き
    続いて、コンピュータ制御のもとで、更に、 a)前記第2のコンピュータ上のオブジェクトリクエス
    トブローカデーモンとの間に接続を形成するステップ
    と、 b)前記ターゲットインターフェイス識別子が実インタ
    ーフェイス識別子に等しいか、あるいはそれのベースで
    あるか否かを判定するために前記オブジェクトリクエス
    トブローカデーモンを利用するステップと、 c)前記オブジェクトリクエストブローカデーモンの判
    定結果を前記第1のコンピュータ上に存在するプロクシ
    オブジェクトへ返すステップと、 d)前記プロクシオブジェクトへ返された結果に基づい
    て、前記キャッシュメモリを更新するステップとを備え
    る請求項4記載の方法。
  7. 【請求項7】 前記クライアントが、前記第1のコンピ
    ュータ上で実行され、コンピュータ制御されるプロセス
    内に存在するクライアントオブジェクトである、請求項
    1記載の方法。
  8. 【請求項8】 前記第1のコンピュータと前記第2のコ
    ンピュータとが同一のコンピュータである、請求項1記
    載の方法。
  9. 【請求項9】 第1のコンピュータと第2のコンピュー
    タとを備え、ターゲットオブジェクトは、第2のコンピ
    ュータ上で実行されコンピュータ制御されるプロセス内
    に存在する分散オブジェクト環境コンピューティングシ
    ステムにおいて、ターゲットオブジェクトのタイプをチ
    ェックする装置であって、 a)前記第1のコンピュータ上に存在するクライアント
    と、 b)前記第1のコンピュータ上で実行されコンピュータ
    制御されるプロセス内に存在するプロクシオブジェクト
    と、 c)ターゲットオブジェクトのあり得るタイプを表すタ
    ーゲットインターフェイス識別子を、ターゲットオブジ
    ェクトが特定のタイプであるか否かを判定するためのア
    ーギュメントとして用いるタイプチェック方法を発動す
    るコール機構と、 d)前記ターゲットインターフェイス識別子が、前記プ
    ロクシオブジェクトによって保持されている、ターゲッ
    トオブジェクトのあり得るタイプを表す仮想インターフ
    ェイス識別子に等しいか、あるいはそのベースであるか
    否かを判定するための仮想比較機構と、 e)前記ターゲットインターフェイス識別子を、ターゲ
    ットオブジェクトのあり得るタイプを表す実インターフ
    ェイス識別子と比較し、前記ターゲットインターフェイ
    ス識別子が前記実インターフェイス識別子に等しいか、
    あるいはそのベースであるか否かを判定するための実比
    較機構と、 を備える装置。
  10. 【請求項10】 前記実比較機構が前記第2のコンピュ
    ータ上に存在する、請求項9記載の方法。
  11. 【請求項11】 a)前記第2のコンピュータ上のオブ
    ジェクトリクエストブローカデーモンとの間に接続を形
    成する通信装置と、 b)前記第2のコンピュータへのターゲットオブジェク
    トを識別する、前記第1のコンピュータ上に存在するタ
    ーゲットオブジェクト識別子と、 c)実インターフェイス識別子と、ターゲットオブジェ
    クトに関するインターフェイスとを識別するため、前記
    オブジェクトリクエストブローカデーモンと前記ターゲ
    ットオブジェクト識別子とを利用する識別機構と、 d)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するため、前記インターフェイスを
    利用するインターフェイス比較機構とを更に備える請求
    項10記載の装置。
  12. 【請求項12】 a)前記第1のコンピュータ上に存在
    するキャッシュメモリと、 b)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するためのキャッシュチェック装置
    とを更に備える請求項9記載の装置。
  13. 【請求項13】 前記クライアントが、前記第1のコン
    ピュータ上で実行され、コンピュータ制御のクライアン
    トプロセスであって、前記キャッシュメモリが前記クラ
    イアントプロセス内に存在する、請求項12記載の装
    置。
  14. 【請求項14】 a)前記第2のコンピュータ上のオブ
    ジェクトリクエストブローカデーモンとの間に接続を形
    成するための通信装置と、 b)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するために、前記オブジェクトリク
    エストブローカデーモンを利用するデーモン比較機構
    と、 c)前記オブジェクトリクエストブローカデーモンの判
    定に基づいて、前記キャッシュメモリを更新するキャッ
    シュ更新装置とを更に備える請求項12記載の装置。
  15. 【請求項15】 前記クライアントが、前記第1のコン
    ピュータ上で実行されるコンピュータ制御プロセス内に
    存在するクライアントオブジェクトである、請求項9記
    載の装置。
  16. 【請求項16】 前記第1のコンピュータと前記第2の
    コンピュータとが同一のコンピュータである、請求項9
    記載の方法。
  17. 【請求項17】 第1のコンピュータ上に存在するクラ
    イアントと、第2のコンピュータ上で実行されるコンピ
    ュータ制御のプロセス内に存在するターゲットオブジェ
    クトと、前記第1のコンピュータ上で実行されるコンピ
    ュータ制御のプロセス内に存在する入力プロクシオブジ
    ェクトとを含む分散オブジェクト環境コンピューティン
    グシステムにおける、入力プロクシオブジェクトを絞り
    込むためコンピュータに実装される方法であって、 コンピュータ制御のもとで、 a)前記ターゲットオブジェクトのあり得るタイプを表
    すターゲットインターフェイス識別子を用いて、入力プ
    ロクシオブジェクト上の役割チェック機能を実行するス
    テップと、 b)前記役割チェック機能が成功したか否か判定し、前
    記役割チェック機能が不成功であった場合、前記ターゲ
    ットインターフェイス識別子を、前記ターゲットオブジ
    ェクトのあり得るタイプを表し、かつ、前記ターゲット
    オブジェクトに対応する実インターフェイス識別子と比
    較し、前記ターゲットインターフェイス識別子が前記実
    インターフェイス識別子に等しいか、あるいはそのベー
    スであれば、前記入力プロクシオブジェクトと同じ種類
    で、前記ターゲットインターフェイス識別子と同じタイ
    プの出力プロクシオブジェクトを形成するステップと、 を備える方法。
  18. 【請求項18】 コンピュータ制御のもとで、前記出力
    プロクシオブジェクトを、前記ターゲットインターフェ
    イス識別子に対応するクラスへ拡大するステップを更に
    備える、請求項17記載の方法。
  19. 【請求項19】 前記役割チェック機能を実行するステ
    ップは、 コンピュータ制御のもとで、前記ターゲットインターフ
    ェイス識別子を、ターゲットオブジェクトのあり得るタ
    イプを表す、前記プロクシオブジェクトの仮想インター
    フェイス識別子と比較するステップと、 コンピュータ制御のもとで、前記ターゲットインターフ
    ェイス識別子を、前記入力プロクシオブジェクトのすべ
    ての親オブジェクトのインターフェイス識別子と比較す
    るステップとを備える請求項17記載の方法。
  20. 【請求項20】 前記役割チェック機能が不成功であっ
    た場合、コンピュータ制御のもとで、更に、 a)前記第2のコンピュータ上のオブジェクトリクエス
    トブローカデーモンとの間に接続を形成するステップ
    と、 b)前記実インターフェイス識別子と、前記ターゲット
    オブジェクトに関するインターフェイスとを識別するに
    あたって、前記実インターフェイス識別子と前記インタ
    ーフェイスの場所を見いだすために、前記第1のコンピ
    ュータから転送された、前記第2のコンピュータへのタ
    ーゲットオブジェクトを識別するように構成されるター
    ゲットオブジェクト識別子を利用する前記オブジェクト
    リクエストブローカデーモンを利用するステップと、 c)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するために前記インターフェイスを
    利用するステップと、 d)前記インターフェイスの判定の結果を前記第1のコ
    ンピュータ上に存在する前記プロクシオブジェクトへ返
    すステップとを備える請求項17記載の方法。
  21. 【請求項21】 前記比較するステップが、まず、前記
    ターゲットインターフェイス識別子が前記実インターフ
    ェイス識別子に等しいか、あるいは、そのベースである
    か否かの判定を、第1のコンピュータ上のキャッシュメ
    モリをチェックすることによって行うことが可能である
    かをチェックするサブステップを含み、前記判定がキャ
    ッシュメモリをチェックすることによって行うことが不
    可能である場合、前記ターゲットインターフェイス識別
    子が前記実インターフェイス識別子に等しいか、あるい
    はそのベースであるか否かを判定するため、前記第2の
    コンピュータへコールが行われる、請求項17記載の方
    法。
  22. 【請求項22】 前記クライアントが、前記第1のコン
    ピュータ上で実行されコンピュータ制御されたクライア
    ントプロセスであり、前記キャッシュメモリがクライア
    ントプロセス内に存在する、請求項21記載の方法。
  23. 【請求項23】 前記役割チェック機能が不成功である
    場合、コンピュータ制御のもとで、更に、 a)前記第2のコンピュータ上のオブジェクトリクエス
    トブローカデーモンとの間に接続を形成するステップ
    と、 b)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそれのベー
    スであるか否かを判定するために前記オブジェクトリク
    エストブローカデーモンを利用するステップと、 c)前記オブジェクトリクエストブローカデーモンの判
    定結果を前記第1のコンピュータ上に存在するプロクシ
    オブジェクトへ返すステップと、 d)前記プロクシオブジェクトへ返された結果に基づい
    て前記キャッシュメモリを更新するステップとを備える
    請求項21記載の方法。
  24. 【請求項24】 前記クライアントが、前記第1のコン
    ピュータ上で実行されるコンピュータ制御のクライアン
    トプロセスである、請求項17記載の方法。
  25. 【請求項25】 前記クライアントが、前記第1のコン
    ピュータ上で実行されるコンピュータ制御のプロセス内
    に存在するクライアントオブジェクトである、請求項1
    7記載の方法。
  26. 【請求項26】 前記第1のコンピュータと前記第2の
    コンピュータとが同一のコンピュータである、請求項1
    7記載の方法。
  27. 【請求項27】 前記出力プロクシオブジェクトを形成
    するステップが、前記入力プロクシオブジェクトの種類
    と前記ターゲットインターフェイス識別子のタイプとに
    基づいてプロクシファクトリを見いだすため、プロクシ
    ファクトリテーブルを用いて実行される、請求項17記
    載の方法。
  28. 【請求項28】 分散オブジェクト環境コンピューティ
    ングシステムにおいて、第1のコンピュータ上で実行さ
    れコンピュータ制御されるプロセス内に存在する入力プ
    ロクシオブジェクトを絞り込むための装置であって、 a)前記第1のコンピュータ上に存在するクライアント
    と、 b)前記第2のコンピュータ上で実行されるコンピュー
    タ制御のプロセス内に存在するターゲットオブジェクト
    と、 c)前記ターゲットオブジェクトのあり得るタイプを表
    すターゲットインターフェイス識別子を用いて、入力プ
    ロクシオブジェクト上で役割チェック機能を実行するた
    めのチェック機構と、 d)前記ターゲットインターフェイス識別子が、前記タ
    ーゲットオブジェクトのタイプを表すとともに、前記タ
    ーゲットオブジェクトに対応する実インターフェイス識
    別子に等しいか、あるいはそのベースであるか否かを判
    定するための実比較機構と、 e)前記入力プロクシオブジェクトと同じ種類で、前記
    ターゲットインターフェイス識別子と同じタイプの出力
    プロクシオブジェクトを形成する形成装置と、 を備える装置。
  29. 【請求項29】 前記出力プロクシオブジェクトを、前
    記ターゲットインターフェイス識別子に対応するクラス
    へ拡大するための拡大機構を更に備える、請求項28記
    載の装置。
  30. 【請求項30】 前記チェック機構が、前記ターゲット
    インターフェイス識別子を、前記ターゲットオブジェク
    トのあり得るタイプを表す、前記入力プロクシオブジェ
    クトの仮想インターフェイス識別子、および、前記入力
    プロクシオブジェクトのすべての親のインターフェイス
    識別子と比較する、請求項28記載の装置。
  31. 【請求項31】 a)前記第2のコンピュータ上のオブ
    ジェクトリクエストブローカデーモンとの接続を形成す
    る通信装置と、 b)前記第2のコンピュータへの前記ターゲットオブジ
    ェクトを識別する、前記第1のコンピュータ上に存在す
    るターゲットオブジェクト識別子と、 c)実インターフェイス識別子と、前記ターゲットオブ
    ジェクトに関するインターフェイスとを識別するため、
    前記オブジェクトリクエストブローカデーモンと前記タ
    ーゲットオブジェクト識別子とを利用する識別機構と、 d)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するため、前記インターフェイスを
    利用するインターフェイス比較機構とを更に備える請求
    項28記載の装置。
  32. 【請求項32】 a)前記第1のコンピュータ上に存在
    するキャッシュメモリと、 b)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するキャッシュチェック装置と、 を更に備える請求項28記載の装置。
  33. 【請求項33】 前記クライアントが、前記第1のコン
    ピュータ上で実行されるコンピュータ制御のクライアン
    トプロセスであり、前記キャッシュメモリが前記クライ
    アントプロセス内に存在する、請求項32記載の方法。
  34. 【請求項34】 a)前記第2のコンピュータ上のオブ
    ジェクトリクエストブローカデーモンとの接続を形成す
    る通信装置と、 b)前記ターゲットインターフェイス識別子が前記実イ
    ンターフェイス識別子に等しいか、あるいはそのベース
    であるか否かを判定するため、前記オブジェクトリクエ
    ストブローカデーモンを利用するためのデーモン比較機
    構と、 c)前記オブジェクトリクエストブローカデーモンの判
    定に基づいて、前記キャッシュメモリを更新するキャッ
    シュ更新装置とを更に備える請求項32記載の装置。
  35. 【請求項35】 前記クライアントが、前記第1のコン
    ピュータ上で実行されるコンピュータ制御のクライアン
    トプロセスである、請求項28記載の装置。
  36. 【請求項36】 前記クライアントが、前記第1のコン
    ピュータ上で実行されるコンピュータ制御のプロセス内
    に存在するクライアントオブジェクトである、請求項2
    8記載の装置。
  37. 【請求項37】 前記第1のコンピュータと前記第2の
    コンピュータとが同一のコンピュータである、請求項2
    8記載の方法。
  38. 【請求項38】 出力プロクシオブジェクトを形成する
    前記形成装置が、プロクシファクトリーテ−ブルを含
    む、請求項28記載の方法。
  39. 【請求項39】 複数の分散オブジェクトの存在を想定
    する分散オブジェクトオペレ−テイング環境において使
    用するプロクシオブジェクトであって、いずれかのコン
    ピュータ上で実行されコンピュータ制御されるプロセス
    内に存在し、ターゲットインターフェイス識別子を、い
    ずれかの遠隔コンピュータ上で実行されるコンピュータ
    制御のプロセス内のターゲットオブジェクトのタイプと
    比較するとともに、肯定表示または否定表示を返すため
    にオペレ−テイング可能であるプロクシオブジェクト。
  40. 【請求項40】 a)中央処理装置と、 b)メモリー装置と、 c)入出力装置と、 d)コンピュータシステム上で実行されコンピュータ制
    御されるプロセス内に存在する、請求項39に記載のプ
    ロクシオブジェクトとを備えるコンピュータシステム。
  41. 【請求項41】 ターゲットオブジェクトのタイプに関
    する情報を格納するキャッシュメモリを更に備える、請
    求項40記載のコンピュータシステム。
  42. 【請求項42】 a)複数のコンピュータシステムと、 b)前記コンピュータシステム同士を接続するネットワ
    ーク通信装置と、 c)前記コンピュータシステムの少なくとも1つにおい
    て実行されるコンピュータ制御のプロセス内に存在する
    請求項39記載のプロクシオブジェクトと、 d)前記コンピュータシステムの少なくとも1つにおい
    て実行されるコンピュータ制御のプロセス内に存在する
    ターゲットオブジェクトとを備える分散オブジェクトオ
    ペレ−テイング環境。
  43. 【請求項43】 複数の分散オブジェクトの存在を想定
    する分散オブジェクトオペレ−テイング環境において使
    用するプロクシオブジェクトであって、いずれかのコン
    ピュータ上で実行されコンピュータ制御されるプロセス
    内に存在し、ターゲットインターフェイス識別子を、い
    ずれかの遠隔コンピュータ上で実行されるコンピュータ
    制御のプロセス内に存在するターゲットオブジェクトの
    タイプと比較するとともに、いずれかのコンピュータ上
    で実行されコンピュータ制御されるプロセス内に存在す
    る出力プロクシオブジェクトを作成するために作用可能
    であるプロクシオブジェクト。
  44. 【請求項44】 a)中央処理装置と、 b)メモリー装置と、 c)入出力装置と、 d)コンピュータシステム上で実行されコンピュータ制
    御されるプロセス内に存在する、請求項39に記載のプ
    ロクシオブジェクトとを備えるコンピュータシステム。
  45. 【請求項45】 ターゲットオブジェクトのタイプに関
    する情報を格納するためのキャッシュメモリを更に備え
    る、請求項44記載のコンピュータシステム。
  46. 【請求項46】 出力プロクシオブジェクトが、ターゲ
    ットインターフェイス識別子に対応するクラスへ拡大さ
    れた入力プロクシオブジェクトである、請求項44記載
    のコンピュータシステム。
  47. 【請求項47】 出力プロクシオブジェクトが、入力プ
    ロクシオブジェクトと同じ種類であるとともにターゲッ
    トインターフェイス識別子と同じタイプである、請求項
    44記載のコンピュータシステム。
  48. 【請求項48】 プロクシファクトリーテ−ブルを更に
    備える、請求項47記載のコンピュータシステム。
  49. 【請求項49】 a)複数のコンピュータシステムと、 b)前記コンピュータシステム同士を接続するネットワ
    ーク通信装置と、 c)前記コンピュータシステムの少なくとも1つにおい
    て実行されるコンピュータ制御のプロセス内に存在す
    る、請求項43記載のプロクシオブジェクトと、 d)前記コンピュータシステムの少なくとも1つにおい
    て実行されるコンピュータ制御のプロセス内に存在する
    ターゲットオブジェクトとを備える分散オブジェクトオ
    ペレ−テイング環境。
JP8065026A 1995-03-22 1996-03-21 分散オブジェクトシステムにおいてオブジェクトのタイプを決定する方法及び装置 Pending JPH08339338A (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US08/408,633 US5793965A (en) 1995-03-22 1995-03-22 Method and apparatus for determining the type of an object in a distributed object system
US08/408633 1995-03-22

Publications (1)

Publication Number Publication Date
JPH08339338A true JPH08339338A (ja) 1996-12-24

Family

ID=23617076

Family Applications (1)

Application Number Title Priority Date Filing Date
JP8065026A Pending JPH08339338A (ja) 1995-03-22 1996-03-21 分散オブジェクトシステムにおいてオブジェクトのタイプを決定する方法及び装置

Country Status (5)

Country Link
US (1) US5793965A (ja)
EP (1) EP0735470B1 (ja)
JP (1) JPH08339338A (ja)
CA (1) CA2171686A1 (ja)
DE (1) DE69617509T2 (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112902A (ja) * 1998-10-02 2000-04-21 Nec Corp 分散オブジェクト通信プロトコル処理方法
WO2000055725A1 (fr) * 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement

Families Citing this family (54)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6625641B1 (en) * 1996-06-03 2003-09-23 Sun Microsystems, Inc. Method and apparatus for providing client support without installation of server software
GB9620196D0 (en) * 1996-09-27 1996-11-13 British Telecomm Distributed processing
US6138141A (en) * 1996-10-18 2000-10-24 At&T Corp Server to client cache protocol for improved web performance
US5884316A (en) * 1996-11-19 1999-03-16 Microsoft Corporation Implicit session context system with object state cache
US6687761B1 (en) * 1997-02-20 2004-02-03 Invensys Systems, Inc. Process control methods and apparatus with distributed object management
US6496865B1 (en) * 1997-03-12 2002-12-17 Novell, Inc. System and method for providing interpreter applications access to server resources in a distributed network
US6769125B2 (en) * 1997-04-11 2004-07-27 Sun Microsystems, Inc. Methods and apparatus for managing computer processes
US6055562A (en) * 1997-05-01 2000-04-25 International Business Machines Corporation Dynamic mobile agents
US6192418B1 (en) 1997-06-25 2001-02-20 Unisys Corp. System and method for performing external procedure calls from a client program to a server program while both are operating in a heterogenous computer
US6289391B1 (en) * 1997-06-25 2001-09-11 Unisys Corp. System and method for performing external procedure calls from a server program to a client program while both are running in a heterogeneous computer
US5920725A (en) * 1997-07-02 1999-07-06 Adaptivity Inc. Run-time object-synthesis and transparent client/server updating of distributed objects using a meta server of all object descriptors
US5884317A (en) * 1997-08-20 1999-03-16 Bea Systems, Inc. Service interface repository
US6253253B1 (en) * 1997-08-25 2001-06-26 International Business Machines Corporation Method and apparatus for optimizing references to objects in a data processing system
US6957427B1 (en) * 1997-10-15 2005-10-18 Sun Microsystems, Inc. Remote object activation in a distributed system
US6567853B2 (en) * 1997-12-08 2003-05-20 International Business Machines Corporation Scalable I/O system for the efficient transfer of storage device data by a non-server reconnection
US6405264B1 (en) 1997-12-18 2002-06-11 Sun Microsystems, Inc. Marshaling and unmarshaling framework for supporting filters in a distributed object system
US6249803B1 (en) 1997-12-18 2001-06-19 Sun Microsystems, Inc. Method and apparatus for executing code during method invocation
US6510460B1 (en) * 1997-12-18 2003-01-21 Sun Microsystems, Inc. Method and apparatus for enforcing locking invariants in multi-threaded systems
US6516354B2 (en) 1997-12-18 2003-02-04 Sun Microsystems, Inc. Method and apparatus for efficient representation of variable length identifiers in a distributed object system
US6138269A (en) * 1998-05-20 2000-10-24 Sun Microsystems, Inc. Determining the actual class of an object at run time
US6173313B1 (en) * 1998-06-24 2001-01-09 Oracle Corporation Methodology for hosting distributed objects at a predetermined node in a distributed system
US6848108B1 (en) * 1998-06-30 2005-01-25 Microsoft Corporation Method and apparatus for creating, sending, and using self-descriptive objects as messages over a message queuing network
GB2340360B (en) * 1998-07-31 2002-11-06 Sony Uk Ltd Animation of video special effects
US6286047B1 (en) * 1998-09-10 2001-09-04 Hewlett-Packard Company Method and system for automatic discovery of network services
CN1335956A (zh) * 1998-10-16 2002-02-13 西尔弗斯特里姆软件公司 分布式系统的连接集线器
US6385661B1 (en) 1998-10-19 2002-05-07 Recursion Software, Inc. System and method for dynamic generation of remote proxies
US6799320B1 (en) * 1998-12-16 2004-09-28 Microsoft Corporation Providing binding options for component interfaces
US7039673B1 (en) * 1998-12-24 2006-05-02 Computer Associates Think, Inc. Method and apparatus for dynamic command extensibility in an intelligent agent
US7305473B2 (en) * 1999-05-28 2007-12-04 The Coca-Cola Company Provision of transparent proxy services to a user of a client device
JP3740320B2 (ja) * 1999-05-31 2006-02-01 キヤノン株式会社 デバイス検索システム及びデバイス検索方法
US6571277B1 (en) 1999-10-19 2003-05-27 International Business Machines Corporation Method and apparatus for scaling universal plug and play networks using atomic proxy replication
US6665705B1 (en) 1999-10-19 2003-12-16 International Business Machines Corporation Method and apparatus for proxy replication
US6947965B2 (en) * 1999-11-30 2005-09-20 Recursion Software, Inc. System and method for communications in a distributed computing environment
US6622175B1 (en) * 1999-11-30 2003-09-16 Recursion Software, Inc. System and method for communications in a distributed processing environment
US6678743B1 (en) 1999-11-30 2004-01-13 Recursion Software, Inc. Method for moving objects in a distributed computing environment
US6363417B1 (en) * 2000-03-31 2002-03-26 Emware, Inc. Device interfaces for networking a computer and an embedded device
US6678700B1 (en) * 2000-04-27 2004-01-13 General Atomics System of and method for transparent management of data objects in containers across distributed heterogenous resources
AU2001276932B2 (en) * 2000-07-27 2007-06-21 Oracle International Corporation System and method for concentration and load-balancing of requests
US6788317B2 (en) * 2001-05-18 2004-09-07 Sun Microsystems, Inc. Generation of delegating implementation for IDL interfaces which use inheritance
US7318083B2 (en) * 2001-08-27 2008-01-08 Ricoh Company, Ltd. Information processing system
US6912542B2 (en) * 2001-09-26 2005-06-28 Intel Corporation Method for implementing fast type checking
US7000238B2 (en) * 2001-10-10 2006-02-14 Borland Software Corporation Development system providing extensible remoting architecture
US7051341B2 (en) 2001-12-14 2006-05-23 International Business Machines Corporation Method, system, and program for implementing a remote method call
US6996825B2 (en) * 2001-12-27 2006-02-07 Sun Microsystems, Inc. Method and apparatus for efficient object sub-typing
US20030212770A1 (en) * 2002-05-10 2003-11-13 Sreekrishna Kotnur System and method of controlling software components
US20050248453A1 (en) * 2004-05-10 2005-11-10 Fechter Cary E Multiple deterrent, emergency response and localization system and method
CN100343803C (zh) * 2004-07-26 2007-10-17 国际商业机器公司 将个性化计算环境从源平台移植到目标平台的方法和系统
US7634771B2 (en) * 2005-04-29 2009-12-15 Sap (Ag) Object generation in packages
US7669181B2 (en) * 2005-04-29 2010-02-23 Sap (Ag) Client interfaces for packages
US7587705B2 (en) * 2005-04-29 2009-09-08 Sap (Ag) Calls and return calls using client interfaces
KR100663499B1 (ko) * 2005-11-01 2007-01-02 삼성전자주식회사 개인 환경 정보를 외부기기에 저장 및 적용하기 위한 장치및 방법
DE102007039920A1 (de) * 2007-08-23 2009-02-26 Siemens Ag Verfahren zum Auslesen und/oder Schreiben von Eigenschaften oder Parametern eines an ein Bussystem angeschlossenen Installationsgerätes
US20110271258A1 (en) * 2010-04-30 2011-11-03 Microsoft Corporation Software Development Tool
US9558251B2 (en) * 2012-04-03 2017-01-31 Teradata Us, Inc. Transformation functions for compression and decompression of data in computing environments and systems

Family Cites Families (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5226161A (en) * 1987-08-21 1993-07-06 Wang Laboratories, Inc. Integration of data between typed data structures by mutual direct invocation between data managers corresponding to data types
US5187790A (en) * 1989-06-29 1993-02-16 Digital Equipment Corporation Server impersonation of client processes in an object based computer operating system
US5297279A (en) * 1990-05-30 1994-03-22 Texas Instruments Incorporated System and method for database management supporting object-oriented programming
US5481721A (en) * 1991-07-17 1996-01-02 Next Computer, Inc. Method for providing automatic and dynamic translation of object oriented programming language-based message passing into operation system message passing using proxy objects
US5307490A (en) * 1992-08-28 1994-04-26 Tandem Computers, Inc. Method and system for implementing remote procedure calls in a distributed computer system
US5497463A (en) * 1992-09-25 1996-03-05 Bull Hn Information Systems Inc. Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system
JPH09502547A (ja) * 1992-11-13 1997-03-11 マイクロソフト コーポレイション 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム
US5566302A (en) * 1992-12-21 1996-10-15 Sun Microsystems, Inc. Method for executing operation call from client application using shared memory region and establishing shared memory region when the shared memory region does not exist
US5437025A (en) * 1993-01-26 1995-07-25 International Business Machines Corporation System and method for run time configuration of objects in an object oriented computing environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000112902A (ja) * 1998-10-02 2000-04-21 Nec Corp 分散オブジェクト通信プロトコル処理方法
WO2000055725A1 (fr) * 1999-03-17 2000-09-21 Fujitsu Limited Systeme serveur et support d'enregistrement

Also Published As

Publication number Publication date
DE69617509D1 (de) 2002-01-17
EP0735470B1 (en) 2001-12-05
EP0735470A1 (en) 1996-10-02
US5793965A (en) 1998-08-11
CA2171686A1 (en) 1996-09-23
DE69617509T2 (de) 2002-05-16

Similar Documents

Publication Publication Date Title
JPH08339338A (ja) 分散オブジェクトシステムにおいてオブジェクトのタイプを決定する方法及び装置
EP0733972B1 (en) Method and apparatus for managing relationships among objects in a distributed object environment
US5963947A (en) Technique of dynamically adding functionality from a client to manipulated data at a server
US6704803B2 (en) Method and system for distributing data events over an information bus
US6266716B1 (en) Method and system for controlling data acquisition over an information bus
EP0737922B1 (en) Method and apparatus for managing computer processes
US6704804B1 (en) Method and system for communicating information among interactive applications
EP0501610B1 (en) Object oriented distributed computing system
US5758351A (en) System and method for the creation and use of surrogate information system objects
US5692183A (en) Methods and apparatus for providing transparent persistence in a distributed object operating environment
US5857197A (en) System and method for accessing data stores as objects
US5557793A (en) In an object oriented repository, a method for treating a group of objects as a single object during execution of an operation
US6185609B1 (en) Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system
JP2986051B2 (ja) オブジェクト指向コンピュータ・システム及びオブジェクト実行方法
US5671398A (en) Method for collapsing a version tree which depicts a history of system data and processes for an enterprise
US6748455B1 (en) Object connectivity through loosely coupled publish and subscribe events with filtering
US6263498B1 (en) Method and apparatus for enabling server side distributed object modification
US20020073092A1 (en) Methods, systems and computer program products for controlling variables associated with transactions in a multiple transaction environment
JPH10511202A (ja) オブジェクト指向環境における回復可能プロキシ・オブジェクト
GB2308468A (en) Data processing systems and methods providing interoperability between data processing resources
JPH0922392A (ja) オブジェクト間のコンスピラシのための方法および装置
JPH0926890A (ja) オブジェクトを管理するための方法、装置、および、データ構造
US6405363B1 (en) Class casting support for run-time extensible items in an object oriented framework
US6769125B2 (en) Methods and apparatus for managing computer processes
US6944680B1 (en) Smart handle