JPH09507318A - オブジェクト指向システムにおけるサービスの作成 - Google Patents
オブジェクト指向システムにおけるサービスの作成Info
- Publication number
- JPH09507318A JPH09507318A JP7517393A JP51739394A JPH09507318A JP H09507318 A JPH09507318 A JP H09507318A JP 7517393 A JP7517393 A JP 7517393A JP 51739394 A JP51739394 A JP 51739394A JP H09507318 A JPH09507318 A JP H09507318A
- Authority
- JP
- Japan
- Prior art keywords
- service
- interface
- stack
- creating
- 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
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements 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/46—Multiprogramming arrangements
- G06F9/465—Distributed object oriented systems
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer And Data Communications (AREA)
- Stored Programmes (AREA)
Abstract
(57)【要約】
オブジェクト指向システムにおけるサービスの作成が開示され、具体的には、オブジェクト指向システムにおいてサービスを提供する方法およびシステムが開示されている。方法およびシステムは、リクエストに応答してサービスを作成するオブジェクトのインタフェース参照フレームワーク(interface reference framework)の形体になっている。クライアントはリクエストに応答して作成されるサービスを要求する。リクエストに応答して、フレームワークは、まず、サービス記述を作成する。この記述はサービス記述のスタックの形体になっている。スタック記述から、実際のサービスはメーカ・オブジェクト(maker object)によって作成される。
Description
【発明の詳細な説明】
オブジェクト指向システムにおけるサービスの作成
著作権表記
本出願には、一部に著作権保護の対象となる内容が含まれている。何人が、特
許文書または特許開示内容を、米国特許商標局の特許ファイルまたは記録の通り
に複写複製しても、著作権所有者はそれを妨げるものではないが、そうでない場
合には、一切の著作権を留保する。
技術分野
本発明は、コンピュータ・システムにおける改良に関し、特に、オブジェクト
指向オペレーティング・システムでサービスを作成するシステムおよび方法に関
する。
背景技術
コンピュータ・システムは一般に非常に融通がきかない。情報が支障なく流れ
るシステムを提供するため、システムのアプリケーション開発者およびユーザは
、ハードウェアのプロトコルとコンフィグレーションの詳細を熟知していなけれ
ばならないことがしばしばある。ポートおよびI/Oデバイスの特定のタイプの
詳細を、個別に、取り扱わなければならない。アプリケーション開発者およびユ
ーザも、コンピュータ・システムの変化に遅れをとらないようにしなければなら
ない。これは、コンピュータ・システムの変化をソフトウェアとハードウェアに
反映させて、その変化をフルに活用できるようにするためにである。
入出力デバイスの変化の度合は、情報を入出力デバイスとの間で転送するため
に用いられる中間要素の変化の度合と同様に、非常に速い。システムのユーザは
システムを適正にパフォームさせることができるように、変化があるごとに、学
習プロセスが必要である。
コンピュータ・システムは、パフォームされるサービスを必要とするクライア
ントの大きな集まりと考えることができる。クライアントは、仮想的には、何か
を必要とすることができるシステムの任意の部分と考えることができる。例えば
、CPUは、システム内の特定の要素によりパフォームされるサービスを必要と
するクライアントと考えることができる。サービスの性能には、要求されたサー
ビスを提供するため、多くのステップと、多くの要素とを含めることができる。
サービスは、システム内の別のエンティティが必要とする、なにかを提供するも
のと考えることができる。例えば、特定のチップは、特定のタイプのディジタル
信号処理を、サービスとして、もう1つのシステム要素に提供することができる
。単一要素は、クライアントとなることもできるし、サービスをクライアントに
提供することもできる。
サービス要求と、サービス提供と、円滑なプロセスとを要求するには、クライ
アントとサービスの相互作用を、開発者とユーザが、しばしば、充分に配慮する
必要がある。
サービス要求とサービス提供に対するプロトコルは、しばしば、非常に柔軟性
に欠けるため、プロトコルを変更するには、細部にまでも介入する必要がある。
多くの点で、サービス要求とサービス提供は石に填込まれていると考えることが
できる。
そのため、サービスを要求し、サービスを提供するには、柔軟性のあるシステ
ムを提供する必要がある。この柔軟性のあるシステムは、関係する詳細のレベル
に関する上記困難性を解消し、システム変化に関連する問題を解決し、クライア
ントとサービス・プロバイダとの間のソフトウェアとハードウェアの全体的な硬
直性を解消する必要がある。
発明の開示
以上に鑑みて、本発明の第1の目的は、クライアントとサービスとの間の対話
を改善するシステムと方法を提供するにある。
本発明の第2の目的は、クライアントとサービス・プロバイダのシステムの変
化をより柔軟に調整するシステムと方法を提供することにある。
本発明の第3の目的は、リクエストされたサービスの詳細を配慮することなく
、サービスのリクエストを行うことができるシステムと方法を提供することにあ
る。
本発明の第4の目的は、サービス・プロバイダの詳細に配慮することなく、サ
ービスのリクエストを行うことができるシステムと方法を提供することにある。
上記の目的およびその他の目的は、リクエストに応答してサービスを作成する
インタフェース・フレームワークにより達成される。システムはインタフェース
参照(interface reference)を受け取り、この受け取った参照から、以前に存在
しないサービスを作成する。インタフェース参照はインタフェース・メーカ(int
erface maker)を作成する。このインタフェース・メーカにより、リクエストさ
れたサービスが実際に作成され、活動化される。サービスの活動化は2ステップ
のプロセスと考えることができる。この2ステップのプロセスでは、サービス・
スタック記述が作成され、この作成されたサービス・スタック記述から、サービ
ス・スタックが作成される。
インタフェース参照とは、あるサービスを作成するのに必要な全ての情報をカ
プセル化するエンティティである。クライアントはインタフェース参照を有し、
そのインタフェース参照を活動化して、必要とされるサービスを作成する。イン
タフェース参照は、最初に、サービス・スタックのトップ(最上部)とボトム(
最下部)を構成するサービス・インタフェースを判断して、サービス・スタック
記述を作成し、ついで、探索して、トップ・インタフェースとボトム・インタフ
ェースの間のサービスの集合を見つけ出す。これらのサービスの集合は、リクエ
ストされたサービス・スタックを構成することになる。インタフェース・メーカ
はサービス・スタック・フレームワークからのサービス・プロバイダ・クラスを
「バッファリング」する目的をサーブする。
サービス・スタック記述から、そのサービス・スタック記述に対応するインタ
フェース・メーカが作成される。このインタフェース・メーカの作成はこのサー
ビス・スタック記述の下から上に向かって行われる。このサービス・スタック記
述はインタフェース・メーカに対する参照のリストと考えることができる。
図面の簡単な説明
図1は本発明に係るコンピュータの典型的なハードウェア構成を示す図である
。
図2はインタフェース参照を用いるクライアントを示す図である。
図3はドラッグ・アンド・ドロップ・オペレーションを示す図である。
図4はプリンタとシリアル・データ転送に関係付けをしたサービス・スタック
を示す図である。
図5はプリンタとパラレル・データ転送に関係付けをしたサービス・スタック
を示す図である。
図6はプリンタに対するサービス間の関係を示すBooch 図である。
図7はオペレーティング・システムとハードウェアとの間のインタフェースと
してアクトする本発明に係るパーソナリティ・ニュートラル層(personality neu
tral layer)の概念を示すブロック図である。
図8はインタフェース参照のオペレーションを示す概要図である。
図9はinterface reference クラスを示す図である。
図10は可能なサービス・スタック構成を示すブロック図である。
図11はinterface maker クラスを示す図である。
図12はサービス・メーカ間の制約を階層的に示す図である。
図13はサービスの階層の自由度を示す図である。
図14はTInterfaceBundleクラスを示す図である。
図15はTHardwareInterfaceReference のハードウェア構成を示す図である。
図16はサービス・メーカ・エンティティ(つまり、これらはTServiceMakerL
ocator プロパティの探索から見付け出されることになるエンティティである)
の架空の「プール」を示す図である。
図17はTHardwareReferenceオブジェクトによるスタック作成を示す図である
。
図18は図17の要素の一部の種々のクラスの関係を示す図である。
図19はTHardwareInterfaceReference を活動化するためのスタック記述の作
成を示す図である。
図20はTHardwareInterfaceReferenceの スタック作成の全体的なオペレーシ
ョンを示す図である。
図21、図22および図23は、ともに、 THardwareInterfaceReferenceによ
るサービス・スタック作成を、ビジュアル設計言語で示す図である。
図24はマウスに対するスタック記述を作成するためのハードウェア構成を示
す概要図である。
図25は THardwareInterfaceReferenceオブジェクトに対する計算されたスタ
ック「記述」を示す図である。
図26はスイッチ・ボックスによりシリアル・ポートに対するスタック記述を
作成するためのハードウェア構成を示す概要図である。
図27はSCSIスタック記述を作成するためのハードウェア構成を示す概要
図である。
図28はTHardwareInterfaceReferenceをImageWriterII に対するプリンタ・
フレームワークによりどのように用いることができるかを例示する図である。
図29はmaker クラスを示す図である。
図30はservice クラスを示す図である。
図31はTPresentableViews の階層を示す図である。
図32は共通クラス階層が回避されなかった場合のサービスのクラス階層を示
す図である。
図33と図34は共にメーカの展開を示す図である。
発明の詳細な説明
以下、本発明の実施の形態を詳細に説明する。当然、以下に説明する実施の形
態は本発明の単なる例示に過ぎず、種々の態様をとることができる。従って、以
下に開示する詳細な説明は、それに限定されるものではなく、単に、請求の範囲
の基礎にすぎず、しかも、本発明を製造および/または使用する方法を当業者に
教示する基礎に過ぎない。
文献には、OOP(object-oriented programming)の歴史が紹介され、フレー
ムワークの開発が開示されている。C++とSmalltalk は、文献に詳しいので、こ
こでは、説明しない。同様に、オブジェクトの特性、例えば、カプセル化と、多
態性(polymorphism)と、継承のような特性は、文献や特許明細書に、長々と論じ
られている。オブジェクト指向システムの優れた概説書として、"Object Orient
ed Design With Applications"by Grady Booch を参照されたい。
多くのオブジェクト指向システムは、基本的な入出力をパフォームする基本的
なオペレーティング・システムのトップに対してオペレートするように設計され
ており、本発明に係るシステムは、特定の機構(フィーチャ)をシステム・レベ
ルでサポートするのに用いられる。なお、忘れてならないことは、処理階層の異
なるレベルでオブジェクトをサポートするため、ここに開示されている新規なオ
ブジェクトも、そのシステム・レベルより上位の層に出現させるができる。
本発明は、IBM(登録商標)PS/2(登録商標)またはApple(登録商標)Macin
tosh(登録商標)コンピュータのようなパーソナル・コンピュータに駐在するオペ
レーティング・システムのコンテキストで実施されるのが好ましい。図1は代表
的なハードウェア環境を示し、本発明に係るコンピュータの典型的なハードウェ
ア構成を示す。このハードウェア構成は、CPU(central processing unit)1
0、例えば、慣用のマイクロプロセッサを有し、システム・バス12により相互
結合された複数の他のユニットを有する。図1に示すコンピュータには、ROM
(read only memory)16と、RAM(random access memory)14とが含まれる。
また、このコンピュータには、周辺デバイス、例えば、ディスク・ユ
ニット20と、21で示す他のI/O周辺装置のような周辺デバイスをシステム
バス12に接続するためのI/Oアダプタ18が含まれる。さらに、このコンピ
ュータには、キーボード24、マウス32、スピーカ28、マイクロホン26、
および/または、ユーザ・インタフェース・デバイス、例えば、図示しないタッ
チスクリーン・デバイスのようなデバイスを、システムバス12に接続するため
のユーザ・インタフェース・アダプタ22が含まれる。さらにまた、このコンピ
ュータには、ワークステーションを、23で示すデータ処理ネットワークに接続
するための通信アダプタ34と、システムバス12をディスプレイ・デバイス3
8に接続するためのディスプレイ・アダプタ36が含まれる。このワークステー
ションには、Apple System/7(登録商標)オペレーティング・システムのような
オペレーティング・システムが駐在している。
以下に、本発明の好ましい実施の形態により提供される要件と、クライアント
・ニーズと、クラスを説明する。この好ましい実施の形態を、「インタフェース
参照フレームワーク(interface reference framework)」という。インタフェー
ス参照フレームワークは、コンピュータ産業の様々なセグメント、すなわち、
1.「コンピュータ・ビュワー」と、「低レベル・ハードウェア構成フレー
ムワーク」および「ネットワーク・ブラウザ」の設計者および開発者、
2.コンピュータ・ビュワーおよびネットワーク・ブラウザに表示される新
タイプのTModelSurrogate の開発者、
3.サービス(例えば、CAN、DAM、デバイス・チャネル)の設計者
インタフェース参照フレームワークは、サービスがどのように作成されるかの
詳細から、開発者自身を切り離そうとする開発者のニーズにアドレスするように
設計されている。インタフェース参照フレームワークを用いる開発者は、メッセ
ージ・ストリームのような基本的なサービス作成技法をクライアントから見えな
いように隠蔽することができる。これらの詳細は、全て、インタフェース参照フ
レームワークによりカプセル化される。
インタフェース参照フレームワークの第1の利点は、サービスがどのように作
成されるかの詳細をクライアントから見えないようにする抽象化を、インタ
フェース参照フレームワークが提供する点にある。TinterfaceReference のサブ
クラスのインスタンスは、クライアントにより指定されたインタフェースで、特
定デバイスに対するサービスを作成し使用する能力を表している。C++では、ク
ライアントは特定クラスをインスタンシエートするだけで、インタフェースを指
定するのが典型的である。TImageWriterサービスを必要とするクライアントを考
察する。数多くの具象TImageWriter serviceクラス、例えば、TImageWriterOnSe
rialと、TImageWriterOnParallelと、TImageWriterOnMessageStreamと、TImageW
riterOnSCSIのようなクラスが利用可能である。これらの具象クラスは、それぞ
れ、TImageWriterインタフェースをサポートしている。どのクラスを選択するか
。貴方たちが選択することのできる唯一の方法は、デバイスが実際にどこに接続
されているかについて、何かを知ることである。しかし、貴方たちは詳細(detai
l)のタイプを知る必要はない。そうして、我々はこの知識をインタフェース参照
の内部でカプセル化する。この知識が、貴方たちのために、具象クラスのどれを
、「メタル(metal)」に至るまで、インスタンシエートするかを判断する。
例えば、ImageWriter を考察する。このImageWriter を、コンピュータの任意
のシリアル・ポートまたはパラレル・ポートに接続することができるし、ネット
ワークにさえも接続することができる。どの場合にも、そのプリンタと通信する
ため、サービスの異なる集合を作成する必要がある。ImageWriter がどのように
接続されているか、サービスの異なる集合がどのようにしてImageWriter をアク
セスするかという詳細から、インタフェース参照フレームワークはクライアント
を切り離している。
図2は、"ImageWriter"サービス 202を必要とするクライアント200(I
mageWriter TModelオブジェクト)の高レベルなシナリオを示す。図2において
、両側にラインがある矢印は、コラボレーション(collaboration)をセットアッ
プするメッセージ送信を示す。一方の端に"+"があるライン(矢印なし)は作成
を意味する。
クライアント200には、システムの組込みシリアル・ポートに接続されたIm
ageWriter 204へのインタフェース参照206が与えられる。クライアント
は"ImageWriter"204 をトップ・インタフェースとしてセットし、インタフ
ェース参照206を活動化する。その結果、ImageWriter サービス202が作成
され、作成されたImageWriter サービス202がそのターゲット・プリンタに返
される。ImageWriter サービス202自身が、シリアル・サービス208をたま
たま必要としている。さらに、シリアル・サービス208はUARTサービス210
を必要としている。ImageWriter TModelオブジェクト200は、これらサービス
のどれもが必要なことを気にとめない。このシナリオの利点は、コンピュータ・
ビュワー(computer viewer)と、ネットワーク・ブラウザ(network browser)が、
共に、同じコンストラクタを用いて同じモデルを作成することができる点にある
。そのため、モデル・ライタはモデルを、2つではなく、1つだけ書くだけでよ
いので、モデル・ライタのジョブが単純化される。
インタフェース参照フレームワークの第2の利点は、ユーザがコンピュータ・
ビュワーにより接続を変更した後も有効になるように、サービスの関係付けが保
証される点にある。例えば、図3に示すように、グラフィックス・インタフェー
ス300のユーザはprinter 302をdocument304上にドロップすることがで
きる。そうすることにより、document304がプリンタ・サービスと「関係付け
」される。デフォルトdocument printコマンドが発行されると、常に、document
304はこのprinter 302を用いる。printer 302の接続が変更されても、
そのprinter 302と「関係付け」されているdocumentは、全て、依然として、
同じプリンタにプリントされることになる。このことがサポートされていない場
合は、ユーザは、修正されたコネクションにより影響を受けたドキュメントをそ
れぞれフィックス(fix)する必要がある。
第3の利点は、ドキュメントと関係付けされたサービスが、システムのリブー
トを絶えずアクセスする点にある。システムがリブートされると、これらの関係
付けは全てそのまま有効である。
サービス・スタック(servicestack): サービス・スタックとは、積み重ねら
れた一連のサービスである。サービス・スタックのサービスは、それぞれ、1つ
のインタフェースをクライアントに確実にエクスポートし、当該サービスより下
にある1つのサービスが確実に用いられることを期待する。次に、図面を参照
してサービス・スタックを説明する。図示をしたボックスはそれぞれサービスを
表す。
図4に示すトップのボックス400は、「printer」をそのインタフェースと
して、クライアントにエクスポートするサービスを表す。このサービスは、その
「printer」インタフェースの責務を果たすため、当該サービスより下のサービ
スである「serial」02/404を必要とする。図5に示すトップのボックス5
00は、図4に示すトップのボックス400とは異なるサービスを表す。エクス
ポートされるインタフェースは同じであるが、そのインタフェースの下に、異な
るインタフェース、すなわち、parallel502/504を要求する。図6に示す
ように、これらの2つのサービス602,604は、実際には、共通の抽象60
0のサブクラスである。この構造により、トップにあるサービスのクライアント
(この場合には、「printer」)を、下位レベルの種々のサービス間で再利用す
ることができる。本発明に係るインタフェース・フレームワークに関して上述し
たメカニズムの主な目的は、このようなスタックを自動的に作成することができ
、上位レベルのクライアントを最大限に再利用することができることにある。
トップ・インタフェース: クライアントがサービスをアクセス(または使用
)するときに用いるインタフェースは、トップ・インタフェース(top interface
)と呼ばれる。上の例では、「Serial」404が、<Serial、UART>サービスの
トップ・インタフェースである。「Parallel」504が、<Parallel、VIA>サ
ービスのトップ・インタフェースである。
ボトム・インタフェース(bottom interface): 「トップ」インタフェースの
責務を果たすためにサービス・プロバイダが用いるインタフェースは、ボトム・
インタフェースと呼ばれる。上の例では、"UART"406が、<Serial、UART>サ
ービスのボトム・インタフェースである。"VIA"506 が、<Parallel、VIA>
サービスのボトム・インタフェースである。
アクセス・マネージャ(Access Manager): アクセス・マネージャとは、物理
ハードウェア・コンポーネント(例えば、集積回路)と直接に話(talk)をするこ
とができる入出力サービスである。アクセス・マネージャは、ハードウェアをア
クセスする複数のリクエストの調停をハンドルする。
要件
次に、インタフェース参照フレームワークの要件の完全なリストを示す。
多態によるサービス作成のサポート: このようなサービスがどのように作成
されるかの詳細を、サービスのコンシューマ(consumer)から隠蔽することができ
る拡張可能なメカニズムが必要である。このようなサービスがリモートで提供さ
れるか、あるいは、ローカルで提供されるかを、コンシューマは知る必要がない
。さらに、ローカル・サービスのコンシューマは、ローカル・サービスが用いる
ポートはどのタイプか(例えば、シリアルか、SCSIか)、あるいは、ローカ
ル・サービスがどの特定ポ-ト(例えば、モデム・ポートか、プリンタ・ポート
か)に接続されているかを知る必要はない。
クライアントが使用したいサービス・インタフェースをクライアントが指定で きること
: 全てのサービスはあるインタフェースをそのクライアントにエクス
ポートする。インタフェース参照フレームワークは、クライアントが必要とする
インタフェースをクライアントが指定できるメカニズムに提供しなければならな
い。
「接続」が変更された場合にサービスを再確立する能力: ローカル・デバイ
スとの接続が変更されると、適正な新しいサービスを作成しなければならない。
例えば、プリンタが、現在、シリアル・ポート1に接続されていたが、ユーザが
その接続をパラレル・ポート2に移動した場合は、新しいサービスを、パラレル
・ポート2を用いて、作成しなければならない。
持続的なサービスの関係付けのサポート: サービス(例えば、ImageWriter
IIアイコン)を、ドキュメント・モデルと関係付けをすることができる。ユーザ
が行なった関係付けであってサービスとドキュメントとの関係付けを、クライア
ントがインタフェース参照フレームワークにより保つことができることは重要な
ことである。
サービスの記述を計算する能力: サービス記述は特定のサービス・スタック
の作成に必要な一切の情報よりなる。サービス記述はいつでも計算することがで
きる。最適化として、サービス記述をキャッシュすることができる。
遅延(lazy)活動化のサポート: いつでも、サービス記述からサービス・スタ
ックを作成することができる。このため、インタフェース参照のクライアントは
、サービスが実際に必要になるまで、サービスの作成を先に延ばすことができる
。例えば、ドキュメント・モデルはプリンタとのインタフェース参照をもつこと
ができる。プリンタ・サービス・スタックの作成を、ユーザがドキュメントのプ
リントをリクエストするまで、先に延ばすことができる。
各入出力ポートに対する複数のスタックをサポートし、ボトムで調停を行う:
所定の入出力ポートに対して、2つ以上のスタックが同時に存在させることが
できなければならない。ハードウェア資源(例えは、チップ)の調停は、ボトム
のアクセス・マネージャによりハンドルされる。
スタック活動化は新たに「インストール」されたソフトウェアを利用しなけれ ばならない
: サービス・スタックが活動化(すなわち、作成)されるたびに、
サービス・スタックは、最新のサービスであって、スタックのメンバであるサー
ビスを組み込まなければならない。
特徴
次に、インタフェース参照フレームワークの特徴(features)を列挙する。
ローカル・サービスとリモート・サービスを多態により作成する: インタフ
ェース参照フレームワークは、サービスを作成し、そのサービスをアクセスする
ための単純なメカニズムを、コンシューマに提供する。サービスを作成するのに
必要になる詳細から、クライアントを切り離す。サービス・コンシューマには、
「トップ」インタフェースを供給することだけが要求される。
他のタイプのサービス・スタックをサポートするために拡張することができる
: インタフェース参照フレームワークは拡張可能である。例えば、2タイプの
サービス、例えば、ローカルとリモートのようなサービスをサポートすることが
できる。
ある記述からオン・ザ・フライ(on the fly)でサービスを作成することができ る
: クライアントがあるサービスをリクエストした時点で、サービスがインタ
フェース参照フレームワークにより自動的に作成される。サービスの作成に必要
な情報は、全て、インタフェース参照フレームワークによりカプセル化されてい
る。
サービス・クラス階層を必要としない: インタフェース参照フレームワーク
により用いられるサービスは、何か特殊なものからサブクラス化する必要がない
。(正当なhelperクラスが利用可能である限り)任意のクラスを用いて、サービ
スをこのフレームワークに提供することができる。
入出力ポートにより提供される可能な限りのサービスを列挙する: 特定のポ
ートにより現在サポートされているサービスの集合を、クライアントはオンデマ
ンドで利用可能である。
クライアント依存関係
ハードウェア構成フレームワーク/コンピュータ・ビュワー:
TModelSurrogate は、物理ハードウェアをアクセスすることができるサービスを
作成することができなければならない。コンピュータ・ビュワーとネットワーク
・ブラウザが、同じモデル・クラスとコンストラクタを使用することができるた
めには、多態インタフェース参照が必要である。例えば、Image Writerは、コン
ピュータ・ビュワーとネットワーク・ブラウザの両方に出現することができる。
同じImage Writerモデルは、コンピュータ・ビュワーとネットワーク・ブラウザ
の両方によって使用することができる。接続をいつ変更できるかを知る能力が必
要である(UIの課題)。現在使用中のデバイスの接続をユーザが変更するのを
禁止することは、好ましいことである。
コンピュータ・ビュワー/ネットワーク・ブラウザ: あるサービスに対する
同一のTModelSurrogate クラスは、コンピュータ・ビュワーとネットワーク・ブ
ラウザの両方により使用される必要がある。
Modem フレームワークと、Printer フレームワークと、MIDIフレームワーク:
あるクライアントにとって、サービスがローカルであっても良いし、リモート
であっても良いし、デバイスがどのポートに接続されていても良い。特定デバイ
スに対するオブジェクトとサロゲート(surrogate)は、クライアントのこのカテ
ゴリから逸脱しない。例としては、TModemと、printer TModelSurrogate と、MI
DI TModelSurrogateがある。
サービス依存関係
サービス記述の識別: サービスがインタフェース参照フレームワークによっ
て使用されることが予想される場合は、当該サービスがクライアントにエクスポ
ートするインタフェース(つまり、「トップ」インタフェース)と、当該サービ
スの下に当該サービスが必要とするインタフェース(つまり、「ボトム」インタ
フェース)を識別する必要がある。現在、この要件は、(後述する)「helper」
クラスのみに適用され、サービス自体には適用されない。
ハードウェア構成フレームワーク: ローカル・デバイスのサービス・スタッ
クの作成をサポートするため、ローカル・ポートに関する情報にアクセスできな
ければならない。この依存関係は、有効なルート(root)(つまり、マザーボード
)のTHardwareModuleHandle オブジェクトで、コンピュータ・データベースを初
期化しなければならないことを暗黙的に示している。サービスを提供する周辺デ
バイスに対するTHardwareInterfaceHandleは、我々に、
− 接続をナビゲート(navigate)して周辺デバイスがどのポートに接続されて
いるかを知る能力と、
− そのポートに対するTHardwareInterfaceIdentifierへのアクセスとを与え
る。
パーソナリティ・ニュートラル・サービス
フレームワークはパーソナリティ・ニュートラル層(personality neutral
layer)706の一部と考えることができる。パーソナリティ・ニュートラル層7
06はOSパーソナリティ(例えば、Taligent OS 704と、OS/2 700と、
AIX 702と)にサービスを提供する。パーソナリティ・ニュートラル層に一旦
ポートされると、これらのOSパーソナリティは、本質的に、ハードウェア・プ
ラットフォーム708独立となる。アーキテクチャ
以下に、処理階層の特定要素に対する種々の例を示す。これらの例は説明の便
宜上示すに過ぎない。クライアントによる参照によりサービス・スタックを動的
に作成するコンセプトであって、ここに具現化したコンセプトを、処理階層の任
意の要素に適用することができる。必要な関係のみが、クライアントによるサー
ビスに必要である。
サーベイ
クラス図
インタフェース参照フレームワークは次の3組のクラス、すなわち、
(1)Interface Reference クラス(図9)と、
(2)Interface Maker クラス(図11)と、
(3)TInterfaceBundleクラス(図14)とよりなる。
概要図
図8はインタフェース参照フレームワークにおける全てのクラス間の関係を示
す概要図ある。
クライアントにはinterface reference オブジェクト802が与えられる。そ
のクライアントはトップ・インタフェース属性800を設定する。そのクライア
ントはActivate804をコールする。interface reference オブジェクトは、イ
ンタフェース・メーカ806を作成し、作成されたインタフェース・メーカ
806をバンドル・コレクション(bundle collection)810に渡す。インタフ
ェース・メーカはサービス808を作成する。そのサービス808を、任意指定
で、バンドル・コレクションか、特定のbundleオブジェクトに渡すか、あるいは
、特定の設定メソッドをコールするかして、サービスをセットアップすることが
できる(サービスがなにを必要としていても)。maker クラスは、サービスをセ
ットアップの詳細から、インタフェース参照フレームワークを隔離する。
インタフェース参照コンポーネント
Interface Reference クラス(図9):
− Taligentにより開発。特定ニーズに対してサブクラス化が可能。
− サービス作成のためにサービス・コンシューマによって使用。
TInterfaceReference 900
TInterfaceReference 900と、TInterfaceReference 900に関係付けをし
た属性の主目的は、クライアントが、どのようにサービスが提供されるかを気に
しないで、サービスを作成することができることにある。例えば、インタフェー
ス参照フレームワークを用いて、ユニバーサルなTImageWriterModel クラスを書
くことができる。このクラスは、ImageWriter がネットワーク上に置かれている
か、ホスト・コンピュータにローカルに接続されているかとは関係がない。TInt
erfaceReference のサブクラスのインスタンスは、具体的なAPIで、具体的な
デバイスに対するサービスを作成し、アクセスする能力を表している。
次々にネストされた2つ以上のサービスにより、サービス・スタックを表すこ
とができる。セッションからセッションまで、同一のTInterfaceReference は、
接続が変更されたかどうかどうか、あるいは、新しいソフトウェアがインストー
ルされたかどうかにより、異なるサービス・スタックを作成することができる。
TInterfaceReference 900は次のような属性902をもっている。すなわち
、
TopInterface: InterfaceName − この値は、クライアントが必要とするサー
ビス・インタフェースのタイプを指定する。
Bundle: TDictionary〈InterfaceName,TInterfaceBundle〉 − ディクショ
ナリ(dictionary)の各キーは、InterfaceName オブジェクトであり、TInterface
Bundleのサブクラスの1つのインスタンスと関係付けしてある。TInterfaceBund
leオブジェクトは、このオブジェクトが表すタイプのインタフェースに特有のデ
ータをカプセル化する。例えば、Serialインタフェースの場合、BAUDレートとパ
リティ情報をカプセル化することができる。バンドルは任意指定である。サービ
スが活動化されると、あるバンドル(存在する場合)がサービス・メーカに渡さ
れる。
次のシナリオは、ローカル・デバイスとリモート・デバイスに対して稼働する
ユニバーサルなImageWriter モデルが、どのようにサポートされるかを示す。Im
ageWriter モデルは、自分がTInterfaceReference をもっていることだけを知っ
ており、どのタイプであるかは無関心である。サービスを、リモートか、ローカ
ル・シリアルか、あるいは、ローカル・パラレルにすることができる。これらの
詳細はImageWriter モデルの観点からは重要でない。ImageWriter モデルが必要
とするものは、"PrinterDeviceChannel"のインタフェースをエクスポートするサ
ービスだけである。
ImageWriterモデルのコードは、printerサービスを獲得するため、次のように
なっている。
TNetworkInterfaceReference 908
TNetworkInterfaceReference 908の目的は、リモート・デバイスに対する
サービスがどのように作成されるかという詳細から、クライアントを隠蔽するこ
とにある。アクテイブなTNetworkInterfaceReferenceオブジェクトは、リモート
・サービスへのアクセスを表す。
TNetworkInterfaceReference 908は次のような属性910を有する。すな
わち、
Service Reference: TServiceReference 910 − TNetworkInterfaceR
eferenceが活動化されたとき使用するため、この値はネットワーク・サービス参
照を指定する。TNetworkInterfaceReference 908オブジェクトが活動化され
ると、このオブジェクトは「トップ」インタフェースとTServiceReference 属性
910を用いてサービス・スタックを作成する。
このサービス・スタックのボトム・サービスは、TRequestSenderStreamオブジ
ェクトである。図10はサービス・スタックの可能な変形を示す。トップ・イン
タフェースが"TRequestSenderStream"である場合、このスタックは、1000で
示すように、この単一サービスだけからなる。「トップ」インタフェースが「pr
inter」である場合、トップが「printer」であり、ボトムが"TRequestSenderStr
eam"であるサービスの集合が作成される。このことを、図10に項目1002と
1004で示す。「トップ」インタフェースが「modem」である場合は、トップ
が「modem」であり、ボトムが"TRequestSenderStream"であるサービスの集合が
作成される。このことを、図10に項目1006と1008で示す。
THardwareInterfaceReference 904
THardwareInterfaceReference 904の目的は、ローカル・デバイスのサービ
スがどのように作成されるかという詳細を、クライアントから隠蔽することにあ
る。アクテイブなTHardwareInterfaceReference オブジェクト904は、実ロー
カル・デバイスにより提供されるサービスへのアクセスを表す。
THardwareInterfaceReference は次のような属性906を有する。すなわち、
Connector : THardwareInterfaceHandle − THardwareInterfaceHandleは、
インタフェース参照が表すサービスを実際にパフォームするデバイスのコネクタ
を表す。THardwareInterfaceReference 906は、そのコネクタのハードウェア
接続をたどっていって、サービス・スタックをコンストラクトするのに必要とな
る絶対「ボトム」インタフェースを判断することができる。
UseConnectorName: Boolean − TRUEである場合、interface reference オ
ブジェクトが活動化されると、所定の「トップ」インタフェース名を無視し、そ
の代わりに、コネクタのInterfaceName を「トップ」インタフェース名として用
いる。
これは、任意の抽象プロトコルを用いなければならないが、具象プロトコルを
指定することを望んでいないクライアントにとって有用である。例えば、クライ
アントはポインティング・デバイス・プロトコルを用いることができるが、"Log
iTechPointingDevice"プロトコルを使用すべきか、"AppleADBMouse"プロトコル
を使用すべきかの判断に係わらなくすることができる。この判断は、UseConnect
orNameの値がTRUEにセットされている場合、THardwareInterfaceReference オブ
ジェクト904により自動的に行われる。
図4および図5を参照して説明したように、THardwareInterfaceReference オ
ブジェクトが活動化されると、このオブジェクトはTHardwareInterfaceHandle属
性から判断された「トップ」インタフェースと「ボトム」インタフェースの両方
を用いてサービス・スタックを作成する。
TIneterfaceMaker
Interface Maker クラス(図11):
− アクセス・マネージャのライタか、サービス・クラスのプロバイダか、等
々により開発される。
− サービスを作成するため、interface reference クラスによって内部で使
用される。
TInterfaceMaker 1100の目的は、service providerクラスを、全て、サー
ビス・スタック・フレームワークから隔離し、限られた量のタイプ・セーフティ
(例えば、no void*)を提供することにある。各maker オブジェクトは特定のサ
ービスを作成し、初期化する能力を表す。インタフェース参照フレームワークは
、サービスを直接取り扱うのではなく、interface maker オブジェクトを直接取
り扱う。例えば、サービスを作成するため、インタフェース参照はActivateメソ
ッド(1104、1108、1112)をmaker オブジェクト(1102、11
06、1110)にコールする。これらmaker オブジェクトはサービスを作成し
初期化する。このinterface reference オブジェクトはサービスに直接に触れる
ことはない。決して直接触れることはない。
このように回りくどい方法をとった理由は、システム内の全てのサービスを、
インタフェース参照フレームワークにより定義された単一のクラスから派生させ
る必要がないからである。例えば、ISerialACIA 6850 access manager クラ
スは、インタフェース参照フレームワークの任意のクラスから派生させる必要は
ない。
サービス・メーカはオーバヘッドが非常に小さく、開発が簡単である。サービ
ス・メーカは、インタフェース参照フレームワークによりディクテイト(dictate
)された階層に属している。図12および図13は、サービス・メーカの階層上
の制約と、サービスの階層の自由度とを対比したものである。当該メーカはTInt
erfaceMaker 1200を親としてもっていることに注意されたい。他方、サービ
スは、オーサ(author)が望む階層が何であれ、階層に自由に属することができる
。
TInterfaceMaker オブジェクト1200のアクティブなサブクラスを、適正な
サブタイプにダウンキャスト(down-cast)することができ、実サービス・オブジ
ェクトを指すポインタを安全に取得することができる。これにはプロトコルがな
い。図12の例では、クライアントは、TUARTAccessManagerMaker 1206を指
すポインタをダウンキャストして、GetAccessManager1300を安全にコールし
、GetAccessManager130はTUARTAccessManager1300を指すポインタを返す
。以下に、TUARTAccessManagerMaker 1206とTUARTAccessManager1300と
の関係をもっと簡潔に定義する。
TAccessManagerMaker 1202
TAccessManagerMaker オブジェクト1202はアクセス・マネージャを作成し
、活動化する。アクセス・マネージャは、Activateメソッドに渡されたTHardwar
eInterfaceIdentifierオブジェクトにより識別されたデバイスへのアクセスを調
停する。アクセス・マネージャはインタフェース参照基底クラスから派生させる
必要がない。TInterfaceMaker 1200のこのサブクラスを用いて、サービス・
スタックのボトム・サービスが作成される。TAccessManagerMakerオブジェクト
1202は、THardwareInterfaceIdentifierオブジェクトが活動化されると、TI
nterfaceReference オブジェクトにより作成される。
TInterfaceReference は、アクセス・マネージャにより制御される「メタル」を
表すTHardwareInterfaceIdentifer オブジェクトを渡す。
TUpperInterfaceMaker
TUpperInterfaceMakerオブジェクトにより、TInterfaceMaker は、特定のサー
ビス・オブジェクトを他の幾つかのサービスの上に作成し活動化することができ
る。TInterfaceReference のこのサブクラスは、具体的なサービス・オブジェク
トを他のサービスの上に作成し活動化するために使用される。TInterfaceMaker
のこのサブクラスは、サービス・スタックの非ボトム・サービスを作成するため
に用いられる。サービスはインタフェース参照基底クラスから派生させる必要は
ない。TUpperInterfaceMakerオブジェクトは、TInterfaceReference オブジェク
トが活動化されると、TInterfaceReference オブジェクトにより作成される。
TInterfaceBundle1400
Interface Bundleクラス(図14):
− アクセス・マネージャのライタまたはサービス・クラスのプロバイダによ
り開発される。
− 構成情報を提供するため、サービスにより直接使用される。
TInterfaceBundle1400のインスタンスは、特定のデバイスに固有のカプセ
ル化情報を表す。あるバンドルを、活動化時に、多態的にサービス・メーカに渡
すことができる。TInterfaceBundle1400は、特定タイプのサービスに固有の
情報をカプセル化するために、サブクラス化される。
TInterfaceBundle1400のインスタンスを、ファイルにストリーム化するこ
とができる。
キー・シナリオ
THardwareInterfaceReference を活動化する − 概要#1
このシナリオは2度提供される。1回目は、Booch 表記法を用いて提供され、
もう1回は、VDL(ビジュアル設計言語)を用いて提供される。このようにした
のは、どちらの表記法も、サービス・スタックを活動化するプロセスを搬送する
というジョブをうまく行えないからである。
シナリオ: クライアントはあるオブジェクトを指すTInterfaceReference ポ
インタをもち、このオブジェクトの実際のサブクラスはTHardwareReferenceであ
り、このオブジェクトのトップ・インタフェースは「printer」に設定されてい
る。クライアントはそのActivate()メソッドをコールする。活動化は2つのステ
ージ、すなわち、(I)スタック記述の作成、(II)サービス・スタックの作成の2
つのステージで行われる。
図15はこのシナリオのためのハードウェア構成を示す。Handle 1500と
1510は、ハードウェア・コンポーネントを参照するために使用されるオブジ
ェクトである。ハードウェア・コンポーネントとしては、THardwareInterfaceRe
ference オブジェクト1508と、プリンタのコネクタ
1514(THardwareInterfaceReference オブジェクトの属性)と、コネクタの
identifierオブジェクト1516と、connectionオブジェクト1512と、プリ
ンタが接続されているコネクタ1502と、コネクタのidentifierオブジェクト
1504と、「メタル」1506がある。
(I)スタック記述の作成:
(1)スタック記述を作成するためTHardwareReferenceオブジェクトがパフォ
ームしなければならない第1ステップは、「ボトム」インタフェースを得ること
である。ボトム・インタフェースは、このシナリオでは、次のような方法で見付
け出される。まず、THardwareInterfaceReference オブジェクトのconnector 属
性1514をアクセスする。次に、connector 属性1514からTHardwareInter
faceIdentifierオブジェクト1516を取り出し、取り出されたオブジェクトを
試験する。この識別子を活動化できないので、次に進む。次に、THardwareInter
faceReference オブジェクトは、connectionオブジェクト1512をプリンタの
コネクタから取り出す。他のエンド1502が、この接続から取り出される。TH
ardwareInterfaceIdentifierオブジェクト1504はエンド1502から取り出
され、試験される。この識別子オブジェクトは活動化可能であるので、ここで停
止することができる。これはボトム・インタフェース“6850”を指定する。
(2)このステージで、我々は、サービス・スタックのまさしくトップ
(「Printer」)インタフェースと、ボトム(“6850”)インタフェースを
知る。次のステップでは、必要とするサービス・スタック(TLocatorまたはTFSL
ocatorをサブクラス化して、都合よく実現することができる)を形成するため、
結合することができるサービスの集合を探すファイル・システム(NuBus ROMも可
能性がある)が探索される。
図16はサービス・メーカ・エンティティ(つまり、これらはTServiceMakerL
ocatorプロパティを探索して、見付け出されるエンティティである)の架空上の
「プール」1600を示す。このプールの各エンティティは、システムに「イン
ストール」されている1つのTServiceMakerエンティティを表
す。各エンティティはそのトップ・インタフェースとボトム・インタフェースに
より識別される。破線1602は、我々が我々のTHardwareInterfaceReference
オブジェクトを見付け出すパスを示す。
(3)このTHardwareInterfaceReference オブジェクトに対する計算されたス
タック「記述」は、図16で破線により接続されたエンティティにより定義され
ている。
(II) スタックの作成:
(1) THardwareReference オブジェクトは、図17に示すように、次の順序
でスタックを作成する。(a)最下位のTInterfaceMaker オブジェクトをスタック
記述から作成する。作成されるオブジェクト1700は、図18に示すクラス1
800のインスタンスである。オブジェクト1700は、このACIAポートを表す
THardwareInterfaceオブジェクトから取り出されたTInterfaceIdentifierを渡し
て活動化される。図18は多数のクラスを示す。図17に関係する特定のクラス
のみを説明する。図13に示す関係の多くは既に説明した。
(b) TInterfaceMaker オブジェクトはその対応するサービス(アクセス・マネ
ージャ)を作成し、h() をコールし、このh() に同一のTInterfaceIdentifierを
渡す。この新しいサービスは1702とラベル付けされ、図18のクラス180
2のインスタンスである。
(c) THardwareReferenceオブジェクトは、引き続き、次のTInterfaceMaker オ
ブジェクトをスタック記述から獲得する(獲得されるオブジェクトはTUpperInte
rfaceMakerである)。TAccessManagerMaker オブジェクト1700をTHardwareR
eferenceオブジェクトに渡し、THardwareReferenceオブジェクトはTUpperInterf
aceMakerをActivateする。次は、トリッキ(tricky)な部分である。THardwareRef
erenceオブジェクトに渡されたTAccessManagerMakerオブジェクトが、ACIAメー
カであることは充分良く分かっているので(これは、ここで約束したことであり
、プロパティが存在しない場合にトリッキな部分が働く)、THardwareReference
オブジェクトはTAccessManagerMaker オブジェクトを正しいタイプのメーカにダ
ウンキャストし、TAccessManagerMaker オブジェクトにサー
ビス1702を要求する。このオペレーションにより、ACIAアクセス・マネージ
ャにアクセスされる。
(d) 次に、TUpperInterfaceMakerオブジェクトはその対応するサービス(これ
はどれからでも派生することが可能である)を作成し、g() をコールし、このg(
) にACIAアクセス・マネージャを渡す。
(e) THardwareReferenceオブジェクトは、引き続き、、次のTInterfaceMaker
オブジェクト(もう1つののTUpperInterfaceMaker)をスタック記述から獲得す
る。クラス1804のTAccessManagerMaker オブジェクトがTHardwareReference
オブジェクトに渡され、THardwareReferenceオブジェクトはTUpperInterfaceMak
erオブジェクトを活動化する。ダウンキャストのマジックがこの場合にも行われ
、渡されたTUpperInterfaceMakerオブジェクト(クラス1806のオブジェクト
)、サービス1706を要求する。その結果はSerial-ACIAサービスである。
(f) 最後に、クラス1800のTUpperInterfaceMakerオブジェクトはその対応
するサービス1710を作成し、f() をコールし、このf() にSerial-ACIA サー
ビスを渡す。
以上で当該サービス・スタックが完成する。THardwareReferenceオブジェクト
は、活動化の結果として、クラス1808の最上位のTInterfaceMaker 1708
を返す。そして、クライアントは結果に合せてダウンキャストを行い、このサー
ビス・スタックの最上位のサービスをアクセスすることができる。
THardwareInterfaceReference を活動化する − 概要#2
シナリオ: クライアントは、実際のサブクラスがTHardwareInterfaceRefere
nce であるオブジェクトを指すTInterfaceReferenceポインタをもつ。クライア
ントはそのActivate()メソッドをコールする。このメソッドは2つのステージ、
すなわち、(I) スタック記述の作成と、(II) スタックの作成との2つのステー
ジで実行される。
(I) スタック記述の作成(図19):
トップ・インタフェース1906のTHardwareInterfaceReference オブジェク
ト1908のスタック記述は、次のステップで作成される。まず、「ボトム」イ
ンタフェースをハードウェア構成フレームワーク1900から取得する。次に、
必要なインタフェースを満足するサービスの集合を突き止める。最後に、スタッ
ク記述1904を計算する。これは、適正なトップ・インタフェースとボトム・
インタフェースをもつスタックを形成するために、次々とスタックさせることが
できるサービスの集合を見付け出すまで、あるサービスのトップ・インタフェー
スを別のサービスのボトム・インタフェースと突き合わせて行われる。1つのサ
ービス・スタック記述のみがこのプロセスから計算されるものと仮定する。スタ
ック記述が2つ以上見つかった場合は、たぶん、例外が引き起こされる。
注意: このサービス・スタック自身がこのプロセスで実際に作成されず、た
だ、このサービス・スタックの記述だけが作成される。このスタック記述は、イ
ンタフェース・メーカへの参照の順序付けをしたリストよりなる。各インタフェ
ース・メーカは、その対応するサービスがどのように作られるかを知っており、
我々のシナリオの次のステージでそのようにするため、その対応するサービスが
コールされる。
(II)このサービス・スタックの作成:
このサービス・スタックの作成を2個所で示す。第1セクションでは、簡単な
概要を示す。第2セクションでは、より詳細に示す。概要
図20は、THardwareInterfaceReference のスタック作成の全体的なオペレー
ションを示す。サービス・スタックの作成が、スタック記述2008全体で繰り
返し行われる。スタック記述の各インタフェース・メーカ「参照」2010ごと
に、次のことを行う。まず、interface maker オブジェクト2000を作成する
。次に、interface maker オブジェクトを活動化し、適正な引数を渡す(interfa
ce maker オブジェクトがAccess Manager Makerである場合は、THardwareInterf
aceIdentifier2002を渡し、Upper interface maker である
場合は、その下のTInterfaceMaker オブジェクトを指すポインタを渡す)。対応
するTInterfaceBundleオブジェクト2004が利用可能である場合は、このTInt
erfaceBundleオブジェクト2004はinterface maker オブジェクト2000に
与えられる。最後に、interface maker オブジェクト2000は、その対応する
service オブジェクト2006を作成する。interface maker オブジェクト20
00はservice オブジェクト2006を初期化する。interface maker オブジェ
クト2000はどの情報が必要であるかをよく知っている(例えば、THardwareI
nterfaceIdentifierと、その下のTInterfaceMaker オブジェクトを指すポインタ
と、TInterfaceBundleオブジェクトと、等々)。詳細
このセクションはサービス・スタックがどのように作成されるかという詳細な
VDL シナリオを説明する。
図21に示すように、THardwareInterfaceReference オブジェクト2104は
次の順序でスタックを作成する。
(1)最下位のTInterfaceMaker オブジェクト2112をスタック記述210
2から作成する(作成されたオブジェクトは図20に示すクラスのインスタンス
であり、その側に、interface maker オブジェクト2000がある)。スタック
記述は、2100で示すサービスの集まりに基づいている。
TInterfaceMaker オブジェクト2112は、ACIAポートを表すTHardwareInterfa
ceHandleオブジェクトから取り出したTHardwareInterfaceIdentifier 2106
を渡すことにより活動化される。要素2108と2110はそれぞれACIAと68
50を表現する。
(2) TInterfaceMakerオブジェクト2112はその対応するサービス(アク
セス・マネージャ2114)を作成し、その初期化関数h() をコールし、このh(
) に同じTHardwareInterfaceIdentifier 2106を渡す。この新サービスは図
21に2114で示してあり、図20のクラス2002のインスタンスである。
(3)図22に示すように、THardwareInterfaceReference オブジェクトは、
引き続き、スタック記述から次のTInterfaceMaker オブジェクト2200を作成
する(これはTUpperInterfaceMakerである)。ステップ1で既に作成されたTAcc
essManagerMaker オブジェクトがTHardwareInterfaceReference オブジェクトに
渡され、THardwareInterfaceReference オブジェクトはTUpperInterfaceMakerを
活動化する。次はトリッキな部分である。
THardwareInterfaceReference オブジェクトに渡されたTAccessManagerMaker オ
ブジェクト2202が、ACIAメーカ2200であることは充分に分かっているの
で、THardwareInterfaceReference オブジェクトはTAccessManagerMaker オブジ
ェクトをメーカの適正なタイプにダウンキャストして、ステップ2で作成された
サービス2206をTAccessManagerMaker オブジェクトに要求する。このオペレ
ーションにより、ACIAアクセス・マネージャにアクセスされる。図22に示す要
素の多くは、図21に示す対応する要素と性質は同一であるので、これ以上説明
することは省略する。
(4)次に、TUpperInterfaceMakerオブジェクトはその対応するサービス22
04(このサービスをどれからでも派生させることができる)を作成し、そのサ
ービス2204の初期化関数g() をコールし、g() にACIAアクセス・マネージャ
を渡す。
(5)図23に示すように、THardwareInterfaceReference オブジェクトは、
引き続き、スタック記述から次のTInterfaceMaker オブジェクト2300を作成
する(もう1つのTUpperInterfaceMaker)。THardwareInterfaceReference オブ
ジェクトにTAccessManagerMaker オブジェクト2302が渡され、THardwareInt
erfaceReference オブジェクトは、TInterfaceMaker オブジェクト2300を活
動化する。ダウンキャストのマジックはこの場合も行われる(結果はSerial-ACI
Aサービス2306である)。
(6)最後に、TUpperInterfaceMakerオブジェクトはその対応するサービス2
304を作成し、その初期化関数f() をコールし、このf() にSerial−ACIAサー
ビスを渡す。
以上でサービス・スタックが完了する。スタック記述にはエントリは存在しな
い。THardwareInterfaceReference オブジェクトはステップ5で作成された最上
位のTInterfaceMaker を返す。そして、クライアントはそれをダウンキャストし
、スタックの最上位のサービスにアクセスする。
スタック記述を作成する − シリアル・ポート(マウス)
シナリオ: インタフェース参照フレームワークは、クライアントがどの「ト
ップ」インタフェースを使用すべきかについて確信がないとき働く。このシナリ
オが上述のシナリオと若干異なっている。というのは、UseConnectorNameClass
属性がTRUEに設定されているからである。このため、インタフェース参照は、コ
ネクタのインタフェース名をトップ・インタフェースとして使用する。これは図
15と関係付けをしたオペレーションと非常によく似ている。
クライアントは、実際のサブクラスがTHardwareInterfaceReference であり、
しかも、トップ・インタフェースが"PointingDevice"であるオブジェクトを指す
TInterfaceReference ポインタをもっている。クライアントはそのActivate()メ
ソッドをコールする。
図24はこのシナリオに対するハードウェア構成を示す概要図である。
THardwareInterfaceReference オブジェクト2408と、マウスのコネクタ24
12と、マウスのHardwareInterfaceIdentifier オブジェクト2414と、cone
ction オブジェクト2410と、マウスが接続されているポート2402と、ポ
ートのHardwareInterfaceIdentifier オブジェクト2404と、「メタル」24
06である。
(1)スタック記述を作成するために、THardwareInterfaceReference がパフ
ォームしなければならない第1ステップは、「ボトム」インタフェースを得るこ
とである。これは上述したシナリオと全く同じである。
(2)第2ステップはInterfaceIdentifier オブジェクト2414からInterf
aceName を得ることであり、InterfaceNameは「トップ」インタフェースを指定
するために使用される。これは、connector オブジェクト2412をアクセスし
、identifierオブジェクトを取り出し、GetInterfaceNameをコールすることによ
り行われる。
(3)この時点で、サービス・スタック("6850)のトップ・インタフェー
スである"LogiTechMouse"と、ボトム・インタフェースは分かっている。次のス
テップでは、ファイル・システムが探索され、組合わせて必要なサービス・スタ
ックを形成することができるサービスの集合を探す。
インタフェース参照のTopInterface名属性により指定されたクラスのサブクラ
スであることを確かめるため、トップ記述が試験される。
(4)図25はTHardwareInterfaceReference オブジェクトに対する計算され
たスタック「記述」2500を示す。
スタック記述を作成する − スイッチボックス経由のシリアル・ポート
シナリオ: インタフェース参照フレームワークはスイッチボックスを取り扱
う。このシナリオは、スイッチボックス経由でシリアル・ポートに接続されたプ
リンタの第1ステージ(つまり、スタック記述の作成)のみを示す。
クライアントは、実際のサブクラスがTHardwareInterfaceReference であり、
トップ・インタフェースが「printer」にセットされているオブジェクトを指すT
InterfaceReference ポインタをもつ。クライアントはそのActivate()メソッド
をコールする。
図26はこのシナリオに対するハードウェア構成を示す概要図である。
THardwareInterfaceReference オブジェクト2600と、プリンタのコネクタ2
602(THardwareInterfaceReference オブジェクトの属性)と、プリンタのHa
rdwareInterfaceIdentifier オブジェクト2604と、connectionオブジェクト
2606と、スイッチボックスのコネクタ2608と、スイッチボックス・コネ
クタのHardwareInterfaceIdentifier オブジェクト2610と、スイッチボック
スのデフォルト・コネクタ2612と、connectionオブジェクト2614と、ス
イッチボックスが接続されているポート2626である。
(1)スタック記述を作成するため、THardwareInterfaceReference オブジェ
クトがパフォームしなければならない第1ステップは、「ボトム」インタフェー
スを得ることである。すなわち、THardwareInterfaceReference オブジェクトは
、活動化できるTHardwareInterfaceIdentifierオブジェクトが見つけ出すまで、
THardwareInterfaceHand1eオブジェクトをナビゲート(navigate)する。
図26は一見複雑であるが、実際は、そうではない。このプロセスは、ストレ
ート・シリアル・ポートが係わりをもつ上述のシナリオを単に繰返したものであ
る。
ボトム・インタフェースは次のようにして見付け出される。まず、THardwareI
nterfaceReferenceオブジェクトのコネクタ属性にアクセスする。次に、Hardwar
eInterfaceIdentifier オブジェクト2604を取り出し試験する。HardwareInt
erfaceIdentifier オブジェクト2604は活動化できるので、先に進む。次に
、プリンタのコネクタから接続オブジェクト2606を取り出す。スイッチボッ
クスHardwareInterface オブジェクト2608は、接続オブジェクト2606か
ら取り出される。取り出されたHardwareInterfaceIdentifier オブジェクトは活
動化することができない。
以上で、THardwareConnectionHandle オブジェクトを一巡したが、活動化でき
るインタフェース識別子は見つからなかった。
次に行わなければならないことは、我々が夢中になっているデバイス、つまり
、要素2608を表すことができるサービスを作成することである。このデバイ
スに対するサービスが作成できなければ、我々は失敗である。このデバイスを自
動または手動スイッチ・ボックスにすることができる。自動スイッチ・ボックス
はこのスイッチ・ボックスを制御できるサービスを必要とする。手動スイッチ・
ボックスもサービスを必要とするが、これは一貫性を保つためだけである。
このサービスを作成するため、我々はスイッチ・ボックスのデフォルトTHardw
areInterfaceHandleオブジェクト2612上に、THardwareInterfaceReference
を作成する。我々はトップ・インタフェースをMMultiplexer(または、我々が後
で定義することができるなにか適正なもの)に設定する。次に、我々はMMultipl
exerをActivateする。その結果、引き続き、「ボトム」インタフェースが探索さ
れる。この探索では、connectionオブジェクト2614をたどっていき、THardw
areInterfaceHandleオブジェクト2616で終了するが、このTHardwareInterfa
ceHandleオブジェクト2616は活動化可能である。有効なボトムが見つかった
。
我々が作成したインタフェース参照は、引き続き、スイッチ・ボックスのサー
ビス・スタックを作成する(注意:これはクライアントが関心をもっているサー
ビス・スタックではない。スイッチ・ボックスであるため、我々は、一時的にわ
き道にそれただけである)。この時点で、我々は、MMultiplexerであるサービス
を持つ。自動スイッチ・ボックスのディベロパは、このサービスを自身で用意す
る必要がある。手動スイッチ・ボックスの場合、我々は全ての手動スイッチ・ボ
ックスに対する標準サービスを提供することができる。我々はSWitCh()をMMulti
plexerにコールし、(すなわち、2608)にスイッチするために、コネクタに
渡す。このSwitchメソッドは、マルチプレクサを我々のコネクタにセットするこ
とを担当する(自動の場合にのみ)。手動スイッチ・ボックスの場合は、ユーザ
の責任で適正なボタンを押す。手動スイッチ・ボックスの場合は、ユーザ・アラ
ートを任意指定で発生させて、ユーザが手動スイッチ・ボックスのボタンを押す
のを忘れないようにする。このアラートが必要になるのは、シリアル・ポートが
、以前の活動化とは異なるデバイスをアクセスするときだけである(すなわち、
我々がモデムを2回続けて活動化する場合は、ユーザはなにもする必要はない)
。
この時点で、我々は、スイッチ・ボックスが適正なポジションにスイッチされ
たものと仮定する。我々はMMultiplexerから「ボトム」インタフェースを得て、
MMultiplexerサービス・スタックを削除する。我々は、最早、MMultiplexerは必
要ではない。我々がMMultiplexerを使用するのは、ボトム・インタフェースを得
るためと、スイッチをパフォームするためだけである。これで、我々は、適正な
ボトム・インタフェース(このボトム・インタフェースタから、クライアントの
サービス・スタックを構築する)を得た。
スタック記述を作成する − SCSI デバイス
シナリオ: インタフェース参照フレームワークは自動構成可能デバイスのた
めに働く。このシナリオはSCSIポートに接続されたプリンタに対する第1ステー
ジ(つまり、スタック記述の作成)を説明する。この例では、クライアントは、
ポートにではなく、SCSIデバイスと話す(talk)ことを望んでいる。このポートに
対するサービス・スタックを作成する別のシナリオも可能である。コンピュータ
・ビュワーは、ユーザがコンピュータ・ビュワーにSCSIポートをリフレッシュす
るように要求したとき、これを行う。
クライアントは、実際のサブクラスがTHardwareInterfaceReference であり、
しかも、トップ・インタフェースが「printer」に設定されているオブジェクト
を指すTInterfaceReference ポイントを持っている。クライアントはそのActiva
te()メソッドをコールする。
図27はこのシナリオのためのハードウェア構成を示す概要図である。
THardwareInterfaceReference オブジェクト2700と、プリンタのコネクタ2
702(THardwareInterfaceReferenceオブジェクトの属性)と、プリンタのHar
dwareInterfaceIdentifier オブジェクト2704である。
(1)スタック記述を作成するために、THardwareInterfaceReference オブジ
ェクトがパフォームしなければならない第1ステップは、「ボトム」インタフェ
ースを得ることである。すなわち、活動化できるTHardwareInterfaceIdentifier
オブジェクトが見つかるまで、THardwareInterfaceHandleオブジェクトをナビゲ
ートする。
THardwareInterfaceReference オブジェクトのコネクタ属性2702をアクセ
スして、ボトム・インタフェースを見付け出す。そして、ボトム・インタフェー
スからTHardwareInterfaceIdentifierオブジェクト2704が取り出される。次
に、HardwareInterfaceIdentifier オブジェクトが試験される。
HardwareInterfaceIdentifier オブジェクトは活動化できるので、ここで、我々
は終了する。このIDは"SCSI"をボトム・インタフェースとして指定している。
(2)この時点で、我々は我々のサービス・スタックのトップ・インタフェー
スとボトム・インタフェースは知っている。次のステップでは、ファイル・シス
テムが探索され、組合わせて必要なサービス・スタックを形成することができる
サービスの集合を探す。注意: SCSIインタフェース識別子はボトム・サービス
に渡される。SCSI識別子には、ボトム・サービスが取得することができるSCSIデ
バイス・ハンドルであって、SCSIプリンタと話すために用いることができるSCSI
デバイス・ハンドルが含まれている。
TNetworkInterfaceReferenceを活動化する
シナリオ: 「トップ・インタフェース」が「printer」に設定されているTNe
tworkInterfaceReferenceオブジェクトの場合であり、クライアントはそのActiv
ate()メソッドをコールする。活動化は2つのステージ、すなわち、(I) スタッ
ク記述の作成と、(II) スタックの作成の2つのステージで行われる。
(I) スタック記述の作成:
(1)スタック記述を作成するために、TNetworkReference オブジェクトがパ
フォームする第1ステップは、「ボトム」インタフェースを"MessageStream"に
設定することである。
(2)この時点で、我々はサービス・スタックのトップ・インタフェースとボ
トム・インタフェースを知っている。このステージの残りの部分は、THardwareI
nterfaceReference と全く同じである。
(II)スタックの作成:
TNetworkReference オブジェクトは次のような順序でスタックを作成する。
・ TNetworkReference オブジェクトは最下位のTInterfaceMaker オブジェク
トをスタック記述から作成する(TNetworkMaker オブジェクト)。
・ TNetworkReference オブジェクトにTServiceReference オブジェクトが渡
され、TNetworkReference オブジェクトはTServiceReference オブジェクトを活
動化する。
・ TInterfaceMaker オブジェクトはその対応するサービスを作成する(これ
はどれからでも派生することができる)。
・ TInterfaceMaker オブジェクトはその初期化関数f() をコールし、f() に
同じTServiceReference を渡す。
ネットワーク・サービス・スタックの深さを2レベル以上にすることができる
。
TNetworkInterfaceReferenceを活動化する
シナリオ:「トップ・インタフェース」が「printer」に設定されているTNetw
orkInterfaceReferenceオブジェクトの場合であり、クライアントはそのActivat
e()メソッドをコールする。活動化は2つのステージ、すなわち、(I) スタック
記述の作成と、(II) スタックの作成の2つのステージで行われる。
(I) スタック記述の作成:
(1)スタック記述を作成するために、TNetworkReference オブジェクトがパ
フォームする第1ステップは、「ボトム」インタフェースを"MessageStream"に
設定することである。
(2)この時点で、我々はサービス・スタックのトップ・インタフェースとボ
トム・インタフェースを知っている。このステージの残りの部分は、THardwareI
nterfaceReference と全く同じである。
(II)スタックの作成:
TNetworkReference オブジェクトは次のような順序でスタックを作成する。
・ TNetworkReference オブジェクトは最下位のTInterfaceMaker オブジェク
トをスタック記述から作成する(TNetworkMaker オブジェクト)。
・ TNetworkReference オブジェクトにTServiceReference オブジェクトが渡
され、TNetworkReference オブジェクトはTServiceReference オブジェクトを活
動化する。
・ TInterfaceMaker オブジェクトはその対応するサービスを作成する(これ
はどれからでも派生することができる)。
・ TInterfaceMaker オブジェクトはその初期化関数f() をコールし、f() に
同じTServiceReference を渡す。
ネットワーク・サービス・スタックの深さを2レベル以上にすることができる
。
THardwareInterfaceReference をインスタンシエートする。
シナリオ: コンピュータ・ビュワーはTHardwareModuleHandle オブジェクト
を持つが、その対応するモデル・オブジェクトを既に作成している。
THardwareModuleHandleオブジェクトにより所有されるTHardwareInterfaceHandl
eオブジェクトごとに、THardwareInterfaceReferenceオブジェクトを1つ作成し
、そのモデルに付加する。
(1)まず、THardwareInterfaceHandleオブジェクト(つまり、コネクタ)の
反復子(iterator)を、THardwareModuleHandle オブジェクトに作成する。
(2)次に、反復子から返された各THardwareInterfaceHandleオブジェクトご
とに、次のように、THardwareInterfaceReference オブジェクトを作成し、その
モデルに付加する。
theModel.AddInterfaceReference(THardwareInterfaceReference(aHardwareIn
terface));
TNetworkInterfaceReferenceをインスタンシエートする。
シナリオ: ネットワーク・ブラウザの課題。
手操作で接続したデバイス("Let Resouces Find You"により構成する)の使用
。
シナリオ: ユーザはローカル・シリアル・ポートに接続されたプリンタを用
いて、ドキュメントをプリントする。このシナリオは、THardwareInterfaceRefe
rence をImageWriterII のプリンタ・インタフェースによりどのように使用でき
るかという例を示す。図28はこのシナリオを示す。
(1)ユーザはドキュメント・アイコンをImageWriter アイコン上にドラッグ
する。
(2)このプリンタ・アイコンはこのドキュメント・アイコンを受け取る。こ
のドキュメント・アイコンとこのプリンタとの協力により、ImageWriter を表す
TPrinterオブジェクト2802に付加されるプリント・ジョブが作成される。
(3) PrinterHandler オブジェクト2804は、TPrinterオブジェクト2
802から渡されたTHardwareInterfaceReference オブジェクト2806に、
Activateをコールする。
(4) THardwareInterfaceReferenceオブジェクトは適正なサービス・スタッ
クを作成し参照を返す。
手作業で接続されたデバイス("You find the Resource"により構成する)を使
用する。
シナリオ: コンピュータ・ハードウェア・データベースを照会して、ImageW
riter を探し、ImageWriterにアクセスすることを、誰かが望んでいる。
(1)"AppleImageWriterII"をそのシグネチャ(signature)として持つTHardwa
reModuleHandle オブジェクトを探すため、コンピュータ・ハードウェア・デー
タベースを探索する。
(2)適正なTHardwareInterfaceHandleオブジェクトをTHardwareModuleHandl
e オブジェクトから取得する。
(3)THardwareInterfaceReference を作成し、THardwareInterfaceHandleオ
ブジェクトを渡す。
(4)THardwareInterfaceReference オブジェクトのトップ・インタフェース
を設定する。
(5)参照オブジェクトを活動化し、ImageWriterII との通信を開始する。
手作業で接続されたデバイスの接続を変更する
シナリオ: このシナリオは、そのデフォルト・プリンタが特定のローカルIm
ageWriter であるドキュメントが、ユーザがプリンタの接続を変更した後でも、
依然として、そのプリンタにプリントする能力をもつことを説明する。このシナ
リオについては、「低レベル・ハードウェア構成ERS」を参照されたい。
3.3.12 開発者は新しいサービスを作成する。
シナリオ: このERS で定義されたメカニズムを用いて、2つの新サービスを
Pinkに導入するのに必要なクラスを示す。この新サービスとは、TxyzUARTに対す
るUARTサービスと、TpdqUARTに対するUARTサービスである。
(1)図29はmakerクラス図を示す。
(2)図30はservice クラス図を示す。注意:maker クラスとservice クラ
スの間には1対1の対応関係がある。
陰影を付けたクラスは開発者が書いたものである。
クラス・インタフェース
TInterfaceReference
クラス記述
目的: このクラスの目的と、このクラスのインスタンスが何を表現している
かと、このクラスが何のために使用されるかと、その属性の意味は、上述の説明
を参照されたい。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフではない。
持続性: TInterfaceReference のサブクラスのインスタンスはいつでもファ
イルにセーブし、リストアすることができる。
メンバ関数
void GetTopInterface(IntrfaceName&) const
このInterfaceReferenceのトップ・インタフェースを取得する。クライアント
がこのメソッドをコールすることはまれである。
void SetTopInterface(const InterfaceName&)
このメソッドは、Activateに返させたいサービスのインタフェースを指定する
。クライアントはActivateをコールする前に、このメソッドをコールしなけれ
ばならない。
void GetBundles(TDictionary〈InterfaceName,TInterfaceBundle〉&)
このInterfaceReferenceのTInterfaceBundleオブジェクトの全てで、コレクシ
ョン引数を満たす。先に、ディクショナリを空にしない。クライアントがこのメ
ソッドをコールすることはまれである。
void SetBundles(const TDictionary〈InterfaceName,TInterfaceBundle〉&)
このInterfaceReferenceの現在のBundles 属性を削除し、ついで、所定のTDic
tionary オブジェクトをコピー(クローン)し、新しいBundles属性にする。こ
のInterfaceReferenceのそれ以後の活動化では、この新Bundles属性を用いる。I
nterfaceReferenceが活動化したサービスが、サービス固有のデータを必要とす
る場合、クライアントがこのメソッドをコールする。詳しい説明はメーカ・サブ
クラスのActivateメソッドを参照されたい。
void GetPossibleTops(TCollection〈InterfaceName〉&)
現在、「インストール」されたサービスがシステム上にある場合、このInterf
aceReferenceが現在サポートすることができるInterfaceName オブジェクトの全
てで、コレクション引数を満たす。そのコレクションの各InterfaceNameオブジ
ェクトは、サポートされたサービスの1つのタイプを識別する。クライアントは
このメソッドをコールして、所定のInterfaceReferenceに対して、どのサービス
が利用可能であるかを判断する。コンピュータ・ビュワーは、コネクタ間でタイ
プ調停を行う間、このメソッドを用いる。シリアルがSCSIポートによりサポート
されていないと、InterfaceReferenceが言う場合、例えば、ImageWriter をSCSI
ポートに接続しようとしているユーザは、その接続が禁止されることになる。
TInterfaceMaker*Activate() = 0
このメソッドは、そのトップ・インタフェースがSetTopInterface() によって
指定されたインタフェースをもっているサービス・スタックを作成する。ボトム
資源はサブクラスに依存する。ボトム資源はハードウェア・コンポーネントか、
ネットワーク・サービスか、あるいは、ソフトウェア・サービスにすることがで
きる。このメソッドはクライアントにより直接にコールされる。指定されたタイ
プのTInterfaceMaker オブジェクトを指すポインタが返される。クライアントは
このポインタを適正なタイプにダウンキャストし、実サービス・オブジェクトを
指すポインタを取得する。これが完了した後、クライアントはTInterfaceMaker
ブジェクトを削除する必要がある。
TStream& operator>>=(TStream& toWhere) const
interface reference オブジェクトの全体をtoWhere 引数にストリームアウト
する。
TStream& operator<<=(TStream& fromWhere)
interface reference オブジェクトの全体をfromWhere 引数からストリームイ
ンする。
〜THardwareInterfaceReference()
interface reference オブジェクトのみを破壊する。この破壊により、活動化
されたサービスがあってもそのサービスには影響しない。
THardwareInterfaceReference()
サブクラスは、空のTHardwareInterfaceReferenceオブジェクトを作成するた
め、コールすることができる。
THardwareInterfaceReference(const THardwareInterfaceReference& copyFrom)
サブクラス・コール(コンストラクタをコピー)。
THardwareInterfaceReference& operator=(const THardwareInterface Referenc
e& copyFrom)
サブクラス・コール。
ネットワーク・インタフェース参照
クラス記述
目的: このクラスの目的と、このクラスのインスタンスが何を表現している
かと、、何のためにこのクラスが使用されるかと、その属性の意味は、セクショ
ン3.2を参照されたい。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフでない。
持続性: TInterfaceReference のサブクラスのインスタンスは、いつでもフ
ァイルにセーブし、リストアすることができる。
メンバ関数
TNetworkInterfaceReference()
ネットワークに接続されたサービスのデフォルト・インタフェース参照を作成
する。Activateがコールされる前に、オブジェクトに「トップ」インタフェース
名とサービス参照を渡しておかなければならない。さもないと、例外が引き起こ
される。ストリーミングを行うのに有用である。
TNetworkInterfaceReference(const TServiceReference&)
ネットワークに接続されたサービスに対するインタフェース参照を作成し、所
定のinterface reference オブジェクトにより表現される。Activateがコールさ
れる前に、オブジェクトに「トップ」インタフェース名を渡しておかなければな
らない。さもないと、例外が引き起こされる。
〜TNetworkInterfaceReference()
このinterface reference オブジェクトを破壊するが、活動化されたサービス
がある場合は、そのサービスには影響を与えない。
TNetworkInterfaceReference(const TNetworkInterfaceReference& copyFrom)
interface reference オブジェクトの全体をcopyFrom引数からこのオブジェク
トにコピーする。
TNetworkInterfaceReference& operator=(const TNetworkInterfaceReference&c
opyFrom)
インタフェース参照オブジェクトの全体をcopyFrom引数からこのオブジェクト
にコピーする。
TServiceReference* CreateServiceReference() const
このNetworkInterfaceReference のサービス参照属性のコピーを作成し返す。
クライアントは返されたオブジェクトを採用する。クライアントがこのメソッド
1を使用することはまずない。
void SetServiceReference(const TServiceReference&)
このNetworkInterfaceReference のService Reference 属性を設定する。Netw
orkInterfaceReference オブジェクトの作成者は、サービスを提供するネットワ
ーク・サービスを指定するのにこのメソッドを用いる。
TInterfaceMaker*Activate()
このメソッドは、トップ・サービスがSetTopInterface() により指定されたイ
ンタフェースをもつネットワーク上のエンティティに対して、サービス・スタッ
クを作成する。このメソッドはクライアントにより直接にコールされる。指定さ
れたタイプのTInterfaceMaker オブジェクトを指すポインタが返される。クライ
アントはこのポインタを適正なタイプにダウンキャストし、実service オブジェ
クトを指すポインタを得る。これが完了したあと、クライアントはTInterfaceMa
ker オブジェクトを削除する必要がある。
TStream& operator>>=(TStream& toWhere)const
interface reference オブジェクト全体をストリームアウトしてtoWhere 引数
に入れる。TStream& operator<<=(TStream& fromWhere)
interface reference オブジェクトの全体をfromWhere 引数からストリームイ
ンする。
THardwareInterfaceReference
クラスの記述
目的: このクラスの目的と、このクラスのインスタンスが何を表すかと、こ
のクラスが何のために使用されるかと、その属性の意味は、セクション3.2を
参照されたい。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフではない。
持続性: THardwareInterfaceReference のサブクラスのインスタンスは、い
つでもファイルにセーブし、リストアすることができる。
メンバ関数
THardwareInterfaceReference()
ローカル・コンピュータに接続されたデバイスにより提供されたサービスに対
するデフォルト・インタフェース参照を作成する。Activateがコールされる前に
、オブジェクトに「トップ」インタフェースとTHardwareInterfaceHandleを渡し
ておかなければならない。さもないと、例外が引き起こされる。ストリーミング
を行うときに有用である。
THardwareInterfaceReference(const THardwareInterfaceHandle&)
ローカル・コンピュータに接続されたデバイスにより提供されたサービスのイ
ンタフェース参照を作成する。デバイスは所定のハードウェア・インタフェース
・ハンドルによって識別される。Activateがコールされる前に、オブジェクトに
「トップ」インタフェース名を渡しておかなければならない。さもないと、例外
が引き起こされる。
THardwareInterfaceReference(const THardwareInterfaceIdentifier&)
ローカル・コンピュータに接続されたデバイスにより提供されたサービスのイ
ンタフェース参照を作成する。デバイスは所定のハードウェア・インタフェース
識別子により識別される。Activateがコールされる前に、オブジェクトに「トッ
プ」インタフェース名を渡しておかなければならない。さもないと、例外が引き
起こされる。
〜THardwareInterfaceReference()
interface reference オブジェクトを破壊するが、活動化されたサービスがあ
る場合は、それに影響を与えない。
THardwareInterfaceReference(const THardwareInterfaceReference& copyFrom)
interface reference オブジェクトの全体をcopyFrom引数からこのオブジェク
トにコピーする。
THardwareInterfaceReference& operator=(const THardwareInterfaceReference
& copyFrom)
interface reference オブジェクトの全体をcopyFrom引数からこのオブジェク
トにコピーする。
void SetTopInterface(const InterfaceName&,Boolean UseConnectorName)
このメソッドは、Activateに返させようとするtop service オブジェクトのイ
ンタフェースを指定する。UseConnectorName引数がTRUEである場合、このtop In
terfaceName 引数は基底クラス名として扱われ(タイプ検査のため)、サービス
・スタックの実「トップ」インタフェース名はコネクタから検索される。UseConnectorName
引数がFALSE である場合は、このメソッドは通常のSetTopInte
rface メソッドとして振る舞う。
THardwareInterfaceHand1e GetConnector() const
このHardwareInterfaceReferenceのConnector 属性のコピーを返す。
Connector 属性は、物理ハードウェア上のコネクタであって、実際にサービスを
提供するコネクタ(例えば、StyleWriter の背面のコネクタ)を表す。このコネ
クタはサービスをドライブするポートに接続されている(例えば、PCマザーボー
ド上のシリアル・ポート)。クライアントがこのメソッドを使用するのは、まれ
である。HardwareIntefaceReference はこのメソッドを用いて、ボトム・インタ
フェースを判断する。
voidSetConnector(const THardwareInterfaceHand1e&)
このHardwareInterfaceReferenceのConnector 属性を設定する。
HardwareInterfaceReferenceオブジェクトの作成者は、このメソッドを用いて、
物理ハードウェア上のコネクタであって実際にサービスを提供するコネクタ(例
えば、StyleWriter の背面のコネクタ)を指定する。
TInterfaceMaker*Activated()
このメソッドはローカル・コンピュータに接続されたデバイスに対するサービ
ス・スタックを作成する。このサービス・スタックのトップ・サービスは、SetT
opInterface() により指定されたインタフェースを有する。このメソッ
ドはクライアントによって直接にコールされる。指定されたタイプのTInterface
Maker オブジェクトを指すポインタが返される。クライアントはこのポインタを
適正なタイプにダウンキャストし、実service オブジェクトを指すポインタを得
る。これが完了したあと、クライアントはTInterfaceMaker オブジェクトを削除
する必要がある。
TStream& Operator>>=(TStream& toWhere)const
interface reference オブジェクトの全体をストリームアウトしてtoWhere 引
数に入れる。
TStream& operator<<=(TStream& fromWhere)
interface reference オブジェクトの全体をfromWhere 引数からストリームイ
ンする。
TInterfaceMaker
クラスの記述
目的: このクラスの目的と、このクラスのインスタンスが何を表すかと、こ
のクラスが何に使用されるかと、その属性の意味は、セクション3.2を参照さ
れたい。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフである。
持続性: インタフェース・メーカは持続性がない。
メンバ関数
〜TInterfaceMaker()
このinterface makerオブジェクトを破壊する。
TInterfaceMaker()
interface maker サブクラスのデフォルト・インタフェース・メーカを作成す
る。
TInterfaceMaker(const TInterfaceMaker& copyFrom)
interface maker オブジェクトの全体をcopyFrom引数からこのオブジェクトに
コピーする。
TInterfaceMaker& operator=(const TInterfaceMaker& copyFrom)
interface maker オブジェクトの全体をcopyFrom引数からこのオブジェクトに
コピーする。
TUpperInterfaceMaker
クラスの記述
目的: このクラスの目的と、このクラスのインスタンスが何を表すかと、こ
のクラスが何に使用されるかと、その属性の意味はセクション3.2を参照され
たい。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフでない。
持続性: インタフェース・メーカは持続性がない。
メンバ関数
virtual void Activate(const TInterfaceMaker& below,const TInterfaceBundl
e&)=0
サブクラスはどの「実」service オブジェクトを作るべきかを知っている。TI
nterfaceReference オブジェクトにbelow interface maker オブジェクトが渡さ
れ、TInterfaceReference オブジェクトによってこのメソッドがコールされる。
このサブクラスはbelow interface maker オブジェクトをダウンキャストし、be
low interface maker オブジェクトに実below サービスを要求する。そして、こ
の実below サービスは、このinterface maker サブクラスにより作成されたserv
ice オブジェクトに与えられる。TInterfaceReference オブジェクトがこのメー
カに対応するトップ・インタフェースに関係付けをしたTInterfaceBundleを有す
る場合は、TInterfaceReference オブジェクトはTInterfaceBundleをこの機能に
渡す。所定のTInterfaceBundleポインタがnil でない場合は、被コール側(calle
e)は自分が期待するタイプにTInterfaceBundleを安全にダウンキャストすること
ができる。このオブジェクトには、特殊サービス固有情報(例えば、BAUDレート
)が含まれる。
〜TUpperInterfaceMaker()
このinterface maker オブジェクトを破壊する。
TUpperInterfaceMaker()
upper interface maker サブクラスのデフォルト・インタフェース・メーカを
作成する。
TUpperInterfaceMaker(const TUpperInterfaceMaker& copyFrom)
interface maker オブジェクトの全体をcopyFrom引数からこのオブジェクトに
コピーする。
TUpperInterfaceMaker& operator=(const TUpperInterfaceMaker& copyFrom)
interface maker オブジェクトの全体をcopyFrom引数からこのオブジェクトに
コピーする。
TAccessManagerMaker
クラスの記述
目的: このクラスの目的と、このクラスのインスタンスが何を表すかと、こ
のクラスが何に使用されるかと、その属性の意味は、上述した説明を参照された
い。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフである。
持続性: Interface Maker は持続性がない。
メンバ関数
virtual void Activate(const THardwareInterfaceIdentifier& theMetal,cons
t TInterfaceBundle&)=0
サブクラスはどの実Access Managerオブジェクトを作るべきかを知っている。
TInterfaceReference オブジェクトにTHardwareInterfaceIdentifierオブジェク
トが渡され、TInterfaceReference オブジェクトによりこのメソッドがコールさ
れる。このメソッドは、AccessManagerMakerサブクラスにより作成されたAccess
Manager オブジェクトに与えられる。バンドル・パラメタはTUpperInterfaceMak
er::Activateに対して指定されたのと同じルールに従う。
〜TAccessManagerMaker()
このaccess manager makerオブジェクトを破壊する。
TAccessManagerMaker()
upper interface maker サブクラスのデフォルトaccess manager makerを作成
する。
TAccessManagerMaker(const TAccessManagerMaker& copyFrom)
access manager makerオブジェクトの全体をcopyFrom引数からこのオブジェク
トにコピーする。
TAccessManagerMaker& operator=(const TAccessManagerMaker& copyFrom)
access manager makerオブジェクトの全体を、copyFrom引数からこのオブジェ
クトにコピーする。
TInterfaceBundle
クラスの記述
目的: このクラスの目的と、このクラスのインスタンスが何を表すかと、こ
のクラスが何に使用されるかと、その属性の意味は、上述した説明を参照された
い。
派生クラス: このクラスは多態的である。
並行性: このクラスはマルチスレッド・セーフである。
持続性: インタフェース・バンドルは持続性がある。
メンバ関数
〜TInterfaceBundle()
interface bundleオブジェクトを破壊する。
TInterfaceBundle()
interface bundleサブクラスのデフォルトinterface bundleを作成する。
TStream& operator>>=(TStream& toWhere)const
interface bundleオブジェクトの全体をストリームアウトしてtoWhere 引数に
入れる。
TStream& operator<<=(TStream& fromWhere)
interface bundleオブジェクト全体をfromWhere 引数からストリームインする
。
TInterfaceBundle(const TInterfaceBundle& copyFrom)
interface bundleオブジェクトの全体をcopyFrom引数からこのオブジェクトに
コピーする。
TInterfaceBundle& operator=(const TInterfaceBundle& copyFrom)
interface bundleオブジェクト全体をcopyFrom引数からこのオブジェクトにコ
ピーする。
その他の考慮事項
2つ以上のスタック記述をあるActivateの間に生成するのは、可能である。所
望のデバイスIDに対する要求されたトップ・サービスを提供することができる
多くのサービス・スタックには、複数のパスが存在する。ヒューリスティックの
中には、1つのスタックを解析し選択することになるものがある。クライアント
、例えば、時間ベースのメディア(time-based media)は、種々のスタックを選択
するため、中間層に非常に関心をもつことができる場合がある。中間層の特性は
、種々のスタックを選択するに際して、好みにより構成することができる。
マウス・デバイスが登録されていない場合には(デッド・マウス課題に関係す
る)、そのマウスのドライバを作成する能力がなければならない。考えられる解
決法として次の2つがある。
(1)マウス・ドライバを登録し、参照を活動化し、マウスを登録から除く。
(2) CAMは、マウスの動きを検出すると、ドライバを作成する。
サービスの作成を、その作成が必要になる時点まで、先に延ばすことが虞らく
望ましい。例えば、ImageWriter に対するプリンタ・サービスの作成を、ユーザ
がdocumentをprinter にドラッグする時点まで先に延ばす。あるいは、ImageWri
ter が接続されたことが分かったとき、即時に、サービスを作成することができ
る。好ましい実施の形態によれば、クライアントはどちらの選択も行うことがで
きる。
そのモデルにストアされたTDictionary にストアされたバンドルに、サービス
固有のパラメータをストアして、シリアルImageWriter のBAUDレートを設定する
。これらのパラメータは、ディクショナリ(dictionary)を受け取ると、そのディ
クショナリをTInterfaceReference にコピーする。
設計決定
Interface Maker
最初にTInterfaceReference クラスを見たクライアントは、特定タイプのサー
ビスを作成し返すことができる抽象化を目にする。
残念ながら、TInterfaceReference は、maker クラスを導入したので、一見単
純かつ平凡なオペレーションのようなものを不明瞭にしている。サービス・スタ
ックをアクセスするため、クライアントはステップをもう1つ付け加えなければ
ならなくなる。開発者は、maker クラスをコーディングせざる得ないので、余分
の実装作業を負担することになる。その設計を理解するのに必要な余分な精神的
な努力を、誰もが負担することになる。
理由があって、異質のmaker クラスを扱わなければならないし、異質のmaker
ラスを充分に理解するために、検討しなければならない課題が幾つかある。まず
、図31に示すようなTPresentableViews 3102の階層を綿密に調べる必要が
ある。TPresentableView 3102はTView 3100のサブクラスである。
TPresentab1eView 3102は、システム全体にわたって多数のビューを表現す
るために使用される(例えば、コントロールと、編集可能テキストと、グリッド
・ビューと、対話式ビューと、ムービーと、ペイン(panes)と、等々。これらは
図31に3104で示してある。)。全てのviewオブジェクトの間には共通の抽
象化がある(例えば、ドローイングと、変形と、通知と、ヒット・テストと、他
のビューのネストと、等々)。このことは、共通基底抽象化を示唆している。さ
らに、viewは大部分のユーザ・インタフェース・システムにより使用される。こ
のことは、多態性の必要性を示唆している。
次に、サービス・スタックを検討することにする。上述したように、サービス
に対する共通クラス階層を避けることが望ましい。我々がこの目標を拒否した場
合は、そのサービス階層は図32に示すようなものにする必要がある。3206
に関係付けをしたディスク・ドライバと、3208に関係付けをしたシリアル・
ポート・プリンタと、3204に関係付けをしたプリンタと、3202に関係付
けをしたマウス・ドライバの間には共通性はない。多態性に対する要件はない。
サービス・スタックは、当該システムの各部にパッシングされることはない。多
態性の要件は、全てTInterfaceReference クラスによってハンドルされる。従っ
て、コンセプト上なにも存在しない所に、共通抽象化を要求する利点は、虞らく
それらの欠点を補い得ないであろう。
実際には、maker クラスには有利な面がある。メーカを導入すれば、どのサー
ビスもインタフェース参照フレームワークによりサポートすることができる。例
えば、インタフェース参照が虞らく使用しないと思われるサービスが作成された
場合、開発者がサービス・スタックのサービスを使用することは禁止されない。
開発者は1つのmaker クラスを書くことだけが必要になる。(サービスを初めか
ら書いたり、ラッパ(wrapper)を書いたりするよりも、作業量がはるかに少なく
なる)。ラッパが必要になるのは、maker クラスがない場合である。これは、全
てのサービスをTService 3200から派生させる必要があることを、暗黙的に
言っている。問題のクラスはそうではないので、開発者はTServiceの派生クラス
でそのクラスを終わらせることになる。
図33は、1つのメーカ・クラスを追加すると、インタフェース参照フレーム
ワーク内で、サービスを行うことが、開発者にとって、どれだけ容易かを示す。
ディスク・ドライブ・サービスはインタフェース参照フレームワークによりサポ
ートされていない(現時点では、そのサポートは必要でないと考えられている)
。
しかし、図34では、「現在」、ディスク・ドライブ・サービスがインタフェ
ース参照フレームワークによってサポートされている。(その必要が起こったた
め、maker が開発されたことによる)。
以上、具体的なシステム環境における、本発明に係る好ましい実施の形態を説
明したが、請求の範囲に記載の発明の精神と範囲を逸脱せずに、修正を加え、他
の異なる環境で実施することができることは、当業者にとって当然のことである
。
【手続補正書】特許法第184条の8
【提出日】1995年12月18日
【補正内容】
(原文明細書第1頁)
明細書
オブジェクト指向システムにおけるサービスの作成
著作権表記
本出願には、一部に著作権保護の対象となる内容が含まれている。何人が、特
許書類または特許開示内容をEPOの記録の通りに複写複製しても、著作権者は
それを妨げるものではないが、そうでない場合には、一切の著作権を留保する。
発明の分野
本発明は、コンピュータ・システムの改良に関し、特に、オブジェクト指向オ
ペレーティング・システムにおけるサービス作成のためのシステムおよび方法に
関する。
背景技術
コンピュータ・システムは一般に非常に融通がきかない。情報が支障なく流れ
るシステムを提供するため、システムのアプリケーション開発者およびユーザは
、ハードウェアのプロトコルと構成の詳細を熟知していなければならないことが
しばしばある。ポートおよび入出力デバイスの特定のタイプの詳細を、個別に、
取り扱わなければならない。アプリケーション開発者およびユーザも、コンピュ
ータ・システムの変化に遅れをとらないようにしなければならない。これは、コ
ンピュータ・システムの変化をソフトウェアとハードウェアに反映させて、その
変化をフルに活用できるようにするためにである。
PROCEEDINGS OF THE 2ND INTERNATIONAL WORKSHOP ON OBJECT ORIENTATION
IN OPERATING SYSTEMS,Dave et al.,"Proxies,Application Interfaces and
Distributed Systems,pp.212-220,24 September 1992には、分散システムにお
けるリモート・オブジェクトのローカルな担当者であるproxy オブジェクトが開
示されている。このproxy オブジェクトは、Choices 分散オペレーティング・シ
ステムの透過的なAPI(Application Programming Interface)をコンストラク
トするのに利用されている。RemoteProxies を付加すると、アプリケーションは
、メソッドをオブジェクトに呼び出すだけで、一様な方法で、全ての資源にアク
セスすることができる。このことは、これらのオブジェクトがローカルであって
も、カーネル内にあっても、異なるユーザ・バーチャル・アドレス空間にあって
も、リモートであっても可能である。proxy はサーバ・インタフェースの変化を
サポートするため、リモート・オブジェクトおよびプロテクティド(protected)
オブジェクトへのアクセスを適正化する。proxy メカニズムにより、メソッドを
リモート・オブジェクトに呼び出すための新しいRPC(Remote Procedure Call
)ファシリティも説明されている。慣用のRPCのインプリメントでスタブによ
り正規に提供される機能を全てパフォームするため、ルックアップ・テーブルを
用いて、APIを動的に構成させることができる。最後に、アプリケーション・
コードを再コンパイルすることなく、このAPIにより、新しいバージョンのサ
ービスを導入することができる。
入出力デバイスの変化の度合は、情報を入出力デバイスとの間で転送するため
に用いられる中間要素の変化の度合と同様に、非常に速い。システムのユーザは
システムを適正にパフォームさせることができるように、変化があるごとに、学
習プロセスが必要である。
コンピュータ・システムは、パフォームされるサービスを必要とするクライア
ントの大きな集まりと考えることができる。クライアントは、仮想的には、何か
を必要とすることができるシステムの任意の部分と考えることができる。例えば
、CPUは、システム内の特定の要素によりパフォームされるサービスを必要と
するクライアントと考えることができる。サービスの性能には、要求されたサー
ビスを提供するため、多くのステップと、多くの要素とを含めることができる。
サービスは、システム内の別のエンティティが必要とする、なにかを提供す
るものと考えることができる。例えば、特定のチップは、特定のタイプのディジ
タル信号処理を、サービスとして、もう1つのシステム要素に提供することがで
きる。
請求の範囲
1.プロセッサ(10)とメモリ(14)とを有するコンピュータ・システムで
あって、該コンピュータ・システムに通信媒体(34)を介して接続されている
デバイス(23)を有するコンピュータ・システムにおいて、前記コンピュータ
・システムに対して実行されるクライアント・アプリケーション(700)に、
前記デバイスへのサービスを提供するインタフェース参照フレームワーク(90
0)であって、前記デバイスを前記コンピュータ・システムにどのように接続し
、しかも、前記デバイスにアクセスする前記システム・サービスをどのように作
成するかという詳細から、前記クライアント・アプリケーションを隔離するイン
タフェース参照フレームワークにおいて、
(a)事前定義したインタフェース(1802)に従って通信を行う手段を有
するサービス・オブジェクト(1810)をそれぞれ定義する複数のサービス・
クラス定義(1700,1704,1708)と、
(b)前記メモリ(14)の複数のサービス・メーカ・クラス定義(1808
)であって、サービス・クラス定義(1100)のうちの1つのサービス・クラ
ス定義から、対応するサービス・オブジェクト(1810)を作成する手段を有
するサービス・メーカ・オブジェクト(1804)をそれぞれ定義する複数のサ
ービス・メーカ・クラス定義(1808)と、
(c)前記デバイスに対応するインタフェース参照オブジェクト(1508)
を、前記クライアント・アプリケーションに提供する手段と
を備え、
前記インタフェース参照オブジェクト(1508)は、
前記クライアント・アプリケーションからトップ・インタフェースを受信して
、デバイス(1514)へのサービスに対するプロトコルを定義する手段と、
前記デバイスと通信を行うためのボトム・サービスを識別し、前記トップ・イ
ンタフェースに従って前記クライアント・アプリケーションと通信を行うための
トップ・サービスを識別し、事前定義したインタフェース(1702,
1706,1710)に従って、前記通信媒体を介して、前記トップ・サービス
および前記ボトム・サービスと通信を行うための中間サービスを識別するスタッ
ク記述を前記メモリで作成する手段と、
前記スタック定義から、前記メモリで、サービスを作成する手段であって、前
記トップ・インタフェースにより定義されたサービス・プロトコルに従って、前
記デバイスと通信を行うために、前記クライアント・アプリケーションが前記サ
ービス・スタックを用いることができるように、前記サービス・スタックへの参
照を前記クライアント・アプリケーションに返す手段と
を含み、
前記サービス・スタックを作成する手段(1710)は、
前記スタック記述を繰り返す手段であって、前記スタック定義で識別されたサ
ービスに対して、前記サービス・メーカ・クラス定義のうちの1つの定義から、
前記メモリで、対応するサービス・メーカ・オブジェクトを作成する手段(17
08)と、
トップ・サービス・オブジェクトが中間サービス・オブジェクトと通信し、該
中間サービス・オブジェクトがボトム・サービス・オブジェクトと通信を行うサ
ービス・スタックを作成するため、前記サービス・メーカ・オブジェクトを多態
的に活動化して、対応するサービス・オブジェクトを、前記サービス・クラス定
義のうちの1つの定義から作成する手段(1700)と
を含む
ことを特徴とするインタフェース参照フレームワーク。
2.請求項1において、前記提供する手段は、前記コンピュータ・システムとロ
ーカルに接続されたデバイスに対するハードウェア・インタフェース参照クラス
(2414)と、前記コンピュータ・システムにリモートに接続されたデバイス
に対するネットワーク・インタフェース参照クラス(2614)を含み、
前記ネットワーク・インタフェース参照クラスからインタフェース参照オブジ
ェクトを作成するため、前記デバイスがローカルに接続されているか、リモート
に接続されているかにより、前記クライアント・アプリケーションを実行して
いる間、前記ハードウェア・インタフェース参照クラスと前記ネットワーク・イ
ンタフェース参照クラスから動的に選択することを特徴とするインタフェース参
照フレームワーク。
3.請求項1において、前記インタフェース参照オブジェクトは、前記ボトム・
サービス(2600)を指定することを特徴とするインタフェース参照フレーム
ワーク。
4.請求項1において、前記インタフェース参照オブジェクトは、構成フレーム
ワーク(2900)をアクセスして前記ボトム・サービスを判定することを特徴
とするインタフェース参照フレームワーク。
5.請求項1において、前記コンピュータ・システムは、該コンピュータ・シス
テム内から、照会パラメタに基づき、サービスを動的に突き止めるロケータ手段
を含み、
前記スタック記述を作成する手段は、前記中間サービス(2906)を動的に
突き止めるため、前記トップ・インタフェースおよび前記ボトム・インタフェー
スを、前記ロケータ手段への照会パラメタとして用いること特徴とするインタフ
ェース参照フレームワーク。
6.プロセッサ(10)とメモリ(14)とを有するコンピュータ・システムで
あって、該コンピュータ・システムに通信媒体(34)を介して接続されている
デバイス(23)を有するコンピュータ・システムで、前記デバイスへのサービ
スを、前記コンピュータ・システムに対して実行されるクライアント・アプリケ
ーション(700)に提供する方法であって、前記デバイスを前記コンピュータ
・システムにどのように接続し、しかも、前記デバイスにアクセスする前記シス
テム・サービスをどのように作成するかという詳細から、前記クライアント・ア
プリケーションを隔離する方法において、
(a)事前定義したインタフェース(1802)に従って通信を行う手段を有
するサービス・オブジェクト(1810)をそれぞれ定義する複数のサービス・
クラス定義(1700,1704,1708)を提供するステップと、
(b)前記メモリ(14)の複数のサービス・メーカ・クラス定義(1808
)であって、サービス・クラス定義(1100)のうちの1つのサービス・クラ
ス定義から、対応するサービス・オブジェクト(1810)を作成する手段を有
するサービス・メーカ・オブジェクト(1804)をそれぞれ定義する複数のサ
ービス・メーカ・クラス定義(1808)を提供するステップと、
(c)前記デバイスに対応するインタフェース参照才ブジェクト(1508)
を、前記クライアント・アプリケーションに提供するステップと
(d)前記クライアント・アプリケーションが、前記デバイスへのシステム・
サービスに対するプロトコルを定義するトップ・インタフェースを、前記インタ
フェース参照オブジェクト(1514)に提供するステップと、
(e)前記デバイスと通信を行うためのボトム・サービスを識別し、前記トッ
プ・インタフェースに従って前記クライアント・アプリケーションと通信を行う
ためのトップ・サービスを識別し、事前定義したインタフェース(1702,1
706,1710)に従って、前記通信媒体を介して、前記トップ・サービスお
よびボトム・サービスと通信を行うための中間サービスを識別するスタック記述
を、前記インタフェース参照オブジェクトが前記メモリで作成するステップと、
(f)前記スタック記述を繰り返すステップであり、該スタック定義で識別さ
れたサービスに対して、前記サービス・メーカ・クラス定義のうちの1つの定義
から、前記メモリで、対応するサービス・メーカ・オブジェクトを作成するステ
ップであり、トップ・サービス・オブジェクトが中間サービス・オブジェクトと
通信を行い、該中間サービス・オブジェクトがボトム・サービス・オブジェクト
(1700)と通信を行うサービス・スタックを作成するため、前記サービス・
メーカ・オブジェクトを多態的に活動化して、対応するサービス・オブジェクト
を、前記サービス・クラス定義のうちの1つの定義から作成するステップであっ
て、前記インタフェース参照オブジェクトが、前記スタック定義から、前記メモ
リで、サービス・スタック(1710)を作成するステップであり、前記
トップ・インタフェース(1708)により定義されたサービス・プロトコルに
従って、前記デバイスと通信を行うために、前記クライアント・アプリケーショ
ンが前記サービス・スタックを用いることができるように、前記サービス・スタ
ックへの参照を前記クライアント・アプリケーションに返すステップと
を備えたことを特徴とする方法。
7.請求項6において、前記コンピュータ・システムは、該コンピュータ・シス
テムとローカルに接続されたデバイスに対するハードウェア・インタフェース参
照クラス(2414)と、前記コンピュータ・システムにリモートに接続された
デバイスに対するネットワーク・インタフェース参照クラスを含み、
前記ステップ(c)が、
(c.1)前記ネットワーク・インタフェース参照クラス(2614)からイ
ンタフェース参照オブジェクトを作成するため、前記デバイスがローカルに接続
されているか、リモートに接続されているかにより、前記クライアント・アプリ
ケーションを実行している間、前記ハードウェア・インタフェース参照クラスと
前記ネットワーク・インタフェース参照クラスから動的に選択するステップを含
むことを特徴とする方法。
8.請求項6において、前記インタフェース参照オブジェクトは、前記ボトム・
サービス(2600)を指定することを特徴とする方法。
9.請求項6において、前記インタフェース参照オブジェクトは、構成フレーム
ワーク(2900)によりアクセスして、前記ボトム・サービスを判定すること
を特徴とする方法。
10.請求項6において、前記コンピュータ・システムは、該コンピュータ・シ
ステム内から、照会パラメタに基づき、サービスを動的に突き止めるロケータ手
段を含み、
本方法は、
(g)前記スタック記述(2906)を作成するため、前記トップ・インタフ
ェースおよび前記ボトム・インタフェースを、前記ロケータ手段への照会パラメ
タとして用いて、前記中間サービスを動的に突き止めるステップ
を含むこと特徴とする方法。
─────────────────────────────────────────────────────
フロントページの続き
(81)指定国 EP(AT,BE,CH,DE,
DK,ES,FR,GB,GR,IE,IT,LU,M
C,NL,PT,SE),OA(BF,BJ,CF,CG
,CI,CM,GA,GN,ML,MR,NE,SN,
TD,TG),AT,AU,BB,BG,BR,BY,
CA,CH,CN,CZ,DE,DK,ES,FI,G
B,HU,JP,KP,KR,KZ,LK,LU,LV
,MG,MN,MW,NL,NO,NZ,PL,PT,
RO,RU,SD,SE,SK,UA,UZ,VN
Claims (1)
- 【特許請求の範囲】 1.システム・サービスを行う装置であって、 (a)プロセッサ手段と、 (b)該プロセッサ手段に接続されたストレージ手段と、 (c)インタフェース・オブジェクトを作成し管理するオブジェクト指向イン タフェース・フレームワークであって、少なくとも1つのサービス・リクエスト を受け取る手段を含むオブジェクト指向インタフェース・フレームワークと、 (d)サービス・リクエストに応答してサービスを作成する少なくとも1つの オブジェクトと、 (e)サービス・リクエストを行うクライアントと を具備したことを特徴とする装置。 2.請求項1において、インタフェースを指定するクライアント手段を含むこと を特徴とする装置。 3.請求項1において、インタフェース参照を活動化し、しかも、前記少なくと も1つのオブジェクトを呼び出してサービスを作成するクライアント手段を含む ことを特徴とする装置。 4.請求項1において、サービス・リクエストに応答して作成されたサービスは 、前記クライアントに関係付けをした変更にもかかわらず持続することを特徴と する装置。 5.請求項1において、前記インタフェース・オブジェクトは特定のデバイスに 対して、少なくとも1つのインタフェース参照オブジェクトを含むことを特徴と する装置。 6.請求項5において、前記インタフェース参照オブジェクトはサービスを作成 するのに必要な情報を含むことを特徴とする装置。 7.請求項5において、前記インタフェース参照オブジェクトは少なくとも1つ のインタフェース・メーカ・オブジェクトを作成することを特徴とする装置。 8.請求項5において、前記インタフェース参照オブジェクトはサービスを作成 し、該サービスへのアクセスを容易にする手段を含むことを特徴とする装置。 9.請求項5において、前記インタフェース参照オブジェクトはサービスの記述 を作成する手段を含むことを特徴とする装置。 10.請求項9において、記述を作成する手段は、サービス・スタックの記述を 作成する手段を含むことを特徴とする装置。 11.請求項9において、サービスの記述を作成する手段は、サービス・リクエ ストを行うサービスの集合を探索する手段を含むことを特徴とする装置。 12.請求項1において、サービスの集合を判断する手段はインタフェース名を 判断する手段を含むことを特徴とする装置。 13.請求項9において、少なくとも1つのインタフェース・メーカを参照する 手段を含むことを特徴とする装置。 14.請求項1において、少なくとも1つのインタフェース・メーカ・オブジェ クトを含むことを特徴とする装置。 15.請求項14において、サービス・リクエストを行うためにサービス・スタ ックを作る手段を含むことを特徴とする装置。 16.サービス方法であって、 (a)インタフェース・オブジェクトを作成し管理するオブジェクト指向イン タフェース・フレームワークであって、少なくとも1つのサービス・リクエスト を受け取る手段を含むオブジェクト指向インタフェース・フレームワークを提供 するステップと、 (b)クライアントからサービス・リクエストを受け取るステップと、 (c)サービス・リクエストに応答してサービスを作成するステップと を具備したことを特徴とする方法。 17.請求項16において、クライアントがインタフェースを指定するステップ を含むことを特徴とする方法。 18.請求項16において、サービスを作成するオブジェクトにサービスを作成 させるインタフェース参照を、活動化するステップを含むことを特徴とする方法 。 19.請求項16において、クライアントに関連する変更があっても当該サービ スとの関係付けをを維持するステップを含むことを特徴とする方法。 20.請求項16において、インタフェース参照オブジェクトを特定のデバイス に提供するステップを含むことを特徴とする方法。 21.請求項20において、インタフェース参照オブジェクトからの情報を用い てサービスを作成するステップを含むことを特徴とする方法。 22.請求項20において、少なくとも1つのインタフェース・メーカ・オブジ ェクトを作成するステップを含むことを特徴とする方法。 23.請求項20において、サービスを作成し、該サービスへのアクセスを可能 にするステップを含むことを特徴とする方法。 24.請求項20において、前記サービスを作成するステップは、サービスの記 述を作成するステップを含むことを特徴とする方法。 25.請求項24において、前記記述を作成するステップは、サービス・スタッ クの記述を作成するステップを含むことを特徴とする方法。 26.請求項24において、前記サービスの記述を作成するステップは、サービ ス・リクエストを行うサービスの集合を探索するステップを含むことを特徴とす る方法。 27.請求項26において、前記サービスの集合を判断するステップは、インタ ーフェース名を判断するステップを含むことを特徴とする方法。 28.請求項24において、少なくとも1つのインタフェース・メーカを参照す るステップを含むことを特徴とする方法。 29.請求項16において、インタフェース・メーカ・オブジェクトを作成する ステップを含むことを特徴とする方法。 30.請求項29において、サービス・リクエストを行うサービス・スタックを 作成するステップを含むことを特徴とする方法。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US08/171,721 | 1993-12-21 | ||
US08/171,721 US5548779A (en) | 1993-12-21 | 1993-12-21 | System for providing system services for a device to a client using stack definition and stack description of a stack having top, intermediate, and bottom service objects |
PCT/US1994/005470 WO1995017720A1 (en) | 1993-12-21 | 1994-05-17 | Service creation in an object oriented system |
Publications (1)
Publication Number | Publication Date |
---|---|
JPH09507318A true JPH09507318A (ja) | 1997-07-22 |
Family
ID=22624874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP7517393A Pending JPH09507318A (ja) | 1993-12-21 | 1994-05-17 | オブジェクト指向システムにおけるサービスの作成 |
Country Status (7)
Country | Link |
---|---|
US (3) | US5548779A (ja) |
EP (1) | EP0714533B1 (ja) |
JP (1) | JPH09507318A (ja) |
AU (1) | AU7311494A (ja) |
CA (1) | CA2169639A1 (ja) |
DE (1) | DE69402875D1 (ja) |
WO (1) | WO1995017720A1 (ja) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002502068A (ja) * | 1998-01-30 | 2002-01-22 | オブジェクト テクノロジー ライセンシング コーポレイション | コンピュータシステム内の拡張ボードの動作をモデル化する装置および方法 |
Families Citing this family (61)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6212575B1 (en) * | 1995-05-05 | 2001-04-03 | Apple Computer, Inc. | Extensible, replaceable network component system |
US5687366A (en) * | 1995-05-05 | 1997-11-11 | Apple Computer, Inc. | Crossing locale boundaries to provide services |
US6701428B1 (en) | 1995-05-05 | 2004-03-02 | Apple Computer, Inc. | Retrieval of services by attribute |
US5713045A (en) * | 1995-06-29 | 1998-01-27 | Object Technology Licensing Corporation | System for processing user events with input device entity associated with event producer which further links communication from event consumer to the event producer |
US6691299B1 (en) | 1995-07-19 | 2004-02-10 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
US5732261A (en) * | 1995-07-19 | 1998-03-24 | Ricoh Company, Ltd. | Method of using an object-oriented communication system with support for multiple remote machine types |
US5832264A (en) * | 1995-07-19 | 1998-11-03 | Ricoh Company, Ltd. | Object-oriented communications framework system with support for multiple remote machine types |
US5918051A (en) * | 1995-07-19 | 1999-06-29 | Ricoh Company, Ltd. | Object-oriented communication system with support for multiple remote machine types |
US5764915A (en) * | 1996-03-08 | 1998-06-09 | International Business Machines Corporation | Object-oriented communication interface for network protocol access using the selected newly created protocol interface object and newly created protocol layer objects in the protocol stack |
US5938733A (en) * | 1996-03-08 | 1999-08-17 | International Business Machines Corporation | Object oriented representation of network requests in a client server model |
US5809235A (en) * | 1996-03-08 | 1998-09-15 | International Business Machines Corporation | Object oriented network event management framework |
US6434739B1 (en) | 1996-04-22 | 2002-08-13 | International Business Machines Corporation | Object oriented framework mechanism for multi-target source code processing |
US5987245A (en) | 1996-07-01 | 1999-11-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture (#12) for a client-server state machine framework |
US6272555B1 (en) | 1996-07-01 | 2001-08-07 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server-centric interprise computing framework system |
US5848246A (en) | 1996-07-01 | 1998-12-08 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server session manager in an interprise computing framework system |
US6434598B1 (en) | 1996-07-01 | 2002-08-13 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server graphical user interface (#9) framework in an interprise computing framework system |
US6038590A (en) | 1996-07-01 | 2000-03-14 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server state machine in an interprise computing framework system |
US5999972A (en) | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
US6424991B1 (en) | 1996-07-01 | 2002-07-23 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server communication framework |
US6304893B1 (en) | 1996-07-01 | 2001-10-16 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server event driven message framework in an interprise computing framework system |
US6266709B1 (en) | 1996-07-01 | 2001-07-24 | Sun Microsystems, Inc. | Object-oriented system, method and article of manufacture for a client-server failure reporting process |
US5956487A (en) * | 1996-10-25 | 1999-09-21 | Hewlett-Packard Company | Embedding web access mechanism in an appliance for user interface functions including a web server and web browser |
US6526457B1 (en) | 1996-10-30 | 2003-02-25 | Computer Associates Think, Inc. | Systems utility object interface for facilitating software portability |
US6219692B1 (en) | 1997-03-21 | 2001-04-17 | Stiles Invention, L.L.C. | Method and system for efficiently disbursing requests among a tiered hierarchy of service providers |
US6446116B1 (en) * | 1997-06-30 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic loading of a transport mechanism in a multipoint data delivery system |
US6594355B1 (en) | 1997-10-06 | 2003-07-15 | Worldcom, Inc. | Method and apparatus for providing real time execution of specific communications services in an intelligent network |
US7024450B1 (en) * | 1997-10-06 | 2006-04-04 | Mci, Inc. | Method and apparatus for deploying service modules among service nodes distributed in an intelligent network |
US6804711B1 (en) | 1997-10-06 | 2004-10-12 | Mci, Inc. | Method and apparatus for managing call processing services in an intelligent telecommunication network |
US6779030B1 (en) * | 1997-10-06 | 2004-08-17 | Worldcom, Inc. | Intelligent network |
US6425005B1 (en) * | 1997-10-06 | 2002-07-23 | Mci Worldcom, Inc. | Method and apparatus for managing local resources at service nodes in an intelligent network |
US6038611A (en) * | 1998-01-13 | 2000-03-14 | Inverness Systems Ltd. | Method for implementing a user-to-network (UNI) application programming interface (API) |
US6161150A (en) * | 1998-01-30 | 2000-12-12 | Object Technology Licensing Corporation | System for informing a computer user of a conflict encountered during resource allocation to expansion cards of different types having resource information in different format |
US6636901B2 (en) | 1998-01-30 | 2003-10-21 | Object Technology Licensing Corp. | Object-oriented resource lock and entry register |
US6161151A (en) * | 1998-01-30 | 2000-12-12 | Object Technology Licensing Corporation | Object-oriented global resource conflict resolver formatting resource requirements into a predetermined standard format and iteratively computing a resource assignment for each I/O function |
US6047324A (en) * | 1998-02-05 | 2000-04-04 | Merrill Lynch & Co. Inc. | Scalable distributed network controller |
US6081855A (en) * | 1998-04-15 | 2000-06-27 | Oak Technology, Inc. | Digital versatile disc playback system with flexible input interface |
US6539398B1 (en) | 1998-04-30 | 2003-03-25 | International Business Machines Corporation | Object-oriented programming model for accessing both relational and hierarchical databases from an objects framework |
US6539397B1 (en) | 2000-03-31 | 2003-03-25 | International Business Machines Corporation | Object-oriented paradigm for accessing system service requests by modeling system service calls into an object framework |
US6788649B1 (en) | 1998-08-03 | 2004-09-07 | Mci, Inc. | Method and apparatus for supporting ATM services in an intelligent network |
US6339795B1 (en) * | 1998-09-24 | 2002-01-15 | Egrabber, Inc. | Automatic transfer of address/schedule/program data between disparate data hosts |
US6857123B1 (en) | 1998-12-18 | 2005-02-15 | International Business Machines Corporation | Method and apparatus for a Meta Data Service in a data processing system |
US6792605B1 (en) | 1999-06-10 | 2004-09-14 | Bow Street Software, Inc. | Method and apparatus for providing web based services using an XML Runtime model to store state session data |
FR2806493A1 (fr) * | 2000-03-14 | 2001-09-21 | Cryo Networks | Procede pour la programmation graphique |
DE10038402A1 (de) * | 2000-08-07 | 2002-02-28 | Software For People Ag | Verfahren und Vorrichtung zum Steuern einer technischen Anordnung, Anordnung, Computerlesbares Speichermedium, Computerprogramm-Element |
US7028305B2 (en) * | 2001-05-16 | 2006-04-11 | Softricity, Inc. | Operating system abstraction and protection layer |
US6914969B2 (en) * | 2001-06-18 | 2005-07-05 | International Business Machines Corporation | Service logic execution environment for telecommunications service components |
US6690782B2 (en) | 2001-06-18 | 2004-02-10 | International Business Machines Corporation | Service logic execution environment connector to client interface |
DK1331556T3 (da) * | 2001-06-08 | 2009-12-07 | Real Entpr Solutions Dev Bv | Serverbaseret computermiljö |
US20030182426A1 (en) * | 2002-03-21 | 2003-09-25 | Sun Microsystems, Inc. | Apparatus and method of lazy connection transaction enlistment |
CA2495038C (en) * | 2002-09-30 | 2012-11-06 | Microsoft Corporation | System and method for making user interface elements known to an application and user |
US7551199B2 (en) * | 2003-05-05 | 2009-06-23 | Microsoft Corporation | Computer camera system and method for reducing parallax |
US20040235520A1 (en) | 2003-05-20 | 2004-11-25 | Cadiz Jonathan Jay | Enhanced telephony computer user interface allowing user interaction and control of a telephone using a personal computer |
US7552450B1 (en) | 2003-09-30 | 2009-06-23 | Microsoft Corporation | Systems and methods for enabling applications via an application programming interface (API) to interface with and configure digital media components |
US8533597B2 (en) * | 2003-09-30 | 2013-09-10 | Microsoft Corporation | Strategies for configuring media processing functionality using a hierarchical ordering of control parameters |
US7216221B2 (en) | 2003-09-30 | 2007-05-08 | Microsoft Corporation | Method and system for unified audio control on a personal computer |
US7702516B2 (en) | 2004-01-13 | 2010-04-20 | International Business Machines Corporation | Payment control to inventors in patent tracking system |
US7711868B2 (en) | 2004-11-23 | 2010-05-04 | Microsoft Corporation | Waking a main computer system to pre-fetch data for an auxiliary computing device |
US7784065B2 (en) * | 2005-02-07 | 2010-08-24 | Microsoft Corporation | Interface for consistent program interaction with auxiliary computing devices |
US20060242590A1 (en) * | 2005-04-21 | 2006-10-26 | Microsoft Corporation | Simple content format for auxiliary display devices |
US9152931B2 (en) * | 2007-05-30 | 2015-10-06 | International Business Machines Corporation | Service engagement management using a standard framework |
US8131387B2 (en) * | 2007-08-09 | 2012-03-06 | Teradyne, Inc. | Integrated high-efficiency microwave sourcing control process |
Family Cites Families (47)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4407016A (en) * | 1981-02-18 | 1983-09-27 | Intel Corporation | Microprocessor providing an interface between a peripheral subsystem and an object-oriented data processor |
US4597044A (en) * | 1982-10-14 | 1986-06-24 | Honeywell Information Systems, Inc. | Apparatus and method for providing a composite descriptor in a data processing system |
US4530052A (en) * | 1982-10-14 | 1985-07-16 | Honeywell Information Systems Inc. | Apparatus and method for a data processing unit sharing a plurality of operating systems |
US4821220A (en) * | 1986-07-25 | 1989-04-11 | Tektronix, Inc. | System for animating program operation and displaying time-based relationships |
US4885717A (en) * | 1986-09-25 | 1989-12-05 | Tektronix, Inc. | System for graphically representing operation of object-oriented programs |
US4891630A (en) * | 1988-04-22 | 1990-01-02 | Friedman Mark B | Computer vision system with improved object orientation technique |
US4953080A (en) * | 1988-04-25 | 1990-08-28 | Hewlett-Packard Company | Object management facility for maintaining data in a computer system |
EP0347162A3 (en) * | 1988-06-14 | 1990-09-12 | Tektronix, Inc. | Apparatus and methods for controlling data flow processes by generated instruction sequences |
US5041992A (en) * | 1988-10-24 | 1991-08-20 | University Of Pittsburgh | Interactive method of developing software interfaces |
US5133075A (en) * | 1988-12-19 | 1992-07-21 | Hewlett-Packard Company | Method of monitoring changes in attribute values of object in an object-oriented database |
US5341477A (en) * | 1989-02-24 | 1994-08-23 | Digital Equipment Corporation | Broker for computer network server selection |
US5050090A (en) * | 1989-03-30 | 1991-09-17 | R. J. Reynolds Tobacco Company | Object placement method and apparatus |
US5075847A (en) * | 1989-05-26 | 1991-12-24 | Hewlett-Packard Company | Method and apparatus for computer program encapsulation |
US5060276A (en) * | 1989-05-31 | 1991-10-22 | At&T Bell Laboratories | Technique for object orientation detection using a feed-forward neural network |
US5125091A (en) * | 1989-06-08 | 1992-06-23 | Hazox Corporation | Object oriented control of real-time processing |
US5129084A (en) * | 1989-06-29 | 1992-07-07 | Digital Equipment Corporation | Object container transfer system and method in an object based computer operating system |
US5297283A (en) * | 1989-06-29 | 1994-03-22 | Digital Equipment Corporation | Object transferring system and method in an object based computer operating system |
US5257369A (en) * | 1990-10-22 | 1993-10-26 | Skeen Marion D | Apparatus and method for providing decoupling of data exchange details for providing high performance communication between software processes |
US5287541A (en) * | 1989-11-03 | 1994-02-15 | Motorola, Inc. | Global satellite communication system with geographic protocol conversion |
US5181162A (en) * | 1989-12-06 | 1993-01-19 | Eastman Kodak Company | Document management and production system |
US5093914A (en) * | 1989-12-15 | 1992-03-03 | At&T Bell Laboratories | Method of controlling the execution of object-oriented programs |
US5075848A (en) * | 1989-12-22 | 1991-12-24 | Intel Corporation | Object lifetime control in an object-oriented memory protection mechanism |
US5226117A (en) * | 1990-05-15 | 1993-07-06 | International Business Machines Corporation | Method for simultaneous update and change in parent and child windows |
US5297279A (en) * | 1990-05-30 | 1994-03-22 | Texas Instruments Incorporated | System and method for database management supporting object-oriented programming |
US5423023A (en) * | 1990-06-25 | 1995-06-06 | Prime Computer, Inc. | Method and apparatus for providing a user configurable system which integrates and manages a plurality of different task and software tools |
US5151987A (en) * | 1990-10-23 | 1992-09-29 | International Business Machines Corporation | Recovery objects in an object oriented computing environment |
EP0501610B1 (en) * | 1991-02-25 | 1999-03-17 | Hewlett-Packard Company | Object oriented distributed computing system |
US5212787A (en) * | 1991-03-12 | 1993-05-18 | International Business Machines Corporation | Method and apparatus for accessing a relational database without exiting an object-oriented environment |
US5119475A (en) * | 1991-03-13 | 1992-06-02 | Schlumberger Technology Corporation | Object-oriented framework for menu definition |
US5265239A (en) * | 1991-04-08 | 1993-11-23 | Ardolino Anthony A | Method for remotely accessing service programs of a local processing system supporting multiple protocol stacks and multiple device drivers |
US5297284A (en) * | 1991-04-09 | 1994-03-22 | Microsoft Corporation | Method and system for implementing virtual functions and virtual base classes and setting a this pointer for an object-oriented programming language |
US5317741A (en) * | 1991-05-10 | 1994-05-31 | Siemens Corporate Research, Inc. | Computer method for identifying a misclassified software object in a cluster of internally similar software objects |
US5421016A (en) * | 1991-12-12 | 1995-05-30 | International Business Machines Corporation | System and method for dynamically invoking object methods from an application designed for static method invocation |
JPH05257664A (ja) * | 1991-12-12 | 1993-10-08 | Internatl Business Mach Corp <Ibm> | バージョン独立のオブジェクト指向アプリケーション・プログラムを生成するシステム及び方法 |
CA2077273C (en) * | 1991-12-12 | 1996-12-03 | Mike H. Conner | Language neutral objects |
US5333319A (en) * | 1992-03-02 | 1994-07-26 | International Business Machines Corporation | Virtual storage data processor with enhanced dispatching priority allocation of CPU resources |
US5327562A (en) * | 1992-05-06 | 1994-07-05 | Microsoft Corporation | Method for implementing virtual function tables in a compiler for an object-oriented programming language |
US5339430A (en) * | 1992-07-01 | 1994-08-16 | Telefonaktiebolaget L M Ericsson | System for dynamic run-time binding of software modules in a computer system |
US5369770A (en) * | 1992-11-02 | 1994-11-29 | Microsoft Corporation | Standardized protected-mode interrupt manager |
US5315703A (en) * | 1992-12-23 | 1994-05-24 | Taligent, Inc. | Object-oriented notification framework system |
US5325533A (en) * | 1993-06-28 | 1994-06-28 | Taligent, Inc. | Engineering system for modeling computer programs |
US5432925A (en) * | 1993-08-04 | 1995-07-11 | International Business Machines Corporation | System for providing a uniform external interface for an object oriented computing system |
US5548726A (en) * | 1993-12-17 | 1996-08-20 | Taligeni, Inc. | System for activating new service in client server network by reconfiguring the multilayer network protocol stack dynamically within the server node |
US5515508A (en) * | 1993-12-17 | 1996-05-07 | Taligent, Inc. | Client server system and method of operation including a dynamically configurable protocol stack |
US5832219A (en) * | 1994-02-08 | 1998-11-03 | Object Technology Licensing Corp. | Distributed object networking service |
US5903754A (en) * | 1994-06-21 | 1999-05-11 | Microsoft Corporation | Dynamic layered protocol stack |
US6134594A (en) * | 1997-10-28 | 2000-10-17 | Microsoft Corporation | Multi-user, multiple tier distributed application architecture with single-user access control of middle tier objects |
-
1993
- 1993-12-21 US US08/171,721 patent/US5548779A/en not_active Expired - Lifetime
-
1994
- 1994-05-17 JP JP7517393A patent/JPH09507318A/ja active Pending
- 1994-05-17 AU AU73114/94A patent/AU7311494A/en not_active Abandoned
- 1994-05-17 EP EP94923159A patent/EP0714533B1/en not_active Expired - Lifetime
- 1994-05-17 CA CA002169639A patent/CA2169639A1/en not_active Abandoned
- 1994-05-17 DE DE69402875T patent/DE69402875D1/de not_active Expired - Lifetime
- 1994-05-17 WO PCT/US1994/005470 patent/WO1995017720A1/en active IP Right Grant
-
1996
- 1996-04-17 US US08/633,910 patent/US5864668A/en not_active Expired - Lifetime
-
1999
- 1999-01-20 US US09/233,766 patent/US6564270B1/en not_active Expired - Fee Related
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2002502068A (ja) * | 1998-01-30 | 2002-01-22 | オブジェクト テクノロジー ライセンシング コーポレイション | コンピュータシステム内の拡張ボードの動作をモデル化する装置および方法 |
Also Published As
Publication number | Publication date |
---|---|
CA2169639A1 (en) | 1995-06-29 |
DE69402875D1 (de) | 1997-05-28 |
US6564270B1 (en) | 2003-05-13 |
AU7311494A (en) | 1995-07-10 |
EP0714533B1 (en) | 1997-04-23 |
US5864668A (en) | 1999-01-26 |
US5548779A (en) | 1996-08-20 |
EP0714533A1 (en) | 1996-06-05 |
WO1995017720A1 (en) | 1995-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JPH09507318A (ja) | オブジェクト指向システムにおけるサービスの作成 | |
US6976262B1 (en) | Web-based enterprise management with multiple repository capability | |
US5734852A (en) | Method and apparatus for displaying hardware dependent graphics in an object-oriented operating system | |
US7174361B1 (en) | Scripting task-level user-interfaces | |
US7458062B2 (en) | Framework to access a remote system from an integrated development environment | |
US10200247B2 (en) | First-class component extensions for multi-tenant environments | |
AU765542B2 (en) | Method and apparatus for new device driver installation by an operating system | |
CA2495024C (en) | System and method for adaptable provisioning of generic application content | |
US20080098036A1 (en) | System and method for providing access to an application through a common interface for application extensions | |
US10198416B2 (en) | Customizing a form in a model-based system | |
MX2007015887A (es) | Flujos de trabajos centricos de datos. | |
KR101682738B1 (ko) | 관리 시스템 확장성 | |
JPH08503323A (ja) | オブジェクト指向システムのロケータ・システム | |
WO2002033545A2 (en) | Pluggable instantiable distributed objects | |
EP2260413A1 (en) | Web content management | |
SG184864A1 (en) | Cross-platform application framework | |
JP2010521721A (ja) | ウェブデータ使用のプラットフォーム | |
US20230026911A1 (en) | Describing changes in a workflow based on changes in structured documents containing workflow metadata | |
RU2580079C2 (ru) | Инфраструктура активации приложений | |
WO2010127552A1 (zh) | 面向服务的应用系统及其通信方法、创建器和创建方法 | |
US20160188762A1 (en) | Method and system for implementing intelligent system diagrams | |
CA2426441A1 (en) | System and method for querying a data source | |
US20230169138A1 (en) | Rendering primitive child elements corresponding to child components of a user interface without instantiating the child components | |
JP4695903B2 (ja) | Webアプリケーションシステム、そのプログラム | |
CN110673827B (zh) | 基于安卓系统的资源调用方法及装置、电子设备 |