複数のマシンにわたってデータオブジェクトを共有するためのシステムであって、プロセッサーと、データ記憶コンポーネントと、前記データ記憶コンポーネントにおける、前記データオブジェクトおよび前記データオブジェクトのプロパティーを記憶するオブジェクトデータベースと、データオブジェクトが操作されるかまたは使用される複数のマシンに前記システムを通信可能に接続する通信コンポーネントと、前記プロセッサー上で実行し、かつ、前記データオブジェクトが前記複数のマシン上で、いつ、どのようにして操作されたかの指示を前記複数のマシンから受信する、受信機コンポーネントと、前記プロセッサー上で実行し、かつ、前記受信機コンポーネントが前記表示を受信すると、前記データベース内の前記データオブジェクトおよび前記データオブジェクトの前記プロパティーの状態をアップデートする、状態コンポーネントと、前記プロセッサー上で実行し、かつ、前記データオブジェクトおよび前記データオブジェクトの前記プロパティーの前記状態がいつ変化したかを前記複数のマシンに通知する、通知コンポーネントとを備えるシステム。前記受信機コンポーネントが、前記データオブジェクトのうちの第1のデータオブジェクトに対する、または前記データオブジェクトのうちの前記第1のデータオブジェクトのプロパティーに対する、同時並行制御を受信し、どれだけ多くの前記複数のマシンが、前記データオブジェクトのうちの前記第1のデータオブジェクトに、または前記データオブジェクトのうちの前記第1のデータオブジェクトのプロパティーに、同時にアクセスできるかを、前記システムが確定する、請求項1に記載のシステム。どれだけ多くの前記複数のマシンが前記データオブジェクトのうちの前記第1のデータオブジェクトにアクセスできるかとは無関係に、どれだけ多くの前記複数のマシンが前記プロパティーに同時にアクセスできるかを、前記同時並行制御が指定する、請求項2に記載のシステム。前記受信機コンポーネントが前記同時並行制御に対する時間制限を受信し、前記時間制限が経過した後、前記同時並行制御が無効になる、請求項2に記載のシステム。前記受信機コンポーネントによって受信された前記指示が、前記データオブジェクトの第1のデータオブジェクトが前記複数のマシンのうちの第1のマシン上で追加、変更、または削除されたことを表示し、前記データオブジェクトのうちの前記第1のデータオブジェクトの追加、変更または削除を反映するために、前記状態コンポーネントが前記指示に応答して前記データオブジェクトの前記状態をアップデートする、請求項1に記載のシステム。前記データオブジェクトのうちの第1のデータオブジェクトが前記複数のマシンのうちの第1のマシン上で追加、変更または削除されたことを表示するための、前記データオブジェクトの前記状態の変更に応答して、前記通知コンポーネントが、前記複数のマシンのうちの前記第1のマシンとは異なる、前記複数のマシンのうちの第2のマシンに、前記データオブジェクトのうちの前記第1のデータオブジェクトが追加、変更または削除されたことを通知する、請求項1に記載のシステム。前記システムが、前記複数のマシンに、前記データオブジェクトのコンテンツまたは種類に関係なく、前記データオブジェクトに対する変更を通知する、請求項1に記載のシステム。オブジェクトを共有する方法であって、第1のプロパティーを含み、前記第1のマシンと、前記第1のマシンとは異なる複数の第2のマシンとにわたって共有される名前空間の一部である名前を有するオブジェクトモデルの一部である、第1のオブジェクトを登録する要求を受信するステップと、前記第1のオブジェクトが前記第1のマシン上で第1のプログラムによって操作されたことを確定するステップと、前記第1のオブジェクトが前記第1のマシン上で操作されたことの第1の通知を、前記複数の第2のマシンに送信するステップであって、前記確定するステップおよび前記送信するステップが発生したかまたは今後発生するかにかかわらず、前記第1のプログラムが前記第1のオブジェクトを操作する、ステップと、前記第1のオブジェクトが前記複数の第2のマシンのうちの1つのマシン上で操作されたことの第2の通知を、前記複数の第2のマシンから受信するステップと、前記第2の通知に従って前記第1のマシン上で前記第1のオブジェクトを変更するステップとを含む方法。前記第1のオブジェクトまたは前記第1のプロパティーが、所与の時間において2つ以上のプログラムによって操作されうるかどうかを管理する同時並行制御を指定するステップをさらに含む、請求項8に記載の方法。前記第1のオブジェクトが所与の時間において2つ以上のプログラムによって操作されうるかどうかとは無関係に、前記第1のプロパティーが所与の時間において2つ以上のプログラムによって操作されうるかどうかを、前記同時並行制御が管理する、請求項9に記載の方法。前記同時並行制御に対する時間制限を受信するステップをさらに含み、前記時間制限が経過した後、前記同時並行制御が無効になる、請求項9に記載の方法。前記第1のオブジェクトの中のプロパティーが共有可能、または共有不可能にされてよく、前記方法が、前記第1のプロパティーが共有可能にされるべきかまたは共有不可能にされるべきかを指定するステップをさらに含む、請求項8に記載の方法。前記第1のマシンが前記方法を、前記第1のオブジェクトの種類にかかわらずに実行する、請求項8に記載の方法。前記複数の第2のマシンに送信する前記ステップが、前記第1の通知を、前記複数の第2のマシンに前記第1の通知を送信するサーバーに送信するステップを含む、請求項8に記載の方法。請求項8乃至14のいずれか一項に記載の方法を実施するための、コンピューターで実行可能な命令を含む、コンピューター読み取り可能な媒体。0003したがって、プログラムがデータを共有するために、プログラムは、一般に、データを共有することを考慮に入れて実施される必要があり、通常、データの共有の詳細を実施するコードを含む必要がある。0004ローカルデータオブジェクトを作成し使用するのとほぼ同じ方法でプログラムが共有データオブジェクトを作成し使用することを可能にする、共有オブジェクトのシステムが提供されうる。プログラムは、オブジェクトを作成し、オブジェクトに対してプロパティーを設定するためのコードを含んでよい。プログラムは、オブジェクトモデル内の共有オブジェクトであるものとしてオブジェクトを登録することができる。したがって、共通の名前空間を共有するプログラムが、オブジェクトモデルの中の共有オブジェクトにアクセスすることができる。すなわち、プログラムは、共有オブジェクトを読み出し、書き込み、そして変更することができる。プログラムおよびそのプログラマーの視点からは、共有オブジェクトにアクセスすることは、ローカルオブジェクトにアクセスすることと同様に機能する。0005オブジェクトを共有する能力は、一例では、以下のように実施されうる。オブジェクトサーバーは、共有オブジェクトのレジストリーを維持することができる。オブジェクトサーバーはまた、オブジェクトの実態truthを表す、共有オブジェクトのマスターコピーを維持することができる。共有オブジェクトを使用するマシンおよび/またはプログラムのそれぞれはまた、それが使用する共有オブジェクトのローカルコピーを維持することができる。各マシン上の共有オブジェクトランタイムは、いかなる変更が行われたかを確定するために、これらのローカルコピーをモニターすることができる。変更が行われるならば、ランタイムは、変更の通知をオブジェクトサーバーに送信する。オブジェクトサーバーが変更の通知を受信すると、オブジェクトサーバーはオブジェクトの実態をアップデートし、次いで、他のマシンおよび/またはプログラムがオブジェクトのそれらのローカルコピーをアップデートすることができるように、他のマシンおよび/またはプログラムに通知する。0006共有オブジェクトが作成されると、作成者は、オブジェクトに対して、またはオブジェクトの特定のプロパティーに対してさえ、種々の種類の制御を指定することができる。例えば、オブジェクトまたはオブジェクトのプロパティーは、オブジェクトに対する同時変更がいかに取り扱われるか、例えば、最終書き込み優先lastwriterwinsかまたは楽観的同時並行性optimisiticconcurrency、を管理する並行処理制御concurrencycontrolを受けることができ、楽観的同時並行性において、クライアントが最終の実態にアクセスしていない状態でオブジェクトをアップデートすると、変更は拒絶され、クライアントは通知を受ける。あるいは、オブジェクトまたはオブジェクトのプロパティーは、どのマシンおよび/またはプログラムがオブジェクトまたはプロパティーにアクセスできるかを管理するアクセス制御を受けることができる。あるいは、オブジェクト作成者は、オブジェクトのいくつかのプロパティーが共有されるべきであり、その他は共有されるべきでないことを指定することができる。あるいは、別の例として、オブジェクト作成者は、特定の期間中に、排他的書き込み許可exclusivewritepermissionのためにオブジェクトをロックする能力を指定することができる。0007共有オブジェクトの使用は、いずれの特定のプログラミング言語にも限定されるものではない。一例では、プログラミング言語は、共有オブジェクトがローカルオブジェクトと同じ方法またはほぼ同じ方法で使用されることを可能にすることができる。したがって、そのような一例では、プログラミング言語がプログラマーに、ローカルオブジェクトに対して読み出し、書き込み、変更し、追加し、または削除する操作を実行することを可能にするのと同じ方法で、プログラマーは、共有オブジェクトを読み出し、書き込み、変更し、追加し、または消去するためにプログラミング言語を使用することができる。このようにして、プログラマーは、共有メカニズムの詳細を実施する必要なく、また、プログラムがローカルオブジェクトだけを使用する場合に書かれる方法と実質的に異なる方法でプログラムを書く必要なく、他のプログラマーによって、または他のマシン上で使用されうるオブジェクトを作成することができる。0008この発明の概要は、以下の発明を実施するための形態の中でさらに説明される概念の抜粋を簡潔な形で紹介するために提供される。この発明の概要は、特許請求される主題の主要な特徴または本質的な特徴を識別することを意図するものではなく、特許請求される主題の範囲を限定するために使用されることを意図するものでもない。0014最新のコンピューティングでは、多くのプログラムが、同じデータのセットへのアクセスを共有することによって互いに対話する。ソフトウェアパッケージは、共通のデータのセット上で動作する、より小さいプログラムのセットとして組み立てられてよい。あるいは、それ以外には互いに関係のないプログラムが、ユーザーエクスペリエンスのある部分を効率化するために、データを共有することを欲する場合がある。例えば、財務会計ソフトウェアパッケージは、異なる財務会計機能を実行するが、財務データの共通のセット財務データはいくつかのマシンにわたって分配されてよい上で動作する、小さいプログラムのセットとして組み立てられてよい。あるいは、別の例では、遠隔ユーザーが情報を実時間で共有することを可能にするオンライン会議プログラムは、すべてのユーザーが同時に描き込むことができる共通のホワイトボードを提供することができる。この場合は、ホワイトボードのコンテンツは、事実上、会議プログラムのインスタンスの間で共有されるデータのセット例えば、あるひと続きの筆跡penstrokeのセットである。あるいは、一人のユーザーがデスクトップコンピューター上でデスクトップメールクライアントを実行し、スマートフォン上でモバイルメールクライアントを実行することができ、これらの2つのメールクライアントは、基礎をなす同じ電子メールボックスへのアクセスを共有することができる。したがって、ユーザーが一方のクライアント上のメッセージを削除すると、削除操作は、電子メールボックスの基本的サーバーコピーに伝わり、次いで他のメールクライアントに伝わることができる。データの共有を介して互いに対話する、多くの他のプログラムの例が存在する。0015プログラムがデータを共有する多くのシナリオが存在するが、データの共有の実施は、多くの場合、複雑であり、かつ状況に固有のものである。同じ基本的なデータの一部が異なるプログラムおよび/またはマシンにわたって共有されうるとの概念は、抽象である。その抽象を実行に移すメカニズムは、簡単ではない。例えば、変更が1つのマシン上で行われると、変更が行われたという事実は、他のマシンに伝達される必要がある。情報が伝達されうる種々の異なる方法が存在する。変化が発生するマシンは、データをモニターしてデータが変化した時点を確定し、次いでその変化を他のマシンに送り出すことができる。次いで、他のマシンは、これらの変化の通知をリッスンして、それらのローカルコピーに対して変更を加えることができる。異なるマシンがデータの同じ部分を同時に変更する場合は、衝突する変更を解決するために規則が存在する必要がある。多くの場合では、これらのメカニズムが、これらのプログラムの作成者によってプログラムに組み入れられる必要がある。さらに、データの共有が管理される特定の方法は、データの性質に応じて決まる可能性がある。共有メカニズムは、特定の型のデータを保持する特定のデータ構造を共有するように設計されてよい。データが共有される頻度および/または信頼性は、特定のデータの性質に基づく可能性がある。一般に、データを共有することを欲するプログラムは、これらの課題を何らかの方法で管理するように組み立てられる必要がある。多くの場合、使用されるメカニズムは、再使用可能ではなく、各プログラムに対して調整される必要がある。0016本明細書で説明される主題は、データオブジェクトがマシンにわたって共有されうる一般的メカニズムを提供する。本明細書で提供されるメカニズムは、オブジェクトがローカルオブジェクトである場合とほぼ同じ方式で、プログラムが、共有オブジェクトを作成することおよび/またはそのオブジェクトに対してプロパティーを設定することを可能にする。次いで、プログラム自体から独立している共有メカニズムは、そのオブジェクトが他のプログラムおよび/またはマシンといかにして共有されるべきかのメカニズムを管理する。反対に、それらのメカニズムはまた、プログラムがそれらのオブジェクトを使用および/または変更することができるように、他のプログラムおよび/またはマシンによって作成されたオブジェクトへのアクセスを、プログラムに提供することができる。このようにして、多くのプログラムおよび/またはマシンによって使用されうる共有オブジェクトモデルが作成される。0017本明細書で説明されるメカニズムは、プログラムが作成するオブジェクトに対して、プログラムが種々のレベルの制御を実行することを可能にする。例えば、プログラムは、特定のオブジェクトまたはオブジェクトの特定のプロパティーが共有可能であるか、またはローカルに保持されるべきであるか、を選択することができる。オブジェクトが共有される場合は、プログラムは、どのプログラムおよび/またはマシンがオブジェクトまたはプロパティーを使用することができ、どのプログラムおよび/またはマシンが使用することができないか、を指定することができる。プログラムはまた、どれだけ多くのプログラムおよび/またはマシンがオブジェクトまたはプロパティーを同時に操作することができるかを管理する、同時実行制御を指定することができる。本明細書で説明されたメカニズムは、オブジェクト自体が共有可能であるかどうかとは独立に、オブジェクトのプロパティーの共有を制御するために使用されてよい。プロパティーに対するこのきめ細かい制御は、特定のプロパティーが共有されうるかどうかばかりでなく、どの同時実行および/またはアクセス制御がプロパティーに適用されるかにまで及ぶ。0018本明細書で提供されるメカニズムは、オブジェクトが純粋にローカルである場合とほぼ同じ方式で、プログラマーが共有オブジェクトを作成し、使用することを可能にすることができる。さらに、メカニズムの使用は、言語に依存するのではなく、オブジェクトモデルの使用をサポートする任意の言語で使用されうる。したがって、プログラムは、特定のプログラミング言語によって提供される普通の方法でオブジェクトを作成し、プロパティーを設定することができる。したがって、プログラムは、オブジェクトを共有オブジェクトとして登録するための命令を含むことができる。登録は、プログラムが、特定のエンティティーによってオブジェクトの使用に対してアクセス制限を指定し、その場合に共有オブジェクトの使用が、使用が許容されるそれらのエンティティーに制限されることがない場合に、オブジェクトを、作成者と同じ共有名前空間の中にある任意のエンティティーに対して利用可能なオブジェクトモデルの一部にする。0019オブジェクトの共有は、サーバーによって管理されてよい。サーバーは、オブジェクト登録を受信して、オブジェクトモデルの実態を維持する。変更がオブジェクトに対してローカルに加えられると、変更は、サーバーに通信され、次いで、サーバーがオブジェクトモデルの実態をアップデートし、オブジェクトへのアクセスを共有する他のプログラムおよび/またはマシンに変更を通信することができる。オブジェクトの共有は、オブジェクトのコンテンツに依存しない方法で実行されてよく、それにより、どの型のデータがオブジェクト内に含まれているかの詳細にかかわらず、オブジェクトが共有されることが可能になる。0020次に図を参照すると、図1は、オブジェクトの共有が発生することができる環境の一例を示す。示される例では、データオブジェクト102が、マシン104上で作成される。プロパティー106が、データオブジェクト102上に設定される。例えば、データオブジェクト102が車に関するデータを含むならば、プロパティー106は、車の作り、モデル、車齢、または色を含んでよい。1つのプロパティー106だけが図1に示されるが、データオブジェクトは、任意の数のプロパティーを有することができる。0021データオブジェクト102は、例えば、マシン104上で実行するプログラムによって作成されてよい。データオブジェクトは、オブジェクトモデルをサポートする任意のプログラミング言語を使用して作成されてよく、オブジェクトモデルをサポートする任意のプログラミング環境が、本明細書で説明される技術を使用するために構成されてよい。本明細書の主題は、何らかの特定のプログラミング言語に限定されるものではない。したがって、一例では、プログラマーは、Java登録商標またはCなどの言語でプログラムを書き、そのプログラムの一部として、データオブジェクト102を作成しかつデータオブジェクト102に対してプロパティー106を設定するための命令を含める。オブジェクトを作成しかつプロパティーを設定するための命令は、事実上、適用できるプログラミング言語でローカルプロパティーを作成するために発行されるものと同じ命令であってよい。0022データオブジェクト102が作成されるプログラムはまた、データオブジェクト102を共有オブジェクトとして登録するための命令を含んでよい。本明細書の主題は、オブジェクトが純粋にローカルに留まることを可能にするが、同様に、オブジェクトが共有されることを可能にする。したがって、プログラマーがオブジェクトを共有オブジェクトにすることを欲するならば、プログラマーは、オブジェクトを共有オブジェクトモデル108の一部として登録するための命令を発行することができる。オブジェクトの共有を実施するために、マシン104は、共有オブジェクトモデルの中へのオブジェクトの登録と、マシンにわたるオブジェクトの同期とをネゴシエートする共有オブジェクトランタイム110を有することができる。図1は、マシン間で共有されるオブジェクトを示すが、本明細書で説明される技術は、同様に、同じマシン上の複数のプログラムがオブジェクトを共有することを可能にするために使用されてよいことに留意されたい。したがって、登録命令は、オブジェクト102を共有オブジェクトモデル108の一部として登録するための適切なアクションを実行する、共有オブジェクトランタイム110によって処理される。プログラマーは、オブジェクトを種々の制御と共に登録することができる。そのような制御の例は、どのマシンおよび/またはプログラムが共有オブジェクトまたは共有オブジェクトの特定のプロパティーを使用することができるかを管理するアクセス制御と、どれだけ多くのマシンおよび/またはプログラムが、共有オブジェクトまたは共有オブジェクトの特定のプロパティーを同時にアップデートすることができるかを管理する同時実行制御とである。あるいは、オブジェクトは、そのような制御なしに登録されてよく、それにより、オブジェクトを、名前空間をマシン104と共有する任意のプログラムおよび/またはマシンにアクセス可能にする。アクセス制御および同時実行制御は、以下に、より詳細に説明される。0023共有オブジェクトモデル108は、サーバー112によって管理されてよい。サーバー112は、いくつかのオブジェクトモデルを管理することができるが、簡単にするため、オブジェクトモデル108だけが図1に示される。サーバー112は、オブジェクトモデルの実態、すなわち、どのオブジェクトが現在存在するか、およびそれらのプロパティーは何であるかについての現在の情報を維持する。図1の例では、オブジェクトモデル108の実態は、オブジェクトモデル108が、複数のデータオブジェクト114を含むことを示すここで、データオブジェクト114のセットはデータオブジェクト102を含む。加えて、プロパティーが、これらのデータオブジェクトのそれぞれに対して設定されるデータオブジェクト102に対して設定されるプロパティー106など。0024異なるマシンおよび/またはプログラムが1つのオブジェクトへのアクセスを共有するために、マシンおよび/またはプログラムは共通の名前空間を共有する。すなわち、共有オブジェクトにアクセスするすべてのエンティティーに対して、同じ名前は同じオブジェクトに言及する。例えば、名前空間116は、名前118、120および122を含むことができる。マシン124、126および128が、マシン104上で作成されたオブジェクト102へのアクセスを共有するのであるならば、そのオブジェクトの名前例えば、名前118は、マシン104、124、126および128のすべてに対して同じ意味を有する。それゆえ、あるオブジェクトが名前ABCDEを有するならば、この名前は、そのオブジェクトがマシン104、マシン124、その他からアクセスされているかどうかにかかわらず、同じ共有オブジェクトに言及する。0025図1に示されるコンポーネントは、以下の方式で使用されてよい。マシン104上のプログラムは、オブジェクト102を作成し、プロパティー106を設定し、オブジェクト102を共有オブジェクトモデルの一部として登録する。プログラムはまた、オブジェクト102上および/またはプロパティー106上で同時実行および/またはアクセス制御を設定することができる。次いで、登録済みオブジェクトのコピーがサーバー112によって記憶される。オブジェクトについてサーバーコピーが伝えることと、オブジェクトについてローカルコピーが伝えることとの間の差が、サーバーコピーを支持することで解決されうるという意味で、サーバー112によって記憶されたコピーがオブジェクトの実態を表す。0026次いで、サーバーは、オブジェクトの実態をマシン104以外のマシン、例えばマシン124乃至128、に伝達する。これらの他のマシンは、オブジェクトのローカルコピーを記憶することができる。オブジェクトに対する変更がいずれかのマシン上で例えば、オブジェクト上の既存のプロパティーを変更すること、新しいプロパティーを設定すること、オブジェクトを削除すること、などによって加えられると、そのマシン上の共有オブジェクトランタイムがサーバー112に通知する。各マシンは、そのマシン上に発生するオブジェクトの変更をサーバー112に通知する、共有オブジェクトランタイム110の一バージョンを有してよい。サーバー112がそのマシンに、オブジェクトに対する状態の変更が他のマシン上で発生したことを通知すると、共有オブジェクトランタイム110は、同様に、そのマシン上のオブジェクトのローカルコピーを変更することができる。次いで、サーバー112は、加えられた変更を反映するために、オブジェクトの実態を調整する。2つのマシンがオブジェクトに対する変更を同時に加える場合は、競合の解決ルールが、オブジェクトに対する矛盾する変更を解決するために使用されてよい。オブジェクトの実態がサーバー112によって確定されると、マシンは、オブジェクトの状態に対するアップデートを通知される。アクセス制御がオブジェクト上で設定されているならば、オブジェクトの現在の状態が、オブジェクトにアクセスすることを許可されたマシンにのみ提供される。アクセス制御がオブジェクト上で設定されていなければ、オブジェクトの現在の状態が、同じ名前空間の中のすべてのマシンに提供される。同様に、アクセス制御ルールが、オブジェクトに書き込むためのアクセス許可、オブジェクトを削除するためのアクセス許可、などを持たないクライアントからのアップデートを拒否するために使用されてよい。0027オブジェクトの実態が変化したという通知をマシンが受信すると、各マシン上の共有オブジェクトランタイムは、オブジェクトの実態を反映するために、そのマシンのオブジェクトのローカルコピーをアップデートする。0028共有オブジェクトは、ローカルオブジェクトとほぼ同じ方式で作成および/またはアクセスされてよい。オブジェクトサーバーおよび種々のマシンの共有オブジェクトランタイムは、マシンのオブジェクトのローカルコピーをモニターし、アップデートすることによってオブジェクトの共有および同期を管理する。それゆえ、ローカルコピーが他のマシンと共有および/または同期されない場合とほぼ同じ方式で、ローカルコピーがプログラムによってアクセスされうる。したがって、共有オブジェクトランタイムが、オブジェクトが変更されたことを確定し、オブジェクトが変更されているという事実の通知を共有オブジェクトサーバーに送信することができるにもかかわらず、プログラムは、共有オブジェクトランタイムによるこれらのアクションを考慮することなく、データを操作することを継続することができる。実際に、本明細書の主題によって組み立てられたシステムを使用することによって、プログラムが純粋にローカルデータを使用することができるほどの簡単さで、プログラムは共有データを使用することができる。0029図2は、オブジェクトサーバー112の一例の詳細を示す。オブジェクトサーバー112は、種々の構成を取ることができるが、示される例では、オブジェクトサーバー112は、オブジェクトデータベース202、通信コンポーネント204、受信機206、通知部208および状態コンポーネント210を備える。0030通信コンポーネント204は、オブジェクトサーバー112を種々のマシン124、126および128に接続する。例えば、通信コンポーネント204は、サーバー112がサーバー112の外の世界と通信することを可能にするハードウェアおよび/またはソフトウェア例えば、ネットワークカードおよびそのドライバーを備えることができる。サーバー112は、オブジェクト114に対する状態の変更の通知をマシン124乃至128に送信するために、通信コンポーネント204を使用する。加えて、サーバー112は、それらのマシン上で発生したオブジェクトに対する変化の通知をマシン124乃至128から受信するために、通信コンポーネント204を使用する。0031オブジェクトに対する変化がマシン例えば、マシン124上に発生すると、そのマシン上の共有オブジェクトランタイムは、サーバー112への通知を生成する。その通知は通信コンポーネント204によって受信され、次いで、受信機206に渡される。受信機206は、変化の通知を状態コンポーネント210に提供する。状態コンポーネント210は、オブジェクト114の実態212を維持する。状態コンポーネント210は、オブジェクトの実態212が通知に基づいて変更されるべきかどうかを確定する。例えば、オブジェクトがマシン124上で例えば、プロパティーをある値から別の値に変更することによって変更され、サーバー112がその変更を通知されるならば、状態コンポーネント210は、そのオブジェクトの実態が変化したことを確定することができる。したがって、状態コンポーネント210は、オブジェクトデータベース202の中のオブジェクトに対して適切なアップデートを行うことによって、その変更をオブジェクトの実態に加える。状態コンポーネント210はまた、衝突を解決するためのルールを実施することができる。例えば、2つのマシンが同じオブジェクトを同時に変更しようと試みるならば、状態コンポーネント210は、どちらの変更が遂行されるべきかを確定することができる。あるいは、両方の変更が遂行されるべきであるならば、状態コンポーネント210は、いかにしてその2つの変更がオブジェクトの新しい実態を作成するために組み合わされるべきかを確定することができる。0032加えて、状態コンポーネント210は、同時実行214および/またはアクセス制御216に関連する問題を管理することができる。同時実行214は、どれだけ多くのエンティティーが、一オブジェクトまたは一オブジェクトの一プロパティーに同時にアクセスできるかを確定する。アクセス制御216は、エンティティーマシンまたはプログラムが所与のオブジェクトまたは所与のオブジェクトのプロパティーにアクセスすることができる制限もし存在するならばを指定する。オブジェクトおよび/またはプロパティーに対する同時実行およびアクセス制御は、オブジェクトが共有オブジェクトとして登録される時点で指定されてよい。一例では、オブジェクトおよび/またはプロパティーは、アクセス制御がそのオブジェクトに対して指定されないならば、デフォルトによって公開されてよい。同時実行214は、時間制限によって指定されてよく、例えば、特定のエンティティーが、制限された時間の間だけ、あるオブジェクトへの単独書き込みアクセスsolewriteaccessを請求することができ、その時間が経過した後は単独アクセス制約soleaccessconstraintが無効になることを、同時実行制御が指定することができる。0033オブジェクトの実態が変化すると、通知部208は、オブジェクトへのアクセスを共有するマシンに送信される通知を生成することができる。通知部208は、そのようなメッセージを通信コンポーネント204を使用して送信することができる。例えば、状態コンポーネント210が、オブジェクトの実態212が変化したことを確定するならば、通知部208は、マシン124、126および128に通知を送出することができる。それらのマシンは、それらのマシンがアクセスを共有するオブジェクトのローカルコピー218、220および222のそれぞれを維持することができる。通知に応答して、マシンは、それに応じて、それらのローカルコピー218乃至222をアップデートすることができる。0034図3は、マシンが共有データオブジェクトを作成し、使用することができるプロセスの一例を示す。図3の説明を参照する前に、本明細書に含まれる流れ図図3および図4の両方は、例として、図1および図2に示されるコンポーネントに関連して説明されるが、これらのプロセスは、任意のシステムにおいて遂行されてよく、図1および図2に示されるシナリオに限定されるものではないことに留意されたい。加えて、図3および図4の流れ図のそれぞれは、プロセスのステージが、ブロックを接続する線によって示される特定の順序で遂行される一例を示すが、これらの図に示される種々のステージは、任意の順序で、または任意の組合せもしくは下位の組合せで実行されてよい。0035302で、データオブジェクトが指定される。データオブジェクトの指定は、プログラム内の命令の一部として実行されてよい。例えば、プログラマーがデータオブジェクトを作成し、そのオブジェクトに対してプロパティーを設定するメカニズムをプログラミング言語が提供するならば、そのデータオブジェクトは、そのメカニズムを使用して指定されてよい。使用されるメカニズムは、ローカルオブジェクトを指定するために使用されるメカニズムと同じであってよい。0036304で、データオブジェクトが、オブジェクトモデルの一部として登録されてよい。例えば、オブジェクトを共有オブジェクトモデルの一部として登録するための命令をプログラマーが発行することを可能にするプログラミングインターフェースを提供することができる、上で説明したようなローカルな共有オブジェクトランタイムが存在してよい。そのような命令が、304で与えられてよい。0037306で、同時実行制御が、オブジェクトに対して、またはオブジェクトのプロパティーに対して指定されてよい。同時実行制御は、例えば、一度に単一のエンティティーだけが所与のオブジェクトまたはオブジェクトの所与のプロパティーに書き込むことができることを指定することができる。あるいは、より広い一般性において、同時実行制御は、どれだけ多くのエンティティーが所与の一オブジェクトに一度にアクセスすることができるかを指定することができる。308で、アクセス制御が、オブジェクトに対して、またはオブジェクトのプロパティーに対して指定されてよい。アクセス制御は、どのエンティティーがオブジェクトにアクセスすることができるかまたはできないかを指定することができる。0038310で、オブジェクトを操作する命令が、作成されてよい。オブジェクトの操作は、オブジェクトに対する任意の変更、例えば、オブジェクトを作成すること、オブジェクトを削除すること、オブジェクトに対するプロパティーを追加、削除または変更すること、他を含む。これらの命令は、オブジェクトを使用するプログラムが書かれるプログラミング言語を介して与えられてよい。一例では、命令は、ローカルオブジェクトを操作するために使用される命令と同じである。0039図3で説明されるプロセスは、1つのマシンの上で実行されてよい。しかし、そのプロセスの一部として、312で、図3のプロセスが実行されているマシンとは異なってよい他のマシンが、オブジェクトにアクセスすることを許容されてよい。例えば、そのマシン上の共有オブジェクトランタイムが、オブジェクトおよびオブジェクトに対する任意の変更が共有オブジェクトサーバーに送信されることをもたらすことができる。次いで、サーバーは、オブジェクトの実態を決めることができ、上で説明されたように、オブジェクトの実態に対する変更を、他のマシンに通知することができる。共有オブジェクトサーバーの使用は、共有オブジェクトの一実施である。しかし、ピアツーピアの実装形態もあり、それらの実装形態は、本明細書の主題によって包含される。0040プログラムによって作成されたオブジェクトに他のマシンがアクセスすることを可能にする行為は、そのプログラムが共有命令のいずれかを実施する必要なしに発生しうることに留意されたい。上述の通り、マシンにわたるデータの共有は、一般に、変化に対してデータをモニターし、その変化を他のマシンに送信し、他のマシンから変化を受信するなどのメカニズムを伴う。しかし、これらのメカニズムは、共有オブジェクトランタイムによって実施されてよい。したがって、共有オブジェクトを作成するプログラムの視点から、プログラムは、オブジェクトを、それがローカルオブジェクトであるかのように処理することができ、プログラム自体は、オブジェクトを共有するためのメカニズムを実施する特定のコードを含まない。一例では、プログラムは、単に、オブジェクトを共有オブジェクトモデルの一部として登録するための命令を発行することによってオブジェクトを共有することができ、プログラムは、それ以外は、共有オブジェクトを、それがローカルオブジェクトであるかのように処理することができる。すなわち、プログラムは、オブジェクトを共有オブジェクトとして登録するための初期命令以外はオブジェクトの共有に関する命令を含むことなく、オブジェクトを共有できることを可能にする。加えて、オブジェクトのスキーマはクライアントにとって意味があるが、サーバーは、オブジェクトが含むデータに対して不可知であってよい。0041図4は、オブジェクトの共有を容易にするために、共有オブジェクトサーバーによって遂行されうるアクションの例を示す。0042402で、サーバーは、オブジェクトを登録する要求を受信する。この要求は、例えば、プロパティー106を有するデータオブジェクト102が作成されているマシン104から来ることができる。0043404で、サーバーは、オブジェクトがマシン104上で操作されたことを確定することができる。例えば、マシン104上の共有オブジェクトランタイムが、そのマシン上のオブジェクトのローカルコピーをモニターすることができる。オブジェクトが何らかの方式で操作されると、共有オブジェクトランタイムは、オブジェクトが操作されたという通知をサーバーに送信することができる。この通知が、サーバーによって受信されうる。0044通知がサーバーによって受信されると、サーバーは、サーバーが通知を受けたローカルで加えられた変更を反映するために、オブジェクトの実態をアップデートすることを確定することができる。このアップデートは406で発生することができる。ある時点でオブジェクトの共有使用がなされているマシンが、リッスン要求listeningrequestをサーバーに送信することができ、リッスン要求は、特定のオブジェクトまたはオブジェクトのセットに対する変更をサーバーがそれらのマシンに通知することを、要求する。これらのリッスン要求は、408で受信される。リッスン要求の受け取りは、408と410との間が発生することによって示されるが、オブジェクトに対する変更が通知されることの要求は、任意の時点で受信されてよく、図4に示されるシーケンスは、本明細書の主題を限定するものではない。オブジェクトの実態が確定されると、410で、オブジェクトの状態が変更されたことの通知が、オブジェクト102へのアクセスを共有する他のマシン例えば、マシン124、126および128に送信されてよい。次いで、これらのマシンは、それら自体のオブジェクトのローカルコピーをアップデートすることができる。アクセス制御がオブジェクトまたはオブジェクトのプロパティーに対して存在するならば、オブジェクトまたはプロパティーへのアクセスが許可されているそれらのマシンに通知が送られてよい。0045図5は、本明細書で説明される主題の態様が配備されうる環境の一例を示す。0046コンピューター500は、1つまたは複数のプロセッサー502および1つまたは複数のデータ記憶コンポーネント504を含む。プロセッサー複数可502は、通常は、個人向けのデスクトップまたはラップトップコンピューターに見られるようなマイクロプロセッサー、サーバー、ハンドヘルドコンピューター、または別の種類のコンピューティングデバイスである。データ記憶コンポーネント複数可504は、短期間または長期間のいずれかに対してデータを記憶することができるコンポーネントである。データ記憶コンポーネント複数可504の例は、ハードディスク、リムーバブルディスク光ディスクおよび磁気ディスクを含む、揮発性および不揮発性のランダムアクセスメモリーRAM、リードオンリーメモリーROM、フラッシュメモリー、磁気テープ、他を含む。データ記憶コンポーネント複数可は、コンピューター読み取り可能な記憶媒体の例である。コンピューター500は、陰極線管CRTモニター、液晶ディスプレイLCDモニター、もしくは任意の他の種類のモニターであってよいディスプレイ512を備えるかまたは付随することができる。0047ソフトウェアは、データ記憶コンポーネント複数可504内に記憶されてよく、1つまたは複数のプロセッサー複数可502上で実行されてよい。そのようなソフトウェアの一例は、図1乃至図4に関連して上で説明された機能性のいくつかまたはすべてを実施することができる、オブジェクト共有ソフトウェア506であるが、任意の種類のソフトウェアが使用されてよい。ソフトウェア506は、例えば、分散システム、独立したファイル、独立した機能、独立したオブジェクト、独立したコード行、他の中のコンポーネントであってよい、1つまたは複数のコンポーネントを介して実施されてよい。プログラムがハードディスク上に記憶され、RAMにロードされ、コンピューターのプロセッサー複数可上で実行されるコンピューター例えば、パーソナルコンピューター、サーバーコンピューター、ハンドヘルドコンピューター、他が、図5に描かれるシナリオを象徴するが、本明細書で説明される主題は、この例に制限されるものではない。0048本明細書で説明される主題は、1つまたは複数のデータ記憶コンポーネント複数可504内に記憶され、1つまたは複数のプロセッサー複数可502上で実行されるソフトウェアとして実施されてよい。別の例として、主題は、1つまたは複数のコンピューター読み取り可能な記憶媒体上に記憶される命令として実施されてよい。光ディスクまたは磁気ディスクなど、有形媒体が、記憶媒体の例である。命令は、持続媒体上に存在することができる。そのような命令は、コンピューターまたは他のマシンによって実行されると、コンピューターまたは他のマシンに、方法の1つまたは複数の行為を実行させることができる。行為を実行するための命令は、1つの媒体上に記憶されてよく、または、命令のすべてが偶然に同じ媒体上に存在するかどうかにかかわらず、その命令が1つまたは複数のコンピューター読み取り可能な記憶媒体上にトータルで出現するように、複数の媒体にわたって展開されてよい。0049加えて、本明細書で説明される任意の行為図に示されるか否かは問わずは、方法の一部としてプロセッサー例えば、1つまたは複数のプロセッサー502によって実行されてよい。したがって、A、BおよびCの行為が本明細書で説明されるならば、A、BおよびCの行為を含む方法が実行されてよい。さらに、A、BおよびCの行為が本明細書で説明されるならば、A、BおよびCの行為を実行するためのプロセッサーを使用するステップを含む方法が実行されてよい。0050環境の一例では、コンピューター500は、ネットワーク508を介して1つまたは複数の他のデバイスと通信可能に接続されてよい。構造がコンピューター500に類似するコンピューター510が、コンピューター500に接続されうるデバイスの一例であるが、他の種類のデバイスもまた、そのように接続されてよい。0051主題が、構造特性および/または方法論的行為に特有の言語において説明されたが、添付の特許請求の範囲において定義される主題は、上で説明された特定の特性または行為に必ずしも限定されないことを理解されたい。そうではなく、上で説明された特定の特徴および行為は、特許請求の範囲の実施の例示的形態として開示されるものである。