JP3822541B2 - オブジェクトインターフェイスにポインタをパスするためのコンピュータシステム - Google Patents
オブジェクトインターフェイスにポインタをパスするためのコンピュータシステム Download PDFInfo
- Publication number
- JP3822541B2 JP3822541B2 JP2002235096A JP2002235096A JP3822541B2 JP 3822541 B2 JP3822541 B2 JP 3822541B2 JP 2002235096 A JP2002235096 A JP 2002235096A JP 2002235096 A JP2002235096 A JP 2002235096A JP 3822541 B2 JP3822541 B2 JP 3822541B2
- Authority
- JP
- Japan
- Prior art keywords
- instruction
- message
- stub
- unmarshalling
- server
- 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.)
- Expired - Lifetime
Links
Images
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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
-
- 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/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4488—Object-oriented
-
- 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/54—Interprogram communication
- G06F9/547—Remote procedure calls [RPC]; Web services
- G06F9/548—Object oriented; Remote method invocation [RMI]
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Computer And Data Communications (AREA)
Description
【発明の属する技術分野】
本発明は一般にデータをパスするためのコンピュータ方法及びシステムに係り、より詳細には、プロセス間にオブジェクトに対するポインタをパスするための方法及びシステムに係る。
【0002】
【従来の技術】
コンピュータシステムは、通常、マルチタスク動作をサポートするオペレーティングシステムを有している。マルチタスクオペレーティングシステムは、多数のタスク(プロセス)を同時に実行できるようにする。例えば、データベースサーバプロセスは、該データベースサーバプロセスのサービスを要求する多数のクライエントプロセスと同時に実行することができる。クライエントプロセス(クライエント)は、遠隔手続き呼び出し(RPC)を発行することによりサービスを要求する。遠隔手続き呼び出しは、サーバプロセス(サーバ)がクライエントに代わってサーバ手続きを呼び出せるようにする。遠隔手続き呼び出しを発行するために、クライエントは、手続きの名前及び手続きのための実際の入パラメータをプロセス間通信メッセージへとパッケージしそしてそのメッセージをサーバへ送信する。サーバは、そのメッセージを受け取り、それをアンパッケージして手続きの名前と実際の入パラメータとに分け、その名前の付いた手続きを呼び出し、アンパッケージした入パラメータをそれにパスする。手続きが完了すると、サーバは、出パラメータをメッセージへとパッケージしそしてそのメッセージをクライエントへ送信する。パラメータをパッケージするプロセスは、「マーシャリング(marshalling)」として知られており、そしてパラメータをアンパッケージするプロセスは「アンマーシャリング(unmarshalling)」として知られている。
【0003】
パラメータは、実際のパラメータの値のコピーをメッセージに記憶することによりマーシャリングされる。ある形式のパラメータについては、マーシャリングは、値のコピーを単に記憶する以上のものを伴う。例えば、浮動小数点の値は、プロセスが異なるコンピュータシステムにあるときには、あるコンピュータシステムのフォーマットから別のコンピュータシステムのフォーマットに変換することが必要となる。
【0004】
実際のパラメータの値をコピーする場合には幾つかの欠点がある。第1に、コピーがパスされた場合に、元の値に対する変更がコピーに反映されない。例えば、1日の時間の値を表すパラメータがコピーによってクライエントからサーバへパスされる場合には、クライエントが1日の時間の値を更新したときに、サーバが受け取るコピーは更新されない。第2に、ある形式のパラメータの場合に、値のコピーをとることが不可能である。例えば、大きなアレーをコピーする場合のオーバーヘッドは受け入れられない。又、以下に述べるように、オブジェクトは大きく且つ種々のファンクションを含んでいるので、オブジェクトをマーシャリングするときにはオブジェクトのコピーをとることも不可能である。
【0005】
オブジェクト指向のプログラミング技術の使用は、公知技術に勝る多数の利点を有している。従って、オブジェクト指向の技術の使用が増加している。しかしながら、遠隔手続きを呼び出すときにオブジェクトを効率的にマーシャリング及びアンマーシャリングできないために、これらの利点が制限される。オブジェクトが通常いかにマーシャリング及びアンマーシャリングされるかの説明がこれらの制限を説明する助けとなろう。
【0006】
図1は、オブジェクトを表すのに使用される典型的なデータ構造体を示すブロック図である。オブジェクトは、オブジェクトの振舞いを具現化するインスタンスデータ(データメンバー)及びメンバーファンクションで構成される。オブジェクトを表すのに使用されるデータ構造体は、インスタンスデータ構造体101と、仮想ファンクションテーブル102と、ファンクションメンバー103、104、105とを備えている。インスタンスデータ構造体101は、仮想ファンクションテーブル102に対するポインタを含むと共に、データメンバーを含んでいる。仮想ファンクションテーブル102は、オブジェクトに対して定義された各仮想ファンクションメンバーのエントリーを含む。各エントリーは、対応するファンクションメンバーを具現化するコードに対する参照を含んでいる。このサンプルオブジェクトのレイアウトは、参考としてここに取り上げる「オブジェクト指向のプログラミング言語のためのコンパイラーにおいて仮想ファンクション及び仮想ベースを具現化する方法(A Method for Implementing Virtual Finctions and Virtual Bases in a Compiler for an Object Oriented Programming Language) 」と題する米国特許出願第07/682,537号に定義されたモデルに合致する。以下の説明において、オブジェクトは、C++プログラミング言語により定義されたクラスのインスタンスとして説明する。当業者であれば、オブジェクトは、他のプログラミング言語を用いても定義できることが明らかであろう。
【0007】
遠隔手続き呼び出し中にサーバプロセスのオブジェクトをコピーしてクライエントプロセスにパスするべき場合には、データメンバーをコピーするだけでなく、ファンクションメンバーもクライエントプロセスにアクセスされねばならない。コピーされたオブジェクトにアクセスするには、クライエントプロセスは、各ファンクションメンバーをそれ自身のプロセススペースにロードする必要がある。このロード動作は時間がかかる。更に、オブジェクトをコピーすることは、手に負えないものである。というのは、サーバプロセススペースにロードされるファンクションメンバーは、サーバプロセススペースにおけるデータ又は他のファンクションをアクセスする必要があるからである。
【0008】
オブジェクト指向の技術を用いる利点は、これらの技術を使用して複合文書を容易に形成できることである。複合文書とは、種々のコンピュータプログラムによって発生されたオブジェクトを含む文書である。(通常、複合文書にはオブジェクトのデータメンバー及びクラスタイプのみが記憶される。)例えば、スプレッドシートプログラムにより発生されたスプレッドシートオブジェクトを含むワードプロセス文書は、複合文書である。ワードプロセスプログラムは、ユーザがスプレッドシートオブジェクト(例えば、セル)をワードプロセス文書内に埋め込みできるようにする。この埋め込みを行えるようにするために、ワードプロセスプログラムは、埋め込まれたオブジェクトのファンクションメンバーをアクセスするために、埋め込まれるべきオブジェクトのクラス定義を用いてコンパイルされる。従って、ワードプロセスプログラムは、ワードプロセス文書に埋め込みできるオブジェクトの各クラスのクラス定義を用いてコンパイルされる必要がある。新たなクラスのオブジェクトをワードプロセス文書に埋め込むために、ワードプロセスプログラムは、新たなクラス定義で再コンパイルされる必要がある。従って、ワードプロセスプログラムの開発者によって選択されたクラスのオブジェクトしか埋め込むことができない。更に、新たなクラスは、ワードプロセスプログラムが新たにリリースされないとサポートできない。
【0009】
任意のクラスのオブジェクトを複合文書に埋め込めるようにするために、インターフェイス(抽象クラス)が定義され、これにより、ワードプロセスプログラムがコンパイル時にクラス定義にアクセスする必要なく、オブジェクトをアクセスすることができる。抽象クラスとは、仮想ファンクションメンバーが具現化をもたない(純粋な)クラスである。インターフェイスとは、データメンバーをもたずそしてその仮想ファンクションが全て純粋であるような抽象クラスである。
【0010】
以下のクラス定義は、インターフェイスの例示的な定義である。この例において、説明を簡単にするために、オブジェクトのクラスをその文書に埋め込みできるようにするのではなく、ワードプロセスプログラムは、スプレッドシートオブジェクトを埋め込みできるようにする。このインターフェイスを与えるスプレッドシートオブジェクトは、オブジェクトをいかに具現化するかにかかわりなく、埋め込むことができる。更に、スプレッドシートオブジェクトは、ワードプロセスプログラムがコンパイルされる前に具現化されるかその後に具現化されるかに関わりなく、埋め込むことができる。
【0011】
【数1】
【0012】
スプレッドシートプログラムの開発者は、スプレッドシートオブジェクトをワードプロセス文書に埋め込めるようにするためにインターフェイスを具現化する必要がある。ワードプロセスプログラムがスプレッドシートオブジェクトを埋め込むときには、プログラムは、スプレッドシートオブジェクトに対するインターフェイスを具現化するコードをアクセスする必要がある。コードをアクセスするために、各具現化には独特のクラス識別子が与えられる。例えば、マイクロソフト社によって開発されたスプレッドシートオブジェクトは、「MSSpreadsheet」のクラス識別子を有し、一方、他社によって開発されたスプレッドシートオブジェクトは、「LTSSpreadsheet」のクラス識別子を有する。クラスを具現化するコードに対して各クラス識別子をマップする各コンピュータシステムの永続的な登録が維持される。通常、スプレッドシートプログラムがコンピュータシステムにインストールされるときには、スプレッドシートオブジェクトのそのクラスの利用性を反映するように永続的な登録が更新される。スプレッドシート開発者がインターフェイスによって定義された各ファンクションメンバーを具現化しそして永続的な登録が維持される限り、ワードプロセスプログラムは、開発者のスプレッドシートオブジェクトをワードプロセス文書に埋め込むことができる。
【0013】
しかしながら、種々のスプレッドシート開発者は、あるファンクションメンバーのみを具現化することを希望する。例えば、あるスプレッドシート開発者は、データベースサポートを具現化することを望まないが、他の全てのファンクションメンバーをサポートすることを望む。スプレッドシート開発者が、オブジェクトを埋め込めるようにしながらも、幾つかのファンクションメンバーのみをサポートできるようにするために、スプレッドシートオブジェクトに対する多数のインターフェイスが定義されている。例えば、インターフェイスIDatabase及びIBasicは、スプレッドシートオブジェクトに対し、次のように定義される。
【0014】
【数2】
各スプレッドシート開発者は、IBasicインターフェイスを具現化し、そして任意にIDatabaseインターフェイスを具現化する。
【0015】
実行時に、ワードプロセスプログラムは、埋め込まれるべきスプレッドシートオブジェクトがIDatabaseインターフェイスをサポートするかどうかを判断しなければならない。この判断をなすために、オブジェクトに対してどのインターフェイスが具現化されるかを指示するファンクションメンバーと共に、別のインターフェイスが定義される(各スプレッドシートオブジェクトがそれを具現化する)。このインターフェイスは、IUnknownとして知られており、次のように定義される。
【0016】
【数3】
【0017】
IUnknownインターフェイスは、ファンクションメンバー(メソッド)QueryInterfaceを定義する。このメソッドQueryInterfaceには、インターフェイス識別子(例えば、「IDatabase」)がパスされ、そしてこのメソッドは、これが呼び出されたところのオブジェクトに対し識別されたインターフェイスの具現化を指すポインタを返送する。オブジェクトがインターフェイスをサポートしない場合には、このメソッドは「偽」を返送する。
【0018】
IDatabaseインターフェイス及びIBasicインターフェイスは、IUnknownインターフェイスを継承する。継承は、オブジェクト指向の技術では良く知られており、これにより、クラス定義は、既に定義されたクラスのデータ及びファンクションメンバーを組み込むことができる。次の定義は、IUnknownインターフェイスの使用を示すものである。
【0019】
【数4】
【0020】
図2は、スプレッドシートオブジェクトのサンプルデータ構造体を示すブロック図である。このスプレッドシートオブジェクトは、インターフェイスデータ構造体201と、IBasicインターフェイスデータ構造体202と、IDatabaseインターフェイスデータ構造体205と、メソッド208ないし212とを備えている。インターフェイスデータ構造体201は、具現化される各インターフェイスに対するポインタを含み、そして具現化のデータメンバーを含んでもよい。IBasicインターフェイスデータ構造体202は、インスタンスデータ構造体203及び仮想ファンクションテーブル204を含む。仮想ファンクションテーブル204の各エントリーは、IBasicインターフェイスに対して定義されたメソッドを指す。IDatabaseインターフェイスデータ構造体205は、インスタンスデータ構造体206及び仮想ファンクションテーブル207を含む。仮想ファンクションテーブル207の各エントリーは、IDatabaseインターフェイスで定められたメソッドに対するポインタを含む。IBasic及びIDatabaseインターフェイスはIUnknownインターフェイスを継承するので、各仮想ファンクションテーブル204及び207は、メソッドQueryInterface208に対するポインタを含む。以下の説明では、オブジェクトデータ構造体は、オブジェクトをアクセスするところのインターフェイスで示された形状213によって表される。
【0021】
以下の擬似コードは、スプレッドシートオブジェクトがIDatabaseインターフェイスをサポートするかどうかをワードプロセスプログラムがいかに決定するかを示すものである。
【0022】
【数5】
【0023】
ポインタpIBasicは、オブジェクトのIBasicインターフェイスに対するポインタである。オブジェクトがIDatabaseインターフェイスをサポートする場合には、メソッドQueryInterfaceは、ポインタpIDatabaseを、IDatabaseデータ構造体を指すようにセットし、そしてその値として「真」を返送する。
【0024】
通常は、オブジェクトは、変数宣言によるか又は「新たな」演算子によりインスタンス生成することができる(メモリに形成されたオブジェクトのインスタンス)。しかしながら、両インスタンス生成技術は、コンパイル時にクラス定義を必要とする。ワードプロセスプログラムが実行時にスプレッドシートオブジェクトをインスタンス生成できるようにするには、異なる技術が必要とされる。その1つの技術は、IClassFactoryと称するインターフェイスを与えるもので、これは、次のように定義される。
【0025】
【数6】
メソッドCreateInstanceはオブジェクトをインスタンス生成し、そしてアーギュメント(引数)iidInterfaceによって指定されたオブジェクトのインターフェイスに対するポインタpInterfaceを返送する。
【0026】
上記のインターフェイスを使用して、オブジェクトを複合文書に容易に埋め込むことはできるが、遠隔手続き呼び出しにおいてオブジェクト(インターフェイス)に対するポインタをパラメータとしてパスさせるようにする効率的な技術が要望される。ポインタをパスすることは、オブジェクトをコピーするオーバーヘッドを回避すると共に、送信プロセスがオブジェクトに対して行う変更を受信プロセスが見れるようにする。
【0027】
【発明が解決しようとする課題】
本発明の目的は、クライエントプロセスが、サーバプロセスにおいてインスタンス生成されたオブジェクトのインターフェイスをアクセスできるようにするための方法及びシステムを提供することである。
【0028】
本発明の別の目的は、オブジェクトに対するポインタをクラスに特定に(カスタム)マーシャリング及びアンマーシャリングするメソッドをオブジェクトが具現化できるようにするための方法及びシステムを提供することである。
【0029】
本発明の更に別の目的は、プロセス間にオブジェクトのインターフェイスに対するポインタをパスするための方法及びシステムを提供することである。
【0030】
【課題を解決するための手段】
これら及び他の目的は、本発明の以下の詳細な説明から明らかとなるように、インターフェイスに対するポインタをサーバプロセスからクライエントプロセスへパスするための方法及びシステムによって達成される。好ましい実施例において、サーバプロセスは、多数のインターフェイスを有するオブジェクトをインスタンス生成する。サーバプロセスは、クライエントプロセスへパスするためのインターフェイスを識別し、そしてそのインターフェイスのファンクションメンバーを呼び出すための要求を受け取ってその要求されたファンクションメンバーを要求受け取り時に呼び出すためのスタブオブジェクトを形成する。次いで、サーバプロセスは、スタブの識別子をクライエントプロセスへ送信する。クライエントプロセスは、スタブの識別子を受け取ると、インターフェイスのファンクションメンバーを呼び出すための要求を受け取ってその要求を識別されたスタブへ送信するためのプロキシーオブジェクトをインスタンス生成する。別の実施例においては、サーバプロセスは、プロキシーオブジェクトのクラスをクライエントプロセスへ送信し、クライエントは、プロキシーオブジェクトをインスタンス生成するようにコードを動的にロードする。別の実施例において、オブジェクトは、オブジェクトのインターフェイスに対するポインタをカスタムマーシャリング及びアンマーシャリングするメソッドでインターフェイスを具現化する。これらのメソッドは、インターフェイスに対するポインタをマーシャリング及びアンマーシャリングするために呼び出される。
【0031】
【発明の実施の形態】
本発明は、遠隔手続き呼び出しにおいてオブジェクトに対するポインタをパラメータとしてパスするための方法及びシステムを提供する。好ましい実施例では、サーバプロセスは、オブジェクトのインターフェイスに対するポインタをクライエントプロセスにパスする。サーバは、インターフェイスに対するポインタをマーシャリングし、そしてそのマーシャリングされたポインタをクライエントへ送る。クライエントプロセスは、ポインタをアンマーシャリングし、そしてそのアンマーシャリングされたポインタを用いてパスされたオブジェクトをアクセスする。本発明のマーシャリング及びアンマーシャリング技術は、コードをロードし、そしてクライエントによるオブジェクトのアクセスをサポートするためのデータ構造体を発生する。
【0032】
図3は、マーシャリング及びアンマーシャリング中に発生されるデータ構造体及びロードされるコードを示すブロック図である。このデータ構造体及びコードは、サーバ内のオブジェクト301及びスタブオブジェクト302と、クライエント内のプロキシーオブジェクト303とを備えている。プロキシー303及びスタブ302は、オブジェクト301に対するポインタがクライエントにパスされたときに形成される。サーバのマーシャリングプロセスは、スタブ302に対するコードをロードし、スタブに対するプロセス間通信メッセージアドレスを指定し、オブジェクト301のインターフェイスに対するポインタをスタブ内に記憶し、そしてスタブのメッセージアドレス及びプロキシーのクラス識別子をメッセージへとパッケージすることにより、オブジェクト301のインターフェイスに対するポインタをマーシャリングする。次いで、サーバは、メッセージをクライエントへ送信する。クライエントがメッセージを受け取ると、クライエントは、プロキシーのクラス識別子及びスタブのメッセージアドレスを検索し、その検索されたインスタンス生成プロキシー303により識別されるクラス識別子のクラスのインスタンスを形成するようにコードを動的にロードし、そしてスタブメッセージアドレスをプロキシー303と共に記憶することにより、オブジェクト301のインターフェイスに対するポインタをアンマーシャリングする。次いで、クライエントは、プロキシー303によりオブジェクト301のインターフェイスをアクセスする。
【0033】
プロキシー303は、オブジェクト301のインターフェイスと同じインターフェイスを異なる具現化により具現化するオブジェクトである。プロキシー303の各メソッドは、その名前及びその実際のパラメータをメッセージへとマーシャリングし、メッセージをスタブ302へ送信し、スタブ302からの返送メッセージを待機し、そしてその返送されたパラメータをアンマーシャリングする。テーブル1は、「File(ファイル)」と称するプロキシーメソッドに対する例示的な擬似コードをリストしたものである。
【0034】
【数7】
【0035】
スタブ302は、クライエントからメッセージを受け取り、メソッド名及び入パラメータをアンマーシャリングして、オブジェクト301の名前付けされたメソッドを呼び出し、出パラメータをメッセージへとマーシャリングし、そしてそのメッセージをプロキシー303へ送信するというインターフェイスを具現化するオブジェクトである。テーブル2は、スタブに対する例示的な擬似コードをリストしたものである。
【0036】
【数8】
【0037】
図4Aないし4Cは、インターフェイスポインタのマーシャリングを示すブロック図である。サーバ401は、スプレッドシートオブジェクト403、セルオブジェクト404、及びセルオブジェクト405を含む。スプレッドシートオブジェクト403は、IBasicインターフェイスの具現化を有する。IBasicインターフェイスのメソッドGetCellは、次のプロートタイプにより定義される。
void GetCell(string RC,cell*pCell)
【0038】
メソッドGetCellは、パスされた行/列指示子(RC)により指定されたセルを表すセルオブジェクトに対するポインタを検索しそしてそのセル(pCell)に対するポインタを返送する。セルオブジェクト404及び405は、インターフェイスIDataの具現化を有し、これは、次により定義される。
【0039】
【数9】
【0040】
メソッドGetFormulaは、セルオブジェクトの式の値をストリングとして返送し、そしてメソッドSetFormulaは、セルオブジェクトにおける式をパスされたストリングにセットする。
【0041】
図4Bは、クライエントへのセルオブジェクトをマーシャリングする動作を示すブロック図である。クライエントが、セルオブジェクト404として示されたセルA1の式を検索しようとするときには、クライエントは次のステートメントを実行する。
【0042】
【数10】
【0043】
スプレッドシートプロキシー407は、ポインタpIBasic408により指示される。クライエントは、先ず、スプレッドシートプロキシーメソッドGetCellを呼び出す。このメソッドGetCellは、メソッド名「GetCell」及びストリング「A1」をメッセージへとパッケージし、そしてそのメッセージをスプレッドシートスタブ406へ送信する。スプレッドシートスタブ406はメソッド名及びストリングをアンパッケージする。次いで、スプレッドシートスタブ406は、スプレッドシートオブジェクト403のメソッドGetCellを呼び出す。メソッドGetCellは、セルオブジェクト404に対するポインタをスプレッドシートスタブ406へ返送する。次いで、スプレッドシートスタブ406は、セルオブジェクト404に対するセルスタブ409を形成し、メッセージアドレスをセルスタブ409に指定し、メッセージアドレス及びアンマーシャリングされたクラス識別子(以下に述べる)をメッセージへとパッケージしそしてそのメッセージをスプレッドシートプロキシー407へ送信することにより、セルポインタをマーシャリングする。スプレッドシートプロキシー407がメッセージを受信すると、メソッドGetCellは、セルオブジェクト404に対するポインタをアンマーシャリングする。
【0044】
図4Cは、セルポインタのアンマーシャリング中に使用されるデータ構造体を示すブロック図である。メソッドGetCellは、先ず、メッセージアドレス及びアンマーシャリングクラス識別子(CellProxy)を受け取ったメッセージから検索することにより、セルA1に対するポインタをアンマーシャリングする。好ましい実施例では、永続的な登録413は、各クラスごとに動的なリンクライブラリーの名前を含む。動的なリンクライブラリーは、プログラムのランタイムにロードされるルーチン(メソッド、ファンクション、等)のライブラリーである。動的なリンクライブラリーは、マイクロソフト・プレス社により出版されたチャレス・ペトゾルド著の参考文献「プログラミングウインドウズ」に説明されている。クラスに対する各動的なリンクライブラリーは、クラスに対しIClassFactoryインターフェイスを指すポインタを返送するファンクションGetIClassFactoryを含んでいる。メソッドGetCellは、検索されたアンマーシャリングクラス識別子(アンマーシャリングクラス)に対して動的なリンクライブラリー410をロードし、そしてファンクションGetIClassFactoryを呼び出し、これは、IClassFactoryインターフェイス411に対するポインタを返送する。次いで、メソッドGetCellは、IClassFactoryインターフェイス411のメソッドCreateInstanceを呼び出し、セルプロキシー412を形成する。セルプロキシー412は、次いで、セルスタブ409に対して検索されたメッセージアドレスで初期化される。次いで、メソッドGetCellは、セルプロキシー412に対するポインタを返送する。これで、クライエントは、セルプロキシー412を介してセルオブジェクト404をアクセスすることができる。
【0045】
図5は、メソッドGetCellを示す流れ線図である。ステップ501ないし505は、スプレッドシートプロキシーのIBasicインターフェイスのメソッドGetCellに対する流れ線図である。ステップ506ないし512は、スプレッドシートスタブに対する流れ線図を構成する。メソッドGetCellは、入パラメータをマーシャリングし、そのマーシャリングされたパラメータをスプレッドシートスタブへ送り、入パラメータにより指示されたセルオブジェクトに対するマーシャリングされたポインタを受け取る。ステップ501において、このメソッドは、ファンクションMarshalを呼び出して、メソッド名(即ち「GetCell」)をメッセージ501Aへとマーシャリングする。ファンクションMarshal及びUnMarshalは、データをメッセージにパッケージしたりアンパッケージしたりする。ステップ502において、このメソッドは、ファンクションMarshalを呼び出し、入パラメータRCをメッセージ502Aへとマーシャリングする。ステップ503において、このメソッドは、メッセージをスプレッドシートスタブへ送る。ステップ504において、このメソッドは、スプレッドシートスタブからメッセージを受け取る。ステップ505において、このメソッドは、ファンクションUnMarshalInterfaceを呼び出し、メッセージ505Aにおいて受け取ったインターフェイスポインタをアンマーシャリングする。
このメソッドは、次いで、セルプロキシーを指すポインタpCellを返送する。
【0046】
ステップ506において、スタブは、クライエントから送られたメッセージを受け取ると共に、メッセージを送ったセルプロキシーのメッセージアドレスを受け取る。ステップ507において、スタブは、ファンクションUnMarshalを呼び出して、メソッド名をメッセージ507Aからアンマーシャリングする。ステップ508において、メソッド名が「GetCell」である場合は、スタブはステップ509に続き、さもなくば、スタブは、メソッド名がIBasicインターフェイスの別のメソッド(楕円で示すような)対応するかどうか判断し続ける。ステップ509において、スタブは、ファンクションUnMarshalを呼び出し、セルの位置を指定する入パラメータをメッセージ509Aからアンマーシャリングする。ステップ510において、スタブは、スプレッドシートオブジェクトに対するメソッドGetCellを呼び出し、セルの位置をパスする。メソッドGetCellは、パスされた位置に対するセルオブジェクトのポインタを返送する。ステップ511において、スタブは、ファンクションMarshalInterfaceを呼び出して、セルオブジェクトに対するポインタをそれにパスする。ステップ512において、スタブは、メッセージ511Aを、ステップ506で受け取ったメッセージを送ったセルプロキシーへ送信する。次いで、スタブは、ステップ506へループし、次のメッセージを待機する。
【0047】
上記のマーシャリング技術は、標準的マーシャリングと称する。好ましい実施例において、本発明は、カスタムマーシャリングと称するプロセスにおいてオブジェクトに対するポインタをいかにマーシャリングすべきかをオブジェクトが指定できるようにする。カスタムマーシャリングを具現化する各オブジェクトは、IMarshalと称するカスタムマーシャリングインターフェイスの具現化を与える。IMarshalインターフェイスは、インターフェイスポインタをマーシャリング及びアンマーシャリングするためのファンクションメンバーを与える。インターフェイスに対するポインタをマーシャリング及びアンマーシャリングするときには、オブジェクトのメソッドQueryInterfaceが呼び出されて、オブジェクトがIMarshalインターフェイスを具現化するかどうか判断する。オブジェクトがIMarshalインターフェイスを具現化する場合には、そのインターフェイスのファンクションメンバーが呼び出されて、インターフェイスポインタをマーシャリング及びアンマーシャリングする。図5において、ファンクションUnMarshalInterface(ステップ505)及びMarshalInterface(ステップ511)は、オブジェクトがIMarshalインターフェイスを具現化するかどうか判断しそしてIMarshalインターフェイスのファンクションメンバーを適宜に呼び出すのが好ましい。
【0048】
図6ないし10は、セルオブジェクトに対するポインタのマーシャリング及びアンマーシャリング中に呼び出されるメソッドとファンクションの流れ線図である。
【0049】
以下に述べるように、これらメソッド及びファンクションは、標準的マーシャリングを具現化するものである。
【0050】
図6はファンクションMarshalInterfaceの流れ線図である。このファンクションは、次のプロートタイプを有する。
void MarshalInterface(pstm,iid,pInterface,DestContext)
【0051】
このファンクションは、オブジェクトに対するインターフェイスの指定のポインタ(pInterface)を指定のメッセージ(pstm)へとマーシャリングする。ステップ601において、このファンクションは、オブジェクトがカスタムマーシャリングを具現化するかどうか判断する。このファンクションは、インターフェイスのメソッドQueryInterfaceを呼び出し、IMarshalインターフェイスに対するポインタを検索する。オブジェクトがカスタムマーシャリングを具現化する場合には、オブジェクトに対するIMarshalインターフェイスのポインタ(pMarshal)が返送され、そしてファンクションはステップ603に続くが、さもなくば、このファンクションはステップ602に続く。ステップ602において、このファンクションは、ファンクションGetStandardMarshalを呼び出して、IMarshalインターフェイスに対するポインタ(pMarshal)をデフォールトマーシャリングメソッドで検索する。ステップ603において、このファンクションは、検索されたポインタにより指示されたメソッドIMarshal::GetUnMarshalClassを呼び出す。メソッドGetUnMarshalClassは、指定のインターフェイス(iid)に対するプロキシーをインスタンス生成するためにアンマーシャリングプロセスに使用すべきクラスのクラス識別子を返送する。ステップ604において、このファンクションは、ファンクションMarshalを呼び出して、アンマーシャリングのクラス識別子を指定のメッセージへとマーシャリングする。ステップ605において、このファンクションは、検索されたポインタ(pMarshal)によって指示されたメソッドIMarshal::MarshalInterfaceを呼び出す。メソッドMarshalInterfaceは、指定のインターフェイスポインタ(pInterface)を指定のメッセージへとマーシャリングする。次いで、このメソッドは復帰となる。
【0052】
図7は、メソッドMarshalInterfaceの例示的な標準的具現化を示す流れ線図である。このメソッドは、次のプロートタイプを有する。
void IMarshal::MarshalInterface(pstm,idd,pInterface,DestContext)
【0053】
メソッドMarshalInterfaceは、インターフェイス(pInterface)に対する指定のポインタを指定のメッセージ(pstm)へとマーシャリングする。ステップ701において、このメソッドは、ファンクションMakeStubを呼び出す。このファンクションMakeStubは、インターフェイスに対する指定のポインタのためのスタブを形成し、そのスタブのメッセージアドレスを返送する。ステップ702において、このメソッドは、ファンクションMarshalを呼び出し、指定のメッセージにおける返送されたメッセージアドレスをマーシャリングする。このメソッドは、次いで、復帰する。
【0054】
図8は、ファンクションMakeStubの流れ線図である。このファンクションは、次のプロートタイプを有する。
void MakeStub(cid,iid,pInterface,MessageAddress)
【0055】
このファンクションMakeStubは、指定のインターフェイス(iid)に対する指定のポインタ(pInterface)のスタブを形成し、そしてそのスタブのメッセージアドレス(MessageAddress)を返送する。ステップ801において、このファンクションは、指定のインターフェイスに対するスタブコードのコピーをロードする。ステップ802において、このファンクションは、インターフェイスに対する指定のポインタを記憶し、スタブコードをアクセスできるようにする。ポインタを記憶することは、スタブコードを、指定のポインタによって指示されたオブジェクトに関連付けする。ステップ803において、このファンクションは、スタブコードをメッセージシステムと共に登録する。メッセージシステムは、スタブのメッセージアトルスを返送する。ステップ804において、このファンクションは、発呼者へ返送するためにメッセージアドレスを記憶する。次いで、ファンクションMakeStubは復帰となる。
【0056】
図9は、ファンクションUnMarshalInterfaceの流れ線図である。このファンクションは、次のプロートタイプを有する。
viod UnMarshalInterface(pstm,iid,pInterface)
【0057】
ファンクションUnMarshalInterfaceは、指定されたメッセージ(pstm)において既にマーシャリングされたインターフェイスに対するポインタをアンマーシャリングし、そしてオブジェクトの指定のインターフェイス(iid)に対するポインタ(pInterface)を返送する。ステップ901において、このファンクションは、ファンクションUnMarshalを呼び出し、指定のメッセージからのアンマーシャリングクラス識別子をアンマーシャリングする。ステップ902において、このファンクションは、ファンクションGetClassObjectを呼び出し、アンマーシャリングクラス識別子(アンマーシャリングクラス)により指示されたクラスに対するIClassFactoryインターフェイスを検索する。ステップ903において、このファンクションは、検索されたIClassFactoryのメソッドCreateInstanceを呼び出し、プロキシーのインスタンスを形成し、そしてそのIMarshalインターフェイスに対するポインタを返送する。ステップ904において、このファンクションは、プロキシーのメソッドUnMarshalInterfaceを呼び出す。次いで、ファンクションUnMarshalは復帰となる。
【0058】
図10は、メソッドUnMarshalInterfaceの例示的な具現化を示す流れ線図である。このメソッドは、次のプロートタイプを有する。
void IMarshal::UnMarshalInterface(pstm,iid,pInterface)
【0059】
メソッドUnMarshalInterfaceは、新たに形成されたプロキシーを初期化し、そして指定のインターフェイス(iid)に対するポインタ(pInterface)を返送する。ステップ1001において、このメソッドはファンクションUnMarshalを呼び出し、指定のメッセージからスタブメッセージアドレスをアンマーシャリングする。ステップ1002において、このメソッドは、スタブメッセージアドレスを記憶する。ステップ1003において、このメソッドは指定のインターフェイスに対するポインタを検索する。次いで、このメソッドUnMarshalInterfaceは復帰となる。
【0060】
図11は、ファンクションGetClassObjectの流れ線図である。このファンクションは、次のプロートタイプを有する。
void GetClassObject(cid,iid,pInterface)
【0061】
ファンクションGetClassObjectは、指定のクラス(cid)の指定のインターフェイス(iid)に対するポインタ(pInterface)を返送する。ステップ1101において、このファンクションは、永続的な登録から指定のクラスに対する動的なリンクライブラリーの名前を検索する。ステップ1102において、このファンクションは、動的なリンクライブラリーをロードする。ステップ1103において、指定のインターフェイスがIClassFactoryである場合に、このファンクションはステップ1104に続き、さもなくば、復帰となる。ステップ1104において、このファンクションは、ファンクションGetIClassFactoryを呼び出し、IClassFactoryインターフェイスに対するポインタを得る。ファンクションGetIClassFactoryは、オブジェクトの開発者によって与えられるのが好ましい。次いで、ファンクションGetClassObjectは復帰となる。
【0062】
オブジェクトの開発者は、オブジェクトに対するカスタムマーシャリング及びアンマーシャリングを行うようにIMarshalインターフェイスを具現化を与えることができる。IMarshalインターフェイスは、次のように定義される。
【0063】
【数11】
【0064】
開発者は、マーシャリングプロセスを最適にするようにカスタムマーシャリングを具現化する。図12A及び12Bは、インターフェイスポインタのカスタムマーシャリングを示すブロック図である。図12Aは標準的なマーシャリングの作用を示す。図12Aにおいて、プロセスP1のセルオブジェクト1201は、セルスタブ1202及びセルプロキシー1203で表されたようにプロセスP2へとマーシャリングされている。セルプロキシー1203は、セルスタブ1204及びセルプロキシー1205で表されたようにプロセスP3へとマーシャリングされている。セルプロキシー1203は、図7に示す形式の標準的マーシャリングを用いてマーシャリングされたものである。プロセスP3がセルプロキシー1205のプロキシーメソッドを呼び出すと、このプロキシーメソッドはパラメータをマーシャリングしそしてメッセージをセルスタブ1204へ送信する。セルスタブ1204は、メッセージを受け取り、パラメータをアンマーシャリングし、そしてセルプロキシー1203の適当なプロキシーメソッドを呼び出す。セルプロキシー1203のプロキシーメソッドは、パラメータをマーシャリングし、そしてメッセージをセルスタブ1202へ送る。このセルスタブ1202は、メッセージを受け取り、パラメータをマーシャリングし、そしてセルオブジェクト1201の適当なメソッドを呼び出す。このメソッドが復帰すると、セルスタブ1202は、出パラメータをマーシャリングし、そしてメッセージをセルプロキシー1203へ送る。セルプロキシー1203がメッセージを受け取ると、プロキシーメソッドはパラメータをアンマーシャリングし、そしてその発呼者へセルスタブ1204を返送する。
【0065】
セルスタブ1204は、出パラメータをマーシャリングし、そしてメッセージをセルプロキシー1205へ送る。セルプロキシー1205がメッセージを受け取ると、プロキシーメソッドは、パラメータをアンマーシャリングし、そしてその発呼者へ戻す。従って、プロセスP3がセルオブジェクト1201をアクセスするときに、そのアクセスはプロセスP2を経て引き回される。
【0066】
図12Bはカスタムマーシャリングから得られる最適化を示している。図12Bにおいて、プロセスP3がセルオブジェクト1201をアクセスするときに、そのアクセスは、プロセスP2を経て引き回されず、プロセスP1へ直接送られる。この最適化を達成するために、セルプロキシーのIMarshalインターフェイスは、カスタムマーシャリングで実施される。メソッドIMarshal::MarshalInterfaceは、次の擬似コードによって示すように具現化される。
【0067】
【数12】
【0068】
上記のように、標準的IMarshal::MarshalInterfaceは、スタブを形成し、そしてスタブのメッセージアドレスを送信する。しかしながら、カスタムのIMarshal::MarshalInterfaceは、それが通信するスタブのメッセージアドレスを単に送信する。従って、セルプロキシー1203のカスタムIMarshal::MarshalInterfaceが呼び出されたときには、セルスタブ1202のメッセージアドレスが、アンマーシャリングクラス識別子(CellProxy)と共にプロセスP3に送られる。プロセスP3は、標準的なアンマーシャリングメソッドを用いてセルプロキシー1205を初期化するときに、セルスタブ1202のメッセージアドレスを記憶する。従って、プロセスP3は、セルオブジェクト1201をアクセスするときに、プロセスP2をバイパスする。
【0069】
図13は、共用メモリでのカスタムマーシャリングを示すブロック図である。ある状態において、オブジェクトは、データメンバーをアクセスするための遠隔手続き呼び出しのオーバーヘッドを回避するために、プロセスにわたって共用されたメモリにデータメンバーを記憶する。図13において、セルオブジェクト1301のデータ1302は、共用メモリに記憶される。セルオブジェクト1303は、セルオブジェクト1301に対するポインタがマーシャリングされてプロセスP1からプロセスP2へ送られるときに形成される。セルオブジェクトのためのIMarshalインターフェイスのカスタムメソッドは、次の擬似コードによって具現化される。
【0070】
【数13】
【0071】
メソッドIMarshal::MarshalInterfaceのパラメータDestContextは、セルオブジェクトのデータが共用メモリに記憶されるかどうか指示する。データが共用メモリに記憶されない場合には、標準的マーシャリングと同等のことが行われる。しかしながら、データが共用メモリに記憶される場合には、共用データのアドレスがメッセージへとマーシャリングされる。メソッドIMarshal::GetUnMarshalClassは、データが共用メモリにあるかどうかに基づいてアンマーシャリングクラスを決定する。データが共用メモリにない場合には、CellProxyクラスがアンマーシャリングクラスである。データが共用メモリにある場合には、Cellクラスがアンマーシャリングクラスである。共用データのアンマーシャリングクラス及びアドレスは、プロセスP2に送られる。プロセスP2がセルオブジェクト1303をインスタンス生成した後に、プロセスP2はカスタムメソッドIMarshal::UnMarshalInterfaceを呼び出し、これは、共用データのアドレスをアンマーシャリングしそしてそのデータを指すようにオブジェクトを初期化する。
【0072】
カスタムマーシャリングは、不変のオブジェクトを効率的にアクセスするように使用できる。不変のオブジェクトとは、そのデータメンバー(状態)が変更することのないオブジェクトである。不変のオブジェクトに対するインターフェイスオブジェクトがあるプロセスから別のプロセスへパスされたときには、カスタムマーシャリングを行って、他のプロセスにおいてオブジェクトのコピーを形成することができる。従って、他のプロセスがオブジェクトをアクセスするときは、ローカルコピーをアクセスし、プロセス間通信は不要である。不変のオブジェクトをコピーできるようにするために、不変のオブジェクトのIMarshalインターフェイスのメソッドは次のように具現化される。好ましい実施例においては、メソッドIMarshal::GetUnMarshalClassは、アンマーシャリングクラスが不変のオブジェクトのクラスと同じクラスであることを指定する。これは、同じ形式のオブジェクトが他のプロセスによってインスタンス生成されるよう確保する。メソッドIMarshal::MarshalInterfaceは、不変のオブジェクトのデータメンバーを、他のプロセスへパスするためのメッセージに記憶する。メソッドIMarshal::MarshalInterfaceはスタブを形成しない。他のプロセスは、メッセージを受け取ると、不変のオブジェクトのクラスのオブジェクトを形成する。次いで、メソッドIMarshal::UnMarshalInterfaceは、メッセージからデータメンバーを検索し、そして新たに形成されたオブジェクトを初期化する。次いで、他のプロセスは、不変のオブジェクトをアクセスする。
【0073】
以上、好ましい実施例について本発明を詳細に説明したが、本発明は、これらの実施例に限定されるものではない。本発明の精神内で変更がなされ得ることが当業者に明らかであろう。本発明の範囲は、以下の請求の範囲のみによって限定されるものとする。
【図面の簡単な説明】
【図1】オブジェクトを表すのに使用される典型的なデータ構造体を示すブロック図である。
【図2】スプレッドシートオブジェクトのサンプルデータ構造体を示すブロック図である。
【図3】マーシャリング及びアンマーシャリング中に発生されるデータ構造体及びロードされるコードを示すブロック図である。
【図4A】インターフェイスポインタのマーシャリング動作を示すブロック図である。
【図4B】インターフェイスポインタのマーシャリング動作を示すブロック図である。
【図4C】インターフェイスポインタのマーシャリング動作を示すブロック図である。
【図5】メソッドGetCellを示す流れ線図である。
【図6】ファンクションMarshalInterfaceを示す流れ線図である。
【図7】メソッドMarshalInterfaceの具現化例を示す流れ線図である。
【図8】ファンクションMakeStubの流れ線図である。
【図9】ファンクションUnMarshalInterfaceの流れ線図である。
【図10】IMarshalインターフェイスのメソッドUnMarshalInterfaceの具現化例を示す流れ線図である。
【図11】ファンクションGetClassObjectの流れ線図である。
【図12A】プロキシー対プロキシーメッセージを回避するためのカスタムマーシャリングを示すブロック図である。
【図12B】プロキシー対プロキシーメッセージを回避するためのカスタムマーシャリングを示すブロック図である。
【図13】共用メモリでのカスタムマーシャリングを示すブロック図である。
【符号の説明】
101、203、206 インスタンスデータ構造体
102、204、207 仮想ファンクションテーブル
103、104、105 ファンクションメンバー
201 インターフェイスデータ構造体
202 IBasicインターフェイスデータ構造体
205 IDatabaseインターフェイスデータ構造体
301 オブジェクト
302 スタブオブジェクト
303 プロキシーオブジェクト
Claims (10)
- コンピュータのサーバプロセスからクライエントプロセスへのソフトウエアオブジェクトのインターフェイスにアクセスするプロセッサを有するコンピュータシステムであって、
上記サーバプロセス及び上記クライエントプロセスを維持するメモリを備え、
上記メモリ中の上記クライエントプロセスは、
上記クライエントプロセスの上記メモリ及び上記サーバプロセスの上記メモリの双方に存在する手続きを呼び出すための呼出命令と、
上記手続きの名前及び少なくとも1つのパラメータをメッセージにパッキングするためのパッキング命令と、
対応するサーバスタブオブジェクトに上記メッセージを送信するための送信命令と
を有し、
上記メモリ中の上記サーバプロセスは、
上記サーバスタブオブジェクトで上記クライエントプロセスからの上記メッセージを受け取るための受取命令と、
上記サーバスタブオブジェクトに上記メッセージから上記手続きの名前及び上記少なくとも1つのパラメータをアンマーシャリングさせるためのアンマーシャリング命令と、
上記サーバスタブオブジェクトに上記パラメータを用いて上記手続きを起動させ、上記ソフトウエアオブジェクトの上記インターフェイスのポインタを生成するためのサーバオブジェクト呼出命令と、
上記サーバスタブオブジェクトが上記ソフトウエアオブジェクトの上記インターフェイスの上記ポインタをマーシャリングするようにするためのマーシャリング命令であって、
スタブメッセージアドレス及びアンマーシャリングクラス識別子を有するオブジェクトインターフェイススタブを生成するための生成命令、
上記オブジェクトインターフェイススタブへ上記ソフトウエアオブジェクトの上記インターフェイスの上記ポインタを格納するための格納命令、及び
上記オブジェクトインターフェイススタブに、マーシャリングメッセージを生成させ、上記スタブメッセージアドレス及び上記アンマーシャリングクラス識別子を上記マーシャリングメッセージにパッキングするための生成命令
を有するマーシャリング命令と、
上記クライエントプロセスへ上記マーシャリングメッセージを送信するための送信命令と
を有し、
上記メモリ中の上記クライエントプロセスは、さらに
上記サーバプロセスからの上記マーシャリングメッセージを受け取るためのクライエント受取命令と、
上記サーバプロセスからの上記マーシャリングメッセージをアンマーシャリングするためのクライエントアンマーシャリング命令であって、
受け取った上記マーシャリングメッセージから上記スタブメッセージアドレス及び上記アンマーシャリングクラス識別子を検索ためのクライエントアンマーシャリング検索命令、
上記アンマーシャリングクラス識別子によって識別されるタイプの上記ソフトウエアオブジェクトの上記インターフェイスと関連づけられたプロキシーを生成するためのクライエントアンマーシャリング生成命令、及び
検索された上記スタブメッセージアドレスで上記プロキシーを初期化するためのクライエントアンマーシャリング初期化命令
を有するクライエントアンマーシャリング命令と、
上記オブジェクトインターフェイススタブに格納された上記ソフトウエアオブジェクトの上記インターフェイスのポインタへアクセスするための検索された上記スタブメッセージアドレスを有する上記プロキシーを使用し、上記サーバプロセスから上記クライエントプロセスへの上記ソフトウエアオブジェクトの上記インターフェイスへアクセスするためのクライエント使用命令と
を有し、
上記クライエントプロセスが上記呼出命令、上記パッキング命令、及び上記送信命令を実行し、次いで、上記サーバプロセスが、上記受取命令、上記アンマーシャリング命令、上記サーバオブジェクト呼出命令、及び上記マーシャリング命令を上記メモリから実行し、次いで、上記クライエントプロセスが、上記クライエント受取命令、上記クライエントアンマーシャリング命令、及び上記クライエント使用命令を呼び出して、上記サーバプロセス中の上記ソフトウエアオブジェクトの上記インターフェイスへアクセスするための上記スタブメッセージアドレスをパスことにより、上記サーバプロセスから上記クライエントプロセスへの上記ソフトウエアオブジェクトの上記インターフェイスにアクセスすることを特徴とするコンピュータシステム。 - 上記オブジェクトインターフェイススタブを生成するための上記生成命令は、上記オブジェクトインターフェイススタブに関するオブジェクトインターフェイススタブコードのコピーをロードするための関数命令と、上記スタブメッセージアドレスを受け取るための命令と、上記スタブメッセージアドレスを格納するための命令とをさらに有することを特徴とする請求項1に記載のコンピュータシステム。
- 上記アンマーシャリングクラス識別子によって識別されるタイプの上記ソフトウエアオブジェクトの上記インターフェイスと関連づけされた上記プロキシーを生成するための上記クライエントアンマーシャリング生成命令は、
永続的な登録から動的なリンクライブラリーの名前を読み出すための命令と、
上記動的なリンクライブラリーをロードするための命令と、
ロードされた上記動的なリンクライブラリーを使用して、上記アンマーシャリングクラス識別子によって識別されるタイプの上記ソフトウエアオブジェクトの上記インターフェイスと関連づけされた上記プロキシーを生成するための命令と
をさらに有することを特徴とする請求項1に記載のコンピュータシステム。 - ソフトウエアオブジェクトの場所を見つけるための方法についての命令を有するメッセージをパスする中央演算処理装置を有する中央処理装置コンピュータシステムであって、
上記メッセージは、上記コンピュータシステムにおいてサーバプロセスからクライエントプロセスへパスされるものであって、
上記コンピュータシステムは、上記サーバプロセス及び上記クライエントプロセスを維持するメモリを備え、
上記メモリ中の上記クライエントプロセスは、
上記クライエントプロセスの上記メモリ及び上記サーバプロセスの上記メモリの双方に存在する手続きを呼び出すための呼出命令と、
上記手続きの名前及び少なくとも1つのパラメータをメッセージにパッキングするためのパッキング命令と、
上記サーバプロセスの対応するサーバスタブオブジェクトに上記メッセージを送信するための送信命令と、
上記手続きのプロキシーオブジェクトを生成するためのプロキシー生成命令と
を有し、
上記メモリ中の上記サーバプロセスは、
上記サーバスタブオブジェクトで上記クライエントプロセスからの上記メッセージを受け取るための受取命令と、
上記サーバスタブオブジェクトに、上記メッセージから上記手続きの名前及び上記少なくとも1つのパラメータをアンマーシャリングさせるためのアンマーシャリング命令と、
上記サーバスタブオブジェクトに、上記パラメータを用いて上記手続きを起動させ、上記ソフトウエアオブジェクトの上記インターフェイスのポインタを生成するためのサーバオブジェクト呼出命令と、
上記サーバスタブオブジェクトが上記ソフトウエアオブジェクトの上記インターフェイスの上記ポインタをマーシャリングするようにするためのマーシャリング命令であって、
スタブメッセージアドレス及びアンマーシャリングクラス識別子を有するオブジェクトインターフェイススタブを生成するための生成命令、
上記オブジェクトインターフェイススタブへ上記ソフトウエアオブジェクトの上記インターフェイスの上記ポインタを格納するための格納命令、及び
上記オブジェクトインターフェイススタブに、マーシャリングメッセージを生成させ、上記スタブメッセージアドレス及び上記アンマーシャリングクラス識別子を上記マーシャリングメッセージにパッキングするためのメッセージ生成命令
を有するマーシャリング命令と、
上記クライエントプロセスへ上記マーシャリングメッセージを送信するための送信命令と
を有し、
上記メモリ中の上記クライエントプロセスは、さらに
上記サーバプロセスからの上記マーシャリングメッセージを受け取るための受取命令と、
上記サーバプロセスからの上記マーシャリングメッセージをアンマーシャリングするためのアンマーシャリング命令であって、
受け取った上記マーシャリングメッセージから上記スタブメッセージアドレス及び上記アンマーシャリングクラス識別子を検索ためのアンマーシャリング検索命令、
セルプロキシーを生成する上記アンマーシャリングクラス識別子のクラスを動的にロードするための動的ロード命令、及び
上記スタブメッセージアドレスを上記セルプロキシーとともに格納するためのクライエント格納命令
を有するクライエントアンマーシャリング命令と、
検索された、上記オブジェクトインターフェイススタブに格納された上記ソフトウエアオブジェクトの上記インターフェイスのポインタへアクセスするための上記スタブメッセージアドレスを有する上記セルプロキシーを使用し、上記サーバプロセスから上記クライエントプロセスへの上記ソフトウエアオブジェクトの上記インターフェイスへアクセスするようにするためのクライエント使用命令と
を有することを特徴とするコンピュータシステム。 - 上記メモリ中の上記クライエントプロセスは、永続的な登録から動的にロードされる上記クライエントのオブジェクトをインスタンス生成する命令を読み出すための読み出し命令を含み、
上記永続的な登録は、上記アンマーシャリングクラス識別子を永続的な登録のエントリー指示子に関連付けるエントリーを有することを特徴とする請求項4に記載のコンピュータシステム。 - サーバプロセスから第1クライエントプロセスへの、及び上記第1のクライエントプロセスから第2クライエントプロセスへのソフトウエアオブジェクトのポインタのインターフェイスにアクセスするコンピュータシステムであって、
上記サーバプロセス、上記第1クライエントプロセス、及び上記第2クライエントプロセスを維持するメモリを備え、
上記メモリ中の上記サーバプロセスは、
上記メモリ中にオブジェクトをインスタンス生成するインスタンス生成命令と、
上記オブジェクトのファンクションメンバーを呼び出す要求を受け取り、要求されたファンクションメンバーを当該要求の受け取り時に呼び出すサーバスタブであって、メッセージアドレスを有するサーバスタブを上記メモリ中に形成する形成命令と、
上記第1及び第2のクライエントプロセスでインスタンス生成されるべきオブジェクトのクラスを識別するアンマーシャリングクラス識別子と上記サーバスタブの上記メッセージアドレスとを上記第1クライエントプロセスへ送信する送信命令と
を有し、
上記第1クライエントプロセスは、
上記サーバプロセスからの上記アンマーシャリングクラス識別子と上記サーバスタブの上記メッセージアドレスとを受け取る受取命令と、
上記アンマーシャリングクラス識別子により識別されたクラスの第1プロキシーオブジェクトをインスタンス生成するための第1ソフトウェアモジュールを動的にロードする命令と、
上記アンマーシャリングクラス識別子により識別されたクラスの第1プロキシーオブジェクトであって、上記サーバスタブの上記メッセージアドレスを上記第2クライエントプロセスに送るべきであることを指示するマーシャリングファンクションメンバーを有する第1プロキシーオブジェクトを上記メモリにインスタンス生成し、当該第1プロキシーオブジェクトが上記オブジェクトのファンクションメンバーを呼び出す要求を受け取るときに当該第1プロキシーオブジェクトが当該要求を上記識別された上記サーバスタブへ送信するように当該第1プロキシーオブジェクトを初期化するように、動的にロードされた上記第1ソフトウェアモジュールを実行するための実行命令と、
上記第1プロキシーオブジェクトのマーシャリングファンクションメンバーを呼び出す呼出命令と、
上記アンマーシャリングクラス識別子及び上記サーバスタブの上記メッセージアドレスを上記第2クライエントプロセスに送信する送信命令と
を有し、
上記メモリ中の上記第2クライエントプロセスは、
上記第1クライエントプロセスから上記アンマーシャリングクラス識別子及び上記サーバスタブの上記メッセージアドレスを受け取る受取命令と、
上記アンマーシャリングクラス識別子により識別されたクラスの第2オブジェクトプロキシーをインスタンス生成するための第2ソフトウェアモジュールを動的にロードする命令と、
上記動的にロードされた第2ソフトウェアモジュールを実行して、上記アンマーシャリングクラス識別子により識別されたクラスの第2オブジェクトプロキシーをインスタンス生成し、当該第2オブジェクトプロキシーが上記オブジェクトのファンクションメンバーを呼び出す要求の受け取るときに当該第2オブジェクトプロキシーが当該要求を識別された上記サーバスタブへ送信するように当該第2オブジェクトプロキシーを初期化するための実行命令と
を有し、
上記コンピュータシステム中の中央処理装置は、上記サーバスタブの上記メッセージアドレスを上記メモリ中の上記サーバプロセスから上記メモリ中の上記第1のクライエントプロセス、上記メモリ中の上記第2のクライエントプロセスへパスする命令を実行することを特徴とするコンピュータシステム。 - 上記オブジェクトは複数のインターフェイスを有し、かつ上記オブジェクトのポインタは、上記オブジェクトのインターフェイスの1つに対するポインタであることを特徴とする請求項6に記載のコンピュータシステム。
- オブジェクトに対するポインタにアクセスするコンピュータシステムであって、上記ポインタはサーバプロセス及びクライエントプロセス相互間でアクセスされ、上記コンピュータシステムは、
上記サーバプロセス及び上記クライエントプロセスを維持するメモリを備え、
上記メモリ中の上記サーバプロセスは、
上記メモリ中にオブジェクトをインスタンス生成するインスタンス生成命令と、
上記オブジェクトのファンクションメンバーを呼び出す要求を受け取るため、及び上記要求の受け取りに応じてと必要な上記ファンクションメンバーを呼び出すための、メッセージアドレスを有するサーバスタブを上記メモリ中に形成する形成命令と、
上記クライエントプロセス中でインスタンス生成されるオブジェクトのクラスを識別するアンマーシャリングクラス識別子及び上記サーバスタブの上記メッセージアドレスを上記クライエントプロセスへ送信するための送信命令と、
上記サーバプロセス及び上記クライエントプロセスによってアクセス可能なオブジェクトを共用メモリにインスタンス生成するインスタンス生成命令と、
上記オブジェクトのデータメンバーを共用メモリに格納するかを判定する判定命令であって、上記オブジェクトのデータメンバーを共用メモリに格納すると判定すると上記共用メモリ中に格納された上記オブジェクトのデータメンバーのアドレスをメッセージに格納し、上記オブジェクトのデータメンバーを共用メモリに格納しないと判定すると上記共用メモリ中にない上記オブジェクトのメッセージアドレスを上記メッセージに格納する判定命令と、
上記メッセージを生成するためのメッセージ命令であって、上記クライエントプロセス中でインスタンス生成されるべきオブジェクトのクラスを識別するアンマーシャリングクラス識別子を上記メッセージ中に格納する命令、及び上記第1クライエントプロセスに対する上記サーバスタブの上記メッセージアドレスを上記メッセージに格納する格納命令を有するメッセージ命令と、
上記メッセージを上記クライエントプロセスへ送信する送信命令と
を有し、
上記メモリ中の上記クライエントプロセスは、
上記サーバプロセスからの上記メッセージを受け取る受取命令と、
上記メッセージから上記アンマーシャリングクラス識別子を検索する検索命令と、
上記アンマーシャリングクラス識別子によって識別されたクラスのオブジェクトをインスタンス生成するソフトウェアを動的にロードする命令と、
動的にロードされた上記ソフトウェアを実行する実行命令であって、上記アンマーシャリングクラス識別子によって識別されたクラスのオブジェクトであって、アンマーシャリングファンクションメンバーを有するオブジェクトを上記メモリにインスタンス生成する実行命令と、
上記アンマーシャリングクラス識別子によって識別されたクラスのオブジェクトの上記アンマーシャリングファンクションメンバーを呼び出す呼出命令であって、上記アンマーシャリングファンクションメンバーが上記データメンバーについての上記メッセージアドレスを上記オブジェクト中に格納し、上記オブジェクトのファンクションメンバーが上記共用メモリ中の上記データメンバーにアクセスできるようにする呼出命令と
を有し、
上記コンピュータシステム中の中央処理装置は、上記メモリ中の上記サーバプロセスから上記メモリ中のクライエントプロセスへ上記ポインタをパスする命令を実行することを特徴とするコンピュータシステム。 - 上記アンマーシャリングクラス識別子は、上記サーバプロセスによってインスタンス生成された上記オブジェクトと同じクラスを識別することを特徴とする請求項8に記載のコンピュータシステム。
- 上記サーバプロセスによってインスタンス生成された上記オブジェクトは、複数のインターフェイスを有し、上記オブジェクトに対するポインタは、上記オブジェクトの当該インターフェイスの1つに対するポインタであることを特徴とする請求項8に記載のコンピュータシステム。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US97577592A | 1992-11-13 | 1992-11-13 | |
US07/975,775 | 1992-11-13 |
Related Parent Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6512381A Division JPH09502547A (ja) | 1992-11-13 | 1993-11-12 | 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2003140898A JP2003140898A (ja) | 2003-05-16 |
JP3822541B2 true JP3822541B2 (ja) | 2006-09-20 |
Family
ID=25523380
Family Applications (2)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6512381A Pending JPH09502547A (ja) | 1992-11-13 | 1993-11-12 | 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム |
JP2002235096A Expired - Lifetime JP3822541B2 (ja) | 1992-11-13 | 2002-08-12 | オブジェクトインターフェイスにポインタをパスするためのコンピュータシステム |
Family Applications Before (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP6512381A Pending JPH09502547A (ja) | 1992-11-13 | 1993-11-12 | 遠隔手続き呼び出しのためのインターフェイスポインタをマーシャリングする方法及びシステム |
Country Status (5)
Country | Link |
---|---|
US (2) | US5511197A (ja) |
EP (1) | EP0669020B1 (ja) |
JP (2) | JPH09502547A (ja) |
DE (1) | DE69309485T2 (ja) |
WO (1) | WO1994011810A1 (ja) |
Families Citing this family (247)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
DE69327138T2 (de) * | 1992-07-06 | 2000-04-27 | Microsoft Corp | Verfahren zur Namensgebung und zur Bindung von Objekten |
US5805885A (en) | 1992-12-24 | 1998-09-08 | Microsoft Corporation | Method and system for aggregating objects |
JP3365576B2 (ja) * | 1993-06-14 | 2003-01-14 | インターナショナル・ビジネス・マシーンズ・コーポレーション | オブジェクトの実行方法および装置 |
EP1047002A3 (en) * | 1993-07-20 | 2002-06-19 | Canon Kabushiki Kaisha | Document processing apparatus and method |
US6813769B1 (en) * | 1997-10-28 | 2004-11-02 | Microsoft Corporation | Server application components with control over state duration |
GB9407971D0 (en) * | 1994-04-21 | 1994-06-15 | British Telecomm | Messaging system |
DE69530731D1 (de) * | 1994-07-22 | 2003-06-18 | Sun Microsystems Inc | Verfahren und Gerät für Speicherplatzeffiziente Kommunikation zwischen Prozessen |
US5778228A (en) * | 1994-08-16 | 1998-07-07 | International Business Machines Corporation | Method and system for transferring remote procedure calls and responses over a network |
US5922054A (en) * | 1994-08-19 | 1999-07-13 | Canon Kabushiki Kaisha | System for managing external applications and files |
US5732270A (en) * | 1994-09-15 | 1998-03-24 | Visual Edge Software Limited | System and method for providing interoperability among heterogeneous object systems |
JP3361663B2 (ja) * | 1994-10-03 | 2003-01-07 | インターナショナル・ビジネス・マシーンズ・コーポレーション | 通信管理方法 |
US5758074A (en) * | 1994-11-04 | 1998-05-26 | International Business Machines Corporation | System for extending the desktop management interface at one node to a network by using pseudo management interface, pseudo component interface and network server interface |
US5754854A (en) * | 1994-11-14 | 1998-05-19 | Microsoft Corporation | Method and system for providing a group of parallel resources as a proxy for a single shared resource |
JP3072709B2 (ja) * | 1994-11-21 | 2000-08-07 | インターナショナル・ビジネス・マシーンズ・コーポレ−ション | 要求伝達方法 |
EP0733972B1 (en) * | 1995-03-22 | 2003-07-09 | Sun Microsystems, Inc. | Method and apparatus for managing relationships among objects in a distributed object environment |
US5793965A (en) * | 1995-03-22 | 1998-08-11 | Sun Microsystems, Inc. | Method and apparatus for determining the type of an object in a distributed object system |
US6009266A (en) * | 1995-03-22 | 1999-12-28 | Sun Microsystems, Inc. | Methods, apparatus and data structures for managing objects |
US6249822B1 (en) | 1995-04-24 | 2001-06-19 | Microsoft Corporation | Remote procedure call method |
WO1996034354A1 (en) * | 1995-04-28 | 1996-10-31 | United Parcel Service Of America, Inc. | System and method for validating and geocoding addresses |
EP0762273B1 (en) | 1995-09-06 | 2002-05-15 | Seiko Epson Corporation | Peripheral device control system using a plurality of objects |
GB2305270A (en) * | 1995-09-15 | 1997-04-02 | Ibm | Bridge for a client-server environment |
GB2305271A (en) * | 1995-09-15 | 1997-04-02 | Ibm | Proxy object recovery in an object-oriented environment |
US6009464A (en) * | 1995-09-20 | 1999-12-28 | Sun Microsystems, Inc. | Method and apparatus for enabling application programs to communicate with network clients and servers |
US5737607A (en) * | 1995-09-28 | 1998-04-07 | Sun Microsystems, Inc. | Method and apparatus for allowing generic stubs to marshal and unmarshal data in object reference specific data formats |
US5815708A (en) * | 1995-10-06 | 1998-09-29 | Sun Microsystems, Inc. | Method and apparatus for dynamically loading method call exception code in response to a software method exception generated in a client/server computer system |
CA2162188C (en) * | 1995-11-06 | 1999-05-25 | Harold Jeffrey Gartner | Location transparency of distributed objects over multiple middlewares |
US5887172A (en) | 1996-01-10 | 1999-03-23 | Sun Microsystems, Inc. | Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends |
US6185728B1 (en) * | 1996-01-31 | 2001-02-06 | Inprise Corporation | Development system with methods for type-safe delegation of object events to event handlers of other objects |
US6260074B1 (en) * | 1996-03-30 | 2001-07-10 | Sun Microsystems, Inc. | Method and apparatus for passing generic objects in a distributed system |
US6578044B1 (en) | 1997-11-17 | 2003-06-10 | Sun Microsystems, Inc. | Method and system for typesafe attribute matching |
US6247026B1 (en) | 1996-10-11 | 2001-06-12 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of delegation certificates in a distributed system |
US6708171B1 (en) | 1996-04-23 | 2004-03-16 | Sun Microsystems, Inc. | Network proxy |
US6438614B2 (en) | 1998-02-26 | 2002-08-20 | Sun Microsystems, Inc. | Polymorphic token based control |
US6560656B1 (en) | 1998-02-26 | 2003-05-06 | Sun Microsystems, Inc. | Apparatus and method for providing downloadable code for use in communicating with a device in a distributed system |
US6446070B1 (en) | 1998-02-26 | 2002-09-03 | Sun Microsystems, Inc. | Method and apparatus for dynamic distributed computing over a network |
US6832223B1 (en) * | 1996-04-23 | 2004-12-14 | Sun Microsystems, Inc. | Method and system for facilitating access to a lookup service |
US6138238A (en) | 1997-12-11 | 2000-10-24 | Sun Microsystems, Inc. | Stack-based access control using code and executor identifiers |
US6393497B1 (en) | 1998-03-20 | 2002-05-21 | Sun Microsystems, Inc. | Downloadable smart proxies for performing processing associated with a remote procedure call in a distributed system |
US6185611B1 (en) | 1998-03-20 | 2001-02-06 | Sun Microsystem, Inc. | Dynamic lookup service in a distributed system |
US6282652B1 (en) | 1998-02-26 | 2001-08-28 | Sun Microsystems, Inc. | System for separately designating security requirements for methods invoked on a computer |
US6421704B1 (en) | 1998-03-20 | 2002-07-16 | Sun Microsystems, Inc. | Method, apparatus, and product for leasing of group membership in a distributed system |
US6226746B1 (en) | 1998-03-20 | 2001-05-01 | Sun Microsystems, Inc. | Stack-based system and method to combine security requirements of methods |
US6598094B1 (en) | 1998-03-20 | 2003-07-22 | Sun Microsystems, Inc. | Method and apparatus for determining status of remote objects in a distributed system |
US6237024B1 (en) | 1998-03-20 | 2001-05-22 | Sun Microsystem, Inc. | Method and apparatus for the suspension and continuation of remote processes |
US6466947B2 (en) | 1998-03-20 | 2002-10-15 | Sun Microsystems, Inc. | Apparatus and method for dynamically verifying information in a distributed system |
US6938263B2 (en) * | 1996-04-23 | 2005-08-30 | Sun Microsystems, Inc. | System and method for facilitating dynamic loading of “stub” information to enable a program operating in one address space to invoke processing of a remote method or procedure in another address space |
US6182083B1 (en) | 1997-11-17 | 2001-01-30 | Sun Microsystems, Inc. | Method and system for multi-entry and multi-template matching in a database |
US6487607B1 (en) | 1998-02-26 | 2002-11-26 | Sun Microsystems, Inc. | Methods and apparatus for remote method invocation |
US6463446B1 (en) | 1998-02-26 | 2002-10-08 | Sun Microsystems, Inc. | Method and apparatus for transporting behavior in an event-based distributed system |
US6272559B1 (en) | 1997-10-15 | 2001-08-07 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading for event notification in a distributed system |
US5977967A (en) * | 1996-05-01 | 1999-11-02 | Electronic Data Systems Corporation | Object-oriented business object interface framework and method |
US5987512A (en) * | 1996-06-12 | 1999-11-16 | Sun Microsystems, Inc. | Method and apparatus for access to remote gateway servers |
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 |
US5809507A (en) * | 1996-07-01 | 1998-09-15 | Sun Microsystems, Inc. | Method and apparatus for storing persistent objects on a distributed object network using a marshaling framework |
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 |
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 |
US5999972A (en) | 1996-07-01 | 1999-12-07 | Sun Microsystems, Inc. | System, method and article of manufacture for a distributed computer system framework |
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 |
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 |
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 |
US5748897A (en) * | 1996-07-02 | 1998-05-05 | Sun Microsystems, Inc. | Apparatus and method for operating an aggregation of server computers using a dual-role proxy server computer |
US6263485B1 (en) | 1996-07-11 | 2001-07-17 | Andrew Schofield | Method and apparatus for describing an interface definition language-defined interface, operation, and data type |
US6308225B1 (en) * | 1996-07-11 | 2001-10-23 | 724 Solutions, Inc. | Method for performing distributed object calls |
US6173327B1 (en) | 1996-07-11 | 2001-01-09 | Jeroen De Borst | Object-oriented method and apparatus for information delivery |
US6347342B1 (en) * | 1996-07-15 | 2002-02-12 | Next Software, Inc. | Method and apparatus for dynamically brokering object messages among object models |
US6212578B1 (en) * | 1996-09-09 | 2001-04-03 | Oracle Corporation | Method and apparatus for managing dependencies in a distributed computing environment for ensuring the safety of remote procedure calls |
GB9620196D0 (en) * | 1996-09-27 | 1996-11-13 | British Telecomm | Distributed processing |
US6237009B1 (en) | 1996-10-11 | 2001-05-22 | Sun Microsystems, Inc. | Lease renewal service |
US6728737B2 (en) | 1996-10-11 | 2004-04-27 | Sun Microsystems, Inc. | Method and system for leasing storage |
US5832529A (en) | 1996-10-11 | 1998-11-03 | Sun Microsystems, Inc. | Methods, apparatus, and product for distributed garbage collection |
US5948072A (en) * | 1996-10-31 | 1999-09-07 | International Business Machines Corporation | Method and apparatus for defining the scope of a CORBAservices factory finder |
US5913025A (en) * | 1996-11-14 | 1999-06-15 | Novell, Inc. | Method and apparatus for proxy authentication |
US6047296A (en) * | 1996-12-09 | 2000-04-04 | Omnimark Technologies Corporation | Comprehensive method of resolving nested forward references in electronic data streams within defined resolution scopes |
US5930471A (en) * | 1996-12-26 | 1999-07-27 | At&T Corp | Communications system and method of operation for electronic messaging using structured response objects and virtual mailboxes |
US6038593A (en) * | 1996-12-30 | 2000-03-14 | Intel Corporation | Remote application control for low bandwidth application sharing |
US6732183B1 (en) * | 1996-12-31 | 2004-05-04 | Broadware Technologies, Inc. | Video and audio streaming for multiple users |
US6006230A (en) * | 1997-01-15 | 1999-12-21 | Sybase, Inc. | Database application development system with improved methods for distributing and executing objects across multiple tiers |
US6304918B1 (en) * | 1997-03-11 | 2001-10-16 | Microsoft Corporation | Object interface control system |
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 |
US6035342A (en) * | 1997-03-19 | 2000-03-07 | Microsoft Corporation | Method and computer program product for implementing object relationships |
US6189046B1 (en) * | 1997-03-27 | 2001-02-13 | Hewlett-Packard Company | Mechanism and method for merging cached location information in a distributed object environment |
US6408342B1 (en) * | 1997-03-28 | 2002-06-18 | Keith E. Moore | Communications framework for supporting multiple simultaneous communications protocols in a distributed object environment |
US5999988A (en) * | 1997-03-31 | 1999-12-07 | Sun Microsystems, Inc. | Method and apparatus for generating and employing a run-time generated stub to reference an object in object oriented systems |
US6415334B1 (en) * | 1997-05-14 | 2002-07-02 | Microsoft Corporation | Method and system for accessing objects of different thread types |
US6151638A (en) * | 1997-06-25 | 2000-11-21 | Unisys Corp. | System and method for performing external procedure calls from a client program to a server program to a server program and back to the client program while both are running in a heterogenous computer |
US6141697A (en) * | 1997-06-25 | 2000-10-31 | Unisys Corp. | System and method for performing external procedure calls in heterogeneous computer systems utilizing program stacks |
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 |
US6981255B2 (en) * | 1997-07-17 | 2005-12-27 | Microsoft Corporation | Method and system for accessing objects of different thread types |
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 |
US6567861B1 (en) * | 1997-09-17 | 2003-05-20 | International Business Machines Corporation | Method and apparatus for remotely running objects using data streams and/or complex parameters |
US6275870B1 (en) * | 1997-09-24 | 2001-08-14 | Sony Corporation | Network object request broker |
EP0915419A3 (en) | 1997-10-06 | 2003-11-12 | Sun Microsystems, Inc. | Remote object access |
US6957427B1 (en) | 1997-10-15 | 2005-10-18 | Sun Microsystems, Inc. | Remote object activation in a distributed system |
US6253256B1 (en) | 1997-10-15 | 2001-06-26 | Sun Microsystems, Inc. | Deferred reconstruction of objects and remote loading in a distributed system |
US6185609B1 (en) * | 1997-10-24 | 2001-02-06 | Sun Microsystems, Inc. | Method, apparatus and program to provide client access to a management information service residing on a server in a computer network system |
US6631425B1 (en) | 1997-10-28 | 2003-10-07 | Microsoft Corporation | Just-in-time activation and as-soon-as-possible deactivation or server application components |
US7076784B1 (en) | 1997-10-28 | 2006-07-11 | Microsoft Corporation | Software component execution management using context objects for tracking externally-defined intrinsic properties of executing software components within an execution environment |
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 |
US6272492B1 (en) | 1997-11-21 | 2001-08-07 | Ibm Corporation | Front-end proxy for transparently increasing web server functionality |
US6018805A (en) * | 1997-12-15 | 2000-01-25 | Recipio | Transparent recovery of distributed-objects using intelligent proxies |
US6167565A (en) * | 1998-01-08 | 2000-12-26 | Microsoft Corporation | Method and system of custom marshaling of inter-language parameters |
CN1298514A (zh) | 1998-02-26 | 2001-06-06 | 太阳微系统公司 | 确定性散列识别远程方法的方法和系统 |
US6604127B2 (en) | 1998-03-20 | 2003-08-05 | Brian T. Murphy | Dynamic lookup service in distributed system |
US6138269A (en) * | 1998-05-20 | 2000-10-24 | Sun Microsystems, Inc. | Determining the actual class of an object at run time |
US7089331B1 (en) | 1998-05-29 | 2006-08-08 | Oracle International Corporation | Method and mechanism for reducing client-side memory footprint of transmitted data |
US6442620B1 (en) | 1998-08-17 | 2002-08-27 | Microsoft Corporation | Environment extensibility and automatic services for component applications using contexts, policies and activators |
US6425017B1 (en) | 1998-08-17 | 2002-07-23 | Microsoft Corporation | Queued method invocations on distributed component applications |
JP2000099332A (ja) | 1998-09-25 | 2000-04-07 | Hitachi Ltd | 遠隔手続き呼び出し最適化方法とこれを用いたプログラム実行方法 |
US6385661B1 (en) * | 1998-10-19 | 2002-05-07 | Recursion Software, Inc. | System and method for dynamic generation of remote proxies |
US6826763B1 (en) | 1998-12-11 | 2004-11-30 | Microsoft Corporation | Accelerating a distributed component architecture over a network using a direct marshaling |
US6799320B1 (en) * | 1998-12-16 | 2004-09-28 | Microsoft Corporation | Providing binding options for component interfaces |
US6684393B1 (en) | 1999-01-29 | 2004-01-27 | International Business Machines Corporation | Compilation method and system to reuse memory storage instead of allocating it |
US6421739B1 (en) * | 1999-01-30 | 2002-07-16 | Nortel Networks Limited | Fault-tolerant java virtual machine |
US7117446B2 (en) * | 1999-02-01 | 2006-10-03 | Sonic Solutions, Inc. | User interface method and system for application programs implemented with component architectures |
US6670934B1 (en) | 1999-02-03 | 2003-12-30 | William H. Gates, III | Method and system for distributing art |
US6684246B1 (en) | 1999-02-03 | 2004-01-27 | William H. Gates, III | Method and system for tracking clients |
ATE368253T1 (de) * | 1999-02-03 | 2007-08-15 | Gates William H Iii | Verfahren und system zur klientenverfolgung |
US6529962B1 (en) * | 1999-02-05 | 2003-03-04 | International Business Machines Corporation | Preserving thread identity during remote calls |
US6748455B1 (en) | 1999-02-23 | 2004-06-08 | Microsoft Corporation | Object connectivity through loosely coupled publish and subscribe events with filtering |
US6829770B1 (en) * | 1999-02-23 | 2004-12-07 | Microsoft Corporation | Object connectivity through loosely coupled publish and subscribe events |
US6757903B1 (en) * | 1999-04-05 | 2004-06-29 | Gateway, Inc. | Object driven software architecture method and apparatus |
US7010792B1 (en) * | 1999-04-05 | 2006-03-07 | Gateway Inc. | Method for managing interaction between information appliances and appliance services |
US6901518B1 (en) | 1999-04-08 | 2005-05-31 | Sun Microsystems, Inc. | Method and system for establishing trust in downloaded proxy code |
FR2792435B1 (fr) * | 1999-04-15 | 2001-07-13 | Cit Alcatel | Procede de modification d'un protocole entre objets distribues |
US8346971B2 (en) | 1999-05-04 | 2013-01-01 | At&T Intellectual Property I, Lp | Data transfer, synchronising applications, and low latency networks |
US6539374B2 (en) | 1999-06-03 | 2003-03-25 | Microsoft Corporation | Methods, apparatus and data structures for providing a uniform representation of various types of information |
US6778971B1 (en) | 1999-06-03 | 2004-08-17 | Microsoft Corporation | Methods and apparatus for analyzing computer-based tasks to build task models |
US6606613B1 (en) | 1999-06-03 | 2003-08-12 | Microsoft Corporation | Methods and apparatus for using task models to help computer users complete tasks |
US6330554B1 (en) | 1999-06-03 | 2001-12-11 | Microsoft Corporation | Methods and apparatus using task models for targeting marketing information to computer users based on a task being performed |
US6845393B1 (en) | 1999-06-14 | 2005-01-18 | Sun Microsystems, Inc. | Lookup discovery service in a distributed system having a plurality of lookup services each with associated characteristics and services |
US6877163B1 (en) | 1999-06-14 | 2005-04-05 | Sun Microsystems, Inc. | Method and system for dynamic proxy classes |
US6356933B2 (en) * | 1999-09-07 | 2002-03-12 | Citrix Systems, Inc. | Methods and apparatus for efficiently transmitting interactive application data between a client and a server using markup language |
US6748555B1 (en) * | 1999-09-09 | 2004-06-08 | Microsoft Corporation | Object-based software management |
US6438560B1 (en) * | 1999-09-16 | 2002-08-20 | International Business Machines Corporation | Reuse of immutable objects during object creation |
US7120899B1 (en) * | 1999-10-21 | 2006-10-10 | Unisys Corporation | Method for implementing component object model interfaces |
US20040255043A1 (en) * | 1999-11-10 | 2004-12-16 | Randy Salo | Data transmission architecture for secure remote access to enterprise networks |
US6947965B2 (en) | 1999-11-30 | 2005-09-20 | Recursion Software, Inc. | System and method for communications in a distributed computing environment |
US6678743B1 (en) | 1999-11-30 | 2004-01-13 | Recursion Software, Inc. | Method for moving objects in a distributed computing environment |
US6920636B1 (en) | 1999-12-15 | 2005-07-19 | Microsoft Corporation | Queued component interface passing for results outflow from queued method invocations |
US6728788B1 (en) * | 1999-12-16 | 2004-04-27 | International Business Machines Corporation | Method and system for converting a remote procedure call to a local procedure call when the service is on the same device as the calling client |
EP1122644A1 (en) * | 2000-01-14 | 2001-08-08 | Sun Microsystems, Inc. | A method and system for dynamically dispatching function calls from a first execution environment to a second execution environment |
EP1117033A1 (en) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Dynamic dispatch function |
EP1117035A1 (en) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Runtime environment component services |
EP1117220A1 (en) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Method and system for protocol conversion |
US7389284B1 (en) | 2000-02-29 | 2008-06-17 | Oracle International Corporation | Method and mechanism for efficient processing of remote-mapped queries |
US6973493B1 (en) | 2000-05-09 | 2005-12-06 | Sun Microsystems, Inc. | Mechanism and apparatus for security of newly spawned repository spaces in a distributed computing environment |
US7577834B1 (en) | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
US6862594B1 (en) | 2000-05-09 | 2005-03-01 | Sun Microsystems, Inc. | Method and apparatus to discover services using flexible search criteria |
US7260543B1 (en) | 2000-05-09 | 2007-08-21 | Sun Microsystems, Inc. | Automatic lease renewal with message gates in a distributed computing environment |
US8082491B1 (en) | 2000-05-09 | 2011-12-20 | Oracle America, Inc. | Dynamic displays in a distributed computing environment |
US7395333B1 (en) | 2000-05-09 | 2008-07-01 | Sun Microsystems, Inc. | Method and apparatus to obtain negotiated service advertisement |
US6789126B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Addressing message gates in a distributed computing environment |
US7243356B1 (en) | 2000-05-09 | 2007-07-10 | Sun Microsystems, Inc. | Remote method invocation with secure messaging in a distributed computing environment |
AU2001263033A1 (en) * | 2000-05-09 | 2001-11-20 | Sun Microsystems, Inc. | Method and apparatus for proximity discovery of services |
US7065574B1 (en) | 2000-05-09 | 2006-06-20 | Sun Microsystems, Inc. | Messaging system using pairs of message gates in a distributed computing environment |
US7080078B1 (en) | 2000-05-09 | 2006-07-18 | Sun Microsystems, Inc. | Mechanism and apparatus for URI-addressable repositories of service advertisements and other content in a distributed computing environment |
US6789077B1 (en) | 2000-05-09 | 2004-09-07 | Sun Microsystems, Inc. | Mechanism and apparatus for web-based searching of URI-addressable repositories in a distributed computing environment |
US6850979B1 (en) * | 2000-05-09 | 2005-02-01 | Sun Microsystems, Inc. | Message gates in a distributed computing environment |
US6643650B1 (en) | 2000-05-09 | 2003-11-04 | Sun Microsystems, Inc. | Mechanism and apparatus for using messages to look up documents stored in spaces in a distributed computing environment |
US7010573B1 (en) * | 2000-05-09 | 2006-03-07 | Sun Microsystems, Inc. | Message gates using a shared transport in a distributed computing environment |
US8001232B1 (en) | 2000-05-09 | 2011-08-16 | Oracle America, Inc. | Event message endpoints in a distributed computing environment |
US6917976B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Message-based leasing of resources in a distributed computing environment |
US7188251B1 (en) | 2000-05-09 | 2007-03-06 | Sun Microsystems, Inc. | System and method for secure message-based leasing of resources in a distributed computing environment |
US7016966B1 (en) * | 2000-05-09 | 2006-03-21 | Sun Microsystems, Inc. | Generating results gates in a distributed computing environment |
US7716492B1 (en) | 2000-05-09 | 2010-05-11 | Oracle America, Inc. | Method and apparatus to obtain service capability credentials |
US7370091B1 (en) | 2000-05-09 | 2008-05-06 | Sun Microsystems, Inc. | Method and apparatus for obtaining space advertisements |
US6950875B1 (en) | 2000-05-09 | 2005-09-27 | Sun Microsystems, Inc. | Message conductors in a distributed computing environment |
US7200848B1 (en) | 2000-05-09 | 2007-04-03 | Sun Microsystems, Inc. | Migrating processes using data representation language representations of the processes in a distributed computing environment |
US7072967B1 (en) | 2000-05-09 | 2006-07-04 | Sun Microsystems, Inc. | Efficient construction of message endpoints |
US8135796B1 (en) | 2000-05-09 | 2012-03-13 | Oracle America, Inc. | Mechanism and apparatus for accessing and addressing services in a distributed computing environment |
US6868447B1 (en) | 2000-05-09 | 2005-03-15 | Sun Microsystems, Inc. | Mechanism and apparatus for returning results of services in a distributed computing environment |
US6792466B1 (en) | 2000-05-09 | 2004-09-14 | Sun Microsystems, Inc. | Trusted construction of message endpoints in a distributed computing environment |
US6918084B1 (en) | 2000-05-09 | 2005-07-12 | Sun Microsystems, Inc. | Spawning new repository spaces using information provided in advertisement schema messages |
US6970869B1 (en) | 2000-05-09 | 2005-11-29 | Sun Microsystems, Inc. | Method and apparatus to discover services and negotiate capabilities |
US6898618B1 (en) | 2000-05-09 | 2005-05-24 | Sun Microsystems, Inc. | Client-specified display services in a distributed computing environment |
US6957237B1 (en) | 2000-06-02 | 2005-10-18 | Sun Microsystems, Inc. | Database store for a virtual heap |
US6760815B1 (en) * | 2000-06-02 | 2004-07-06 | Sun Microsystems, Inc. | Caching mechanism for a virtual heap |
US6865657B1 (en) | 2000-06-02 | 2005-03-08 | Sun Microsystems, Inc. | Garbage collector for a virtual heap |
US6854115B1 (en) | 2000-06-02 | 2005-02-08 | Sun Microsystems, Inc. | Process persistence in a virtual machine |
US6763440B1 (en) | 2000-06-02 | 2004-07-13 | Sun Microsystems, Inc. | Garbage collection using nursery regions for new objects in a virtual heap |
US6941410B1 (en) | 2000-06-02 | 2005-09-06 | Sun Microsystems, Inc. | Virtual heap for a virtual machine |
US20020065946A1 (en) * | 2000-10-17 | 2002-05-30 | Shankar Narayan | Synchronized computing with internet widgets |
US6754501B1 (en) | 2000-11-02 | 2004-06-22 | Motorola, Inc. | Media access adaptive control to improve system throughput |
US7346842B1 (en) | 2000-11-02 | 2008-03-18 | Citrix Systems, Inc. | Methods and apparatus for incorporating a partial page on a client |
US7194743B2 (en) * | 2000-12-12 | 2007-03-20 | Citrix Systems, Inc. | Methods and apparatus for communicating changes between a user interface and an executing application using property paths |
US7296275B2 (en) | 2001-01-04 | 2007-11-13 | Sun Microsystems, Inc. | Method and system for passing objects in a distributed system using serialization contexts |
US6842786B1 (en) * | 2001-02-09 | 2005-01-11 | Adobe Systems Incorporated | Method and apparatus for remote communication of data associated with dynamically generated type object at runtime to describe the data type |
US6996832B2 (en) * | 2001-05-30 | 2006-02-07 | Bea Systems, Inc. | System and method for software component plug-in framework |
US7428752B2 (en) * | 2001-06-01 | 2008-09-23 | Applications In Internet Time, Llc | Secure data accessing system and method |
US7647597B2 (en) * | 2001-06-28 | 2010-01-12 | Microsoft Corporation | Transparent and sub-classable proxies |
US20030028583A1 (en) * | 2001-07-31 | 2003-02-06 | International Business Machines Corporation | Method and apparatus for providing dynamic workload transition during workload simulation on e-business application server |
US7949668B2 (en) * | 2001-08-20 | 2011-05-24 | Pardalis, Inc. | Common point authoring system for the complex sharing of hierarchically authored data objects in a distribution chain |
US7136869B2 (en) * | 2001-08-20 | 2006-11-14 | Pardalis Software Inc. | Common point authoring system for tracking and authenticating objects in a distribution chain |
US6671696B1 (en) * | 2001-08-20 | 2003-12-30 | Pardalis Software, Inc. | Informational object authoring and distribution system |
US7103590B1 (en) * | 2001-08-24 | 2006-09-05 | Oracle International Corporation | Method and system for pipelined database table functions |
US20030051029A1 (en) * | 2001-09-07 | 2003-03-13 | Reedy Dennis G. | Dynamic provisioning of sevice components in a distributed system |
US7756969B1 (en) | 2001-09-07 | 2010-07-13 | Oracle America, Inc. | Dynamic provisioning of identification services in a distributed system |
US7660887B2 (en) * | 2001-09-07 | 2010-02-09 | Sun Microsystems, Inc. | Systems and methods for providing dynamic quality of service for a distributed system |
US7146617B2 (en) | 2001-09-29 | 2006-12-05 | Siebel Systems, Inc. | Method, apparatus, and system for implementing view caching in a framework to support web-based applications |
US8359335B2 (en) | 2001-09-29 | 2013-01-22 | Siebel Systems, Inc. | Computing system and method to implicitly commit unsaved data for a world wide web application |
US7203948B2 (en) * | 2001-09-29 | 2007-04-10 | Siebel Systems, Inc. | Method, apparatus, and system for implementing caching of view custom options in a framework to support web-based applications |
US6907451B1 (en) * | 2001-09-29 | 2005-06-14 | Siebel Systems, Inc. | Method, apparatus, and system for immediate posting of changes in a client server environment |
US7885996B2 (en) * | 2001-09-29 | 2011-02-08 | Siebel Systems, Inc. | Method, apparatus, and system for implementing notifications in a framework to support web-based applications |
US7870492B2 (en) * | 2001-10-02 | 2011-01-11 | Siebel Systems, Inc. | Method, apparatus, and system for managing commands in a client server environment |
US7000238B2 (en) * | 2001-10-10 | 2006-02-14 | Borland Software Corporation | Development system providing extensible remoting architecture |
DE10157633A1 (de) * | 2001-11-26 | 2003-08-28 | Siemens Ag | Medizinische Systemarchitektur mit einer komponentenorientierten Architektur zur Befundung und Dokumentation |
US7051341B2 (en) | 2001-12-14 | 2006-05-23 | International Business Machines Corporation | Method, system, and program for implementing a remote method call |
US7290267B2 (en) * | 2002-01-23 | 2007-10-30 | International Business Machines Corporation | Multi-protocol object distribution |
US7516447B2 (en) * | 2002-02-22 | 2009-04-07 | Bea Systems, Inc. | Methods and apparatus for building, customizing and using software abstractions of external entities |
US7610351B1 (en) * | 2002-05-10 | 2009-10-27 | Oracle International Corporation | Method and mechanism for pipelined prefetching |
US6973457B1 (en) | 2002-05-10 | 2005-12-06 | Oracle International Corporation | Method and system for scrollable cursors |
US7685287B2 (en) * | 2002-05-30 | 2010-03-23 | Microsoft Corporation | Method and system for layering an infinite request/reply data stream on finite, unidirectional, time-limited transports |
US7234109B2 (en) * | 2002-11-19 | 2007-06-19 | Microsoft Corp. | Equality of extensible markup language structures |
US7523169B1 (en) | 2003-02-28 | 2009-04-21 | Verizon Data Services Llc | Method and system for mapping network data for network database access |
US7197512B2 (en) * | 2003-03-26 | 2007-03-27 | Microsoft Corporation | Type bridges |
US7792874B1 (en) | 2004-01-30 | 2010-09-07 | Oracle America, Inc. | Dynamic provisioning for filtering and consolidating events |
WO2005114953A1 (en) * | 2004-05-21 | 2005-12-01 | Computer Associates Think, Inc. | Method and apparatus for remote management |
US8578399B2 (en) * | 2004-07-30 | 2013-11-05 | Microsoft Corporation | Method, system, and apparatus for providing access to workbook models through remote function cells |
KR101122807B1 (ko) * | 2004-09-14 | 2012-03-21 | 마이크로소프트 코포레이션 | 임의의 기하학적 경로에 동작하는 함수들 |
US7636888B2 (en) * | 2005-03-15 | 2009-12-22 | Microsoft Corporation | Verifying compatibility between document features and server capabilities |
US20060282460A1 (en) * | 2005-06-09 | 2006-12-14 | International Business Machines Corporation | Method and system for generic data objects |
US8478300B2 (en) * | 2005-12-20 | 2013-07-02 | Microsoft Corporation | Proximity service discovery in wireless networks |
US8559350B2 (en) | 2005-12-20 | 2013-10-15 | Microsoft Corporation | Mechanism to convey discovery information in a wireless network |
US7865583B2 (en) | 2006-03-31 | 2011-01-04 | The Invention Science Fund I, Llc | Aggregating network activity using software provenance data |
US10681151B2 (en) | 2006-05-15 | 2020-06-09 | Microsoft Technology Licensing, Llc | Notification framework for wireless networks |
US7587694B1 (en) | 2006-07-21 | 2009-09-08 | Ciranova, Inc. | System and method for utilizing meta-cells |
US7698662B1 (en) * | 2006-07-21 | 2010-04-13 | Ciranova, Inc. | System and method for proxied evaluation of PCells |
US20080201481A1 (en) * | 2007-02-20 | 2008-08-21 | Microsoft Corporation | Remote interface marshalling |
CN100578458C (zh) | 2007-03-22 | 2010-01-06 | 华为技术有限公司 | 分布式系统中的调用请求处理方法及分布式系统和服务器 |
CN101304350B (zh) * | 2007-05-11 | 2013-02-13 | 华为技术有限公司 | 访问家庭网络设备的方法、系统和家庭网络接入设备 |
US7971175B2 (en) * | 2007-06-27 | 2011-06-28 | Cadence Design Systems, Inc. | Method and system for implementing cached parameterized cells |
US7949987B1 (en) | 2008-02-08 | 2011-05-24 | Cadence Design Systems, Inc. | Method and system for implementing abstract layout structures with parameterized cells |
US9105031B2 (en) * | 2008-02-22 | 2015-08-11 | Microsoft Technology Licensing, Llc | Authentication mechanisms for wireless networks |
US8364656B2 (en) * | 2008-10-31 | 2013-01-29 | Cadence Design Systems, Inc. | Method and system for implementing multiuser cached parameterized cells |
US9021510B2 (en) | 2009-12-04 | 2015-04-28 | International Business Machines Corporation | Remote procedure call (RPC) bind service with physical interface query and selection |
US8266639B2 (en) * | 2009-12-04 | 2012-09-11 | International Business Machines Corporation | Remote procedure call (RPC) bind service with physical interface query and selection |
US9116778B2 (en) | 2010-04-29 | 2015-08-25 | Microsoft Technology Licensing, Llc | Remotable project |
US9674637B2 (en) | 2011-06-16 | 2017-06-06 | Microsoft Technology Licensing, Llc | Object marshaling |
US8863129B2 (en) | 2011-12-06 | 2014-10-14 | International Business Machines Corporation | Automated caching and mirroring of immutable data in distributed virtual machines via native interface components |
US8584105B1 (en) * | 2011-12-12 | 2013-11-12 | Google Inc. | Javascript application programming interfaces for independently compiled javascript binaries |
US9176712B2 (en) | 2013-03-14 | 2015-11-03 | Oracle International Corporation | Node Grouped Data Marshalling |
US9870266B2 (en) * | 2015-07-30 | 2018-01-16 | Nasdaq, Inc. | Background job processing framework |
US11314718B2 (en) | 2019-11-21 | 2022-04-26 | International Business Machines Corporation | Shared disk buffer pool update and modification |
US11469890B2 (en) * | 2020-02-06 | 2022-10-11 | Google Llc | Derived keys for connectionless network protocols |
CN113515389B (zh) * | 2020-04-09 | 2024-03-01 | 奇安信安全技术(珠海)有限公司 | 中间接口的调用方法及装置、系统、存储介质、电子装置 |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5062040A (en) * | 1986-12-22 | 1991-10-29 | At&T Bell Laboratories | Handling of notification of asynchronous events by user and stub processes of a distributed process executing on a plurality of processors of a multi-processor system |
CA1293042C (en) * | 1988-02-04 | 1991-12-10 | Ian Macmillan | Communication system supporting remote operations |
US5430876A (en) * | 1989-06-27 | 1995-07-04 | Digital Equipment Corporation | Remote procedure callback system and method |
US5187790A (en) * | 1989-06-29 | 1993-02-16 | Digital Equipment Corporation | Server impersonation of client processes in an object based computer operating system |
US5218699A (en) * | 1989-08-24 | 1993-06-08 | International Business Machines Corporation | Remote procedure calls in heterogeneous systems |
DE4131380A1 (de) * | 1991-09-20 | 1993-03-25 | Siemens Ag | Verfahren zur adaption einer objektorientierten applikation |
DE69329577T2 (de) * | 1992-07-01 | 2001-05-31 | Ericsson Telefon Ab L M | Verfahren und system für implementierung-unabhängige schnittstellenspezifikation |
US5307490A (en) * | 1992-08-28 | 1994-04-26 | Tandem Computers, Inc. | Method and system for implementing remote procedure calls in a distributed computer system |
US5526491A (en) * | 1992-09-22 | 1996-06-11 | International Business Machines Corporation | System and method for calling selected service procedure remotely by utilizing conditional construct switch statement to determine the selected service procedure in common stub procedure |
US5329619A (en) * | 1992-10-30 | 1994-07-12 | Software Ag | Cooperative processing interface and communication broker for heterogeneous computing environments |
DE9306548U1 (de) * | 1993-04-30 | 1993-11-04 | Ernst Vogelsang GmbH, 58849 Herscheid | Niedrig-Kopfplatte für Doppelbodenstützen |
US5377350A (en) * | 1993-04-30 | 1994-12-27 | International Business Machines Corporation | System for cooperative communication between local object managers to provide verification for the performance of remote calls by object messages |
CA2107299C (en) * | 1993-09-29 | 1997-02-25 | Mehrad Yasrebi | High performance machine for switched communications in a heterogenous data processing network gateway |
US5517645A (en) * | 1993-11-05 | 1996-05-14 | Microsoft Corporation | Method and system for interfacing components via aggregate components formed by aggregating the components each with an instance of a component manager |
-
1993
- 1993-11-12 DE DE69309485T patent/DE69309485T2/de not_active Expired - Lifetime
- 1993-11-12 EP EP94901451A patent/EP0669020B1/en not_active Expired - Lifetime
- 1993-11-12 JP JP6512381A patent/JPH09502547A/ja active Pending
- 1993-11-12 WO PCT/US1993/010965 patent/WO1994011810A1/en active IP Right Grant
- 1993-11-29 US US08/158,627 patent/US5511197A/en not_active Expired - Lifetime
-
1995
- 1995-06-07 US US08/485,046 patent/US5724588A/en not_active Expired - Lifetime
-
2002
- 2002-08-12 JP JP2002235096A patent/JP3822541B2/ja not_active Expired - Lifetime
Also Published As
Publication number | Publication date |
---|---|
EP0669020A1 (en) | 1995-08-30 |
US5724588A (en) | 1998-03-03 |
JP2003140898A (ja) | 2003-05-16 |
DE69309485D1 (de) | 1997-05-07 |
WO1994011810A1 (en) | 1994-05-26 |
US5511197A (en) | 1996-04-23 |
EP0669020B1 (en) | 1997-04-02 |
DE69309485T2 (de) | 1997-07-10 |
JPH09502547A (ja) | 1997-03-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP3822541B2 (ja) | オブジェクトインターフェイスにポインタをパスするためのコンピュータシステム | |
CA2049125C (en) | Methods and apparatus for implementing server functions in a distributed heterogeneous environment | |
US5802367A (en) | Method and system for transparently executing code using a surrogate process | |
AU638138B2 (en) | Methods and apparatus for implementing data bases to provide object-oriented invocation of applications | |
JP4322967B2 (ja) | オブジェクト集合方法及びシステム | |
US5608909A (en) | Method and system for caching presentation data of a source object in a presentation cache | |
JP3868013B2 (ja) | コードのリモート実行方法およびシステム | |
US5911068A (en) | Container independent control architecture | |
US5341478A (en) | Methods and apparatus for providing dynamic invocation of applications in a distributed heterogeneous environment | |
EP0474339B1 (en) | Methods and apparatus for providing a client interface to an object-oriented invocation of an application | |
US8205213B2 (en) | Method and apparatus for dynamically brokering object messages among object models | |
US6321275B1 (en) | Interpreted remote procedure calls | |
JP4070248B2 (ja) | オブジェクト接続を動的に発生する方法及びシステム | |
US6941561B1 (en) | Method and apparatus for remotely running objects using data streams and/or complex parameters | |
US6438616B1 (en) | Method and apparatus for fast, local corba object references | |
US6415334B1 (en) | Method and system for accessing objects of different thread types | |
US6708196B1 (en) | Method and system for caching presentation data | |
US6981255B2 (en) | Method and system for accessing objects of different thread types | |
JP3672334B2 (ja) | オブジェクト集合方法およびシステム | |
Guide | PV-WAVE® |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A131 | Notification of reasons for refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A131 Effective date: 20031215 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20040315 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20040318 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20040615 |
|
A02 | Decision of refusal |
Free format text: JAPANESE INTERMEDIATE CODE: A02 Effective date: 20040712 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20041022 |
|
RD02 | Notification of acceptance of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7422 Effective date: 20041022 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20041111 |
|
RD13 | Notification of appointment of power of sub attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7433 Effective date: 20041111 |
|
RD04 | Notification of resignation of power of attorney |
Free format text: JAPANESE INTERMEDIATE CODE: A7424 Effective date: 20041022 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A821 Effective date: 20041111 |
|
A911 | Transfer of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A911 Effective date: 20050126 |
|
A912 | Removal of reconsideration by examiner before appeal (zenchi) |
Free format text: JAPANESE INTERMEDIATE CODE: A912 Effective date: 20050218 |
|
A601 | Written request for extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A601 Effective date: 20060130 |
|
A602 | Written permission of extension of time |
Free format text: JAPANESE INTERMEDIATE CODE: A602 Effective date: 20060203 |
|
A521 | Written amendment |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20060428 |
|
A61 | First payment of annual fees (during grant procedure) |
Free format text: JAPANESE INTERMEDIATE CODE: A61 Effective date: 20060622 |
|
R150 | Certificate of patent or registration of utility model |
Free format text: JAPANESE INTERMEDIATE CODE: R150 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20100630 Year of fee payment: 4 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110630 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20110630 Year of fee payment: 5 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120630 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20120630 Year of fee payment: 6 |
|
FPAY | Renewal fee payment (event date is renewal date of database) |
Free format text: PAYMENT UNTIL: 20130630 Year of fee payment: 7 |
|
EXPY | Cancellation because of completion of term |