(57)【要約】      （修正有）【課題】コンピュータサーバを必要とせずに、異なるマシン上に存在するオブジェクトを共有する。【解決手段】第２のコンピュータは第１のコンピュータにコンテキストに結合するための要求を送付する。第２のコンピュータがコンテキストに結合する許可を有している場合には、コンテキストを含んだメッセージを第２のコンピュータに送出する。これらのオブジェクトは、インターネットなどのコンピュータネットワークを使用することによりアクセスすること、および共有することが可能である。ピアツーピア、あるいはマルチポイントコンピュータネットワークのように動作する。【選択図】図３
2005316993.tif 000002
【特許請求の範囲】
【請求項１】
一意識別子を有するコンテキストを創成するステップと、
第１のコンピュータと共にコンテキストに結合するために第２のコンピュータから要求を受け取るステップと、
前記第２のコンピュータが、前記コンテキストに結合する許可を有しているか否かを判定するステップと、
前記第１のコンピュータが許可を有している場合には、コンテキストデータを含んだメッセージを前記第２のコンピュータに送出するステップと、
を具備したことを特徴とする、コンピュータの間でプログラミングオブジェクトを共有する方法。
【請求項２】
前記コンテキストに結合するために第２のコンピュータから要求を受け取るステップは、サーバを備えた前記第２のコンピュータから要求を受け取るステップを含んでいる、ことを特徴とする請求項１に記載の方法。
【請求項３】
前記コンテキストに結合するために第２のコンピュータから要求を受け取るステップは、サーバのクライアントを備えた前記第２のコンピュータからの要求を受け取るステップを含んでおり、該サーバは、前記第１のコンピュータではなく前記第２のコンピュータのみに関連付けられている、ことを特徴とする請求項１に記載の方法。
【請求項４】
前記コンテキストに結合するために第２のコンピュータから要求を受け取るステップは、前記第１のコンピュータを備えたコンピュータネットワークの一部である前記第２のコンピュータから要求を受け取るステップを含んでいる、ことを特徴とする請求項１に記載の方法。
【請求項５】
前記コンテキストデータを含んだメッセージを前記第２のコンピュータに送出するステップは、チャットルームアプリケーション、文書処理プログラム、スプレッドシートプログラム、スライドプレゼンテーションプログラム、およびゲームプログラムのうちの１つに関連した情報を送出するステップを備えている、ことを特徴とする請求項１に記載の方法。
【請求項６】
前記コンテキストデータを含んだメッセージを前記第２のコンピュータに送出するステップは、リアルタイムコラボレーションに関連した情報を送出するステップを備えている、ことを特徴とする請求項１に記載の方法。
【請求項７】
前記コンテキストに結合するために第２のコンピュータから要求を受け取るステップは、携帯型コンピュータを含んだ第２のコンピュータから要求を受け取るステップを備え、前記第１のコンピュータはデスクトップおよびラップトップのうちの１つを含む、ことを特徴とする請求項１に記載の方法。
【請求項８】
完全順序付けされたパケットを有するメッセージを発生するステップをさらに備える、ことを特徴とする請求項１に記載の方法。
【請求項９】
完全順序付けされたパケットを有するメッセージを発生するステップをさらに備え、前記完全順序付けされたパケットは、前記コンテキストデータ、および該コンテキストの一部である１つまたは複数のノードからの最終パケット番号のリストを含む、ことを特徴とする請求項１に記載の方法。
【請求項１０】
前記第２のコンピュータでパケットを受け取るステップと、
前記第２のコンピュータにより受け取られた前記パケットが前記コンテキストデータを基準としていつ作成されたかを判定するステップと、
をさらに備える、ことを特徴とする請求項１に記載の方法。
【請求項１１】
入力を受け取り出力を提供するために、コンピュータの間で共有されるアプリケーションプログラムと、
前記アプリケーションプログラムにより行われる機能呼び出しを支援すると共に、ネットワークに接続されている他のコンピュータによりアクセス可能であるシステムネットワークオブジェクトと、
前記システムネットワークオブジェクトがサーバコンピュータおよび非サーバコンピュータのいずれに存在するかに拘わりなく、ネットワーク中に分散されている前記システムネットワークオブジェクト間で通信を確立し且つ維持するためのトランスポートアブストラクション層とを具備し、
リアルタイムコラボレーションを行うコンピュータプリケーションの支援をするためのシステム。
【請求項１２】
前記トランスポートアブストラクション層は、１組のインターフェースを備えている、ことを特徴とする請求項１１に記載のシステム。
【請求項１３】
前記システムネットワークオブジェクトは、コンテキストの一部である、ことを特徴とする請求項１１に記載のシステム。
【請求項１４】
前記コンテキストは、複数あるシステムネットワークオブジェクト間の関係、ならびに、前記オブジェクトのコピーおよび前記オブジェクトへのアクセスのうちの１つを持つ場合があるコンピュータ間の関係、の１つまたは複数を追跡する情報を備えている、ことを特徴とする請求項１３に記載のシステム。
【請求項１５】
前記アプリケーションプログラムは、チャットルームアプリケーション、文書処理プログラム、スプレッドシートプログラム、スライドプレゼンテーションプログラム、およびゲームプログラムのうちの１つを備えている、ことを特徴とする請求項１１に記載のシステム。
【請求項１６】
前記アプリケーションプログラムは、リアルタイムコラボレーションプログラムを備えている、ことを特徴とする請求項１１に記載のシステム。
【請求項１７】
前記ネットワークに接続されている前記コンピュータは、少なくとも１つのコンピュータサーバ、および、少なくとも１つのピアツーピアネットワークを備えている、ことを特徴とする請求項１１に記載のシステム。
【請求項１８】
前記ネットワークに接続されている前記コンピュータは、ピアツーピアネットワークの一部である、ことを特徴とする請求項１１に記載のシステム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明はネットワーク上でのコンピュータ間の情報共有(sharing information)に関連し、より詳細には、コンピュータ間でコンピュータオブジェクト(computer object)を共有することを可能とするピアツーピア(peer-to-peer)ネットワーク、あるいはマルチポイント(multipoint)ネットワークに関する。
【背景技術】
【０００２】
従来のコンピュータオブジェクトの共有環境(sharing environment)では、クライアント(client)コンピュータがプログラムを実行するか、あるいはデータを検索するために、中央サーバ(central server)にアクセスするクライアントサーバアーキテクチャ(client-server architecture)を通常使用する。クライアントサーバアーキテクチャは、ソフトウェアがサーバタスク(server task)とクライアントタスク(client task)の間で分割(split)される分散計算システムの一般的な様式である。クライアントは、何らかのプロトコルに従い、情報あるいは動作を要求して、サーバに要求を送ることが可能であり、サーバはこの要求に応じることが可能である。
【０００３】
クライアントサーバのモデルは、商品およびインボイスを発送（応答）する供給者（サーバ）にある注文様式にて注文を送付（要求）する顧客（クライアント）に類似している。注文様式およびインボイスは、この場合、通信するために使用される「プロトコル(protocol)」の一部である。
【０００４】
ここで図１を参照すると、第１、第２、および第３のクライアントコンピュータ１１０Ａ、１１０Ｂ、および１１０Ｃに対して、サーバ１０５が、サーバ１０５に存在するネットワーク化されたオブジェクト１１５へのアクセスを提供する、従来のクライアントサーバアーキテクチャ１００を図示する。この例示的クライアントサーバアーキテクチャ１００によると、このネットワークでの第１のコンピュータ１１０Ａが第２のコンピュータ１１０Ｂにビデオファイルを送ろうとする場合、第１のコンピュータ１１０Ａはそのファイルをサーバ１０５に転送する必要がある。サーバ１０５は次に第２のコンピュータ１１０Ｂにビデオファイルを転送するであろう。このファイル転送のシナリオでは、サーバ１０５が第１のコンピュータと第２のコンピュータ１１０Ａと１１０Ｂの間の情報の転送を減速させることになる。
【０００５】
別の例示的シナリオによると、コンピュータ１１０の１つが、サーバ１０５に存在しているネットワーク化されたオブジェクト１１５を変更しようとする場合に、コンピュータ１１０は、その変更が行われたことを確認するためにそのサーバ１０５がそのコンピュータ１１０にメッセージを戻すのを待たねばならない。この待っている時間期間は待機時間（latency）と呼ばれる場合がある。ネットワーク化されたオブジェクト１１５への瞬時的な変更が望まれるときには、待機時間は厄介な問題になり得る。たとえば、音声やコンピュータのデータを含む情報の「生（live）」の変更あるいは分配が必要である、チャットプログラムあるいはプレゼンテーションアプリケーションなどの実時間の協調的アプリケーションに対して、待機時間の存在が、まさに致命的であることが有り得る。
【０００６】
ピアツーピア(peer-to-peer)プログラミング(programming)アプリケーション(application)はもちろん、従来のクライアントサーバアーキテクチャ１００に関連付けられる別の問題は、ネットワーク化されたオブジェクトを使用するプログラムを書く場合に、このネットワーク化されたオブジェクトに関して通信が行われるコンピュータアーキテクチャのタイプが特定されねばならないということである。言い換えれば、ネットワーク化されたオブジェクトがクライアントサーバアーキテクチャ１００の中で、あるいはピアツーピアネットワーク（図１では、図示されていない）の中で共有されるかどうかを識別せねばならない。これは、従来の技術では、ネットワーク化されたオブジェクトにアクセスし、操作するために、どんな通信プロトコルが使用されるかを識別せねばならないことを意味する。
【０００７】
従来技術に関連付けられたさらなる問題は、ネットワーク化されたオブジェクトは、いずれのコンピュータコードを書くときにも、特定のネットワークに対する通信プロトコルのタイプを識別し、指定しなければならないため、１つのタイプのコンピュータアーキテクチャの中でのみ共有可能であって、異なるタイプのネットワークアーキテクチャ間では共有できない、ということである。このことは、ネットワーク化されたオブジェクトがピアツーピアネットワークおよびクライアントサーバネットワークの両方に亘って共有される場合には、従来のコンピュータプログラムでプログラムを書くことができないことを意味する。従来のコンピュータプログラムでは両方のタイプのコンピュータアーキテクチャではなく、１つだけを特定せねばならない。
【発明の開示】
【発明が解決しようとする課題】
【０００８】
したがって、異なるアーキテクチャに亘って通信するために必要とされる通信プロトコルを特定することなく、ネットワークベースのオブジェクト(network-based object)を、クライアントサーバアーキテクチャおよびピアツーピアタイプアーキテクチャの両方などのような異なったタイプのコンピュータアーキテクチャを介して、共有することが可能な方法およびシステムが必要である。さらに、コンピュータ間のリアスタイム通信を改良するために、コンピュータ間におけるネットワークベースのオブジェクトを共有する場合にしばしば関連付けられた待機時間を、実質的に減少するか、あるいは削除することを求める必要性が、当技術分野では存在している。また、ホストとして任意のネットワークベースのオブジェクトを処理するコンピュータアーキテクチャのタイプの如何にかかわらず、標準のオブジェクト指向(object-oriented)技術を使用してコンピュータプログラムを書くことを可能とする、別の必要性が当技術分野には存在している。
【課題を解決するための手段】
【０００９】
本発明では、異なるマシン上に存在し、かつインターネットなどのコンピュータネットワーク上でアクセス可能な場合がある、オブジェクトを共有するための方法およびシステムを含む。オブジェクトは、アプリケーションプログラミングインターフェース（Application Programming Interface：ＡＰＩ）、プログラミングオブジェクトライブラリ、コンピュータのプログラムオブジェクト定義、およびコンピュータネットワーク化されたアプリケーションに対する他の同様な情報を、限定的ではなく含む場合がある、コンピュータプログラミングのオブジェクトを含む。このシステムおよび方法により、コンピュータネットワークに接続された異なるコンピュータ上に存在する、ネットワークベースのオブジェクトを呼び出すコンピュータプログラムを書くことができる。
【００１０】
さらに、本発明はピアツーピアコンピュータネットワークのように動作できるので、本発明の１つの利点は、コンピュータサーバを必要としないということである。本発明の別の利点は、たとえピアコンピュータ(peer computer)がコンピュータサーバであっても、ピアコンピュータを同じ方法で扱うことが可能であるということである。言い換えれば、本発明はサーバ型のコンピュータであるか、あるいは非サーバ（クライアント）であるかを識別することをコンピュータに要求することなく、ピアツーピアネットワークおよびクライアントサーバネットワークの両方で動作可能である。
【００１１】
本発明に対するアプリケーションにはリアルタイムのコラボレーション（Real Time Collaboration：ＲＴＣ）を含めることが可能であり、ネットワーク上で接続されたコンピュータが、通信し、かつリアルタイムで、そして従来のクライアントサーバアーキテクチャと比較するとほとんど同時に、情報を共有することを可能とする。例示的ＲＴＣアプリケーションには、限定的ではないが、以下の例を含めることができる。すなわち、異なる複数のコンピュータ上に存在する場合があるチャットプログラムでの情報交換、異なる複数のコンピュータ上に存在する場合がある文書処理プログラム間でのドキュメントの共有、異なる複数のコンピュータ上に存在する場合があるスプレッドシートプログラム間でのスプレッドシート書の共有、異なる複数のコンピュータ上に存在する場合があるプレゼンテーションアプリケーション間での表示の共有、異なる複数のコンピュータ上に存在する場合があるゲームプログラム間でのデータの共有、および異なるいくつかのコンピュータ間でリアルタイムでデータを共有することが有利である他の同様なＲＴＣアプリケーションがある。
【００１２】
ネットワークにおいて、コンピュータ間での情報のこの共有を提供するために、ＲＴＣアプリケーションを支援する、ネットワークベースのオブジェクト、あるいは共有されたオブジェクトがそれぞれのコンピュータ上に通常存在する。しかしながらある状況では、ネットワークベースのオブジェクトを使用する必要がある場合がある第１のコンピュータがネットワークベースのオブジェクトのコピーを持たない場合があり、そして、第２のコンピュータ上に存在する場合があるネットワークベースのオブジェクトへのアクセス権をその第１のコンピュータに与える場合がある。第１のコンピュータが携帯情報端末（Personal Digital Assistant：ＰＤＡ）のような、携帯型コンピュータであるかもしれない場合の第１のコンピュータがメモリ量を制限されているときには、ネットワークベースのオブジェクトのこのような共有が起こり得る。
【００１３】
コンピュータプログラムがネットワークベースのオブジェクト(network-based object)を呼び出すと、そのプログラムを実行しようとしているコンピュータがその特定のネットワークベースのオブジェクトにアクセスすることを許可されているかどうか判定するために、セキュリティチェック(security check)を実行することが可能である。たとえば、また、そのコンピュータ上にローカルに格納している場合があるネットワークベースのオブジェクトにアクセスすることが許可されているかを判定するために、そのプログラムを実行しようとしているそのコンピュータの中で、セキュリティチェックをローカルに実行することが可能である。そのプログラムを実行しようとしているコンピュータがネットワークベースのオブジェクトにアクセスすることを許可されているか判定するために、ネットワーク化されたそのオブジェクトのコピーを持っている他のコンピュータに対して、ネットワークを通してセキュリティチェックを実行することも、同様にまた可能である。
【００１４】
ネットワークベースのオブジェクトを呼び出すコンピュータがネットワークベースのオブジェクトにアクセスする許可を持っている場合、そのコンピュータは、ネットワークに亘って異なるコンピュータ上に存在する場合がある同一のオブジェクトのすべてと、自身のメモリに存在するネットワークベースのオブジェクトを同期化することが可能である。このようにして、特定のネットワークベースのオブジェクトへのアクセス権、およびそのコピーを有するそれぞれのコンピュータは、そのネットワークベースのオブジェクトに対して為され得る最新の更新（更新はリアルタイムで行われ得る）のすべてを受けることができる。
【００１５】
ネットワークベースのオブジェクトを使用するコンピュータのプログラミングアプリケーションに対して、オブジェクトクラス(object class)（そのクラスはネットワークベースのオブジェクトを含み得る）が創成されると、任意のネットワークベースのオブジェクトをも含む、そのクラスのすべてのオブジェクトで動作するべく、標準のオブジェクト指向技術を使用することが可能である。本発明のシステムおよび方法は、ネットワークベースのオブジェクトに対して為されるメソッド呼び出しを遮断し、そのネットワークベースのオブジェクトのネットワーク属性に従って、メソッド呼び出しを処理することが可能である。
【００１６】
たとえば、呼び出しをしつつあるコンピュータ上に存在している場合があるネットワークベースのオブジェクトへの呼び出しは、そのネットワークベースのオブジェクトのコピーを持ち、かつその確認証明の提供を要求されている、他のすべてのコンピュータが確認証明を受け取るまで実行できず、あるいは完了できない場合がある。その呼び出しが、そのメソッドのステップが特定の順番で生起せねばならない完全に順序付けられたメソッドを有するネットワークベースのオブジェクトに対するものである場合には、そのネットワークベースのオブジェクトのコピーを有する他のすべてのコンピュータについて、その呼び出しが、ネットワークベースのオブジェクトを呼び出しつつあるコンピュータ上で実行されるか、あるいはローカルに始められる前にその順番に従う必要がある場合がある。
【００１７】
ネットワークベースのオブジェクトを管理し、追跡するために、本発明のシステムはコンテキストを使用することが可能である。システムのそれぞれのネットワークベースのオブジェクトは１つの関連付けられたコンテキストを持つことが可能である。そして、それぞれのネットワークベースのオブジェクトは１つのコンテキストの一部となり得る。それぞれのコンテキストは、複数のシステムネットワークオブジェクト間の関係、およびそれらのオブジェクトのコピー、および／またはそれらのオブジェクトへのアクセス権を持つ場合があるコンピュータ間の関係、の1つまたは複数を追跡する情報を含むことが可能である。
【００１８】
それぞれのコンテキストは、どのコンピュータが１つまたは複数の特定のネットワークベースのオブジェクトを有するか、を識別可能であり、そしてこのことが特定のコンテキストの一部であるそのネットワークベースのオブジェクトを管理するために役立つ可能性がある。コンテキストの一部をなすそれぞれのコンピュータが、そのコンテキストを構成している場合がある１つまたは複数のネットワークベースのオブジェクトの同一バージョンを持つことを確実にするために、そのコンテキストが役立つ可能性がある。それぞれのコンテキストは、どのコンピュータがコンテキストリストの中の、ある特定のネットワークベースのオブジェクトにアクセスできるか、および、どのコンピュータがコンテキスト中のオブジェクトを変更することができるかの判定に役立たせるためにセキュリティサブリストを持つことが可能である。
【００１９】
コンテキストは異なる状態を持つことが可能である。「休止状態(dormant state)」は、特定のコンテキストの一部であるネットワークベースのオブジェクトを有するコンピュータがそのネットワークベースのオブジェクトを使用していない場合があることを意味する。「アクティブ状態(active state)」は、そのネットワークベースのオブジェクトを有するコンピュータが何らかの形でそのネットワークベースのオブジェクトを使用しており、かつそのネットワークベースのオブジェクトに関する通信がそのコンテキストに存在するコンピュータの間で生起していることを意味する。
【００２０】
ネットワークオブジェクトの一貫性および正当性が維持されるように、このシステムおよび方法ではまた、コンテキストにおけるコンピュータの間の様々な通信の間に、全体的に順序付けられたパケットを使用することが可能である。
【発明の効果】
【００２１】
この方法およびシステムにより、異なるコンピュータ上に存在する場合があるオブジェクトを共有することが可能になる。インターネットなどのコンピュータネットワークを使用して、これらのオブジェクトにアクセスし、これを共有することが可能になる。オブジェクトはコンピュータのプログラミングオブジェクトを包含することが可能であり、アプリケーションプログラミングインターフェース（Application Programming Interface：ＡＰＩ）、プログラミングオブジェクトライブラリ、コンピュータプログラムのオブジェクト定義、およびコンピュータネットワーク化されたアプリケーションに対する他の同様な情報を、限定的ではなく、含む場合がある。この方法およびシステムは、従来のクライアントサーバアーキテクチャの代わりに、ピアツーピアあるいはマルチポイントコンピュータネットワークのように動作する。
【００２２】
この方法およびシステムは、ネットワークにおけるコンピュータが、サーバ型として、あるいは、非サーバ（クライアント）型のコンピュータとして識別される必要はなく、ピアツウピアネットワーク、およびクライアントサーバネットワークの両方で動作することが可能である。この方法およびシステムに対するアプリケーションにはリアルタイムのコラボレーション（Real Time Collaboration：ＲＴＣ）アプリケーションが含まれ得る。ネットワーク上で接続されたコンピュータが、リアルタイムでかつほとんど同時に、情報を通信し、共有することを可能とすることができる。
【発明を実施するための最良の形態】
【００２３】
（例示的動作環境）
本発明の例示的実施形態については、以下に図面を参照して記述され、そこでは、いくつかの図面を通して同様の数字が同様の要素を表す。図２は本発明の実施例に対する例示的動作環境２００を図示する。
【００２４】
この例示的動作環境２００は従来のパーソナルコンピュータ１２０の形態の汎用計算機器を含む。一般に、パーソナルコンピュータ１２０は、処理ユニット１２１、システムメモリ１２２、およびシステムメモリ１２２を含む様々なシステムコンポーネントを処理ユニット１２１に接続するシステムバス１２３を含む。システムバス１２３は、メモリバスあるいはメモリ制御装置、周辺バス、およびさまざまな任意のバス構成を使用するローカルバスを含むいくつかのタイプの任意のバス構造である場合がある。システムメモリは、読み出し専用メモリ（read-only memory：ＲＯＭ）１２４、およびランダムアクセスメモリ（random access memory：ＲＡＭ）１２５を含む。基本入出力システム（Basic Input/Output System：ＢＩＯＳ）１２６は、起動時などにパーソナルコンピュータ１２０の中の要素間で情報を転送するのに役立つ基本的なルーチンを含み、ＲＯＭ１２４に格納される。
【００２５】
パーソナルコンピュータ１２０は、ハードディスク（示されない）と読み書きするためのハードディスク駆動装置１２７、着脱可能な磁気ディスク１２９と読み書きするための磁気ディスク駆動装置１２８、およびＣＤ−ＲＯＭあるいは他の光学媒体などの着脱可能な光ディスク１３１と読み書きするための光ディスク駆動装置１３０をさらに含む。ハードディスク駆動装置１２７、磁気ディスク駆動装置１２８、および光ディスク駆動装置１３０は、それぞれハードディスク駆動装置インターフェース１３２、磁気ディスク駆動装置インターフェース１３３、および光ディスク駆動装置インターフェース１３４によりシステムバス１２３に接続される。
【００２６】
ここで記述された例示的環境は、ハードディスク１２７、着脱可能な磁気ディスク１２９、および着脱可能な光ディスク１３１を採用するが、コンピュータによりアクセス可能なデータを格納することが可能な他のタイプのコンピュータにより読み取り可能な媒体、たとえば、磁気カセット、フラッシュメモリカード、ディジタルビデオディスク、ベルヌーイカートリッジ、ＲＡＭ、ＲＯＭ、および同様なもの、もまた、この例示的動作環境において使用される場合があるということは、当業者により理解されるべきである。駆動装置類およびそれらの関連付けられたコンピュータで読み取り可能な媒体は、パーソナルコンピュータ１２０のためのコンピュータで実行可能な命令、データ構造、プログラムモジュール、および他のデータに対する不揮発性記憶装置を提供する。
【００２７】
ハードディスク１２７、磁気ディスク１２９、光ディスク１３１、ＲＯＭ１２４、あるいはＲＡＭ１２５には、オペレーティングシステム１３５、プログラムモジュールを含むネットワークベースのオブジェクト３１５を含むアプリケーションプログラム４１０を含む、多くのプログラムモジュールが格納される場合がある。プログラムモジュールには、限定的ではないが、ルーチン、サブルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを包含することが可能であり、特定のタスクを実行したり、特定の抽象データ型を実施する。
【００２８】
キーボード１４０や指示機器１４２などの、入力装置により、ユーザーはコマンドや情報をパーソナルコンピュータ１２０に入力する場合がある。指示機器には、マウス、トラックボール、および電子式タブレットに関連付けられて使用し得る電子ペンを含む場合がある。他の入力装置（示されない）としては、マイクロホン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナー、または同様なものを含む場合がある。これらおよび他の入力装置はしばしば、システムバス１２３に接続されたシリアルポートインターフェース１４６を通して処理ユニット１２２に接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス（Universal Serial Bus：ＵＳＢ）、または同様なものなどの他のインターフェースにより接続される場合がある。ビデオアダプタ１４８のようなインターフェースを通して、表示装置１４７もまた、システムバス１２３に接続される場合がある。モニターに加えて、パーソナルコンピュータにはスピーカーやプリンタのような、他の周辺出力機器（示されない）が通常含まれる。
【００２９】
パーソナルコンピュータ１２０は、１つあるいは複数のリモートコンピュータ１４９との論理的接続を使用してネットワーク化された環境で動作する場合がある。リモートコンピュータ１４９は、別のパーソナルコンピュータ、サーバ、クライアント、ルーター、ネットワークＰＣ、ピア機器、あるいは他の共通的ネットワークノードである場合がある。リモートコンピュータ１４９は通常、パーソナルコンピュータ１２０に対して上で記述された要素の多くあるいはすべてを含んでいるが、図ではメモリ記憶装置１５０のみが図示されている。図に表現された論理的接続には、ローカルエリアネットワーク（Local Area Network：ＬＡＮ）１５１および広域ネットワーク（Wide Area Network：ＷＡＮ）１５２が含まれる。このようなネットワーク環境は事務所、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
【００３０】
ＬＡＮネットワーク環境で使用される場合には、パーソナルコンピュータ１２０はしばしば、ネットワークインターフェースあるいはアダプタ１５３を介してローカルエリアネットワーク１５１に接続される。ＷＡＮのネットワーク環境で使用される場合には、パーソナルコンピュータ１２０は通常、インターネットなどのＷＡＮ１５２上で通信を確立するモデム１５４あるいは他の手段を含む。モデム１５４は、内蔵の場合、あるいは外付けの場合があるが、シリアルポートインターフェース１４６を介してシステムバス１２３に接続される。パーソナルコンピュータ１２０に対して表現されたプログラムモジュール、あるいはその部分は、ネットワーク化された環境においては、遠隔記憶装置１５０に格納される場合がある。ここに示されたネットワーク接続は例示的なものであり、コンピュータ間で通信リンクを確立する他の手段が使用される場合があることは理解されるであろう。
【００３１】
さらに、携帯端末機器、マルチプロセッサーシステム、マイクロプロセッサーに基づくものやプログラム式の家電機器、ネットワーク化されたＰＣ、ミニコンピュータ、メインフレームコンピュータ、および同様なものを含む、他のコンピュータシステム構成でも本発明を実施できることを当業者は理解するであろう。本発明はまた、分散化計算環境においても実施でき、そこでは、タスクが通信ネットワークを介してリンクされた遠隔処理機器によって実行される。分散化計算環境においては、プログラムモジュールはローカルおよび遠隔両方のメモリ記憶装置に位置する場合がある。
【００３２】
（例示的なシステムの概要）
図３を参照すると、この図ではネットワークを介してコンピュータ３１０の間でオブジェクト３１５を共有する例示的システム３００を図示している。コンピュータ３１０のそれぞれは別の個々のコンピュータ３１０とリンク３０５により接続することが可能である。リンク３０５は、インターネットあるいは電話回線などの直接接続を介して為された接続を含むことが可能である。リンク３０５はまた、以下で図４に関して議論されるように、トランスポートアブストラクション層（Transport Abstraction Layer：ＴＡＬ）の一部であり得る。
【００３３】
コンピュータあるいはマシン３１０のそれぞれは、個々のコンピュータ３１０中のハードディスク駆動装置上やメモリのような記憶装置の中などに１つまたは複数のオブジェクト３１５をローカルに格納することが可能である。コンピュータ３１０のそれぞれは、５番目のコンピュータ３１０Ｂを除いて、オブジェクト１Ｘ３１５のような同一のオブジェクトを格納することが可能である。また、コンピュータ３１０のそれぞれは、第２およびオブジェクト３ＹおよびＺのように異なるオブジェクト３１５を格納することも可能である。図３に図示されるように、第２およびオブジェクト３ＹおよびＺはコンピュータ３１０のすべてに存在するわけではない。
【００３４】
本発明の方法およびシステム３００により、コンピュータ３１０のそれぞれがお互いに、かつコンピュータが仮想オブジェクト３２５を共有する、知覚された共有空間３２０をシステムが形成できるような、直接的でしかも継目なしの方法で、通信することが可能となる。言い換えれば、プログラミングの立場からは、本発明のオブジェクト３１５にアクセスするために書かれたコンピュータコードの行は、オブジェクト３１５が、他のコンピュータ上ではなくこの共有空間３２０に存在する、仮想オブジェクト３２５であると知覚することが可能である。本発明のオブジェクト３１５を使用するコンピュータコードは、そのオブジェクトがピアネットワーク上にあるか、あるいはサーバ上に存在するかを識別する必要はない。本発明のオブジェクト３１５を使用する任意のコンピュータコードは、ネットワーク３００を形成するコンピュータ３１０の間の通信機構に関わる必要はない。
【００３５】
以上のように、コンピュータは、サーバ３１０Ｄのようなサーバ、あるいは第１、第２、第３、および第５、第６のコンピュータ３１０Ａ〜Ｃ、およびＥ、Ｆのような、スタンドアロンクライアントすなわち単独のコンピュータであるか否かに関係なく、任意のタイプのコンピュータ３１０で動作する。さらに、このシステム３００は、コンピュータ３１０がオブジェクト３１５を格納できるか否かに拘わりなく、オブジェクトの通信を可能にする。たとえば、第２のコンピュータ３１０Ｂは、ネットワーク３００により支援されるオブジェクト３１５のいずれをも格納する能力を持たない場合がある携帯情報端末（Personal Digital Assistant：ＰＤＡ）のような小容量のメモリ機能しか含まない場合があるため、第３のコンピュータ３１０Ｃが、第２のコンピュータ３１０Ｂに対して仮想サーバとして機能することがあり得る。
【００３６】
図３は、コンピュータ３１０がそれらのリンク３０５により、どのように相互接続され得るかを図示する。たとえば、第３のコンピュータ３１０Ｃが小容量メモリの第２のコンピュータ３１０Ｂにリンク３０５を介して接続される場合がある。第３のコンピュータ３１０Ｃは、サーバ３１０Ｄ、および第５のコンピュータ３１０Ｅと第６のコンピュータ３１０Ｆに追加的リンク３０５を介して接続される場合がある。第２、第３、第５のコンピュータ（３１０Ｂ、３１０Ｃ、および３１０Ｅ）、およびサーバ３１０Ｄはそれぞれ、ローカルに存在するオブジェクトＸおよびＹなどの同一の２つのオブジェクトを持つことがある。一方、第３のコンピュータ３１０Ｃが持つ２つのオブジェクトＸ、Ｙの３１５Ｃ１、および３１５Ｃ２は、第６のコンピュータ３１０Ｆが持つ２つのオブジェクトとは、同一ではない場合がある。すなわち、第３のコンピュータ３１０Ｃは、オブジェクト３Ｚをそのコンピュータに存在させて有してはいない場合がある、一方、第６のコンピュータ３１０Ｆが、オブジェクト３Ｚをそのコンピュータに存在させて有している場合がある。
【００３７】
オブジェクト３１５のそれぞれがコンピュータ３１０のすべてに存在している場合があるというわけではないが、特定のコンピュータ３１０が、自身に存在していないオブジェクト３１５にアクセスする許可を有する場合には、その特定のオブジェクト３１５を持たないコンピュータ３１０は他のコンピュータ３１０上の自身に存在していないオブジェクト３１５にアクセスする場合がある。任意のオブジェクト３１５（自身に存在していないオブジェクト３１５を含み）にアクセスする許可は、図５に関連して以下でさらに詳細に説明するように、コンテキスト５００に保持される。
【００３８】
（例示的なシステムの上位レベルアーキテクチャ）
図４は、コンピュータネットワークを介してコンピュータ３１０間でオブジェクト３１５を共有するシステムの例示的な上位レベルアーキテクチャ４００を示す。それぞれのコンピュータ３１０にはトランスポートアブストラクション層（Transport Abstraction Layer：ＴＡＬ）があり、図３に関連して議論したリンク３０５の一部を形成する場合がある。図３に記述されているようにシステムネットワークオブジェクト（System Network Object：ＳＮＯ）３１５がトランスポートアブストラクション層３０５と結合される。
【００３９】
システムネットワークオブジェクト（System Network Object：ＳＮＯ）３１５は、限定的ではないが、以下のリアルタイムコラボレーション（Real Time Collaboration：ＲＴＣ）プログラムを包含するアプリケーションプログラム４１０を支援することが可能である。すなわち、異なるコンピュータ上に存在する場合があるチャットプログラムにより、情報を交換すること、異なるコンピュータ上に存在する場合がある文書処理プログラム中のドキュメントを共有すること、異なるコンピュータ上に存在する場合があるスプレッドシートプログラム中の表を共有すること、異なるコンピュータ上に存在する場合があるプレゼンテーションアプリケーション間で表示を共有すること、異なるコンピュータ上に存在する場合があるゲームプログラムの間でデータを共有すること、およびいくつかの異なるコンピュータに亘ってリアルタイムでデータを共有することが有利である他の同様なＲＴＣアプリケーション、である。
【００４０】
トランスポートアブストラクション層（Transport Abstraction Layer：ＴＡＬ）は、コンピュータ３１０の１つがネットワークにおいて他の１つまたは複数のコンピュータ３１０と通信することを可能とする１セットのインターフェースを備えることが可能である。トランスポートアブストラクション層は、限定的ではないが、ＴＣＰ、ピアネット、ＨＴＴＰ、あるいは他の任意の同様な通信技術などのインターフェースを使用することが可能であり、コンピュータ３１０がネットワークを介して他のコンピュータ３１０にメッセージを送り、そこからメッセージを受け取ることを可能とする。トランスポートアブストラクション層３０５は、異なるコンピュータ３１０上に存在するシステムネットワークオブジェクト３１５の間に仮想のリンクすなわちセッション４１５を形成することが可能である。セッション４１５については以下に記述する。
【００４１】
（ネットワークにおいてコンピュータ間でオブジェクト３１５を共有する例示的処理フローおよび方法）
以下の論理的フローチャートのすべてに関連して記述する処理および動作は、処理ユニットによる信号の操作、および１つまたは複数のメモリ記憶装置に存在しているデータ構造の中にこれらの信号を保持することを含む。ここでの議論の目的として、処理とは、必要な結果に導くためのコンピュータで実行される一連のステップであると理解することができる。
【００４２】
これらのステップは通常、物理量の物理的な操作を必要とする。必ずではないが、これらの量は通常、格納、転送、結合、比較、あるいは別の操作が可能な、電気的、磁気的、あるいは光学的信号の形態を取る。当業者は、これらの信号を表現する場合には、ビット、バイト、語、情報、要素、シンボル、文字、番号、ポイント、データ、エントリー、オブジェクト、イメージ、ファイル、あるいは同様なものとして言及することが慣習となっている。しかしながら、これらおよび同様な用語は、コンピュータ動作に対する適切な物理量に関連付けられていること、およびこれらの用語はコンピュータの動作中や動作の間に存在する物理量に適用された慣習的ラベルに過ぎないということ、を認識するべきである。
【００４３】
コンピュータ中の操作は、人間である運用者により実行される人間の動作にしばしば関連付けられた、創成、加算、計算、比較、読み込み、ロード、実行、などのような用語で、しばしば言及されることもまた、理解するべきである。ここに記述する動作は、コンピュータと対話する運用者あるいはユーザーにより提供される種々の入力に関連して実行される機械の動作であり得る。
【００４４】
さらに、ここに記述するプログラム、処理、方法などは、いずれかの特定なコンピュータや装置に関連するものではなく、また制限されるものでないことを理解すべきである。ここに記述する説明による以下の処理では、むしろ、様々なタイプの汎用機を使用し得る。
【００４５】
本発明は、ここに記述され、付属するフローチャートに図示された機能を実現する、コンピュータプログラム、ハードウェアまたはそれらの組み合わせを含む場合がある。しかしながら、本発明を実施するコンピュータプログラムの方法やハードウェア設計には、多くの異なる方法がある得ることは明白であるべきであり、かつ本発明は、コンピュータプログラム命令のいずれか１つの集合に限定されると解釈されるべきでない。
【００４６】
さらに、熟練したプログラマは、たとえば、本明細書のフローチャートや関連記述に基づき、開示された発明を実施するために、難なく、そのようなコンピュータプログラムを書き、あるいは適切なハードウェア回路を特定することができるであろう。したがって、プログラムコード命令あるいは詳細なハードウェア機器の特定な集合の開示は、本発明を如何に作成し、如何に使用するかに関する適切な理解のために必要であるとは見做されない。クレームのコンピュータで実施される処理に関する本発明の機能性は、他の処理フローを図示する残りの図面に関連した以下の記述でさらに詳細に説明していく。
【００４７】
さらに、以下の論理的フローチャートので記述する処理あるいは処理フローにおける、ある一定のステップは、本発明が機能するためには当然他のものに優先せねばならない。しかしながら、その順序あるいは連続性が本発明の機能性に変化をもたらすものでない場合には、本発明は記述したステップの順序に限定されるものではない。すなわち、あるステップが他のステップの前に、後に、あるいは並行して実行されるかは、本発明の範囲および精神から逸脱することにはならない認識すべきである。
【００４８】
（トランスポートアブストラクション層３０５）
トランスポートアブストラクション層（Transport Abstraction Layer：ＴＡＬ）３０５は、ネットワーク化されたＳＮＯ３１５がコンピュータネットワークを介して他のマシン３１０と通信するために使用することが可能なインターフェースを備えることができる。コンピュータネットワークは、異なるタイプのデータを通信させるために、異なる標準および異なるプロトコルを使用することが可能である。ネットワーク上で他のマシン３１０と通信する必要性を有するアプリケーション４１０は、従来の技術ではしばしば、異なる標準／プロトコルを固く守ることを強制される。たとえば、いくつかのネットワークが信頼できる伝送にイーサネット（登録商標）ネットワーク上でＴＣＰ／ＩＰプロトコルを使用し、そして他のものはイーサネット（登録商標）上のＴＣＰ／ＩＰの上でＨＴＴＰを使用する。
【００４９】
このことは、アプリケーション４１０が通常、自身のデータパケットを伝えるために異種のプロトコルで通信することが必要であることを意味する。従来の技術とは相対して、ＴＡＬ３０５ではプロトコルのどんな相違点をも抽出することが可能であり、ＳＮＯ３１５を使用するどのマシン３１０も、異なるネットワーク上で動作し、あるいは異なるネットワークとで機能するために、個々のＳＮＯ３１５を変更することを必要とはしない。代わりに、ＴＡＬ群３０５をそれらのネットワークに割り付けることが可能である。ＴＡＬ３０５は、他の開発者が彼らのニーズに特有な実施方法を変更し、提供することが可能な、簡潔なインターフェースを使用することによりネットワークプロトコールを抽出することが可能である。ネットワークプロトコールの能力にＴＡＬ群３０５を直接割り付けることが可能である。たとえば、ＴＡＬ群３０５中のチャンネル４１７（以下で議論される）はＴＣＰポートに対応することがある。
【００５０】
ＳＮＯ３１５を使用するネットワークアプリケーションをコード化する開発者は、異なるマシン３１０の間の基本的な接続を確立するセッション４１５を創成することを通常必要とする。セッション４１５を確立することの一部として、アプリケーション４１０は、識別のために署名／信用証明の交換などの認証を必要とするかもしれない。セッション４１５が確立すると、ＳＮＯ群３１５およびＳＮＯ群３１５の中のデータを共有することが可能である。共有されるＳＮＯ３１５のそれぞれに対して、コンテキスト５００が創成され、ＳＮＯ３１５がそのコンテキスト５００に登録される。コンテキスト５００のさらなる詳細は図６に関連して以下に説明する。
【００５１】
図６Ａ〜図６Ｃを参照すると、ＳＮＯ３１５のそれぞれはその中に１つのチャンネル４１７を有するコンテキスト５００の中で共有される。セッション４１５は、他のマシン３１０と結合された太いパイプとしてを特徴付けることが可能であり、一方、チャンネル４１７は、より細い、マシン３１０の間で個々のＳＮＯ３１５についての情報を交換することが可能なサブパイプであるとして特徴付けることが可能である。１つの例示的実施形態によると、セッション４１５におけるそれぞれのマシンすなわちノード３１０は、セッション４１５のすべてのチャンネル４１７に結合する必要はない。ノード３１０の部分集合は、１つのチャンネル４１７に関係することが可能であり、そして、異なる、あるいは重複した部分集合は異なるチャンネル４１７に関係することもある。
【００５２】
コンテキスト５００においてＳＮＯ３１５が創成され、共有されると、ネットワークでトランスポート可能なメッセージフォーマットにそれを順に並べることが可能であり（後に説明する図９の１１３０で分かるように、可能性としては２進あるいはＸＭＬに）、かつ以下にさらに詳細で説明するIChannel.SendMessageと呼ばれるメソッドを使用して、チャンネル４１７で他のマシン３１０にそれを送ることが可能である。ＳＮＯ３１５に変更が為され、セーブされると、その新しい変更もまた、IChannel.SendMessageメソッドを使用して送ることが可能である。
【００５３】
チャンネル４１７およびセッション４１５の中のメッセージの配送に対しては、いくつかの事例に関してはそれらのメッセージの完全順序付けが使用可能であり、一方、他の事例では部分順序付けや順序付けなしが使用可能である。完全順序付け、部分順序付け、および順序付けなしは、コンピュータのネットワークアプリケーションにて使用される標準用語であり、一般当業者にとって公知である。しかし、明確化および完全性のために、これらの用語に対して例示的で簡単な定義／例を以下に示す。完全順序付け(full ordering)とは、ノードＡがパケット１を時間Ｔ１に送り、かつノードＢがパケット２を時間Ｔ２（Ｔ２はＴ１より後）に送るシナリオを参照することができる。チャンネル４１７におけるすべてのノード３１０は、パケット１および２が、それらが送られたのと全く同一の順序で到達すること（すなわち、パケット１がパケット２の前に到着すること）を観測する。
【００５４】
部分順序付け(partial ordering)とは、ノードＡがパケット１をＴ１に、パケット２をＴ２に送り、かつノードＢがパケット３をＴ３に、パケット４をＴ４に送るシナリオを参照することができる。異なるノードではパケット１、２、３、および４を異なる順序で受けることになるが、同一のノードから発せられたすべてのパケットはそれらが送られた順で到達するであろう。たとえば、ノードＣがパケット３と４を先に、およびパケット１と２を後で受け取るかもしれない。しかしながら、パケット１の前にパケット２を、あるいはパケット３の前にパケット４を受け取ることはない。
【００５５】
順序付けなし(no ordering)とは、なんの順序の保証もないシナリオである。任意のソースからパケットが順不同で到着する可能性がある。
【００５６】
（ISessionインターフェース４３６）
ネットワーク通信セッション４１５を創成するために、アプリケーション４１０がISessionインターフェース４３６を使用することが可能である。アプリケーション４１０は、セッション４１５中にあるノードとの識別および認証信用証明を確立するために選択することが可能である。ISessionインターフェース４３６のSendMessageメソッドを使用してセッション関連情報を交換する。
【００５７】
ISessionインターフェース４３６はまた、別のノードがそのローカルなノード３１０と通信する場合に、通知を受け取るための機構を含む。ノード３１０のそれぞれは受け取られたどんな通知をも管理するハンドラーを登録することが可能である。セッションが創成されると、チャンネル４１７の中のそのノード３１０群にSessionOpenedEvent通知が送られる。セッションを閉じるときには、チャンネル４１７の中のそのノード３１０群にSessionClosedEvent通知が送られる。メッセージが受信されると、チャンネル４１７の中の他のノード３１０群にSessionMessageEvent通知が送られる。
【００５８】
マルチポイントセッション４１５の事例ではセッション管理のために以下の方法が含まれる。すなわち、同様なメッセージの送信／受信、新しいチャンネルの創成、およびセッションの状態の監視維持などを行うものである。
【００５９】
一般的なインターフェースISession４３６に対する例示的擬似コードを以下に示す。下で用いられる用語「発射（fire）」は、特定のチャンネル４１７上のすべてのノード３１０にメッセージが送られることを意味する。当業者は、本発明の範囲および精神から逸脱することなく、この擬似コードへの変更が為され得ることを理解するであろう。
【００６０】
{
//別のノードからのメッセージ受信時に発射。
event SessionMessageEvent Message；
//そのセッションがメッセージ送信不能時に発射。
event SessionMessageErrorEvent MessageError；
//そのセッションが開かれた時に発射。
event SessionOpenedEvent Opened；
//そのセッションが閉じらた時に発射。
event SessionClosedEvent Closed；
//このセッションのローカルユーザが表示したノード獲得。
INode MyNode
//そのセッション開を示す値の獲得。
bool IsOpen
//そのセッションを閉じる。
void Close()；
//ノードの接続を確認。
bool CheckConnection(INode名)；
//開でない新規チャンネルを創成。
IChannel CreateChannel（文字列名）；
//そのセッション中の個々のノードへのメッセージ送信。
IMessage SendMessage（オブジェクトメッセージ、宛先INode、bool順で、オブジェクトクッキー）；
//メッセージイベント停止、入力メッセージの待ち行列化。
void BeginDeferMessages（）；
//すべてのメッセージを待ち行列から外し、メッセージイベントを再開。
void EndDeferMessages（）；
}
【００６１】
（IChannel４３３：チャネル管理の方法）
図４Ｂは、オブジェクト創成手順の間に存在し得る様々な段階を時間に対して図示するものである。セッション４１５が創成された後に、アプリケーション４１０が、１つまたは複数のＳＮＯ３１５を創成する可能性があり、かつコンテキスト５００を含むＳＮＯ３１５のそれぞれにIChannelインターフェース４３３を与えることが可能である。コンテキスト５００は、ISession４３６のCreateChannelメソッドを使用してチャンネル４１７を創成することが可能である。
【００６２】
IChannel４３３は、チャンネルの終結、状態の監視、メッセージの送信／受信、ノードの識別のような、チャンネル管理のためのメソッドを含む。それぞれのコンテキスト５００は、チャンネル４１７により提示されたイベントにハンドラーを接続することが可能であり、かつイベントが発生すると、通知される。別のノードがチャンネル４１７に結合する場合、離脱する場合には、ChannelJoinedEventおよびChannelLeftEventが個々に発射される。ノードがチャンネルに結合するために受け付けられると、ChannelJoinRequestEventが発射される。
【００６３】
一般的なインターフェースIChannel４３３に対する例示的擬似コードを以下に示す。下で用いられる用語「発射（fire）」は、特定のチャンネル４１７上のノード３１０のすべてにメッセージが送られることを意味する。当業者は、本発明の範囲および精神から逸脱することなく、この擬似コードへの変更が為され得ることを理解するであろう。
【００６４】
（パブリックインターフェースIChannel４３３）
{
//そのチャンネルのメッセージ受信時に呼び出し。
event ChannelMessageEvent Message；
//そのチャンネルがメッセージ送信不能時に呼び出し。
event ChannelMessageErrorEvent MessageError；
//そのチャンネルが開かれた時に呼び出し。
event ChannelOpenedEvent Opened；
//そのチャンネルが閉じられた時に呼び出し。ノード３１０のすべてが切断される。
event ChannelClosedEvent Closed；
//ローカルノードがそのチャンネルに結合する時に呼び出し。
event ChannelJoinedEvent Joined；
//ローカルノードがそのチャンネルを離脱する時に呼び出し。
event ChannelLeftEvent Left；
//そのチャンネルに結合するためにノードが受け付けられた時に呼び出し。
event ChannelJoinRequestEvent JoinRequest；
//ノードがそのチャンネルに結合する時に呼び出し。
event ChannelNodeJoinedEvent NodeJoined；
//ノードがそのチャンネルを離脱する時に呼び出し。
event ChannelNodeLeftEvent NodeLeft；
//そのチャンネルノードにＳＮＯオブジェクトの同一バージョンがない時に呼び出し。
//チャンネル中のＳＮＯが互いに異なるバージョンになる状態を引き起こしたかも知れな//い、データ損失が発生した可能性がある。
event ChannelSynchronizationFailureEvent SynchronizationFailure；
//そのチャンネルが同期障害から回復した時に呼び出し。
event ChannelSynchronizationRecoveryEvent SynchronizationRecovery；
//そのチャンネルの一意的な名前の獲得。
string Name
//このチャンネル中のローカルユーザが表示したノードの獲得。
INode MyNode
//そのチャンネル中のノードの獲得。
INode[] Nodes
//そのチャンネル開を示す値の獲得。
bool IsOpen
//そのチャンネルを開く。
void Open（）；
//そのチャンネルからのすべてのノードを切断。
void Close（オブジェクト情報）；
//遠隔ノードチャンネルに結合。
void Join（発信元INode、オブジェクト情報）；
//そのチャンネルを切断。
void Leave（オブジェクト情報）；
//そのチャンネル中のすべてのノードにメッセージを送信。
IMessage SendMessage（オブジェクトメッセージ、MessageOrderingType orderingType、オブジェクトクッキー）；
//そのチャンネル中の個々のノードにメッセージを送信。
IMessage SendMessage（オブジェクトメッセージ、宛先INode、bool順で、オブジェクトクッキー）；
//メッセージイベント停止、入力メッセージの待ち行列化。
void BeginDeferMessages（）；
//すべてのメッセージを待ち行列から外し、メッセージイベントを再開。
void EndDeferMessages（）；
}
【００６５】
（INodeインターフェース）
セッション４１５におけるマシン３１０のそれぞれはINodeインターフェースにより識別される。このインターフェースはＵＲＩ（Universal Resource Identifier）およびIIdentityインターフェースを含む。IIdentityは、．Ｎｅｔフレームワークにより定義された標準インターフェースである。
【００６６】
//ネットワーク化されたノードの識別の標準インターフェースを指定。
public interface INode
{
//そのノードの一意的なＵＲＩ。
string Uri
//そのノードのユーザーの識別。
IIdentity Identity
}
【００６７】
（メッセージ順序付けタイプ：）
メッセージ順序付けタイプを以下に列挙するように指定する。
【００６８】
public enum MessageOrderingType
{
//順序付けなし。
None，
//１つのノードから送られたメッセージをそれらが送られた順序で受信。
Partial，
//すべてのノードから送られたメッセージを同一順序で受信。
Full，
}
【００６９】
（IMessage：）
ただ一つのマルチポイント（ネットワーク）メッセージであり、以下のように識別のためのプロパティーを含む。
//メッセージングの標準インターフェースを指定。
public interface IMessage
{
//そのメッセージ送信者の獲得
INode From
//そのメッセージ内容の獲得。
object Message
//そのメッセージの順序付けタイプを獲得。
MessageOrderingType Ordering
//そのメッセージのオプションのクッキーを獲得。
object Cookie
}
【００７０】
（ＴＡＬ３０５の概要およびＳＮＯ３１５とのその関係）
ネットワーク上の他のマシン３１０と会話するためにＳＮＯ３１５がＴＡＬ３０５を使用するため、ＳＮＯ３１５を使用するためには、通常ＴＡＬインターフェースの別の実施方法が必要である。
【００７１】
ＴＡＬ３０５の１つの実施方法を提供するために、ネットワークプロトコールの実施方法の１つのバージョンが必要である。利用可能なものが１つもない場合には、他のマシン３１０と通信するために使用されるであろう標準のネットワークプロトコールを識別することを考慮するべきである。たとえば、ウェブサーバと通信が為される場合には、ＨＴＴＰが好適なプロトコルである場合がある。そして、ＴＡＬインターフェース３０５をＨＴＴＰインターフェースに割り付ける場合がある。たとえば、セッション４１５に対するＴＡＬ３０５を創成するとき、対応するＨＴＴＰセッションを創成することが可能である。サブメソッドのISession.SendMessageが呼び出されると、ＨＴＴＰプロトコルの「ｐｕｔ」、あるいは「ｇｅｔ（獲得）」メソッドを使用してそのメッセージを送出することが可能である。
【００７２】
ＴＡＬ３０５はＳＮＯ３１５にアブストラクションレベルを供給するため、異なるネットワークプロトコールでＳＮＯ３１５を使用する必要があっても変更を必要としない。そのうえ、ネットワークプロトコールが合致する場合には、別の人のＴＡＬの実現方法を共有すること、すなわち実現方法の共有が可能である場合がある。
【００７３】
（例示的なシステムネットワークオブジェクト３１５に対するコンテキスト５００）
図５は、コンテキスト５００で見出だすことが可能な例示的コンポーネントを図示する。システムのオブジェクト３１５のそれぞれは１つの関連コンテキスト５００を持つことが可能である。かつ、オブジェクト３１５のそれぞれは１つのコンテキスト５００の一部であり得る。コンテキスト５００のそれぞれは、複数のシステムネットワークオブジェクト（ＳＮＯ）３１５の間の関係およびオブジェクト３１５のコピーあるいはオブジェクト３１５へのアクセス権、あるいはその両方を有する場合がある、コンピュータ３１０の間の関係の１つまたは複数を追跡する情報を含むことが可能である。コンテキスト５００のそれぞれは、多くの文字あるいは一連の文字、あるいはその組み合わせを含むことがあり得るそれ自身の一意識別子５０５を含むことが可能である。
【００７４】
コンテキスト５００のそれぞれはまた、以下の１つまたは複数を含むことがあり得る。すなわち、コンテキスト５００中にオブジェクト３１５を有するコンピュータ３１０のそれぞれに対するセキュリティパラメータおよび許可のサブリスト５１０；コンテキスト５００に結合するか、あるいはそれから離脱するコンピュータ３１０、共有、非共有などのオブジェクト指定、コンテキスト５００中のオブジェクト３１５に対する状態変化、およびコンテキスト５００自体に対する状態変化、を含むことが可能なイベント情報５１５；特定のコンテキスト５００の一部であるネットワークオブジェクト３１５のサブリスト５２０；コンテキスト５００の一部であるコンピュータ３１０のそれぞれに対するコンピュータ識別子のサブリスト５２５；である。
【００７５】
セキュリティサブリスト５１０は、コンピュータ３１０のどれがコンテキスト５００中のオブジェクト３１５のアクセス権を有するか、かつコンピュータ３１０が何のレベルのアクセス権を有するか、を識別する許可のリストを含む場合がある１式のプリンシパルを含むことが可能である。たとえば、コンピュータ３１０の１台が特定のオブジェクト３１５に関して読み出し専用の権利のみを有し、別のコンピュータ３１０が特定のオブジェクト３１５に関して読み書き両方の権利を有する場合がある。
【００７６】
コンテキスト５００は、コンピュータ３１０のどれが１つまたは複数の特定のオブジェクト３１５を有するかを識別し、かつ特定のコンテキスト５００の一部であるオブジェクト３１５を管理するのに役立つことが可能である。コンピュータ３１０のそれぞれにはそのコンピュータ３１０がその一部であるコンテキスト５００の部分的あるいは全体のコピーがある。コンテキスト５００は、コンテキスト５００の一部であるコンピュータ３１０のそれぞれが、コンテキスト５００を構成する可能性のあるオブジェクト３１５の１つまたは複数の同一バージョンを有することを確実にするのに役立つことが可能である。セキュリティパラメータサブリスト５１０により、コンテキスト５００は、コンピュータ３１０のどれが、コンテキスト５００中のあるオブジェクト３１５にアクセスできるか、かつコンピュータ３１０のどれが、コンテキスト５００中のオブジェクト３１５を変更できるかを判定するのに役立つことが可能である。
【００７７】
コンテキスト５００はアクティブ状態、および休止状態を持つことができる。アクティブ状態では、特定のコンテキスト５００の一部であるコンピュータ３１０のそれぞれにオブジェクト３１５に関する情報を提供することが可能である。たとえば、コンテキスト５００の一部であるオブジェクト３１５に何らかの変更が為された場合には、対象のオブジェクト３１５のコピーを有するそれらのコンピュータ３１０にこの情報を提供することが可能である。コンテキスト５００のアクティブ状態の間、コンピュータ３１０のそれぞれはコンテキスト５００の一部であるオブジェクト３１５に関する任意の情報を通信（受信、または送信）することが可能である。
【００７８】
（異なるコンテキスト５００を含んだ例示的なセッション４１５）
図６Ａは、コンピュータ１から４の間に存在するセッション４１５を図示する。セッション４１５はセッションの結合を望むマシン３１０に対して使用される一意識別子(unique identifier)を含む。マシン３１０が同時に複数のセッションに存在する可能性もある。セッション４１５は複数のコンテキスト５００を含む可能性がある。セッション４１５は互いに通信しているマシン３１０の集合を表す。その通信はセッションにおける様々なコンテキスト５００を通して発生する可能性がある。
【００７９】
ここで図６Ｂを参照すると、この図では図６Ａの大きいセッション４１５の一部である第１のコンテキスト５００Ａの詳細を図示する。第１およびオブジェクト２３１５を使用する許可を有するコンテキスト５００Ａ中のコンピュータ３１０のすべては、それらの位置の如何にかかわらずその第１およびオブジェクト２３１５のコピー、あるいは少なくともアクセス権を有する。図６Ａおよび６Ｂで図示された、例示的実施形態に関しては、コンピュータ３１０の第１、第３、および第４のみが第１およびオブジェクト２３１５を有する。マシン２はコンテキスト５００Ａの一部ではなく、したがって、マシン２は、オブジェクト２をアクセスし、あるいはコピーを得ることができない（ただしマシン２は図６Ａで図示されるように大きなセッション４１５の一部ではある）。
【００８０】
図６Ｃでは、図６Ａの大きいセッション４１５の一部である第２のコンテキスト５００Ｂの詳細を図示する。第１およびオブジェクト３３１５を使用する許可を有するコンテキスト５００Ｂ中のコンピュータ３１０のすべては、それらの位置の如何にかかわらずその第１およびオブジェクト３３１５のコピー、あるいは少なくともアクセス権を有する。図６Ａおよび図６Ｃで図示した例示的実施形態に関しては、コンピュータ３１０の第１、第２、および第４のみが第１およびオブジェクト３３１５を有する。マシン３はコンテキスト５００Ｂの一部ではなく、したがって、マシン３は、オブジェクト３をアクセスし、あるいはコピーを得ることができない（ただしマシン３は図６Ａで図示されるように大きなセッション４１５の一部ではある）。
【００８１】
（システムネットワークオブジェクト３１５の例示的なアーキテクチャ）
図７は、本発明の１つの例示的実施形態によるシステムネットワークオブジェクト３１５の例示的アーキテクチャを示す。システムネットワークオブジェクト３１５は、コンテキスト中のあらゆるノードで呼び出される共有されるメソッド、ローカルマシン上でのみ呼び出されるローカルメソッド、および共有されたネットワークオブジェクト３１５に特有な他の特別な同期コード、を含む場合がある。
【００８２】
（システムネットワークオブジェクト３１５を有するコンテキスト５００の創成）
通常はまず第１に、マシン３１０はセッション４１５に結合せねばならない。これはＴＡＬ３０５を使用して達成することが可能である。１式のプリンシパルを創成し、コンテキスト５００に結合することが可能である。これらは、共有されたコンテキストに対するコンテキストリストマネージャー７０５により保持されるセキュリティ／アクセスリストを記述しており、ローカルに実施される。企業システムに対しては、Ｍｉｃｒｏｓｏｆｔ社のＡｃｔｉｖｅ Ｄｉｒｅｃｔｏｒｙ、あるいはセッション４１５中の信頼できるマシン３１０などの、信頼できるところから１組のプリンシパルが獲得できるかもしれない。コンテキストに関連付けられるであろうチャンネル４１７はセッション４１５を使用して創成可能である。
【００８３】
（複数のマシン３１０に亘るコンテキスト５００の共有）
複数のマシン３１０に亘ってコンテキスト５００を共有するために、共有されたオブジェクトサービス４３９（チャンネル４１７およびコンテキスト５００を受け渡しすることが可能である）から「共有（Share）」と言及されるメソッドを呼び出すことが可能である。この情報の受け渡しが行われた後に、コンテキスト５００が「共有される」とみなされる。
【００８４】
（コンテキスト５００への結合(joining)）
コンテキスト５００に結合するためには、接続を必要としているチャンネル４１７、コンテキスト５００、およびノード３１０を受け渡しすることにより、共有されたオブジェクトサービス４３９から「結合（Join）」と言及されるメソッドを呼び出すことが可能である。通常、ノード３１０はチャンネル４１７中に既に存在せねばならない。そして、結合するための要求は通常、その特定されたノード３１０に送られる。ノード３１０が、結合しようとするノードの信用証明／識別、およびコンテキスト５００の創成機構により指定される追加的プロパティーを含み得る、この”OnJoinRequest”メッセージを受け取ると、受信ノード３１０は、その要求を受け入れるか、あるいは拒絶するかを選択することが可能である。
【００８５】
どちらの場合でも、受信ノード３１０は通常、その共有されたコンテキスト５００の実現方法に特有な付加的情報を含み得る、全体として順序付けられたメッセージを、結合しようとするノード３１０へ送出する。このメッセージは通常、そのメッセージで送出されたどんなデータもチャンネル４１７で送出された他のメッセージと同期するであろうように、全体として順序付けられる。これは、結合されたノード３１０が同期した状態でそのコンテキスト５００で開始することができるようにするためである。
【００８６】
例示的コンテキスト５００は、コンテキスト５００中の既存の共有されたオブジェクト３１５を、結合しようとするノード３１０へ、そのコンテキストの同期を維持した状態で、送出するために、このデータを使用することが可能である。結合しようとするノード３１０はOnJoinResponseメッセージとしてこのデータを受け取ることが可能である。メッセージがコンテキスト５００への承諾を含んでいる場合には、結合しようとするノード３１０はこんどは、そのコンテキスト５００「中（ｉｎ）」であるとみなされる。
【００８７】
コンテキスト５００はそのコンテキスト５００中のノード３１０のそれぞれの状態を示すメッセージを受け取ることが可能である。ノードの状態には、限定的ではないが、接続動作中、接続済み、切断動作中、切断済み、離脱済み、を含むことが可能である。コンテキスト５００と結合しようとするノード３１０に対するイベントの順序はほとんど常に、切断済み->接続動作中->接続済み、である。
【００８８】
コンテキスト５００からノード３１０を切断する場合においてはイベントの順序は通常、接続済み->切断動作中->切断済み、である。どんな段階でも、ノード３１０は離脱した状態への遷移が可能であり、この場合は、ノード３１０がそのコンテキストから不意に離脱したことを示す。
【００８９】
（コンテキスト５００に結合しようとするコンピュータの間での、オブジェクトを共有するための例示的方法）
図８は、ネットワーク上のコンピュータ３１０の間での共有オブジェクト３１５に対する例示的処理８００に関する概要を示した論理フローチャートである。ここでは、本発明の１つの例示的実施形態に従い、第２のコンピュータ３１０が第１のコンピュータ３１０とのセッション４１５に結合する。ステップ８０３は例示的処理８００の第１ステップであり、少なくとも第１のコンピュータ３１０に関連する一意識別子を有するコンテキスト５００がここで創成される。このステップでは、第１のコンピュータ、すなわちノード３１０が、上で図５に関連して説明したように、一意的な英字か数字の、あるいは、英数字の識別子を有するコンテキスト５００を作成可能である。ステップ８０６において、一意的なコンテキスト識別子をコンテキスト５００中に記録可能である。
【００９０】
判定ステップ８０９では、第１のノード３１０により創成されたコンテキスト５００に結合するという要求を、第２のノード３１０が送出したか否かが判定される。判定ステップ８０９への問い合わせに否定的である場合には、次に処理は「Ｎｏ」の方に分岐し、ステップ８０９へ戻る。判定ステップ８０９への問い合わせに肯定的である場合には、「Ｙｅｓ」の方に分岐し、判定ステップ８１２に続く。
【００９１】
判定ステップ８１２では、第１のノード３１０とのセッションに結合するために必要な許可を、その第２のノード３１０が有するか否かを判定する。このステップでは、第１のノード３１０が、その第１のノード３１０がそのコンテキスト５００のオブジェクト３１５にアクセスするための許可を有するか否かを判定するために、そのコンテキストリスト５００、より特定すればそのコンテキスト５００のセキュリティサブリスト５１０、をチェックすることが可能である。
【００９２】
判定ステップ８１２への問い合わせに否定的な場合には、次に「Ｎｏ」の分岐のステップ８１５に続き、否定のメッセージが第２のノード３１０に伝達される。そして、次に、ステップ８１８で処理８００は終了する。
【００９３】
判定ステップ８１２への問い合わせに肯定的である場合には、「Ｙｅｓ」の分岐のステップ８２１に続き、第２のノードの一意識別子がコンテキスト５００に結合される。次にステップ８２４において、結合要求メッセージへの応答が発生され、セッション４１５における、その時点のセッションデータ、およびその時点のノード３１０からのラストパケット番号のリストを含む、全体的に順序付けされたパケットとしてフォーマットされる。
【００９４】
ラストパケット番号(last packet number)のリストは、以下でさらに詳細に説明するように、ステップ８３９で使用される。ステップ８２７では、ラストパケット番号を含む第２のノード３１０に向けられた応答がコンテキスト５００中に記録される。そして、ステップ８３０では、全ての順序付けパケット応答(total ordered packet response)が、第２のノード３１０に配送される。
【００９５】
ステップ８３３では、第２のノード３１０がコンテキスト５００に結合しつつあるというメッセージが、コンテキスト５００中の任意の他のノード群に送出される。判定ステップ８３６では、コンテキスト５００の間に、第２のノード３１０において何かのパケットが受け取られたか否かが判定される。判定ステップ８３６への問い合わせに否定的である場合には、次に「Ｎｏ」の分岐がステップ８４８に続く。
【００９６】
判定ステップ８３６への問い合わせに肯定的である場合には、次に「Ｙｅｓ」の分岐が判定ステップ８３９に続き、受け取られたパケットが第１のノード３１０からの全ての順序付けパケット(total ordered packet)において与えられたパケット番号より古いか否かが判定される。言い換えれば、判定ステップ８３９では、第２のノード３１０がコンテキスト５００に結合する前に生起したパケットあるいは情報を、第２のノード３１０が受け取っているか否かを判定する。第２のノード３１０は、第２のノード３１０がセッション４１５およびコンテキスト５００に結合した時間より前に生起した、古くなった、コンテキスト５００のオブジェクト３１５に関連する情報を使用すべきではない。
【００９７】
判定ステップ８３９への問い合わせに肯定的であり、受け取られたパケットが古い情報を含むことを意味する場合には、「Ｙｅｓ」の分岐により、ステップ８４２に続き、そのパケットは第２のノード３１０により無視される。判定ステップ８３９への問い合わせに否定的であり、そのパケットが、第２のノード３１０がコンテキスト５００に結合した時間に対して、新しい情報を含む場合には、その場合には、「Ｎｏ」の分岐により、ステップ８４５に続き、第２のノード３１０がそのパケットを処理する。
【００９８】
次に、ステップ８４８において、第２のノード３１０が、自身がそのコンテキスト５００中で結合した、コンテキスト５００中の他のノード３１０のすべてに、メッセージを送ることが可能である。判定ステップ８５１で次に、いずれかのノード３１０がセッション４１５から離れ、すなわち離脱しているか否かを判定する。判定ステップ８５１への問い合わせに否定的である場合には、「Ｎｏ」の分岐により、処理８００は終了する。
【００９９】
判定ステップ８５１への問い合わせに肯定的である場合には、次に、「Ｙｅｓ」の分岐によりルーチン８５７に続き、ノード３１０の１つがコンテキスト５００を離脱したというメッセージがノード３１０のすべてに送られる。ステップ８６０では、離れたノード３１０に対する一意識別子がコンテキスト５００中に記録される。そして、処理８００は終了する。
【０１００】
（共有されたオブジェクト３１５Ｓの記述）
図９は、共有されたオブジェクト３１５Ｓ、およびコンピュータネットワーク中の異なるノード３１０がどのようにこのオブジェクト３１５Ｓにアクセスするかを示した、例示的な機能的ブロック図である。共有されたオブジェクト３１５Ｓは、プロキシ可能（proxy-able）（すなわち、．ｎｅｔフレームワークの場合には、MarshalByRefオブジェクト）であり得るオブジェクト３１５を含むことが可能であり、通常、共有可能であるとしてそれ自体を宣言しなければならない。共有可能であるとしてオブジェクト３１５を宣言するための例示的方法としては、属性を使用するか、あるいはインターフェースを実施することが可能である。共有されたオブジェクト３１５Ｓは１組の共有されたメソッド１１０５を含むことが可能である。共有されたメソッド１１０５は、呼び出された場合に、コンテキスト５００中のその共有されたオブジェクト３１５Ｓに接続されたノード３１０のすべてで呼び出されるメソッドを含むことが可能である。
【０１０１】
共有されたメソッド１１０５は、共有されたメソッドがどのように呼び出され、あるいはアドレス指定されるべきであるかを記述する属性により宣言される。その属性は少なくとも、メッセージ順序付けフラグ、メッセージ呼び出しフラグ、およびメッセージ保証、の３つのカテゴリーに分類可能である。より多くの属性の分類に関しては、次の「共有されたメソッドの属性」と題せられる詳細な説明を見られたい。
【０１０２】
（共有されたメソッドの属性）
「メッセージ順序付け(message ordering)」フラグは、呼び出しメッセージが共有されたコンテキスト５００Ｓを通して他のノード３１０へ送られるその方法を記述することが可能である。メッセージ順序付けの３つのタイプには、限定的ではないが、順序付けなし、部分順序付け、および完全順序付け、が含まれる。これらのメッセージ順序付けタイプは、ＴＡＬ３０５の記述に関して記述されている。本発明の例示的実施形態では、完全順序付け(full ordering)によれば同期損失をもたらすおそれが全くないので、デフォルトオプションとして完全順序付けにすることが可能である。
【０１０３】
共有されたメソッドの呼び出しフラグは、共有されたメソッド１１０５がいつ呼び出されるべきであるかを定義可能である。共有されたオブジェクト３１５Ｓは、それぞれがメッセージ順序付けの段階の変化に対応する複数回にわたり、共有されたオブジェクト呼び出しメッセージを受け取ることが可能である。上のＴＡＬ３０５の記述で記述されたように、メッセージの順序付けは通常、順序付けなし−＞部分順序付け−＞完全順序付け−＞保証付き、の順で進められる。段階の任意な点においてメッセージが引っかかると、その状態は「障害(failed)」に変化する。
【０１０４】
共有されたメソッド１１０５がどの状態で呼び出されるべきであるかを宣言可能である。障害の段階(failed stage)、あるいはそのメソッドの順序付けフラグで特定された段階のどちらかである究極の段階を除くと、共有されたコンテキスト５００が、共有されたメソッド１１０５を任意の段階で呼び出すであろうことは通常は保証されない。呼び出しの間、共有されたメソッド１１０５は、そのメソッドを呼び出しているノード３１０、その時点の呼び出しの段階、およびノード３１０が属するコンテキスト５００Ｓを共有するものを判定することが可能である。
【０１０５】
例示的実施形態では、デフォルト値を「完全順序付け(full ordered)」、および「保証付き(guaranteed)」に設定することが可能である。そのようなデフォルト値の設定により、共有されたオブジェクト３１５Ｓを、あたかも共有されたオブジェクト３１５Ｓがローカルなマシン３１０上に存在しているように、かつその他のノード３１０に転写された（mirrored）状態を失う（同期状態から外れる）ことがないであろうようにすることが可能である。その値を「保証付き」に設定することは、そのコンテキスト５００中のノード３１０のそれぞれで共有されたメソッド１１０５を呼び出すことが可能でない限り、その共有されたメソッド１１０５が呼び出されないであろうことを確実にする。「メッセージ保証(message assurance)」は、メッセージがマシン３１０のすべてに配信されるか否かの関心を示す設定である。
【０１０６】
（コンテキスト５００における共有されたオブジェクト(shared objects)３１５Ｓの登録(registering)および非登録(non- registering)）
共有されたコンテキスト５００は、共有されたオブジェクト３１５Ｓを登録することが可能である。共有されたオブジェクト３１５Ｓが登録される場合には、一意識別子が通常必要となる。共有されたコンテキスト５００Ｓ中の共有されたオブジェクト３１５を一意的に識別するためにこの識別子が使用可能である。このシナリオでは、プロキシオブジェクト３１５Ｐが返され、そしてここで、その共有されたオブジェクト３１５がコンテキスト５００に接続される。プロキシオブジェクト３１５Ｐは通常、その共有されたオブジェクト３１５Ｐのクライアント／ノード３１０により使用されねばならない。プロキシオブジェクト３１５Ｐに関するメソッド呼び出しは、メソッド呼び出しメッセージにパッケージ化され、共有されたコンテキスト５００Ｓに送ることが可能である。メソッド呼び出しメッセージ１１１０が共有されたコンテキスト５００Ｓで受け取られると、そのメソッドが呼び出されるべきである共有されたオブジェクト３１５を見出だすためにそのメッセージの一意識別子を使用する。しかしながら、共有されたコンテキスト５００Ｓは通常、共有されたメソッド１１０５をすぐには呼び出さない。
【０１０７】
その代わりに、共有されたコンテキスト５００Ｓは通常第１に、その送信ノード３１０が共有メソッド１１０５を呼び出す許可を有しているか否かを判定するために、判定ステップ１１１５でセキュリティパラメータおよび許可のサブリスト５１０における１組のプリンシパルを確認する。判定ステップ１１１５への問い合わせに否定的である場合には、次に、「Ｎｏ」の分岐でステップ１１２０に進み、メッセージは廃棄され、共有コンテキスト５００Ｓでローカルにイベントが提起される。そうではなく、判定ステップ１１１５への問い合わせに肯定的であるなら、「Ｙｅｓ」の分岐でステップ１１２５に進み、共有されたコンテキスト５００Ｓが共有されたオブジェクト３１５Ｓ上のメソッドを呼び出す。例示的システムではセキュリティプリンシパルの手段として．Ｎｅｔプリンシパルを使用することができる。
【０１０８】
上記の内容は、本発明を説明するための実施形態に関連するのみであり、特許請求範囲にて定義されるような本発明の精神および範囲から逸脱することなく、複数の変更を行うことが可能である。
【図面の簡単な説明】
【０１０９】
【図１】従来のクライアントサーバコンピュータアーキテクチャを示すブロック図である。
【図２】本発明の例示的動作環境を提供するためのネットワークパーソナルコンピュータを示すブロック図である。
【図３】本発明の例示的実施形態による、ネットワークベースのオブジェクトを共有する例示的システムを示す機能的説明図である。
【図４Ａ】本発明の例示的実施形態による、ネットワーク上のコンピュータ間でオブジェクトを共有するシステムの、例示的な上位レベルのアーキテクチャを示す機能的説明図である。
【図４Ｂ】本発明の例示的実施形態による、オブジェクト創成順序の間に存在し得る時間経過に対する様々な段階を、一覧で示した機能的説明図である。
【図５】本発明の例示的実施形態による、コンテキストにおいて見出だすことができる例示的コンポーネントを示した機能的説明図である。
【図６Ａ】本発明の例示的実施形態による、コンテキストの一部であるオブジェクトを有するコンピュータの間に存在する様々な異なるセッションを示した機能的ブロック図である。
【図６Ｂ】本発明の例示的実施形態による、図６Ａの第１のコンテキストの一部である第１のセッションの詳細を示した機能的ブロック図である。
【図６Ｃ】本発明の例示的実施形態による、図６Ａの第２のコンテキストの一部である第２のセッションの詳細を示した機能的ブロック図である。
【図７】本発明の例示的実施形態による、システムネットワークオブジェクトの例示的アーキテクチャを示す機能的ブロック図である。
【図８】本発明の例示的実施形態による、第２のコンピュータが第１のコンピュータとセッションを接合し、ネットワーク上のコンピュータ間でオブジェクトを共有する例示的処理手順を示したフローチャートである。
【図９】本発明の１つの例示的実施形態による、共有されたオブジェクト、およびコンピュータネットワークにおける異なるノードがこの共有されたオブジェクトにどのようにアクセスすることができるかを示した、例示的な機能的説明図である。
【符号の説明】
【０１１０】
１２１  中央処理ユニット（ＣＰＵ）
１２２  システムメモリ
１２３  システムバス
１３２  ハードディスク駆動装置インターフェース
１３３  フロッピー（登録商標）ディスク駆動装置インターフェース
１３４  ＣＤ−ＲＯＭインターフェース
１３５（２ヶ所）  オペレーティングシステム
１４０  キーボード
１４２  マウス
１４６  シリアルポートインターフェース
１４７  モニタ
１４８  ビデオアダプタ
１４９  リモートコンピュータ
１５３  ネットワークインターフェース
１５４  モデム
１９９  アプリケーションプログラム
【図１】
2005316993.tif 000003
【図２】
2005316993.tif 000004
【図３】
2005316993.tif 000005
【図４Ａ】
2005316993.tif 000006
【図４Ｂ】
2005316993.tif 000007
【図５】
2005316993.tif 000008
【図６Ａ】
2005316993.tif 000009
【図６Ｂ】
2005316993.tif 000010
【図６Ｃ】
2005316993.tif 000011
【図７】
2005316993.tif 000012
【図８】
2005316993.tif 000013
【図９】
2005316993.tif 000014
【外国語明細書】
2005316993000001.pdf