Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
JP5456677B2 - マルチマスタ同期環境におけるウェブサービスエンドポイントの同期 - Google Patents
[go: Go Back, main page]

JP5456677B2 - マルチマスタ同期環境におけるウェブサービスエンドポイントの同期 - Google Patents

マルチマスタ同期環境におけるウェブサービスエンドポイントの同期 Download PDF

Info

Publication number
JP5456677B2
JP5456677B2 JP2010526060A JP2010526060A JP5456677B2 JP 5456677 B2 JP5456677 B2 JP 5456677B2 JP 2010526060 A JP2010526060 A JP 2010526060A JP 2010526060 A JP2010526060 A JP 2010526060A JP 5456677 B2 JP5456677 B2 JP 5456677B2
Authority
JP
Japan
Prior art keywords
knowledge
web service
node
synchronization
data
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 - Fee Related
Application number
JP2010526060A
Other languages
English (en)
Other versions
JP2011503678A (ja
Inventor
レイ クラーク マイケル
コスラビー ムー
シー.リー オリバー
ノヴィク レフ
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2011503678A publication Critical patent/JP2011503678A/ja
Application granted granted Critical
Publication of JP5456677B2 publication Critical patent/JP5456677B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1095Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING OR CALCULATING; COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N5/00Computing arrangements using knowledge-based models
    • G06N5/02Knowledge representation; Symbolic representation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Databases & Information Systems (AREA)
  • General Physics & Mathematics (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Data Mining & Analysis (AREA)
  • Computing Systems (AREA)
  • Evolutionary Computation (AREA)
  • Computational Linguistics (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Software Systems (AREA)
  • Information Transfer Between Computers (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Telephonic Communication Services (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Description

本開示は、マルチマスタ同期環境内で疎結合された機器が相互と同期するための同期プロトコルに関する。
移動型のコンピューティング機器と通信機器が普及した結果、それに対応してユーザが希望する場所で情報を配信および受信できる能力に対する要望が生まれている。簡単に言うと、ユーザは、場所、時間、および機器能力に関係なく、各種機器からのユビキタスな情報およびアプリケーションへのアクセスを求めており、加えて、ユーザはそのような情報にその場でアクセスして更新できることを望み、またデータが可能な限り正確で最新のものである保証も求めている。
機器およびオブジェクトに互いにデータの複製を共有させることを試みる各種の分散データシステムがある。例えば、音楽共有システムでは、PC、携帯電話、ゲーム機、およびMP3プレーヤ間で音楽を同期することができる。電子メールデータが、ワークサーバ、クライアントPC、および携帯型の電子メール機器間で同期されることができる。しかし、現在のところ、そのような機器が互いと共通の情報セットを同期する限りでは、同期は、機器間の静的な設定に従って行われる。しかし、そうした機器の接続が頻繁あるいは断続的に切断される場合、すなわち、例えば携帯電話がトンネル内にある時や同期させる機器の数が動的である場合のように、機器が疎結合されていて互いとの通信から切断される可能性がある場合には、相互と再接続する時やネットワークに加わる際に、互いの機器が必要とする変更を機器が判定するためのトポロジーに依存しない方法があることが望まれる。
現在は、図1に示すように、電子メールサーバが電子メールクライアントと同期する際のように、マスタノード100が専用方式でクライアントノード110と同期する各種の例がある。2つの機器間専用の同期なので、2つの機器間で同期が必要な情報102はマスタノード100によって追跡することができる。この情報102は、クライアントノード110によっても任意で追跡されることができるが、マスタノード100とクライアントノード110間の接続が時折切断される場合、および同期する機器の数が増えた場合には、共通の情報のうち各機器が必要とする必要な情報をそれらの機器すべてにわたって追跡することは困難な問題となる。
現在の解決法は、多くの場合、同期のセマンティックの基盤を、任意のノードではなく特定のノード(例えば電子メールサーバ)についてのクロックまたは論理的なウォーターマークのみに置いている。そうしたシステムは、接続するノードまたはマスタが1つの場合には良好に機能する。しかし、ノードの接続のトポロジーまたはパターンが予測不能な変化をした時には問題が発生する。
他のシステムは、この問題に対処するために、特定の種類のデータオブジェクトについての独自開発の同期モデルを構築し、データフォーマットに固有の膨大な量の基本メタデータを機器間で追跡する。例えば、特定のWord処理文書のフォーマットのオブジェクトを同期するには、オブジェクトは時間の経過と共に変化するため、文書とその基本プリミティブを表現することと、共通のWord処理文書のセットに従って同期することを望む他の機器に対してその情報を効率的に表現することに多くの間接費と複雑性が注ぎ込まれなければならない。そのようなシステムは構築が高コストで複雑であり、またそれらが基礎とするカスタムのデータフォーマットのために拡張不可能であるのに加えて、そのようなシステムは、生成し、分析し、追跡すべきメタデータの量が多いために本質的に非スケーラブルである。
また、そうした解決法は、例えばWord処理文書等の1つの特定のドメインにしか適用することができない。例えば画像、映像、電子メール、文書、データベースストア等のあらゆる種類の同期オブジェクトを考えると、マルチマスタ環境ですべての機器にわたってそのようなオブジェクトの発展を追跡するために、各オブジェクトタイプに基づいた特化された同期解決法を実装することは、現在では実現不可能であることが理解できる。したがって、そのような解決法は、データセマンティックから同期セマンティックを切り離すとは言えない。
そのため、あるトポロジーにあるコンピュータが相互に接続する方式を変える時、あるいはコンピュータの数が増加した時に、ノードに依存しない同期の知識が必要とされる。例えば、メディアプレーヤの場合は、複数のコンピュータおよび複数のウェブサイト間での同期が望まれる可能性がある。大半の事例では、大半のアプリケーションは、数個のよく知られたエンドポイント(ホームPCとメディアプレーヤ)の間でしかデータを同期させることができない。しかし、そのメディアプレーヤアプリケーションのユーザにとって機器コミュニティが時間と共に進展して行くと、機器に利用される音楽ライブラリのデータ同期の柔軟性の必要性が高まり、その結果、より堅牢なシステムの必要性が生じる。
この必要性は、データの受信、生成、処理、記憶、更新、伝送や、機器との間の各種ネットワークトラフィックの生成に関係することが増えているウェブサービスのエンドポイントの成長を考えるときに、より複雑になる。これに関して、機器の同期の必要性の発展と並行して、同時に発生している傾向は、ウェブサービス、すなわちネットワークを通じた相互動作可能なマシン間対話を支援するように設計されたソフトウェアシステムによって作成、記憶、操作、送信等されるデータが増加していることである。通例、ウェブサービスは、クライアント機器からインターネット等のネットワークを通じてアクセスされることが可能なWeb APIであり、要求されるサービスをホストしているリモートシステムで実行される。しかし、疎結合のマルチマスタ同期環境の一部である一般的なエンドポイントとしてのウェブサービスとの間で同期を行う手段も存在しない。
この点で、マルチマスタ環境における同期の観点から見ると、2つの機器は直接接続することはできないかもしれないが、共通のウェブサービスエンドポイントを介して接続できる可能性があるため、どの機器とも同期可能なエンドポイントのウェブサービス実装は、有用なシナリオである。これに関して、接続された機器のセットすべての集積された知識を、同期されるオブジェクトと無関係に理解するための機構がないときに、疎結合の機器とウェブサービスの間で同期を試みると複雑化が生じる。これは、そうした機器は常に、発展および退化するノードのネットワークトポロジの一部としてそれら全機器を結合する1つまたは複数のネットワークに接続し、接続を切断するためである。
したがって、個人/機器の集積された知識に許される最大の程度まで共通の情報をまとめることができるように、各接続機器が何を知っており、何を知らないのかを表すための効率的で単純で汎用性のある機構が必要とされる。さらに、そのようなマルチマスタシステム内で同期ノードとしてのウェブサービスを収容して、疎結合のノードシステムが、保持しているデータとそのデータのバージョンを記述し、データを受信した場所を記述し、さらに会話に関係する別のノードから必要とするデータを記述することを容易にする必要性がある。
上記およびその他の疎結合機器間の同期の現状の欠陥についてのさらなる詳細は、以下の本発明の各種実施形態の説明から明らかになろう。
マルチマスタネットワークコンピューティングのエコシステム内でエンドポイントがローミングし、共通の情報を相互と共有し、同期するためのメタデータおよびメッセージングを示すウェブサービス同期プロトコルが提供される。各種の非制限的実施形態で、2つのエンドポイントの1つまたは複数がウェブサービスをサポートする場合に2つのエンドポイント間でデータを同期するために一般的なSOAPベースのプロトコルが定義される。このプロトコルは、XMLウェブサービスを使用した知識に基づく転送のためのメッセージングを定義し、複数のエンドポイントにわたって共通の情報セットまたはサブセットを可能にする柔軟性のある方式で、機器、サービス、およびアプリケーションがファイアウォールを通じて同期することを可能にし、エンドポイントで同期される実際のデータのスキーマを規定しないことにより拡張性を可能にする。
以下のより詳細な説明と添付図面で示す例示的な非制限的実施形態の各種態様を基本的に、あるいは一般的に理解することを助けるために簡略化した要約が提供される。ただし、この要約は、広範にわたる、あるいは網羅的な概略ではない。この要約の唯一の目的は、以下の本発明の各種実施形態のより詳細な説明の前置きとして、本発明の例示的な非制限的実施形態の一部に関連するいくつかの概念を簡略化した形で示すことである。
このウェブサービス同期プロトコルと、該プロトコルを使用した同期の技術について、添付図面を参照してさらに説明する。
システム中の2つの明確に定義されたエンドポイント間の同期を提供する専用同期システムの図である。 一部のノードが互いと接触する頻度が少ない、あるいは全く接触しない場合がある、例示的なマルチマスタ同期環境を示すブロック図である。 本発明の非制限的実施形態に係るウェブサービス同期プロトコルによりノードがウェブサービスエンドポイントと同期する例示的シナリオの図である。 本発明の非制限的実施形態に係るウェブサービス同期プロトコルによりウェブサービスエンドポイントがノードと同期する例示的シナリオの図である。 本発明のウェブサービス同期プロトコルの非制限的実施形態によりマルチマスタ同期環境のノードがよりリッチな知識交換を達成する例示的シナリオの図である。 疎結合されたノードのネットワークの4つのノード間の例示的で非制限的な知識の交換を説明する図である。 一部の機器の接続が互いから切断された時の疎結合ノードネットワークの4つのノード間での例示的で非制限的な知識交換を説明する図である。 ネットワークのノード間で共有される複数のオブジェクトのコンテクストで例示的な知識交換を説明する図である。 ネットワークのノード間で共有される複数のオブジェクトのコンテクストで例示的な知識交換を説明する図である。 ネットワークのノード間で共有される複数のオブジェクトのコンテクストで例示的な知識交換を説明する図である。 ネットワークノード間で共有される複数のオブジェクトのコンテクストで知識交換のプロセスを説明する、例示的で非制限的な流れ図である。 知識および部分的知識に基づいて変更を要求および伝達するためのフレームワークを示す一般的アーキテクチャの図である。 本発明のウェブサービス同期プロトコルの非制限的実施形態によるノードおよび/またはウェブサービスプロバイダによるウェブサービス通信のための一般的アーキテクチャの図である。 本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。 本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。 本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。 本発明の非制限的実施形態の柔軟性のあるウェブサービス同期プロトコル通信で実施することが可能な知識交換のメッセージングパターンを説明する図である。 本発明の非制限的実施形態による部分的知識の表現によって可能になる例を説明する図であり、2つの異なるバージョンの知識が異なるスキーマに従って表現されるが、共通の知識表現に従って同期されることを説明する図である。 本発明の非制限的実施形態による、ネットワークのノードおよび/またはウェブサービスエンドポイント間で共有される複数のオブジェクトのコンテクストで知識および/または部分的知識の交換を行うプロセスを説明する、例示的で非制限的な流れ図である。 別のノードまたはウェブサービスエンドポイントと知識の交換を行う機器の例示的で非制限的な実装のブロック図である。 本発明を実施することが可能な例示的で非制限的なネットワーク環境を表すブロック図である。 本発明を実施することが可能な例示的で非制限的なコンピューティングシステムまたは動作環境を表すブロック図である。
概要
背景技術の項で述べたように、分断され、分散した現在のコンピューティングの方式を考えると、機器のアプリケーションと情報を使用し、職場にあるそのアプリケーションおよび情報に更新を同期する、あるいは家庭ネットワークの機器等に更新を同期する能力が望まれる。この点で、同期のシナリオは無限である。
マルチマスタ同期環境では、同期の能力は、機器が、ウェブサービスエンドポイントを含む疎結合のノードセットにある1つまたは複数のノードに接触する場合に、時と場所に関係なく要求される。ただし、負担になるほどの量のデータ固有のメタデータを追跡せずに、効率的な知識の交換を行うことが望ましい。不都合な点として、ネットワーク化されたデータは現在はモバイル機器との同期をサポートしておらず、モバイル機器はネットワーク化されたデータとの同期をサポートしていない。むしろ、モバイル機器向けの種々の独自開発のデータ同期プロトコルが普及している。それらの各プロトコルは、選択された機器のサブセットで実装された、小さなネットワーク化データのセットにアクセスできる選択された移送機構にのみ利用することができる。単一の同期標準が存在しないことが、エンドユーザ、機器製造者、アプリケーション開発者、サービスプロバイダに対して多くの問題を呈している。
したがって、モバイルコンピューティングは、データの同期という広範な問題を抱える。ハンドヘルドコンピュータ、携帯電話、ポケットベル、ラップトップ等の一般的なモバイル機器はすべて、各自のデータを、ネットワークアプリケーション、音楽アプリケーション、デスクトップカレンダー、および情報が記憶されている他の場所と同期させる。しかし、断続的な接続性の状況下で動作中にそのような情報にアクセスして更新するこの能力は、急速にモバイルコンピューティングの一般的な部分になりつつある。それでも、現在、ほぼあらゆる機器は、データ同期を行うために異なる技術を使用している。
したがって、ウェブサービスエンドポイントを含む疎結合された複数の機器間で共通の情報を共有することを望む分散データシステムはいずれも、機器が認識している共通の情報への変更と、認識していない変更を表現する効率的な方式を必要としている。
こうした必要性を鑑みて、本発明は、各種の非制限的実施形態で、マルチマスタ同期環境においてウェブサービスエンドポイントがノードおよび他のウェブサービスエンドポイント間での共通の情報セットまたはサブセットの同期に加わることを可能にする、データタイプに無関係の同期プロトコルを提供する。機器がネットワーク内の別のノードまたはウェブサービスエンドポイントに接続された時にデータ同期のセッションを行うための通信を定義するデータ同期プロトコルが提供される。このプロトコルは、オブジェクトの識別とバージョニングを含むノード間の同期のための知識フレームワークと、ローカルデータおよびネットワークデータを同期するための効率的な知識交換向けの共通のプロトコルコマンドをサポートする。
図2Aに示すように、典型的なマルチマスタ同期環境は、音楽を記憶し、音楽のコレクションが変化した時には必ずどこにいても所有する音楽をユーザのすべての機器にわたって同期したいというユーザの要望によって表すことができる。例えば、ユーザは、自宅に相互と同期することが可能なMP3プレーヤ220とコンピューティング機器230を有する。同様に、職場には、別のコンピュータ機器200と携帯電話240を有する。この点で、ユーザは、携帯電話240に接触している時には携帯電話240を機器200と同期させることに問題はないが、会社の方針の一環としてユーザは携帯電話240を仕事以外には携行することができない。そのため、この仮定のシナリオでは、自宅にある機器は知識に基づく交換を介して同期することができ、職場の機器は知識に基づく交換を介して同期することができるが、職場の機器から自宅の機器、またはその逆に知識を転送するブリッジは存在しない。したがって、ウェブサービスエンドポイントと同期できることが望ましいと考えられる。以下でより詳細に説明する各種の非制限的実施形態における本発明のプロトコルは、XMLメッセージングを介してウェブサービスエンドポイントとの間でそのような知識に基づく交換を可能にして、マルチマスタ同期環境における付加的な同期の選択肢と柔軟性を提供する。
図2Bに示すように、マルチマスタ同期エコシステムのノード間で共通の情報セットまたはサブセットについての理解を交換するための知識に基づく効率的な同期フレームワークを活用して、ウェブサービスエンドポイントとの間で知識に基づく交換が可能になる。図に示すように、PC200は知識202を有し、この知識202は、オブジェクトのセットとそれらオブジェクトのバージョン(例えばタイムスタンプ)を含む。PC200は、ウェブサービスエンドポイント210のウェブサービス同期要求を呼び出すことにより、自身の知識202をウェブサービス210に送信し、ウェブサービス210は、自身の知識212を知識202と比較する。そして、ウェブサービス210は知識212をPC200に返す。この知識交換フレームワークの詳細については下記でより詳しく説明する。これに関して、PC200がウェブサービス210にXMLメッセージを送信して知識202および212に基づいて知識に基づく同期を行う方式を定義するウェブサービス同期プロトコル205が提供される。その結果、ウェブサービスエンドポイント210は、クライアントによって理解されていてウェブサービスエンドポイント210が認識していない知識202、およびその逆の知識を拾い出す。
ウェブサービスエンドポイント210との交換の結果、図2Cに示すように知識212が知識212’に更新される。図2Cでは、図2Bの機器200が切断されるが、MP3プレーヤ220がウェブサービス210に接続され、ウェブサービス同期プロトコル205でウェブサービスエンドポイント210との同期の要求を行う。これに関して、知識222および212’に関して知識の交換が行われ、この場合、MP3プレーヤ220は、MP3プレーヤ220が知らない知識212’の部分を知り、またウェブサービス210もウェブサービス210が知らない知識222の部分を知る。
このようにして、図2Dに示すように、ウェブサービスエンドポイント210は、マルチマスタ同期環境で接続、切断、および同期するノード間で知識を表現するための同じ同期フレームワークに従って、どのノードとも同期することができ、それにより、一部のノードがマルチマスタ同期グループの他のノードと直接接続することが全くない場合でも、ユーザの全ノードにわたる知識の学習を容易にすることができる。
<効率的な知識の表現および交換>
本発明の各種の非制限的実施形態に係る、ウェブサービスエンドポイントとの同期を含むマルチマスタ同期環境におけるノード間のデータまたはデータのサブセットを同期する同期プロトコルの説明の前置きとして、この項では、データ同期システムで効率的に知識を表現するための一般的な機構の概要を述べる。この一般的機構は次を含む。(1)第1のノードが第2のノードから必要とする最小限のデータだけを送信すればよいようにすることによる、接続機器間での効率的な知識の交換。(2)第1のノードと第2のノード間のデータ状態についての不整合、すなわち競合を効率的かつ正確に認識する能力。(3)任意数のノードを同期する能力。(4)任意の他のノードを介して任意のノードを同期する能力。すなわちピアツーピアのマルチマスタ同期環境で動作する能力。
この一般的な機構では、2つの機器間で共有すべき何らかの情報に任意数の変更が加えられることができる。2つの機器が接続されると、互いと知識を交換することにより、少なくとも互いが知っていることと知らないことを再構築するために必要な最小限量の情報を認識して、機器間での変更を容易にする。3台以上の機器が関係する場合は、知識は、共有される情報のより大きなベースの不完全な知識である可能性があるが、複数の機器間でより多くの知識が共有されるため、時間と共に機器が他の機器に接続するのに従って、収集された知識が機器に蓄積され続けることに留意されたい。
有利には、本発明は、各種の非制限的実施形態で、そのすべてがオブジェクトのセットの最新のバージョンを保持することに関係する機器のセット、または下記で述べるように機器のサブセットについて同期を行うように動作するが、そのような機器が、そのセットの他のオブジェクトと接続し、接続を断つことも可能にする。機器が1つまたは複数のネットワークを介して機器セットの他の機器と再度接続されると、機器は、他の機器が各自の集積された知識で表すのと同等に最新の集積知識を回復する。このようにして、疎結合の機器であっても機器のセットと接触し、接触を断ち、次いで集積された知識の最新のセットを所有している機器セットと接触することにより、入手し損ねていたすべての知識を再学習することができる。
図3Aは、知識の交換が任意数の機器に合わせて一般化可能あるいはスケーラブルであることを示す。図に示すように、4つの機器300、310、320、330が、それら機器の間で共有される共通の情報のセットに関して各機器が知っていることと知らないことをそれぞれ表す知識の表現302、312、322、332と共に示される。
有利な点として、図3Bに示すように、ネットワーク内の接続が切断状態になっても、他の機器との間に少なくとも1つの直接または間接の接続が存在する限り、すべての機器300、310、320、330によって完全な知識のセットが得られる。例えば、図示するように、機器330の知識332は、機器320との知識の交換を介し、次いで機器320と310の間の知識の交換を介し、そして最後に機器310と300の間の知識の交換を介して、なお機器300に到達する。
より多くの機器が、共有される共通の情報についての知識を共有する場合、本発明の各種の非制限的実施形態による知識の交換は、集積された知識がどの機器から得られるのかを意識しないので、すべての機器が利益を得ることができる。機器は各々独立して動作して、その機器が接続された他の機器のいずれかから機器間で共有される情報に関しての多くの知識を得ることを試みる。
会話に参加し、会話の最後に対象データセットについての同等な知識を持つ2つのノードについて、例示的で非制限的な詳細で方法をさらに詳しく説明する。この方法は、ピアツーピアネットワークに参加する新たな各機器に対して知識交換能力を作成することにより、2つのノードを超えてスケーラブルである。
したがって、図4Aに示すように、任意数のノードを有するピアツーピアネットワークのノード400が、ノード410とのデータ交換を望んでいる。ノードAは、ノード410に変更を要求することによって開始し、要求するために、図示するようにノード400は自身の知識(KN400で表す)をノード410に送信する。
機器またはノードの知識は、機器間で共有される各オブジェクトを文字の識別子で表記することによって表され、その後の番号がそのオブジェクトの最新のバージョンを表す。例えば、図4Aに示すKN400は、ノード400と410の間で各々同期されるオブジェクトA、B、C、Dを含んでおり、それぞれのオブジェクトの後の番号が当該機器で知られているそのオブジェクトの最新バージョンを表している。例えば、時間t=1における知識KN400は、図4AでA4、B3、C6、D0と記す、Aの5番目のバージョン、Bの4番目のバージョン、Cの7番目のバージョン、およびDの1番目のバージョンを含んでいる。それに対して、時間t=1におけるノード410の知識KN410は、図4AでA3、B6、C6、D2と記す、Aの4番目のバージョン、Bの7番目のバージョン、Cの7番目のバージョン、およびDの3番目のバージョンを含んでいるとする。
図4Bに示すように、時間T=2に、ノード410は、ノード400から受け取った知識KN400を自身の知識KN410と比較し、ノード400に送信する必要があるものを判定する。この例では、その結果、ノード400のB3、D0の知識がノード410のB6およびD2の知識より遅れているので、ノード410はノード400にBおよびDに関連する変更を送信する。ノード410は、ノード400にB6とB3との間の変更およびD2とD0との間の変更を送信する際に、自身が有する知識KN410の最新のバージョン(ノード410で行われた最後の変更を反映している)も共に送信する。
時間t=3を表す図4Cに示すように、ノード400に知識KN410を送信しておくと、ノード400は、ノード400と410の両方が同じバージョンであった時にあるオブジェクトに変更を加えたことを後に知った場合に競合を検出することができる(例えば後に解決するためにその競合を記憶しておく)。これにより、自発的な更新と効率的な列挙が可能になるが、ノード同士が通信し変更を交換する際に正確に競合を検出することも可能になる。例えば、この例で、知識KN410とKN410の双方でC6が同じオブジェクトでない場合、例えば両方の知識がそれぞれ独立してC5からC6へと発展した場合、どちらのC6が正しいC6であるかは、例えば同期シナリオと関係機器に適する事前に設定されたポリシーの解決法に従って、競合の解決のために残しておくことができる。
上記の一般的な機構を使用した分散型のマルチマスタ同期環境の任意の2ノード間の例示的な知識交換プロセスが、図5Aの流れ図に示される。500で、ノードAがノードBとの同期を要求し、それにより、Aが知らない変更をノードBに要求する。ノードBに知識を与えるために、510で、ノードAは自身の知識をノードBに送信する。520で、ノードBはノードAから受け取った知識を自身の知識と比較して、ノードAに送るべき、Bが認識している変更を判断する。530で、ノードBはそのような変更をノードAに送信し、それに加えて、ノードBは、ノードAが540で同様の知識の比較を行えるように自身の知識をノードAに送信する。
550で、ノードAおよびノードBにおいて独立したバージョンの発展が発生している場合は、ノードAは、ノードBの知識に反映された最新のバージョンと、ノードAの知識に反映された最新のバージョンの間の潜在的な競合を検出する。任意で、競合解決のポリシーを適用して、競合の場合にどちらのノードがもう一方のノードより優先されるかを決めてもよい。560で、ノードBに所有されていないノードAの最新の変更がノードBに送られる。この競合解決のポリシーはまた、ノード間で共通の情報を維持するために、ノードBからノードAに変更を送信するかまたはノードAからノードBに変更を送信するかを指示する。独立したバージョニングが構わない、または望ましい場合は、競合をなくすための解決は別の選択肢となる。
図5Bは、フィルタリングされた知識が可能である場合、すなわちあるノードの知識のサブセットが他のノードの1つまたは複数と同期される場合に知識を交換するための一般化された機構を示す。図に示すように、各レプリカAおよびBは、それぞれプロバイダPA、プロバイダPBを有する。これに関して、各レプリカAおよびBは、それぞれ知識KAおよびKBを保持しており、可能性としてはフィルタリングされた知識FAおよびFBも保持している。サブセット化がない場合と同様に、レプリカはいずれも別のレプリカの変更を要求し570、もう一方のレプリカが変更を伝達するのに応答して変更を受け取る580ことができる。フィルタリングされた知識FAとフィルタリングされた知識FBが同じ範囲の場合は、一般化された知識の交換と同様に、
A=KA∪KB
となる。
フィルタリングされた知識FAとフィルタリングされた知識FBが同じ範囲でない場合は、その知識は、次のように既存の知識にもう一方のレプリカの知識を足したものを各自のフィルタFAとFBの共通部分に射影したものの関数となる。
A=KA∪(KB→(FA∩FB))
いくつかの応用例の中で、こうしたタイプのフィルタの例示的で非制限的な応用例は、同期フレームワークのカラムすなわち変更単位のフィルタリングである。カラムの変更はこのシステムでは移動操作を受けない可能性が高いので、これは特に応用性が高い。このシナリオでは注目に値する2つの考慮事項がある。それはフィルタの表現と知識の統合である。
フィルタ表現に関して、移動がないフィルタの場合のフィルタ表現は次のようになる。各フィルタは、そのフィルタに含まれる変更単位のリストとして表される。この表現は、利便な表現の手段と、必要時にはフィルタを組み合わせる能力を提供する。フィルタを組み合わせる能力は、知識を統合する際に有用である。
知識の統合に関して、知識を最も簡潔な形に保つために、知識を統合する能力が維持されなければならない。これに関して、知識を最も簡潔な形で維持することができるように、フィルタリングされた知識の断片を統合することができる。
フィルタを組み合わせる能力を考えると、フィルタは変更単位のセットとして表現されることができるので、両方のフィルタに存在する変更単位のセットを取り出すことにより、フィルタの重複を解消することができる。
また、フィルタのベクタはそのフィルタ内の個々の変更単位各々に該当するので、両方のフィルタ中の各変更単位についての当該変更単位について組み合わせられたベクタを見つけることによって、フィルタの組み合わせを行うことができる。そして、すべてのベクタが分かると、共通のベクタを有する変更単位を再度組み合わせて新しいフィルタとすることができる。
したがって、ノード間で同期すべき共通の情報または共通の情報のサブセットをノードが独自に発展させる可能性のあるマルチマスタ同期ネットワークの複数ノード間の知識交換のために、知識の概念を使用してデータを効率的に表すことができる。下記でより詳細に論じるように、上記の知識に基づくフレームワークは、ウェブサービスのエンドポイントを含むマルチマスタ同期環境にも拡張することができる。
<マルチマスタ同期環境におけるウェブサービスエンドポイントの同期>
上述のように、現在、相互運用が不可能なデータ同期製品が各種存在しており、各製品は、数種のデータリポジトリからのデータを数個の機器に接続する。各プロトコルは、選択された移送機構にのみ機能し、数種の機器で実装される。この点で、既存の同期製品は、ネットワーク上で種々の異なる通信プロトコルを使用している。相互運用が不可能な同期技術が普及すると、ユーザ、機器製造者、サービスプロバイダ、およびアプリケーション開発者の作業が複雑化する。共通のデータ同期プロトコルがないためにモバイル機器の使用の成長が妨げられており、ユーザのデータアクセス能力を制約し、モバイルデータサービスの配信を制限している。
そのため、メタデータの構造と、マルチマスタのエコシステムでエンドポイントがローミング、共有、および同期するためのプロトコルを示すウェブサービス(WS)同期プロトコルが提供される。このプロトコルは、XMLウェブサービスを使用して、機器、サービス、およびアプリケーションがファイアウォールを通じて同期することを可能にし、また、同期される実際のデータのスキーマを規定しないことにより、拡張性も可能にする。本発明は、ノードの目的と、例えばプル、プッシュ、あるいはping to pullメッセージングのシナリオのような通信の対称性とに応じて、ウェブサービスを通じた柔軟性のあるメッセージングのための各種の通信シナリオも可能にする。これは、必須の同期の知識を伴うシナリオも含む。
ウェブサービスは、一般には、ネットワークを通じた相互動作可能なマシン間対話を支援するように設計されたソフトウェアシステムを指す一方で、ウェブサービスは通常、シンプルオブジェクトアクセスプロトコル(SOAP)標準に準拠した拡張可能マークアップ言語(XML)のメッセージを使用して通信するクライアントとサーバを指す。これを、図6に、サービス要求者600(例えばクライアント)と、サービス要求者600からのSOAP要求で開始するウェブサービスプロバイダ610(例えばサーバ)間で概略的に示しており、要求はウェブサービスプロバイダ610によって処理され、それに応答してウェブサービス通信プロトコルに従ってSOAPメッセージが返される。
また、サービス要求者600がウェブサービスで提供されるサービスを理解できるように、ウェブサービスの定義が、ウェブサービスプロバイダ610によってサポートされる動作の機械可読の記述、すなわちウェブサービス記述言語(WSDL)で書かれた記述を含むのが典型的である。サービスブローカ620は、各種ウェブサービスプロバイダ610の記述を含むことができ、Universal Description,Discovery and Integration(UDDI)を使用して、ネットワーク上のサービス要求者600に発見されるようにサービスの一覧をパブリッシュすることができる。UDDIは、UDDIディレクトリに掲載されたウェブサービスと対話するために必要なプロトコルバインディングとメッセージフォーマットを記述したWSDL文書へのアクセスを提供するコアウェブサービス標準の1つである。
このように、2つのエンドポイントの少なくとも1つがウェブサービスをサポートする場合に2つのエンドポイント間でデータを同期するWS同期プロトコルが提供される。本発明は、各種の非制限的実施形態において、2つのエンドポイントの少なくとも1つがウェブサービスをサポートする場合に2つのエンドポイント間でデータを同期する一般的なSOAPベースのプロトコルを提供する。
初めに、本発明のWS同期プロトコルの各種の非制限的実施形態について、いくつかの表記体系、名前空間、および用語を解説する。これに関して、本明細書では以下の構文を使って、以下に提示する例示的で非制限的なプロトコルの仕様に従ったメッセージの基準的な概略を定義する。
以下にXMLインスタンスとして構文を表す。次のように要素および属性に文字を付加して基数を示す。
“?”(0または1)
“*”(0以上)
“+”(1以上)
文字「|」を使用して選択肢からの選択を表す。文字“[”および“]”は、含まれる項目を、基数または選択に関して1つのグループとして扱うことを意味するものとして使用される。
省略記号、すなわち「...」は、他の子コンテンツまたは属性コンテンツを可能にする拡張可能性の点を意味する。示された拡張点に追加的な子および/または属性が追加されてよいが、それぞれ親および/または所有者のセマンティックと矛盾することは避けなければならない。受信者が拡張を認識しない場合、受信者はそのメッセージの処理を回避しなければならず、障害となる可能性がある。
XML名前空間の接頭辞は、定義される要素の名前空間を示すために使用される。一実施形態では、SOAPノードは、そのノードが本発明の各種非制限的実施形態で定義されるプロトコルに準拠していない場合は、SOAPエンベロープ中でXML名前空間の識別子を使用しない。
例えばリモートエンドポイントから変更をプルする、リモートエンドポイントに変更をプッシュする等の様々な同期の目的のために、種々のタイプのデータ交換が定義されることができる。同期交換を行う2つのエンドポイントが対称的に通信することができるシナリオが存在しうるが、本発明のプロトコルの各種非制限的な実施形態は、主として、エンドポイントのうち1つのみがウェブサービスを公開する状況に適用することができる。
変更のプルは、一般に、クライアントがウェブサービスホストの知識を得るためにウェブサービスホストからデータを入手することを望むシナリオを言う。
変更のプッシュは、一般に、クライアントがローカルに保持してきた自身の知識をウェブサービスに送ることを望むシナリオを言う。
プッシュのシナリオとプルのシナリオを組み合わせると、クライアントとウェブサービスエンドポイントの間の完全な知識共有が得られる。これらのシナリオは、必須の知識を、その必須知識を前提とする、行われた変更のセットと共に送るという概念も含んでよい。
上記のように、知識は、変更を列挙するための「ウォーターマーク」である。多くの同期システムに共通のアンカーと異なり、上記のように、知識はノード間の汎用的な知識交換のために明確に定義され、同期に関係するどの当事者によっても解釈することが可能である。さらに、知識を正確に組み合わせるための技術が定義されるので、同期のすべての相手についての知識のインスタンスを保持する必要がない。各エンドポイントは、自身のローカルの知識を保持し、リモートのエンドポイントから知識を受け取った時には単に自身のローカルの知識を増加させる。有利には、このプロトコルは、リモートエンドポイントがウェブサービスをサポートする場合に使用されることができる。
図7Aのブロック図に示すように、有利な点として、ウェブサービス同期プロトコルの一実施形態は、上記の効率的な知識交換の概念を活用してマルチマスタ同期環境で知識を交換するための様々なメッセージングパターンをサポートする。第1のシナリオでは、レプリカAおよびレプリカAの知識KAを保持するノードの一般プロバイダPと、レプリカBおよびレプリカBの知識KBを保持するウェブサービスエンドポイントのウェブサービス同期プロバイダWSPとの間の対称的な双方向通信を想定する。通信がいずれの方向も「ブロック」されていない時は、知識の交換は、700でプロバイダPが変更を要求することによって行われ、これにはPが自身の知識をプロバイダWSPに送ることが含まれる。それに対して、プロバイダWSPは、710でその要求に基づいてプロバイダPに変更を伝達し、これには自身の知識をプロバイダPに送ることが含まれる。本明細書におけるメッセージングのシナリオはいずれも、ノード側からまたはウェブサービスエンドポイント側から当てはまり、すなわち、どちらの側からでも要求を行うことができるが、ウェブサービス通信では、プル動作でもプッシュ動作でもクライアントが同期要求を開始しなければならないことに留意されたい。
図7Bに示すように、別のシナリオは「ping to pull」のシナリオである。最初の要求の一部として直接知識を送信する(ネットワーク帯域幅を浪費する可能性がある)のではなく、必要な場合は、プロバイダPからウェブサービスプロバイダSPにまたはその逆方向にping720を行って、それにより、プロバイダWSPは、以前の同期点以後に自身の知識に更新が行われたかどうかを判定する。更新が行われている場合は、プロバイダPにその旨が通知され、図7Aのようにステップ730および740に従って知識の交換が行われる。
別のシナリオであるプッシュのシナリオを図7Cに示す。ブラインドプッシュでは、恐らくは信頼された関係あるいは他の理由で、ノードは、例えば変更が発生した時、変更のバッチが発生した時、あるいは周期的等の何らかの所定の基準に従って、単に自身の変更をウェブサービスエンドポイントのプロバイダWSPにプッシュする。これに関して、プロバイダPは750で自身の知識KAをプロバイダWSPに提供し、ウェブサービスエンドポイントはその知識KAを自身の知識KBに組み込むか、または、その知識が新しくない場合は、ウェブサービスエンドポイントは、変更を伝達する試みを無視する。
図7Dに示すさらに別のメッセージングのシナリオでは、ブラインドプッシュに代えて、プロバイダPは、自身の知識KAと、有効な同期の目的で知識KAを消費するためにプロバイダWSPによって理解されなければならない必須知識PKAのセットを伝達する、またはその逆方向に同様の知識を伝達する。したがって、この同期の通信は、受信者が一定量の知識をすでに持っていることを条件とし、そうでない場合データは破棄される。この時、相互と同期するために完全な知識の交換が必要とされる場合もある。
前述の項でマルチマスタ環境における同期データの効率的な表現のための同期フレームワークに従った知識の操作と、様々なメッセージングのシナリオで知識を操作するための各種技術の概要を示したので、次いで、ウェブサービス同期プロトコルの例示的で非制限的な実装について述べる。このウェブサービス同期プロトコルでは、知識は、次の例示的なXML擬似構造に従って表すことができる。
Figure 0005456677
上記XML表現中の/Knowledge/ScopeVectorは、特定のオーバーライドを含んでいるデータセット中のすべての項目に適用されるVectorClockを含む。
/Knowledge/RangeExceptionsは、ScopeVectorをオーバーライドすべきVectorClocksがある範囲のリストである。
そして、/Knowledge/RangeExceptions/Range:lowerBoundは、その範囲内に含まれる最小の項目である。
/Knowledge/RangeExceptions/Range:upperBoundは、その範囲に含まれない、lowerBoundより大きい最小の項目を表す。
/Knowledge/RangeExceptions/Rangeは、その範囲に使用すべきVectorClockである。
/Knowledge/ItemExceptionsは、ScopeVectorをオーバーライドすべきVectorClockか、またはオーバーライドする側のVectorClockを有するChangeUnitsのセットを含む項目のリストを表す。
/Knowledge/ItemExceptions/Itemは、その例外が適用される、自身の識別子によって指定される項目を表す。
/Knowledge/ItemExceptions/Item/ItemVectorは、同じくその項目に適用されるスコープベクタまたは範囲ベクタをオーバーライドするVectorClockである。
/Knowledge/ItemExceptions/Item/ChangeUnitsは、存在する場合には、ある項目中に含まれる変更単位のリストと、その変更単位に適用されるオーバーライドVectorClockを表す。変更単位は、例えば項目のプロパティである。変更単位は、設定/解除することはできるが、スキーマに準拠しており、削除することはできない。
/Knowledge/ItemExceptions/ltem/ChangeUnits/Unitは、識別子と、当該の変更単位に同じく適用されるスコープ、範囲、または項目ベクタをオーバーライドするVectorClockとを指定する。
変更バッチは、2つの同期の当事者間で通信される変更のグループ化であり、次のXML擬似構造をとる。
Figure 0005456677
上の変更バッチの擬似構造では、ChangeBatch/Prerequisite Knowledgeは、現在の変更バッチについての必須知識を指定する。この知識は、変更を受け取るエンドポイントの知識によって包摂される。
/ChangeBatch/ChangeSetは、Made With Knowledgeを共有するバッチ中の変更のセットである。
/ChangeBatch/ChangeSet/MadeWithKnowledgeは、変更セットに適用される知識である。これは、競合の検出と、ChangeBatchを受け取るエンドポイントの知識に加えることができる知識断片の生成に使用される。
/ChangeBatch/ChangeSet/Changesは、変更のリストである。
/ChangeBatch/ChangeSet/Changes/Changeは、/ChangeBatch/ChangeSet/Changesの個々の変更を記述する。
/ChangeBatch/ChangeSet/Changes/Change/ItemIdは、送信される項目の同期識別子である。プロバイダは、Address要素を使用してこのメッセージに実際のデータを含める(リンクまたは埋め込み)ことにより最適化することもできる。
/ChangeBatch/ChangeSet/Changes/Change/IsTombstoneは、その項目が、削除された項目に相当するメタデータであるかどうかを示すフラグである。
/ChangeBatch/ChangeSet/Changes/Change/BeginsRangeは、その項目が連続した一連の項目中で先頭にあるかどうかを示すフラグである。
/ChangeBatch/ChangeSet/Changes/Change/CreationVersionは、そのスコープに入った時に項目に与えられたバージョンである。
/ChangeBatch/ChangeSet/Changes/Change/UpdateVersionは、存在する場合、その変更バッチで通信される項目のバージョンである。
/ChangeBatch/ChangeSet/Changes/Change/ChangeUnitsは、存在する場合、その項目中に含まれる変更単位のリストである。
/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits/Unitは、その項目中の特定の変更単位を記述する。
/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits/Unit/UnitIdは、その変更単位の識別子である。Change/ItemIdフィールドと同様に、この識別子を使用して、Address要素を使用してデータを埋め込むか、リンクすることができる。
/ChangeBatch/ChangeSet/Changes/Change/ChangeUnits/Unit/UpdateVersionは、その変更バッチで通信される項目中の変更単位のバージョンである。
/ChangeBatch/MoreDatalsAvailableは、供給側で知られているPrerequisiteKnowledgeとMadeWithKnowledgeとの間のすべての変更がそのバッチに含まれていることを示すフラグである。
この同期プロトコルのメッセージングに関して、GetKnowledgeメッセージは、サービスの現在の知識のコピーを得るために機器ノードがウェブサービスエンドポイントに送信できるメッセージであり、次の例示的なXML擬似構造を有する。
Figure 0005456677
GetKnowledgeは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。ウェブサービスのプロバイダは、URIを使用して、例えば「4−star music」、「Video」、「Public Contacts」等の同期させる項目の論理的なセットを完全に解決する。
GetKnowledgeResponseメッセージは、GetKnowledgeメッセージに対するウェブサービスからの応答であり、サービスの知識のスナップショットを含んでおり、次の例示的XML擬似構造を有する。
Figure 0005456677
/GetKnowledgeResponse/ScopeReplicaは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
/GetKnowledgeResponse/Knowledgeは、所与のScope−Replicaについてのサービスの知識である。
RequestChangesメッセージは、サービスが変更のバッチを列挙して返すことを要求するためにウェブサービスに送信され、次の例示的XML擬似構造を有する。
Figure 0005456677
/RequestChanges/ScopeReplicaは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
/RequestChanges/Knowledgeは、変更を列挙するための基礎としてサービスがすべきクライアントの知識である。
/RequestChanges/RequestParams/EnumerateAllItemsOnForgottenKnowledgeFailureは、クライアントの知識がサーバの忘れられた知識を包摂することができない場合に、サーバが自身のストアにあるすべての項目を列挙して、クライアントに削除された項目を除去させることを示すフラグである。
RequestChangesResponseメッセージは、ReqestChangesに対する応答であり、そのバッチ中のすべての変更を有する変更バッチを含む。ChangeBatch中のPrerequisiteKnowledgeは、RequestChangeメッセージの一部として送信された知識である。
Figure 0005456677
/RequestChangesResponse/ScopeReplicは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
/RequestChangesResponse/ChangeBatchは、サービスによって識別された、クライアントに返す必要がある変更のバッチである。
/RequestChangesResponse/FullItemSetEnumeratedは、忘れられた知識の確認が失敗したために変更バッチがサービスのScope−Replicaにある項目の完全な列挙を含んでいることを示すフラグである。
完全な列挙の場合に、/RequestChangesResponse/ForgottenKnowledgeは、変更のバッチでクライアントが学習すべきサービスの忘れられた知識である。
ConveyChangesメッセージは、変更のセットがサービスにプッシュされる時にサービスに送信される。ChangeBatchで送信される知識は、列挙に使用された知識である。このメッセージは、GetKnowledgeの呼び出しによって得るか、以前の同期メッセージを通じて得られるキャッシュされたコピーとして得られた可能性があり、次の例示的XML擬似構造を有する。
Figure 0005456677
/ConveyChanges/ScopeReplicaは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
/ConveyChanges/ChangeBatchは、クライアントによって識別された、サービスに適用される必要がある変更バッチである。
/ConveyChanges/FullItemSetEnumeratedは、忘れられた知識の確認が失敗したために変更バッチがクライアントのScope−Replica中の項目の完全な列挙を含んでいることを示すフラグである。
完全な列挙の場合に、/ConveyChanges/ForgottenKnowledgeは、その変更バッチでサービスが学習すべきクライアントの忘れられた知識である。
ConveyChangesResponseメッセージは、ConveyChangesメッセージに対する応答であり、変更を適用した結果のウェブサービスについての知識を含んでおり、次の例示的なXML擬似構造を有する。
Figure 0005456677
/ConveyChangesResponse/ScopeReplicaは、同期する対象データをサービスが識別することを可能にする、サービスに関連する情報を定義する。
/ConveyChangesResponse/ResultingKnowledgeは、伝達された変更バッチを適用した後のサービスの知識である。
このように、マルチマスタネットワークコンピューティングのエコシステム内でエンドポイントがローミングし、共通の情報を相互と共有し、同期するためのメタデータおよびメッセージングを示すウェブサービス同期プロトコルが提供される。
2つのエンドポイントの1つまたは複数がウェブサービスをサポートする場合に2つのエンドポイント間でデータを同期するために一般的なSOAPベースのプロトコルが定義される。このプロトコルは、XMLウェブサービスを使用した知識に基づく転送のためのメッセージングを定義することにより、機器、サービス、およびアプリケーションがファイアウォールを通じて同期することを可能にし、共通の情報セットまたはサブセットを複数のエンドポイントにわたって可能にすることによって柔軟性を可能にし、またエンドポイントで同期される実際のデータのスキーマを規定しないことによって拡張性を可能にする。
図8は、マルチマスタ同期環境においてノードおよび/またはウェブサービスエンドポイントの間で共通の情報のセットまたはサブセットを同期するための知識に基づくフレームワークにより、ノードおよび/またはウェブサービスエンドポイントが異なるスキーマで同じデータを記憶することが可能になることを示す。異なるエンドポイントは、同期されるスキーマ要素の共通の表現を取り決めなければならない。すなわち、この同期プロトコルは、知識の表現に関してデータ型に無関係であり、そのため各ノードは、各自の要望に応じて基礎となるスキーマ要素を記憶することができる。
図に示すように、ノード、例えばPC1は、連絡先オブジェクトを表す第1のスキーマS1を含むことができ、一方、ウェブサービスエンドポイントWSEは、異なるスキーマS2に従って連絡先オブジェクトを記憶することができる。この点に関して、効率的な知識の表現は同期対象データのタイプに依存しないので、異なる機器は、どの知識、例えば知識のサブセットを消費するかについて異なる決定をすることができる。
図9は、本発明のプロトコルの非制限的実施形態に係る、ノードとウェブサービスの間で知識を交換するための例示的な非制限的な方法の流れ図である。ただし、図7A、7B、7C、および7Dから明らかにしたように、本発明は図9に表される完全な知識の交換パターンに限定されず、ping to pull、プル、およびプッシュのシナリオと、必須知識のシナリオがすべて、柔軟性のある同期プロトコルに従って企図される。
900で、ノードがウェブサービスに変更を要求する。910で、ノードは自身の知識をウェブサービスに送信する。920で、ウェブサービスは自身の知識をノードの知識と比較する。930で、ウェブサービスは、ノードが認識していない最新の変更をウェブサービスからノードに送信する。また、ノードは、940で、自身の知識と比較するためにウェブサービスの知識を受け取る。950で、ノードの知識とウェブサービスの知識中で独立して発展した変更間の競合が検出される。最後に960で、ウェブサービスが認識していない最新の変更がノードからウェブサービスに送信される。このように、知識の分析により、もう一方のエンドポイントが要求し、かつまだ持っていない変更のみを送ることで効率的な知識交換が可能になる。
図10は、完全または部分的な知識の交換を行う機器1000bの例示的で非制限的な実装のブロック図である。図に示すように、機器1000bは、本発明の非制限的実施形態により別の機器との間でオブジェクトのセット1030を同期するために完全または部分的な知識交換の技術を行う同期モジュール1020を含む。同期モジュール1020は、本発明の非制限的実施形態の知識交換技術により一般にデータを送受信する同期通信モジュール1022を含むことができる。
同期通信モジュール1022は同期開始モジュール1022aも含んでよく、同期開始モジュール1022aは、例えば権限付与モジュール1040を介して許可された場合に第2の機器との同期を開始し、第2の機器に接続することができる。同期モジュール1020は、I/Oモジュール1022bも含んでよく、I/Oモジュール1022bは、第2の機器(図示せず)にオブジェクトのセット1030についての完全な知識および/または部分的な知識1002bを送信することによって同期の開始に応答し、第2の機器の完全な知識および/または部分的知識1012bと、第2の機器で発生した、オブジェクトのセット1030に加えるべき変更とを受け取る。次いで、同期分析モジュール1024は、オブジェクトのセット1030に行う変更を適用し、そして機器間の同期を完了するために第2の機器に送る変更を判定するために、第2の機器から得た完全な知識および/または部分的知識1012bを第1の機器の完全な知識および/または部分的知識1002bと比較するように動作する。
<ウェブサービスに関する補足コンテクスト>
ウェブサービスを定義する仕様は意図的にモジュール方式にしてあり、その結果、それらの仕様すべてを含む1つの文書は存在しない。加えて、単一の仕様セットも、また安定した仕様のセットも存在しない。一般に、状況と技術の選択に応じて他の仕様で補足される数個の「コア」仕様があり、それらにはXML、SOAP、WSDL、UDDIが含まれる。
Simple Object Access Protocol(SOAP)は、XMLを基にした拡張可能なメッセージエンベロープフォーマットであり、基礎となるプロトコルへの「バインディング」を有する。SOAPは、コンピュータネットワークを通じてXMLベースのメッセージを交換するためのプロトコルであり、通常はハイパーテキスト転送プロトコル(HTTP)/HTTP Secure(HTTPS)を使用する。SOAPは、ウェブサービススタックの基礎レイヤを形成し、その上により抽象的なレイヤを構築できる基本のメッセージングフレームワークを提供する。
SOAPには数個の異なるメッセージパターンタイプがあるが、中でも最も一般的なのはRemote Procedure Call(RPC)パターンである。RPCパターンでは、1つのネットワークノード(クライアント)が別のノード(サーバ)に要求メッセージを送信し、サーバは直ちにクライアントに応答メッセージを送信する。HTTP上でSOAPを使用すると、従来のリモート実行技術よりも容易にプロキシおよびファイアウォールを越えて通信することができる。
SOAPは、汎用性が高いため、種々の異なるトランスポートプロトコルの使用を可能にする。標準スタックはトランスポートプロトコルとしてHTTPを使用するが、他のプロトコルも使用可能である(TCP、SNMP等)。
WSDLは、特定プロトコルへのバインディングについての詳細と共にサービスインタフェースを記述することを可能にするXMLフォーマットであり、通例はサーバおよびクライアントコードの生成と、コンフィギュレーションのために使用される。
Universal Description,Discovery and Integration(UDDI)は、ウェブサービスについてのメタデータをパブリッシュおよび発見するためのプロトコルであり、アプリケーションが設計時または実行時にウェブサービスを発見できるようにする。UDDIは、企業が、サービスの一覧をパブリッシュし、互いを発見し、サービスまたはソフトウェアアプリケーションがインターネット上でどのように対話するかを定義できるようにするオープン業界イニシアチブである。UDDIの企業登録は、次の3つの構成要素からなる。
ホワイトページ−アドレス、連絡先、および既知の識別子。
イエローページ−標準的な分類法に基づく産業分類。
グリーンページ−企業によって公開されるサービスについての技術情報。
UDDIは、コアウェブサービス標準の1つである。UDDIは、SOAPメッセージによって照会され、UDDIのディレクトリに掲載されたウェブサービスと対話するために必要なプロトコルバインディングとメッセージフォーマットを記述したWSDL文書へのアクセスを提供するように設計されている。
<例示的なネットワーク環境および分散環境>
当業者は、上記で説明した同期知識の表現とウェブサービスエンドポイントとの交換の各種の非制限的実施形態は、コンピュータネットワークの一部として配置される、あるいは分散コンピューティング環境内に配置されることが可能で任意種のデータストアに接続されたコンピュータまたは他のクライアントまたはサーバ機器との関連で実施できることを理解することができよう。これに関して、本発明は、本発明による同期技術との関連で使用することが可能な、任意数のメモリまたは記憶装置と、任意数の記憶装置またはボリュームにわたって行われる任意数のアプリケーションおよびプロセスとを有するコンピュータシステムまたは環境に関連する。本発明は、リモートまたはローカルのストレージを有するネットワーク環境または分散コンピューティング環境に配置されたサーバコンピュータとクライアントコンピュータを有する環境に適用することができる。本発明は、リモートまたはローカルのサービスおよびプロセスとの関連で情報を生成、受信、および送信するためのプログラミング言語機能、解釈および実行機能を有する独立型のコンピューティング機器にも適用されてよい。
分散コンピューティングは、コンピューティング機器とシステムの間の交換により、コンピュータリソースとサービスの共有を提供する。このリソースおよびサービスには、情報の交換、ファイル等のオブジェクトのキャッシュ記憶およびディスク記憶が含まれる。分散コンピューティングはネットワーク接続性を利用して、クライアントがその集合的な力を活かして事業全体を利することを可能にする。この点で、各種の機器が、本発明による同期のシステムおよび方法に関連する可能性のあるアプリケーション、オブジェクト、またはリソースを有する可能性がある。
図11は、例示的なネットワーク化または分散型コンピューティング環境の概略図である。分散コンピューティング環境は、コンピューティングオブジェクト1110a、1110b等と、コンピューティングオブジェクトまたは機器1120a、1120b、1120c、1120d、1120e等を備える。これらのオブジェクトは、プログラム、メソッド、データストア、プログラマブルロジック等を備えることができる。オブジェクトは、PDA、オーディオ/ビデオ機器、MP3プレーヤ、パーソナルコンピュータ等の同一の機器または異なる機器の一部分を構成することができる。各オブジェクトは、通信ネットワーク1140を介して別のオブジェクトと通信することができる。このネットワークはそれ自体が、図11のシステムにサービスを提供する他のコンピューティングオブジェクトおよびコンピューティング機器を備えてよく、またそれ自体が、相互に接続された複数のネットワークを表すことができる。本発明の一態様によると、各オブジェクト1110a、1110b等、または1120a、1120b、1120c、1120d、1120e等は、本発明による知識を同期するシステムおよび方法で使用するのに適した、API、他のオブジェクト、ソフトウェア、ファームウェア、および/またはハードウェアを使用する可能性のあるアプリケーションを含むことができる。
また、1120c等のオブジェクトが別のコンピューティング機器1110a、1110b等、あるいは1120a、1120b、1120c、1120d、1120e等でホストされてもよいことも理解できる。そのため、図の物理的環境では接続された機器をコンピュータとして示すことができるが、そのような図示は単に例示的なものであり、物理的環境は代わりにPDA、テレビ、MP3プレーヤ等の各種デジタル機器を備えるものと図示または説明してもよく、それらの機器は、各種のワイヤードおよびワイヤレスサービス、インタフェース、COMオブジェクト等のソフトウェアオブジェクトを用いることができる。
分散コンピューティング環境を支援する各種のシステム、コンポーネント、およびネットワーク構成がある。例えば、コンピューティングシステムは、ワイヤードまたはワイヤレスシステム、ローカルネットワークまたは広域分散ネットワークによって共に接続することができる。現在、そうしたネットワークの多くはインターネットに結合されており、インターネットは、広域分散コンピューティングのインフラストラクチャを提供し、多くの種々のネットワークを包含する。インフラストラクチャはいずれも、本発明による同期に関連するようにされた例示的通信に使用することができる。
家庭ネットワーク環境では、電力線、データ(ワイヤレスおよびワイヤードの両方)、音声(例えば電話)、娯楽媒体等、それぞれが独自のプロトコルをサポートする可能性のある異種のネットワーク移送媒体が少なくとも4つある。照明のスイッチや電気器具等の大半の家庭用制御装置は、接続に電力線を使用することができる。データサービスは、広帯域(例えばDSLまたはケーブルモデム)として住宅に入り、住宅内ではワイヤレス(例えばHomeRFや802.11B)またはワイヤード(例えばHomePNA、Cat5、Ethernet(登録商標)、さらには電力線)の接続性を使用してアクセスされることができる。音声トラフィックは、ワイヤード(例えばCat3)またはワイヤレス(例えば携帯電話)として住宅に入り、住宅内ではCat3配線を使用して分配されることができる。娯楽媒体あるいは他のグラフィックデータは、衛星またはケーブルを通じて住宅に入ることができ、住宅内では通例は同軸ケーブルを使用して分配される。IEEE1394およびDVIもメディア機器群向けのデジタル相互接続である。上記のネットワーク環境、および今後プロトコル標準として出現する可能性のある、あるいはすでに出現しているネットワーク環境すべてを相互に接続してイントラネット等のネットワークを形成することができ、そのネットワークをインターネット等のワイドエリアネットワークを介して外界に接続することができる。要するに、データの記憶と送信には各種の異種のデータ源が存在しており、そのため、本発明のコンピューティング機器は既存のどの方式でもデータを共有および通信することができ、本明細書の実施形態で記載される方式はいずれも制限的なものではない。
インターネットは、通常、コンピュータネットワーキングの技術ではよく知られた伝送制御プロトコル/インターネットプロトコル(TCP/IP)プロトコルスイートを利用するネットワークおよびゲートウェイの集合を言う。インターネットは、ユーザがネットワークを通じて対話し、情報を共有することを可能にするネットワーキングプロトコルを実行するコンピュータによって相互に接続された、地理的に分散した遠隔のコンピュータネットワークからなるシステムと説明することができる。そのような広範な情報共有のために、インターネットのようなリモートネットワークは一般に、これまでのところは、開発者が特化された動作やサービスを行うためのソフトウェアアプリケーションを基本的に制約なしに設計することができるオープンシステムに発展してきた。
したがって、ネットワークインフラストラクチャは、クライアント/サーバ、ピアツーピア、混合アーキテクチャ等の多数のネットワークトポロジを可能にしている。「クライアント」は、そのクラスまたはグループが関係しない他のクラスまたはグループのサービスを使用するクラスまたはグループのメンバである。したがって、コンピューティングでは、クライアントは、別のプログラムから提供されるサービスを要求するプロセス、すなわち大まかに言うと命令またはタスクのセットである。クライアントプロセスは、他方のプログラムまたはサービス自体について何らの動作の詳細を「知る」必要なしに、要求したサービスを利用する。クライアント/サーバアーキテクチャ、特にネットワーク化されたシステムでは、クライアントは通常、別のコンピュータ、例えばサーバから提供される共有ネットワークリソースにアクセスするコンピュータである。図11の図示では、一例として、コンピュータ1120a、1120b、1120c、1120d、1120e等をクライアントと考えることができ、コンピュータ1110a、1110b等をサーバと考えることができ、サーバ1110a、1110b等はデータを保持し、そのデータがクライアントコンピュータ1120a、1120b、1120c、1120d、1120e等に対して複製されるが、状況に応じてどのコンピュータもクライアント、サーバ、あるいはその両方と考えることができる。これらのコンピューティング機器はいずれも、本発明による知識の同期技術に関連する可能性のあるデータを処理する、あるいはサービスやタスクを要求することができる。
サーバは通例、インターネットやワイヤレスネットワークインフラストラクチャ等のリモートまたはローカルのネットワークを通じてアクセスできるリモートのコンピュータシステムである。第1のコンピュータシステムでクライアントプロセスがアクティブであり、第2のコンピュータシステムでサーバプロセスがアクティブであり、通信媒体を通じて互いと通信し、それにより分散した機能を提供し、複数のクライアントがサーバの情報収集能力を利用できるようにすることが可能である。本発明による知識に基づく同期の技術に関連して利用されるソフトウェアオブジェクトは、複数のコンピューティング機器またはオブジェクトに分散させてよい。
クライアントとサーバは、プロトコルレイヤによって提供される機能を利用して相互と通信する。例えば、ハイパーテキスト転送プロトコル(HTTP)は、ワールドワイドウェブ(WWW)あるいは「ウェブ」との関連で使用される一般的なプロトコルである。典型的には、インターネットプロトコル(IP)アドレス等のコンピュータネットワークアドレスやユニバーサルリソースロケータ(URL)等の他の参照を使用して、サーバまたはクライアントコンピュータを互いに対して識別することができる。ネットワークアドレスは、URLアドレスと呼ぶ場合がある。通信は、通信媒体を通じて提供されることができ、例えば高容量通信のためにTCP/IP接続を介してクライアントとサーバを互いに結合することができる。
したがって、図11には、本発明を用いることができる例示的なネットワーク環境または分散環境を示し、サーバはネットワーク/バスを介してクライアントコンピュータと通信する。より詳細には、本発明により、複数のサーバ1110a、1110b等が、LAN、WAN、イントラネット、GSMネットワーク、インターネット等の通信ネットワーク/バス1140を介して、携帯型コンピュータ、ハンドヘルドコンピュータ、シンクライアント、ネットワーク家電、あるいはVCRや、TV、オーブン、照明、ヒータ等の他の装置である複数のクライアントまたはリモートコンピューティング機器1120a、1120b、1120c、1120d、1120e等と相互に接続される。したがって、本発明は、任意種のデータの同期がそれとの関連で望まれるコンピューティング機器に適用されることが企図される。
例えば通信ネットワーク/バス1140がインターネットであるネットワーク環境では、サーバ1110a、1110b等は、クライアント1120a、1120b、1120c、1120d、1120e等がHTTP等のいくつかの周知のプロトコルのいずれかを介して通信するウェブサーバとすることができる。サーバ1110a、1110b等は、分散コンピューティング環境の特徴であるように、クライアント1120a、1120b、1120c、1120d、1120e等として機能することもできる。
先に触れたように、通信は、適宜、ワイヤードまたはワイヤレス、あるいはその組み合わせでよい。クライアント機器1120a、1120b、1120c、1120d、1120e等は、通信ネットワーク/バス1140を介して通信する場合もしない場合もあり、また各自に関連付けられた独立した通信を有してよい。例えば、TVやVCRの場合は、その制御にネットワーク化された側面がある場合もない場合もある。各クライアントコンピュータ1120a、1120b、1120c、1120d、1120e等およびサーバコンピュータ1110a、1110b等は、各種のアプリケーションプログラムモジュールまたはオブジェクト1135a、1135b、1135c等を備えることができ、また、各種の記憶要素または記憶オブジェクトへの接続あるいはアクセスを備えることができ、それらの記憶要素または記憶オブジェクトにファイルまたはデータストリームが記憶される、あるいはファイルまたはデータストリームの一部がダウンロード、送信、または移動されることができる。コンピュータ1110a、1110b、1120a、1120b、1120c、1120d、1120e等の1つまたは複数が、データベース1130、または本発明により処理または保存されるデータを格納するデータベースまたはメモリ1130等の他の記憶要素の維持と更新を担うことができる。したがって、本発明は、コンピュータネットワーク/バス1140にアクセスし、対話することができるクライアントコンピュータ1120a、1120b、1120c、1120d、1120e等と、クライアントコンピュータ1120a、1120b、1120c、1120d、1120e等およびその他の同様の機器と対話することが可能なサーバコンピュータ1110a、1110b等と、データベース1130とを有するコンピュータネットワーク環境で利用することができる。
<例示的コンピューティング機器>
上述のように、本発明は、機器のセットにわたって任意種のデータを同期することが望ましい場合がある機器に適用される。したがって、ハンドヘルド、携帯型、およびその他のコンピューティング機器と、あらゆる種類のコンピューティングオブジェクトが本発明との関連で使用されるものと企図される。すなわち、機器が複数の機器間のデータ共有から利益を得る、あるいは他の状況でデータの受信、処理、または記憶する可能性のある場合が企図されることを理解されたい。そのため、下記の図12で説明する汎用リモートコンピュータは一例に過ぎず、本発明は、ネットワーク/バスの相互運用性および対話を有するどのクライアントにも実装することが可能である。したがって、本発明は、非常に少ないクライアントリソースまたは最小限のクライアントリソースが関連する、ホストされたネットワーク化サービスからなる環境で実施することができる。これは例えば、クライアント機器が、電気器具中に配置されたオブジェクトのように、単にネットワーク/バスへのインタフェースとして機能するネットワーク環境である。
これは必須ではないが、本発明はその一部を、機器やオブジェクト向けのサービスの開発者が使用するためにオペレーティングシステムを介して実施する、かつ/または本発明のコンポーネントとの関連で動作するアプリケーションソフトウェアに組み込むことができる。ソフトウェアは、クライアントワークステーション、サーバ、その他の機器等、1つまたは複数のコンピュータによって実行されるプログラムモジュールのようなコンピュータ実行可能命令の一般的文脈で説明することができる。当業者には、本発明は他のコンピュータシステム構成およびプロトコルで実施してもよいことが理解されよう。
したがって、図12に、本発明を実施することができる適切なコンピューティングシステム環境1200aの一例を示すが、上記で明らかにしたように、コンピューティングシステム環境1200aはメディア機器に適したコンピューティング環境の一例に過ぎず、本発明の使用または機能性の範囲に関して制限を示唆するものではない。また、コンピューティング環境1200aは、例示的動作環境1200aに図示される構成要素の1つまたは組み合わせに関連して依存性や必要性を有するものとも解釈すべきでない。
図12を参照すると、本発明を実施する例示的リモート機器は、コンピュータ1210aの形態の汎用コンピューティング機器を含む。コンピュータ1210aの構成要素には、これらに限定しないが、処理装置1220a、システムメモリ1230a、およびシステムメモリを含む各種のシステム構成要素を処理装置1220aに結合するシステムバス1221aが含まれてよい。システムバス1221aは、各種のバスアーキテクチャを使用したメモリバスまたはメモリコントローラ、ペリフェラルバス、およびローカルバスを含む数種のバス構造のいずれでもよい。
コンピュータ1210aは、通例、各種のコンピュータ可読媒体を含む。コンピュータ可読媒体は、コンピュータ1210aからアクセスすることが可能な利用可能媒体でよい。限定ではなく例として、コンピュータ可読媒体は、コンピュータ記憶媒体と通信媒体を備えることができる。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラムモジュール、あるいは他のデータ等の情報を記憶するための方式または技術で実装された、揮発性および不揮発性、取り外し可能および取り外し不能両方の媒体が含まれる。コンピュータ記憶媒体には、これらに限定しないが、RAM、ROM、EEPROM、フラッシュメモリ、または他のメモリ技術、CD−ROM、デジタル多用途ディスク(DVD)、または他の光ディスク記憶、磁気カセット、磁気テープ、磁気ディスク記憶、または他の磁気記憶装置、あるいは所望の情報を記憶するために使用することができ、コンピュータ1210aによるアクセスが可能な他の媒体が含まれる。通信媒体は通例、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを、搬送波や他の移送機構等の変調データ信号として表し、任意の情報配信媒体を含む。
システムメモリ1230aは、読み取り専用メモリ(ROM)および/またはランダムアクセスメモリ(RAM)等の揮発性および/または不揮発性メモリの形態のコンピュータ記憶媒体を含むことができる。基本入出力システム(BIOS)は、起動時等にコンピュータ1210a中の要素間の情報転送を助ける基本ルーチンを含んでおり、メモリ1230aに記憶することができる。メモリ1230aは通例、処理装置1220aから即座にアクセス可能な、かつ/または処理装置1220aによって現在操作されているデータおよび/またはプログラムモジュールも保持する。限定ではなく例として、メモリ1230aは、オペレーティングシステム、アプリケーションプログラム、他のプログラムモジュール、およびプログラムデータも含むことができる。
コンピュータ1210aは、他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体も含んでよい。例えば、コンピュータ1210aは、取り外し不能、不揮発性の磁気媒体の読み書きを行うハードディスクドライブ、取り外し可能、不揮発性の磁気ディスクの読み書きを行う磁気ディスクドライブ、および/またはCD−ROMやその他の光学媒体等の取り外し可能、不揮発性の光ディスクの読み書きを行う光ディスクドライブを含むことができる。例示的動作環境で使用できるこの他の取り外し可能/取り外し不能、揮発性/不揮発性のコンピュータ記憶媒体には、これらに限定しないが、磁気テープカセット、フラッシュメモリカード、デジタル多用途ディスク、デジタルビデオテープ、固体素子RAM、固体素子ROM等がある。ハードディスクドライブは、通例、インタフェース等の取り外し不能メモリインタフェースを通じてシステムバス1221aに接続され、磁気ディスクドライブまたは光ディスクドライブは、通例、インタフェース等の取り外しメモリインタフェースでシステムバス1221aに接続される。
ユーザは、キーボードや、一般にはマウス、トラックボール、あるいはタッチパッドと呼ばれるポインティング機器等の入力装置を通じてコンピュータ1210aにコマンドと情報を入力することができる。他の入力装置には、マイクロフォン、ジョイスティック、ゲームパッド、衛星受信アンテナ、スキャナ等がある。上記およびその他の入力装置は、多くの場合、ユーザ入力1240aと、システムバス1221aに結合された関連付けられたインタフェースとを通じて処理装置1220aに接続されるが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)等の他のインタフェースおよびバス構造で接続してもよい。グラフィックサブシステムもシステムバス1221aに接続されてよい。モニタあるいは他の種の表示装置も出力インタフェース1250a等のインタフェースを介してシステムバス1221aに接続され、そのインタフェースがビデオメモリと通信することができる。モニタに加えて、コンピュータは、スピーカやプリンタ等の他の周辺出力装置も含むことができ、それらの出力装置は出力インタフェース1250aを通じて接続することができる。
コンピュータ1210aは、リモートコンピュータ1270a等の1つまたは複数の他のリモートコンピュータとの間の論理接続を使用するネットワーク環境または分散環境で動作することができ、リモートコンピュータは、機器1210aとは異なる媒体機能を有する可能性がある。リモートコンピュータ1270aは、パーソナルコンピュータ、サーバ、ルータ、ネットワークPC、ピア機器、あるいはその他の一般的なネットワークノード、あるいは他のリモートメディア消費または送信機器であり、コンピュータ1210aに関して上記で説明した要素のいずれかまたはすべてを含むことができる。図12に示す論理接続は、ローカルエリアネットワーク(LAN)やワイドエリアネットワーク(WAN)等のネットワーク1271aを含むが、他のネットワーク/バスを含んでもよい。このようなネットワーク環境は、家庭、オフィス、企業規模のコンピュータネットワーク、イントラネット、およびインターネットで一般的である。
LANネットワーク環境で使用される場合、コンピュータ1210aは、ネットワークインタフェースまたはアダプタを通じてLAN1271aに接続される。WANネットワーク環境で使用される場合、コンピュータ1210aは通例、モデムやインターネット等のWANを通じて通信を確立する他の手段等の通信コンポーネントを含む。モデム等の通信コンポーネントは、内部にあっても外部にあってもよく、入力1240aのユーザ入力インタフェース、あるいは他の適切な機構を介してシステムバス1221aに接続することができる。ネットワーク環境では、コンピュータ1210aに関して図示するプログラムモジュールまたはその一部は、遠隔のメモリ記憶装置に記憶してよい。ここで図示および説明するネットワーク接続は例示的なものであり、構成要素間に通信リンクを確立する他の手段が使用されてよいことは理解されよう。
本発明を実施するには、アプリケーションとサービスが本発明による知識の表現および交換のシステムおよび方法を使用することを可能にする、例えば適当なAPI、ツールキット、ドライバコード、オペレーティングシステム、コントロール、スタンドアロンまたはダウンロード可能なソフトウェアオブジェクト等、多数の方式がある。本発明は、API(あるいは他のソフトウェアオブジェクト)の観点から、また本発明による知識交換を行うソフトウェアまたはハードウェアオブジェクトの観点からの本発明の使用を企図する。そのため、本明細書に記載する本発明の各種実施は、完全にハードウェア、部分的にハードウェアで部分的にソフトウェア、ならびにソフトウェアの形態の態様を有することができる。
単語「例示的な」は、本明細書では、例、事例、または例示の役割を果たすことを意味するために用いられる。不確かさを避けるために、本明細書に開示される主題はそのような例によって限定されない。また、本明細書に「例示的」と説明される態様または設計は、必ずしも、他の態様または設計よりも好ましい、あるいは有利であると解釈されず、また、当業者に周知の同等の例示的構造および技術を排除するものでもない。さらに、用語「〜を包含する」、「〜を有する」、「〜を含む」、および他の同様の単語が詳細な説明または特許請求の範囲で使用される限りにおいて、不確かさを回避するために、そのような用語は、追加的要素または他の要素を排除しないオープンな移行語としての用語「〜を備える(comprising)」と同じく包含的な意味とする。
上述のように、各種のコンピューティング機器およびネットワークアーキテクチャとの関係で本発明の例示的実施を説明したが、基礎となる概念は、別のコンピューティング機器またはシステムとデータを同期することが望まれるどのコンピューティング機器またはシステムにも適用することができる。例えば、本発明の同期プロセスは、コンピューティング機器のオペレーティングシステムに適用されることができ、このプロセスは、機器上の独立したオブジェクト、別のオブジェクトの一部、再使用可能なコントロール、サーバからダウンロード可能なオブジェクト、機器またはオブジェクトとネットワークとの間の「仲介者」、分散オブジェクト、ハードウェアとして、あるいはメモリ中に、あるいはそれらの組み合わせとして提供される。
上記のように、本明細書に記載される各種技術は、ハードウェアまたはソフトウェア、あるいは適当な場合にはそれら両方の組み合わせとの関連で実装されることができる。本明細書で使用される用語「コンポーネント」、「システム」等は、同様にコンピュータに関連するエンティティを指すものとし、このエンティティは、ハードウェア、ハードウェアとソフトウェアの組み合わせ、ソフトウェア、または実行中のソフトウェアである。例えば、コンポーネントは、これに限定されないが、プロセッサで実行されるプロセス、プロセッサ、オブジェクト、実行可能ファイル、実行のスレッド、プログラム、および/またはコンピュータである。例示として、コンピュータで実行されるアプリケーションとコンピュータの両方がコンポーネントとなりうる。1つまたは複数のコンポーネントがプロセスおよび/または実行のスレッド内に存在することができ、コンポーネントは、1台のコンピュータに局所化しても、かつ/または2台以上のコンピュータに分散させてもよい。
したがって、本発明の方法および装置、またはその特定の態様あるいは部分は、フロッピー(登録商標)ディスケット、CD−ROM、ハードドライブ、あるいはその他の機械可読の記憶媒体等の有形の媒体に実現されたプログラムコード(すなわち命令)の形態をとることができ、そのプログラムコードがコンピュータ等のマシンにロードされて実行されると、そのマシンは本発明を実施する装置となる。プログラマブルコンピュータでプログラムコードが実行される場合は、コンピューティング機器は一般に、プロセッサ、プロセッサに可読の記憶媒体(揮発性および不揮発性のメモリおよび/または記憶素子を含む)、少なくとも1つの入力装置、および少なくとも1つの出力装置を含む。例えばデータ処理APIや再使用可能なコントロール等を通じて本発明の同期サービスおよび/またはプロセスを実施または利用することができる1つまたは複数のプログラムは、コンピュータシステムと通信するために、高級手続き言語またはオブジェクト指向のプログラミング言語で実装されることが好ましい。ただし、プログラムは、必要であればアセンブリ言語やマシン言語で実装することができる。いずれの場合も、言語はコンパイルまたは解釈される言語であり、ハードウェア実装と組み合わせられる。
本発明の方法および装置は、電気配線またはケーブル、光ファイバー、あるいは他の形態の伝送等の何らかの伝送媒体を通じて伝送されるプログラムコードの形態に実現された通信を介して実施することもでき、プログラムが受信され、EPROM、ゲートアレイ、プログラマブルロジックデバイス(PLD)、クライアントコンピュータ等のマシンにロードされて実行されると、そのマシンは本発明を実施する装置になる。汎用プロセッサで実施される場合、プログラムコードはプロセッサと組み合わさって、本発明の機能を起動するように動作する独自の装置を提供する。また、本発明との関連で使用される記憶技術も常にハードウェアとソフトウェアの組み合わせでよい。
さらに、ここに開示される主題は、ここに詳細に述べられる態様を実施するようにコンピュータまたはプロセッサを利用した機器を制御するソフトウェア、ファームウェア、ハードウェア、あるいはそれらの組み合わせを生成する標準的なプログラミングおよび/またはエンジニアリング技術を使用して、システム、方法、装置、または製造物として実施されることができる。本明細書で使用される用語「製造物」(あるいは「コンピュータプログラム製品」)は、コンピュータ可読媒体、キャリア、媒体からアクセスすることが可能なコンピュータプログラムを包含するものとする。例えば、コンピュータ可読媒体には、これらに限定されないが、磁気記憶装置(例えばハードディスク、フロッピー(登録商標)ディスク、磁気ストリップ等)、光ディスク(例えばコンパクトディスク(CD)、デジタル多用途ディスク(DVD)等)、スマートカード、およびフラッシュメモリデバイス(例えばカード、スティック)が含まれる。また、搬送波を用いて、電子メールの送受信や、インターネットやローカルエリアネットワーク(LAN)等のネットワークへのアクセスで使用されるようなコンピュータ可読の電子データを搬送できることが知られている。
上記のシステムは、数個の構成要素間の対話について説明した。そのようなシステムおよび構成要素は、上述した構成要素の各種置き換えおよび組み合わせに従って、上記の構成要素または指定された下位構成要素、指定された構成要素または下位構成要素の一部、および/または追加的な構成要素を含むことができることが理解できる。下位構成要素は、親構成要素の中に含まれる(階層的)のではなく、他の構成要素に通信上結合された構成要素として実装することもできる。また、1つまたは複数の構成要素を組み合わせて、集約的機能を提供する1つの構成要素としても、数個の別個の下位構成要素に分割してもよく、また統合された機能を提供するために、管理レイヤのような任意の1つまたは複数の中間レイヤが提供されて、そのような下位構成要素と通信上結合してもよいことに留意されたい。本明細書に記載される構成要素は、本明細書には明記されないが当業者には一般に周知の1つまたは複数の他の構成要素と対話してもよい。
上記の例示的システムに照らして、ここに開示される主題に従って実施することが可能な方法論は、図のフローチャートを参照するとよりよく理解されよう。説明を簡潔にするために、方法論は一連のブロックとして図示および説明するが、一部のブロックは、本明細書に図示および説明する順序とは異なる順序で、かつ/または他のブロックと同時に行ってもよいため、特許請求の範囲の主題はブロックの順序によって制限されないことを理解および認識されたい。連続していない流れまたは分岐した流れがフローチャートを介して示される箇所は、同じまたは同様の結果を達成する各種の他の分岐、流れの経路、およびブロックの順序が実施されてよいことが理解できる。さらに、以下に記載される方法論を実施するために図示されるブロックのすべてが必要とは限らない。
さらに、理解されるように、上記の開示されるシステムおよび下記の方法の各種部分は、人工知能または知識またはルールベースの構成要素、下位構成要素、プロセス、手段、方法論、または機構(例えば、サポートベクタマシン、ニューラルネットワーク、エキスパートシステム、ベイズ信念ネットワーク、ファジー論理、データフュージョンエンジン、クラシファイア等)を含む、あるいはそれらから構成されてよい。そのような構成要素は特に、特定の機構または実行されるプロセスを自動化することにより、本システムおよび方法の一部分の適応性を高め、また効率的かつインテリジェントにすることができる。
本発明について各種図の好ましい実施形態との関連で説明したが、他の同様の実施形態を使用してよい、あるいは本発明から逸脱することなく本発明の同じ機能を行うためにここに記載された実施形態に変更および追加を加えてよいことを理解されたい。例えば、本発明の例示的なネットワーク環境については、ピアツーピア型のネットワーク環境等のネットワーク化された環境の文脈で説明したが、当業者は、本発明はそれに限定されず、本願に記載した方法は、ワイヤードまたはワイヤレスのゲーム機、ハンドヘルドコンピュータ、携帯型コンピュータ等の任意のコンピューティング機器あるいは環境に適用することができ、また、ネットワークを介して接続され、ネットワークを通じて対話する任意数のそのようなコンピューティング機器に適用可能であることを認識されよう。さらに、特にワイヤレスのネットワーク機器の数が増え続けているため、ハンドヘルド機器向けのオペレーティングシステムおよび他の特定用途向けのオペレーティングシステムを含む各種のコンピュータプラットフォームが企図されることを強調したい。
例示的実施形態は、本発明を特定のプログラミング言語構成のコンテクストで利用することを示すが、本発明はそれに限定されず、任意の言語で実施して本発明に係るノードのセットについての知識を表現および交換する方法を提供してよい。さらに、本発明は、複数の処理チップまたはデバイス中に、またはそれらにわたって実装されてよく、記憶も同様に複数のデバイスにわたって実施することができる。したがって、本発明は、どの1つの実施形態にも限定されるべきではなく、添付の特許請求の範囲に従った範囲で解釈すべきである。

Claims (4)

  1. 1つまたは複数のネットワークを介して通信上結合された複数のノードのうちの1ノードとウェブサービスプロバイダとの間でオブジェクトのセットを同期する方法であって、
    前記複数のノードのうちの1ノードまたはウェブサービスプロバイダから、それぞれ前記ウェブサービスプロバイダまたは前記複数のノードのうちの前記1ノードによる同期を求める要求を受信するステップであって、前記オブジェクトのセットに対する変更のセットと、それに対応するそれぞれ前記1ノードまたは前記ウェブサービスプロバイダで表現されている前記オブジェクトのセットのオブジェクトのバージョンと、前記変更のセットに関連付けられた必須知識の定義とを受信することを含み、該受信される情報がデータタイプに依存しないように、前記1ノードおよび前記ウェブサービスプロバイダには、異なるスキーマで同じデータが記憶される、受信するステップと、
    前記必須知識の定義をそれぞれ前記ウェブサービスプロバイダまたは前記1ノードで処理するステップであって、それぞれ前記ウェブサービスプロバイダまたは前記1ノードが前記必須知識を有する場合は、それぞれ前記ウェブサービスプロバイダまたは前記1ノードが有する少なくとも1つのデータストア中の前記オブジェクトのセットに前記変更のセットを適用する、処理するステップと
    を具えたことを特徴とする方法。
  2. 前記受信するステップは、シンプルオブジェクトアクセスプロトコル(SOAP)標準に準拠した少なくとも1つの拡張可能マークアップ言語(XML)メッセージを含むウェブサービス要求を受信するステップを含むことを特徴とする請求項記載の方法。
  3. 前記受信するステップは、前記変更のセットと、それに対応するバージョンと、必須知識の定義とを、ファイアウォールの存在に関係なく、前記ノードまたは前記ウェブサービスプロバイダのいずれかで受信することを含むことを特徴とする請求項記載の方法。
  4. 請求項の方法を行う手段を備えることを特徴とするコンピューティング機器。
JP2010526060A 2007-09-24 2008-09-23 マルチマスタ同期環境におけるウェブサービスエンドポイントの同期 Expired - Fee Related JP5456677B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US11/859,931 2007-09-24
US11/859,931 US20090083441A1 (en) 2007-09-24 2007-09-24 Synchronization of web service endpoints in a multi-master synchronization environment
PCT/US2008/077395 WO2009042608A2 (en) 2007-09-24 2008-09-23 Synchronization of web service endpoints in a multi-master synchronization environment

Related Child Applications (1)

Application Number Title Priority Date Filing Date
JP2013245860A Division JP2014089719A (ja) 2007-09-24 2013-11-28 マルチマスタ同期環境におけるウェブサービスエンドポイントの同期

Publications (2)

Publication Number Publication Date
JP2011503678A JP2011503678A (ja) 2011-01-27
JP5456677B2 true JP5456677B2 (ja) 2014-04-02

Family

ID=40472923

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2010526060A Expired - Fee Related JP5456677B2 (ja) 2007-09-24 2008-09-23 マルチマスタ同期環境におけるウェブサービスエンドポイントの同期
JP2013245860A Pending JP2014089719A (ja) 2007-09-24 2013-11-28 マルチマスタ同期環境におけるウェブサービスエンドポイントの同期

Family Applications After (1)

Application Number Title Priority Date Filing Date
JP2013245860A Pending JP2014089719A (ja) 2007-09-24 2013-11-28 マルチマスタ同期環境におけるウェブサービスエンドポイントの同期

Country Status (8)

Country Link
US (3) US20090083441A1 (ja)
EP (2) EP3614274A1 (ja)
JP (2) JP5456677B2 (ja)
KR (1) KR101564471B1 (ja)
CN (1) CN101802809B (ja)
CA (1) CA2695017A1 (ja)
MX (1) MX2010002200A (ja)
WO (1) WO2009042608A2 (ja)

Families Citing this family (38)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7778282B2 (en) * 2006-12-18 2010-08-17 Microsoft Corporation Propagation of conflict knowledge
US8135865B2 (en) * 2007-09-04 2012-03-13 Apple Inc. Synchronization and transfer of digital media items
US20090083441A1 (en) 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment
US8572161B2 (en) * 2008-03-12 2013-10-29 Oracle International Corporation Simplifying synchronization of copies of same data used by multiple applications
KR101460611B1 (ko) * 2008-09-04 2014-11-13 삼성전자주식회사 멀티미디어 컨텐츠에 관한 사용자 관심정보의 수집 방법 및제공 방법과 그 장치
US20100153335A1 (en) * 2008-12-12 2010-06-17 Microsoft Corporation Synchronizing multiple classes with disparate schemas in the same collection
US8825597B1 (en) * 2009-08-13 2014-09-02 Dropbox, Inc. Network folder synchronization
US8284803B2 (en) * 2009-12-30 2012-10-09 Microsoft Corporation Cross-scope synchronization of data item knowledge and corresponding metadata
US8805783B2 (en) * 2010-05-27 2014-08-12 Microsoft Corporation Synchronization of subsets of data including support for varying set membership
US8595382B2 (en) * 2010-06-07 2013-11-26 Salesforce.Com, Inc. System, method and computer program product for performing a synchronization of data
US20120203932A1 (en) * 2011-02-08 2012-08-09 Microsoft Corporation Multi-master media metadata synchronization
CN102265277B (zh) * 2011-06-01 2014-03-05 华为技术有限公司 数据存储系统的操作方法和装置
US9213718B1 (en) 2011-06-22 2015-12-15 Emc Corporation Synchronized file management across multiple disparate endpoints
US8850516B1 (en) 2011-06-22 2014-09-30 Emc Corporation Virtual private cloud that provides enterprise grade functionality and compliance
US8533275B2 (en) 2011-08-19 2013-09-10 Microsoft Corporation Synchronizing conversation structures in web-based email systems
CN102438042B (zh) * 2011-11-04 2014-04-02 中国工商银行股份有限公司 一种多点接入设备的动态参数同步方法及系统
US9516615B2 (en) 2011-11-18 2016-12-06 Apple Inc. Selection of synchronization stations in a peer-to-peer network environment
US20130132500A1 (en) * 2011-11-18 2013-05-23 Apple Inc. Selection of a master in a peer-to-peer network environment
US10271293B2 (en) 2011-11-18 2019-04-23 Apple Inc. Group formation within a synchronized hierarchy of peer-to-peer devices
US9019121B1 (en) * 2011-12-22 2015-04-28 Landis+Gyr Technologies, Llc Configuration over power distribution lines
US9092499B2 (en) * 2012-01-20 2015-07-28 Blackberry Limited Synchronizing endpoint data stores having disparate schemas
US9398090B2 (en) 2013-01-07 2016-07-19 Dropbox, Inc. Synchronized content library
US9430545B2 (en) * 2013-10-21 2016-08-30 International Business Machines Corporation Mechanism for communication in a distributed database
US9350772B2 (en) 2014-10-24 2016-05-24 Ringcentral, Inc. Systems and methods for making common services available across network endpoints
US9398085B2 (en) 2014-11-07 2016-07-19 Ringcentral, Inc. Systems and methods for initiating a peer-to-peer communication session
MX374337B (es) * 2015-05-07 2025-03-06 Kodiak Networks Inc Sistema y metodo para la sincronizacion de datos
US10425477B2 (en) * 2015-09-15 2019-09-24 Microsoft Technology Licensing, Llc Synchronizing file data between computer systems
US11063829B2 (en) * 2016-06-10 2021-07-13 SECIP Holdings Pty Ltd. Secure collaborative data communications network
KR101929948B1 (ko) * 2017-04-07 2018-12-18 네이버 주식회사 데이터 타입 기반의 멀티 디바이스 데이터 동기화를 위한 방법 및 시스템
WO2019084781A1 (en) 2017-10-31 2019-05-09 EMC IP Holding Company LLC Management of data using templates
US11086901B2 (en) * 2018-01-31 2021-08-10 EMC IP Holding Company LLC Method and system for efficient data replication in big data environment
US11625533B2 (en) * 2018-02-28 2023-04-11 Charles Northrup System and method for a thing machine to perform models
US11647095B1 (en) * 2018-10-02 2023-05-09 Intuit Inc. Method and system for orchestrating communications between application services through a unified connector platform
CN110619207B (zh) * 2019-08-20 2021-12-17 广州海颐信息安全技术有限公司 特权账号分布式存储方法及装置
CN110708175B (zh) * 2019-10-12 2021-11-30 北京友友天宇系统技术有限公司 分布式网络中消息同步的方法
CN110795444B (zh) * 2019-10-25 2022-12-02 北京小米移动软件有限公司 Dom数据更新方法、页面更新方法及装置
US11789971B1 (en) * 2019-12-02 2023-10-17 Amazon Technologies, Inc. Adding replicas to a multi-leader replica group for a data set
CN116614357A (zh) * 2023-05-11 2023-08-18 京东科技信息技术有限公司 配置信息发布方法、装置、电子设备及存储介质

Family Cites Families (51)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5933837A (en) * 1997-05-09 1999-08-03 At & T Corp. Apparatus and method for maintaining integrated data consistency across multiple databases
US6317754B1 (en) * 1998-07-03 2001-11-13 Mitsubishi Electric Research Laboratories, Inc System for user control of version /Synchronization in mobile computing
US6385643B1 (en) * 1998-11-05 2002-05-07 Bea Systems, Inc. Clustered enterprise Java™ having a message passing kernel in a distributed processing system
JP3254434B2 (ja) * 1999-04-13 2002-02-04 三菱電機株式会社 データ通信装置
US6298135B1 (en) 1999-04-29 2001-10-02 Motorola, Inc. Method of preventing power analysis attacks on microelectronic assemblies
US20020077117A1 (en) * 2000-12-15 2002-06-20 Jocelyn Cloutier Synchronous transmission of data with network remote control
US7099896B2 (en) * 2001-04-06 2006-08-29 Patientkeeper, Inc. Synchronizing data between disparate schemas using composite version
US6928458B2 (en) * 2001-06-27 2005-08-09 Microsoft Corporation System and method for translating synchronization information between two networks based on different synchronization protocols
US20030093435A1 (en) * 2001-11-05 2003-05-15 Bandekar Vijay R. Method and system for application level data object synchronization between two or more processes
US7836015B1 (en) * 2002-05-02 2010-11-16 Access Systems Americas, Inc. Fast synchronization of computer databases using coverage status
TWI220713B (en) * 2002-10-04 2004-09-01 Hon Hai Prec Ind Co Ltd System and method for synchronizing documents between multi-nodes
JP4334253B2 (ja) * 2003-03-14 2009-09-30 株式会社東芝 データ整合プログラム及びシステム並びに方法
EA015549B1 (ru) * 2003-06-05 2011-08-30 Интертраст Текнолоджис Корпорейшн Переносимая система и способ для приложений одноранговой компоновки услуг
US7636776B2 (en) * 2003-07-31 2009-12-22 Microsoft Corporation Systems and methods for synchronizing with multiple data stores
US7440981B2 (en) * 2003-07-31 2008-10-21 Microsoft Corporation Systems and methods for replicating data stores
US7440985B2 (en) * 2003-07-31 2008-10-21 Microsoft Corporation Filtered replication of data stores
US7756825B2 (en) * 2003-07-31 2010-07-13 Microsoft Corporation Synchronization peer participant model
US7512638B2 (en) * 2003-08-21 2009-03-31 Microsoft Corporation Systems and methods for providing conflict handling for peer-to-peer synchronization of units of information manageable by a hardware/software interface system
AU2004300300A1 (en) * 2003-12-12 2005-06-30 International Business Machines Corporation Port type agnostic proxy support for web services intermediaries
US7574706B2 (en) * 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7478381B2 (en) * 2003-12-15 2009-01-13 Microsoft Corporation Managing software updates and a software distribution service
US7778962B2 (en) * 2004-04-30 2010-08-17 Microsoft Corporation Client store synchronization through intermediary store change packets
US20060053368A1 (en) * 2004-05-20 2006-03-09 Bea Systems, Inc. Conduit manager for occasionally-connected application server
US8572494B2 (en) * 2004-07-14 2013-10-29 International Business Machines Corporation Framework for development and customization of web services deployment descriptors
US7506006B2 (en) * 2004-09-03 2009-03-17 Microsoft Corporation Synchronization for smart clients
CN1753359B (zh) * 2004-09-24 2011-01-19 华为技术有限公司 实现传输SyncML同步数据的方法
US8200700B2 (en) * 2005-02-01 2012-06-12 Newsilike Media Group, Inc Systems and methods for use of structured and unstructured distributed data
US7720890B2 (en) * 2005-02-22 2010-05-18 Microsoft Corporation Ghosted synchronization
US20080162604A1 (en) * 2005-03-01 2008-07-03 Serge Soulet System and Method For Migrating a Platform, User Data, and Applications From at Least One Server to at Least One Computer
WO2006097880A1 (en) * 2005-03-18 2006-09-21 Philips Intellectual Property & Standards Gmbh Method for synchronization of network nodes
US7983209B2 (en) * 2005-04-18 2011-07-19 Research In Motion Limited System and method for producing notification based web services
EP1715430A1 (en) 2005-04-18 2006-10-25 Research In Motion Limited System and method for exposing a synchronous web service as a notification web service
US20060235970A1 (en) * 2005-04-18 2006-10-19 Cameron Bateman System and method for exposing synchronous web services as notification style web services
US7945531B2 (en) * 2005-09-16 2011-05-17 Microsoft Corporation Interfaces for a productivity suite application and a hosted user interface
US20070067354A1 (en) * 2005-09-16 2007-03-22 Microsoft Corporation Productivity suite to line of business synchronization mechanism
EP1775911B1 (en) * 2005-10-13 2018-02-28 BlackBerry Limited System and method for providing asynchronous notifications using synchronous data
US7716180B2 (en) * 2005-12-29 2010-05-11 Amazon Technologies, Inc. Distributed storage system with web services client interface
KR101017365B1 (ko) * 2006-02-14 2011-02-28 삼성전자주식회사 복수의 컨텐츠 디렉토리 서비스 장치를 동기화하는 방법,컨텐츠 디렉토리 서비스 장치 및 시스템
US20090287726A1 (en) * 2006-04-07 2009-11-19 Mag Productions Holding B.V. Method and system for synchronization of databases
KR100782858B1 (ko) * 2006-04-11 2007-12-06 삼성전자주식회사 홈 네트워크 디바이스들의 컨텐츠를 동기화하는 방법 및장치
US20080005350A1 (en) * 2006-06-05 2008-01-03 Oleg Logvinov System and method for synchronized content rendering in a multi-node network
US20080046437A1 (en) * 2006-07-27 2008-02-21 Wood Charles B Manual Conflict Resolution for Background Synchronization
US8291466B2 (en) * 2006-10-19 2012-10-16 International Business Machines Corporation Method and system for synchronized policy control in a web services environment
US8239504B2 (en) * 2007-01-07 2012-08-07 Apple Inc. Synchronization methods and systems
US7983249B2 (en) * 2007-01-23 2011-07-19 Oracle America, Inc. Enterprise web service data to mobile device synchronization
US7725456B2 (en) * 2007-04-27 2010-05-25 Microsoft Corporation Item management with data sharing and synchronization
US7865535B2 (en) * 2007-05-18 2011-01-04 International Business Machines Corporation Apparatus, system, and method for a data server-managed web services runtime
US7761415B2 (en) * 2007-08-23 2010-07-20 International Business Machines Corporation Method, system and computer program product for maintaining synchronization of files
US8122040B2 (en) * 2007-08-29 2012-02-21 Richard Banister Method of integrating remote databases by automated client scoping of update requests over a communications network
US8090685B2 (en) * 2007-09-14 2012-01-03 Microsoft Corporation Knowledge based synchronization of subsets of data with no move condition
US20090083441A1 (en) 2007-09-24 2009-03-26 Microsoft Corporation Synchronization of web service endpoints in a multi-master synchronization environment

Also Published As

Publication number Publication date
EP2203843A4 (en) 2015-01-21
US20090083441A1 (en) 2009-03-26
CA2695017A1 (en) 2009-04-02
US20150201014A1 (en) 2015-07-16
WO2009042608A3 (en) 2009-06-04
JP2011503678A (ja) 2011-01-27
KR101564471B1 (ko) 2015-10-29
EP3614274A1 (en) 2020-02-26
JP2014089719A (ja) 2014-05-15
MX2010002200A (es) 2010-03-17
KR20100072170A (ko) 2010-06-30
WO2009042608A2 (en) 2009-04-02
CN101802809B (zh) 2013-01-02
US20150120664A1 (en) 2015-04-30
US9648101B2 (en) 2017-05-09
EP2203843A2 (en) 2010-07-07
CN101802809A (zh) 2010-08-11

Similar Documents

Publication Publication Date Title
JP5456677B2 (ja) マルチマスタ同期環境におけるウェブサービスエンドポイントの同期
JP4846027B2 (ja) 分散装置に対するマルチマスタ・データ同期のコンフリクト解決
CN101802806A (zh) 无移动情况下数据子集的基于知识的同步
EP1703701B1 (en) APIs to build peer to peer messaging applications
US7899917B2 (en) Synchronization framework for occasionally connected applications
CN101583939A (zh) 用于松耦合设备的同步协议
KR100978336B1 (ko) 리모트 액세스
US20060224748A1 (en) Service support framework for peer to peer applications
JP2011513863A (ja) 同期サーバープロセス
CN104935634B (zh) 基于分布共享存储的移动设备数据共享方法
JP2011511362A (ja) マルチマスター同期環境のための知識ベース・フレームワークにおけるオブジェクトの起動および終了
US20040221007A1 (en) Smart control points
Elenius et al. Ontology-based Service Discovery in P2P Networks.
Ådahl Shared resource for collaborative editing over a wireless network
Uldal Casual resource sharing with shared virtual folders
Yang et al. Psmi: A jxta 2.0-based infrastructure for p2p service management using web service registries
CN119166384A (zh) 一种数据分发服务的方法、装置、电子设备及车辆
Cortés Middleware Support for Service Discovery in Highly Heterogeneous Environments
Fergus A framework for self-adaptive networked appliances
Presser Efficient wireless sensor networks and integration into the IP multimedia subsystem
Said Middleware for service provision in disconnected mobile ad hoc networks
Grossman High performance data streaming in service architecture

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20110609

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20130201

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20130501

RD03 Notification of appointment of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7423

Effective date: 20130701

RD04 Notification of resignation of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7424

Effective date: 20130717

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20130809

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20131128

A911 Transfer to examiner for re-examination before appeal (zenchi)

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20131205

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20131224

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20140108

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

Ref document number: 5456677

Country of ref document: JP

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees
RD02 Notification of acceptance of power of attorney

Free format text: JAPANESE INTERMEDIATE CODE: R3D02