(57)【要約】  構造化ウェブサイトコンテンツを同期させる技術が開示される。装置は、サーバ同期モジュールを有するサーバを含んでサーバとクライアントとによって共有される構造化コンテンツタイプを識別し、構造化コンテンツタイプに対応する構造化コンテンツを同期させることができる。他の実施形態が開示されて特許請求の範囲に記載される。
2009538475.tif 000002
【特許請求の範囲】
【請求項１】
命令を有するコンピュータ読み取り可能な記憶媒体を含む物品であって、
当該命令が実行されると、
サーバ及びクライアントによって共有される構造化コンテンツタイプを識別するステップ（２０２）と、
前記構造化コンテンツタイプに対応する構造化コンテンツを同期させるステップ（２０４）と
をシステムに実行させることを特徴とする物品。
【請求項２】
命令を更に含み、
当該更なる命令が実行されると、
サーバコンテンツリストについての要求を受信するステップと、
前記サーバによってサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともに前記サーバコンテンツリストを前記サーバに送信するステップと、
同期要求を受信して前記サーバ及び前記クライアントによってサポートされる構造化コンテンツタイプを同期させるステップと
をシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項３】
命令を更に含み、
当該更なる命令が実行されると、
前記クライアントによってサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともにクライアントコンテンツリストを受信するステップと、
前記サーバによってサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともにサーバコンテンツリストを検索するステップと、
前記サーバコンテンツリストを前記クライアントコンテンツリストと比較するステップと、
前記クライアント及び前記サーバによってサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともに共有コンテンツリストを送信するステップと、
同期要求を受信して前記共有コンテンツリストに従って構造化コンテンツタイプを同期させるステップと
をシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項４】
命令を更に含み、
当該更なる命令が実行されると、
異なるハイパーリンクを生成して異なる構造化コンテンツタイプについての同期要求を送信するステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項５】
命令を更に含み、
当該更なる命令が実行されると、
同期させる構造化コンテンツの量を決定するステップと、
前記量に基づいて同期パラメータを設定するステップと、
前記同期パラメータに従って前記クライアントに同期情報を送信するステップと
をシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項６】
命令を更に含み、
当該更なる命令が実行されると、
プロトコルハンドラを用いてウェブブラウザから同期要求を送信するステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項７】
命令を更に含み、
当該更なる命令が実行されると、
前記構造化コンテンツタイプを有する同期要求を受信するステップと、
前記構造化コンテンツタイプによって指し示された構造化コンテンツがチェンジログを用いて修正されたか否かを判断するステップと、
前記判断に基づいて前記クライアントに同期情報を送信するステップと
をシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項８】
命令を更に含み、
当該更なる命令が実行されると、
構造化コンテンツの複数のバージョンがバージョン履歴を用いてそれぞれに修正されたか否かを判断するステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項９】
命令を更に含み、
当該更なる命令が実行されると、
プロパティバッグを用いてデータスキーマコンフリクトを検出するステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項１０】
命令を更に含み、
当該更なる命令が実行されると、
フィールド値マッピングを用いて言語コンフリクトを検出するステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項１１】
命令を更に含み、
当該更なる命令が実行されると、
同期間隔パラメータを生成するステップと、
前記クライアントに前記同期間隔パラメータを送信するステップと、
前記同期間隔パラメータに従って前記クライアントから同期要求を受信するステップと
をシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項１２】
命令を更に含み、
当該更なる命令が実行されると、
前記サーバによって記憶されたコンテンツ変更履歴データまたは前の同期要求からの前の同期結果に基づいてクライアントに対する同期間隔パラメータを生成するステップと、
前記クライアントに前記同期間隔パラメータを送信するステップと
をシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項１３】
命令を更に含み、
当該更なる命令が実行されると、
ページング動作を用いて前記構造化コンテンツタイプを同期させるステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項１４】
命令を更に含み、
当該更なる命令が実行されると、
内部プライベートネットワークから少なくとも１つの構造化コンテンツタイプとともに同期要求を送信するための第１のネットワークアドレスを生成するとともに、外部公衆網から少なくとも１つの構造化コンテンツタイプとともに同期要求を送信するための第２のネットワークアドレスを生成するステップをシステムにさらに実行させることを特徴とする請求項１に記載の物品。
【請求項１５】
サーバ及びクライアントによって共有される構造化コンテンツタイプを識別するステップ（２０２）と、
前記構造化コンテンツタイプに対応する構造化コンテンツを同期させるステップ（２０４）と
を含むことを特徴とする方法。
【請求項１６】
サーバコンテンツリストに対する要求を受信するステップと、
前記サーバによってサポートされる構造化コンテンツタイプを表す構造化コンテンツ値とともに前記サーバコンテンツリストを送信するステップと、
同期要求を受信して、前記サーバ及び前記クライアントによってサポートされる構造化コンテンツタイプを同期させるステップと、
をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１７】
前記クライアントによってサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともにクライアントコンテンツリストを受信するステップと、
前記サーバによってサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともにサーバコンテンツリストを検索するステップと、
前記サーバコンテンツリストを前記クライアントコンテンツリストと比較するステップと、
前記クライアント及び前記サーバによってサポートされる構造化コンテンツタイプを表す構造化コンテンツ値とともに共有コンテンツリストを送信するステップと、
同期要求を受信して、前記共有コンテンツリストに従って構造化コンテンツタイプを同期させるステップと、
をさらに含むことを特徴とする請求項１５に記載の方法。
【請求項１８】
サーバ（１２２）を含む装置であって、
前記サーバは、
前記サーバ及びクライアント（１８０）によって共有される構造化コンテンツタイプ（１３４）を識別し、前記構造化コンテンツタイプに対応する構造化コンテンツを同期させるサーバ同期モジュール（１２０）を有することを特徴とする装置。
【請求項１９】
前記クライアントは、同期要求を送信して、前記サーバ及び前記クライアントによってサポートされる構造化コンテンツタイプを同期させるクライアント同期モジュールを有することを特徴とする請求項１９に記載の装置。
【請求項２０】
前記サーバ同期モジュールは、クライアント構造化コンテンツタイプを有するクライアントコンテンツリストを受信し、前記クライアント構造化コンテンツタイプをサーバ構造化コンテンツタイプと比較し、一致している構造化コンテンツタイプとともに共有コンテンツリストを送信し、同期要求を受信して前記共有コンテンツリストに従って構造化コンテンツタイプを同期させることを特徴とする請求項１９に記載の装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンテンツの同期化（synchronization）技術に関する。
【背景技術】
【０００２】
ネットワークソフトウェアアプリケーションは、通常、アプリケーションデータ用及び／またはユーザデータ用の集中ネットワークデータベースを維持する。場合によっては、デバイスは、集中データベースのサブセットをネットワークデータベースからダウンロードまたは複製して、次に、ネットワーク接続を切ることができる。例えば、無線携帯端末は、ウェブサイトなどの集中データベースから、カレンダ及び連絡先をダウンロードすることができる。ネットワークデータベースにより維持されている情報が修正されるかまたは、情報の複製されたサブセット自体が修正される場合、両方のデータ記憶場所におけるかかる変更を更新するのに同期イベントが必要かもしれない。例えば、ユーザがカレンダアプリケーションに新規のアポイントメントを追加すると仮定する。携帯端末がネットワークデータベースとの接続を確立すると、ネットワークデータベースに記憶されたカレンダ情報は、携帯端末からの修正されたデータを反映するために更新されることを必要とするかもしれない。逆もまた同様である。
【発明の開示】
【発明が解決しようとする課題】
【０００３】
しかしながら、ネットワークデータベースと同期しようとするデバイス数と同様に、アプリケーションデータの量が増加するにつれて、同期イベントはますます時間集中及び帯域幅集中が生じるかもしれない。従って、これらの課題及び他の課題を解決するために改良された同期技術が必要になるかもしれない。
【課題を解決するための手段】
【０００４】
この概要は、簡易化した形式でいくつかの概念を説明し、当該概念の詳細は以下の実施形態で詳しく説明する。この概要は、特許請求の範囲に記載された発明の重要な特徴または本質的特徴を特定することを意図していないし、特許請求の範囲に記載された発明の範囲を限定するために用いられることを意図していない。
【０００５】
様々な実施形態は、概して、物理的エンティティまたは論理的エンティティ同士の間で構造化コンテンツを同期化する技術を対象にすることができる。より詳しくは、様々な実施形態は、クライアントとサーバとの間の同期化技術を対象にすることができる。例えば、いくつかの実施形態では、サーバとクライアントとの間で共有されている特定の構造化コンテンツタイプを、同期動作の前に識別することができる。該構造化コンテンツタイプに対応する構造化コンテンツは、識別された時点で同期され得る。このように、同期は、クライアント及び／またはサーバによって記憶されているデータセット全体よりはむしろ、構造化コンテンツタイプによって識別されるような共有構造化コンテンツに焦点を合わせることができる。従って、同期時間及び資源を削減し、それによって全体的なデバイス動作及びユーザに対するネットワークサービスを強化することができる。
【０００６】
１つの実施形態において、クライアントは発見動作または識別動作を実行することができる。例えば、サーバは、サーバコンテンツリスト要求を受信することができる。サーバは、サーバでサポートされる構造化コンテンツタイプを表している構造化コンテンツ値とともにサーバコンテンツリストを検索して送信することができる。クライアントは、サーバコンテンツリストを受信し、クライアントでサポートされる構造化コンテンツタイプを表している構造化コンテンツ値を有するクライアントコンテンツリストをサーバコンテンツリストと比較することができる。クライアントは、同期要求及び／または共有コンテンツリストを送信して、サーバ及びクライアントでサポートされる構造化コンテンツタイプを同期させることができる。サーバは、同期要求及び／または共有コンテンツリストを受信して、それに応じて同期動作を実行することができる。
【０００７】
１つの実施形態において、サーバは発見動作または識別動作を実行することができる。例えば、サーバはクライアントコンテンツリストを受信することができる。サーバは、サーバコンテンツリストを検索して、両方のコンテンツリストを比較することができる。サーバは、該比較に従ってクライアント及びサーバでサポートされている構造化コンテンツタイプを表している構造化コンテンツ値を有する共有コンテンツリストを生成することができる。サーバは、共有コンテンツリストをクライアントに送信することができる。クライアントは、共有コンテンツリストを受信し、同期要求を送信して共有コンテンツリストに従って構造化コンテンツタイプを同期させることができる。サーバは、同期要求を受信し、該同期要求に従って同期動作を実行することができる。他の実施形態が開示され、特許請求の範囲に記載される。
【発明を実施するための最良の形態】
【０００８】
図１は、ネットワークの１つの例示的な実施形態を示す。図１は、ネットワーク１００のブロック図を示す。ネットワーク１００は、様々な実施形態を実施するのに適した一般的なネットワークアーキテクチャを示すことができる。ネットワーク１００は、複数の要素を含むことができる。ある要素は、特定の動作を実行する任意の物理的構造または論理的構造を含むことができる。所定のデザインパラメータまたは性能制約に要求されるように、各々の要素を、ハードウェア、ソフトウェア、またはそれらの任意の組合せとして実施することができる。ハードウェア要素の例には、プロセッサ、マイクロプロセッサ、回路、回路素子（例えば、トランジスタ、抵抗器、コンデンサ、インダクタなど）、集積回路、特定用途向け集積回路（ＡＳＩＣ）、プログラム可能論理回路（ＰＬＤ）、デジタルシグナルプロセッサ（ＤＳＰ）、フィールドプログラマブルゲートアレイ（ＦＰＧＡ）、記憶装置、論理ゲート、レジスタ、半導体デバイス、チップ、マイクロチップ、チップセットなどを含むことができる。ソフトウェアの例には、任意のソフトウェアコンポーネント、プログラム、アプリケーション、コンピュータプログラム、アプリケーションプログラム、システムプログラム、マシンプログラム、オペレーティングシステムソフトウェア、ミドルウェア、ファームウェア、ソフトウェアモジュール、ルーチン、サブルーチン、関数、方法、インタフェース、ソフトウェアインタフェース、アプリケーションプログラミングインタフェース（ＡＰＩ）、命令セット、演算コード、コンピュータコード、コードセグメント、コンピュータコードセグメント、ワード、値、シンボルまたはそれらの任意の組合せを含むことができる。図１に示すネットワーク１００は、特定のトポロジにおける限定された要素数を有しているが、ネットワーク１００は、所定の実施に要求されるように、代わりのトポロジにおいてより多くの要素またはもっと少ない要素を含んでいてもよいということが理解されるだろう。実施形態は、上記の説明に限定されない。
【０００９】
例えば、図１に示すように、ネットワーク１００は、コンピュータアレイ１４０、サーバ１５０、ネットワーク１６０、ロードバランサ１７０、及びクライアントデバイス１８０-１-ｓなどの様々な要素を含むことができる。例えば、１つの実施形態において、サーバ１５０は、ウェブサーバとして実施されてもよい。ウェブサーバは、クライアントデバイス（例えば、クライアント１８０-１-ｓ及び／またはコンピュータデバイス１２２-１-ｎ）からハイパーテキスト転送プロトコル（ＨＴＴＰ）要求を受理してウェブページを供給することができるコンピュータデバイスを含んでいてもよい。ウェブページは、通常、ハイパーテキストマークアップ言語（ＨＴＭＬ）、拡張マークアップ言語（ＸＭＬ）、拡張可能ハイパーテキストマークアップ言語（ＸＨＴＭＬ）、マイクロソフトワード（登録商標）マークアップ言語（ＷｏｒｄＭＬ）などのマークアップ言語の何らかの形式を用いて生成される文書である。ネットワーク１６０は、伝送制御プロトコル及びインターネットプロトコル（ＴＣＰ／ＩＰ）などの１つまたは複数のインターネットプロトコルを用いるパケット網を含んでもよい。ロードバランサ１７０は、コンピューティング資源が効率的な方法で用いられるような方法でネットワーク化されたコンピュータサーバの集合（例えば、コンピュータアレイ１４０など）に仕事を割り当てるデバイスを含むことができる。ロードバランサ１７０は、例えば、コンピュータ、サーバ、仮想サーバ、ネットアプライアンスなどを用いて実施されてもよい。
【００１０】
様々な実施形態において、ネットワーク１００は、様々なコンピュータデバイスを含むことができる。１つの実施形態では、例えば、コンピュータアレイ１４０は、複数のコンピュータデバイス１２２-１-ｎを含むことができる。同様に、クライアントデバイス１８０‐１‐ｓも、様々なタイプのコンピュータデバイスとして実施され得る。コンピュータデバイスの例には、コンピュータ、コンピュータシステム、コンピュータサブシステム、ワークステーション、ターミナル、サーバ、ウェブサーバ、仮想サーバ、パーソナルコンピュータ（ＰＣ）、デスクトップコンピュータ、ラップトップコンピュータ、ウルトララップトップコンピュータ、ポータブルコンピュータ、ハンドヘルドコンピュータ、携帯情報端末（ＰＤＡ）、モバイルコンピュータデバイス、携帯電話、一体型携帯電話／ＰＤＡ、デジタルビデオデバイス（例えば、デジタルカメラ、ビデオカメラまたはカムコーダ）、デジタルオーディオデバイス（例えば、ＭＰ３プレーヤ）、片方向ページャ、両方向ページャ、前述の例のいずれかの仮想インスタンス化、及び他の任意の電子デバイス、電気機械デバイス、もしくは電気デバイスをも含むことができるが必ずしもこれらに限定されるわけではない。実施形態は、上記の説明に限定されない。
【００１１】
例えば、１つの実施形態では、コンピュータアレイ１４０は、サーバファームとして実現され得る。コンピュータデバイス１２２-１-ｎは各々、サーバ、仮想サーバ、バーチャルマシン、シングルボードコンピュータ（ＳＢＣ）、サーバブレード、ウェブサーバなどを示す。サーバファームは、通常、企業によって通常維持されるコンピュータサーバの一群であって、１台のマシンの能力を超えたサーバのニーズを達成する。しばしば、サーバファームは、１つのタスクに割り当てられたプライマリサーバ及びバックアップサーバの両方を有し、プライマリサーバの障害の場合には、バックアップサーバがプライマリサーバの機能を引き継ぐ。サーバファームは、例えば、ウェブホストサービスを提供するためによく用いられる。ウェブホストサービスは、情報、画像、映像、音声、テキスト、動画、映画、ピクチャ、またはワールドワイドウェブ（ＷＷＷまたは「ウェブ」）を介してアクセス可能なウェブコンテンツの任意の他の形式を記憶するオンラインシステムを個人及び組織に提供する、インターネットホストサービスの一種である。ウェブホストは、通常データセンタにおいて、自社のクライアントに対して自社が所有するサーバ上のスペース及びインターネット接続を提供する会社である。ウェブホストはまた、自社で所有しておらず自社のデータセンタに位置すべきサーバに対するインターネットへのデータセンタのスペース及び接続を提供することができる。
【００１２】
図１は、コンピュータデバイス１２２-１のより詳細なブロック図を更に示している。コンピュータデバイス１２２-１は、任意のコンピュータデバイス１２２-１-ｎの代表であってよい。更に、コンピュータデバイス１２２-１はまた、任意のクライアントデバイス１８０-１‐ｓの代表であってもよい。その最も基本的な構成１０６では、コンピュータデバイス１２２-１は、通常、少なくとも１つの処理装置１０２及びメモリ１０４を含む。メモリ１０４は、揮発性メモリ及び不揮発メモリを含む、データを記憶することができる任意の機械可読媒体またはコンピュータ可読媒体を用いて実施され得る。例えば、メモリ１０４は、リードオンリメモリ（ＲＯＭ）、ランダムアクセスメモリ（ＲＡＭ）、ダイナミックＲＡＭ（ＤＲＡＭ）、ダブルデータレートＤＲＡＭ（ＤＤＲＡＭ）、同期型ＤＲＡＭ（ＳＤＲＡＭ）、スタティックＲＡＭ（ＳＲＡＭ）、プログラマブルＲＯＭ（ＰＲＯＭ）、消去可能ＰＲＯＭ（ＥＰＲＯＭ）、電気的消去可能ＲＯＭ（ＥＥＰＲＯＭ）、フラッシュメモリ、強誘電性ポリマーメモリなどのポリマーメモリ、オボニックス（ovonic）メモリ、相変化メモリもしくは強誘電性メモリ、ＳＯＮＯＳ（シリコン／酸化膜／窒化膜／酸化膜／シリコン：oxide-nitride-oxide-silicon）メモリ、磁気カードもしくは光カード、または、情報を記憶するのに適した任意の他のタイプの媒体など、を含むことができる。図１に示すように、メモリ１０４は、例えば、１つ又は複数のアプリケーションプログラム１１８、サーバ同期モジュール１２０、及び付随データなどの、様々なソフトウェアプログラムを記憶することができる。
【００１３】
コンピュータデバイス１２２-１はまた、構成１０６を超えたさらなる特徴及び／または機能性を有することができる。例えば、コンピュータデバイス１２２-１は、着脱自在の記憶装置１０８及び固定式記憶装置１１０を含むことができ、それらも、前述のように様々なタイプの機械可読媒体またはコンピュータ可読媒体を含むことができる。コンピュータデバイス１２２-１は、また、例えばキーボード、マウス、ペン、音声入力デバイス、タッチ入力デバイスなどの１つまたは複数の入力デバイス１１４を有することができる。ディスプレイ、スピーカ、プリンタなどの１つまたは複数の出力デバイス１１６も、コンピュータデバイス１２２-１に含まれ得る。
【００１４】
コンピュータデバイス１２２-１は、コンピュータデバイス１２２-１が他のデバイスと通信するのを可能にする１つまたは複数の通信接続部１１２を更に含むことができる。通信接続部１１２は、例えば１つまたは複数の通信インタフェース、ネットワークインタフェース、ネットワークインターフェースカード（ＮＩＣ）、ラジオ、無線送信器／受信器（送受信器）、有線通信媒体及び／または無線通信媒体、物理的コネクタなどの様々なタイプの標準通信要素を含むことができる。通信媒体は、通常、コンピュータ可読命令、データ構造、プログラムモジュール、または他のデータを搬送波または他の移送メカニズムなどの変調されたデータ信号内の他のデータを具体化し、任意の情報配信媒体を含む。用語「変調されたデータ信号」は、信号内に情報をコード化するような方法で設定されたかまたは変更されたその特徴セットのうちの１つまたはいくつかを有する信号を意味する。一例であってこの例に限らないが、通信媒体は、有線通信媒体及び無線通信媒体を含む。有線通信媒体の例は、導線、ケーブル、金属リード、プリント基板（ＰＣＢ）、バックプレーン、スイッチ構成、半導体物質、ツイストペア線、同軸ケーブル、光ファイバ、伝播信号などを含むことができる。無線通信媒体の例は、音響、無線周波数（ＲＦ）スペクトル、赤外線及び他の無線媒体を含むことができる。本明細書において用いられる用語である機械可読媒体及びコンピュータ可読媒体は、記憶媒体及び通信媒体の両方を含むことが意図されている。
【００１５】
コンピュータデバイス１２２-１-ｎの各々は、複数のデータベースを含むことができる。コンピュータデバイス１２２-１に関して詳細に示すように、コンピュータデバイス１２２-１は、データベース１２４、１２６に結合され得る。各々のデータベースは、コンピュータデバイス１２２−１、アプリケーションプログラム１１８、サーバ同期モジュール１２０などに対する様々なタイプのデータを記憶することができる。１つの実施形態では、例えば、データベース１２４は、クライアントコンテンツリスト１３０、サーバコンテンツリスト１３２、共有コンテンツリスト１３４などを記憶することができる。クライアントコンテンツリスト１３０は、１つまたは複数のクライアント１８０-１-ｓなどのクライアントにサポートされている構造化コンテンツタイプを表している構造化コンテンツ値を含むことができる。サーバコンテンツリスト１３２は、１つまたは複数のサーバ１２２-１-ｎなどのサーバにサポートされている構造化コンテンツタイプを表している構造化コンテンツ値を含むことができる。共有コンテンツリスト１３４は、１つまたは複数のクライアント１８０-１-ｓ及び１つまたは複数のサーバ１２２-１-ｎにより共有されている構造化コンテンツタイプを表している構造化コンテンツ値を含むことができる。他のタイプのデータ及びデータベースを、コンピュータデバイス１２２−１で実施することができるが、実施形態は、上記の説明に限定されない。
【００１６】
一般的な動作において、ネットワーク１００は、コンピュータアレイ１４０のうちの１つまたは複数のコンピュータデバイス１２２-１-ｎによって記憶されるかまたは実行される１つまたは複数のアプリケーションプログラムと、１つまたは複数のクライアントデバイス１８０-１-ｓによって記憶されるかまたは実行される１つ以上のアプリケーションプログラムとの間の同期動作を容易にすることができる。コンピュータデバイス１２２−１−ｎの各々がサーバベースのウェブアプリケーションプログラムのような１つまたは複数のアプリケーションプログラム１１８を実行すると仮定する。サーバベースのウェブアプリケーションプログラムの例は、本件特許出願人により製造されているウィンドウズ（登録商標）ＳＨＡＲＥＰＯＩＮＴ（登録商標）サービス（ＷＳＳ）バージョン２.０、バージョン３.０、及び改良版（本明細書では「ＷＳＳアプリケーション」または「シェアポイントアプリケーション」と呼ぶ）を含むことができる。ＷＳＳバージョン３.０は、例えば、クライアント１８０-１-ｓなどの様々なクライアントに対する基本的チームサービス、ウェブポータル及びイントラネット機能を提供する一組の統合アプリケーションプログラムである。ＷＳＳバージョン３.０に対するユーザデータまたはコンテンツデータは、データベース１２４、１２６で記憶され得る。更に、１つまたは複数のコンピュータデバイス１２２−１-ｎは、例えば、シェアポイントポータルサーバ（ＳＰＳ）２００３、または、オフィスシェアポイントサービス（ＯＳＳ）２００６などの、ＷＳＳバージョン３.０上に構築されるサードパーティアプリケーションを実施することができる。いくつかの実施形態が、一例としてＷＳＳアプリケーションプログラム及び付随するサードパーティプログラムを参照して開示されるが、単一のコンピュータデバイスまたは複数のコンピュータデバイスによって実行されるいかなるアプリケーションプログラムも、本明細書で開示されている同期技術を用いて同期することができるということが理解されるだろう。実施形態は、上記の説明に限定されない。
【００１７】
ＷＳＳバージョン３.０は、複数のユーザに対するプラットフォームを提供して効率的な方法でデータを共有する。例えば、ユーザはチームに組織され、各々のチームは、共有カレンダ、連絡先リスト、作業リスト、電子メール、掲示板、文書などを有することができる。かかる共有データの有用性を増すために、ネットワーク１００の様々な要素を、間欠的に（intermittently）同期されるデータベースシステム（ＩＳＤＢ）として組織することができる。ＩＳＤＢは、様々な物理的クライアントエンティティまたは論理的クライアントエンティティが、クライアントデバイス１８０-１などのクライアントデバイスに対してデータベース１２４、１２６から情報の一部をダウンロードまたは複製することを許容する。クライアントデバイス１８０-１が本件特許出願人によって製造されるマイクロソフトアウトルック（商標）のようなアプリケーションを含むと仮定する。マイクロソフトアウトルックは、ＷＳＳバージョン３.０を用いて維持されるようにサーバ１２２-１から共有データをインポートすることができる。従って、ユーザは、マイクロソフトアウトルックのローカライズ版を実行するハンドヘルドンピュータデバイスなどの携帯用デバイスを有し、サーバ１２２-１から共有データの一部をダウンロードすることができる。クライアントデバイス１８０-１は、アポイントメントの追加、連絡先の削除、作業の変更、ノートの生成、プロジェクトスケジュールの更新などで、サーバ１２２-１との常時接続なしに（例えば、オフライン）局所的に複製されたデータを修正することができる。一方、他のユーザも、同様にデータベース１２４、１２６から局所的に複製されたデータを修正することができる。データ完全性を維持するために、クライアントデバイス１８０-１は、サーバ１２２-１と周期的にまたは間欠的に同期して、両方のデバイスの間で共有される任意の構造化コンテンツまたはデータセットに対する変更を反映することを必要とするかもしれない。
【００１８】
同期動作を実行するために、各々のクライアントデバイス１８０-１-ｓは、クライアント同期モジュール１８２を含むことができ、各々のサーバ１２２-１-ｎは、サーバ同期モジュール１２０を含むことができる。同期モジュール１２０、１８２は、様々な統合レベルを有していて、サーバ１２２及びクライアントデバイス１８０がそれぞれ、両方のデバイスでサポートされている構造化コンテンツまたはデータセットを同期させることを可能にすることができる。１つの実施形態では、例えば、クライアントデバイス１８０は、サーバ１２２によって実行されるようなＷＳＳアプリケーションとある程度ではあるが統合されるマイクロソフトアウトルッククライアントアプリケーションを含むことができる。かかる統合は、マイクロソフトアウトルックとＷＳＳアプリケーションとの間の同期データを含むことができる。例えば、ＷＳＳアプリケーションは、ＷＳＳアプリケーションに記憶される共有カレンダ、連絡先、作業、電子メール及び掲示板を含むことができる。様々な実施形態は、マイクロソフトアウトルックユーザに対するユーザモデル、ドライバ、仕様、データスキーマ及び同期インフラを定義して、ＷＳＳアプリケーションデータと相互に作用することができる。いくつかの実施形態では、ほんの一例としてマイクロソフトアウトルックとＷＳＳアプリケーションとの間で構造化コンテンツを同期するように記述されているが、一組の所定のデザインパラメータ及び性能制約に要求されるように、構造化コンテンツの同期はいかなるアプリケーションプログラム及びコンピューティングプラットフォームに対しても実行され得るということが認められるだろう。実施形態は、上記の説明に限定されない。
【００１９】
サーバ１２２-１及びクライアントデバイス１８０-１などの２つ以上のアプリケーション及び／またはデバイスを同期させようとするときに、いくつかのデザイン上の考慮すべき事柄がある。例えば、データの中央保管所としてウェブサイトを用いるために、データは、ウェブサイトサーバ上で最小の負荷を生成しつつ、素早く他のアプリケーションに同期しなければならない。更に、ユーザはしばしば、データ全体のうちの小さい範囲だけに興味があり、従って、ユーザは、興味のある関連データに対する同期動作を開始するために容易に発見できる場所を必要とする。更に、異なる同期クライアントは、サーバからの特定のタイプのデータと同期することができるだけであるかもしれない。同様に、いくつかの同期クライアントは、ウェブサイトサーバでサポートされないデータタイプまたは値をサポートするかもしれない。その一方で、ウェブサイトサーバは、同期クライアントでサポートされないデータタイプまたは値をサポートするかもしれない。別の例では、ウェブサイト及び同期クライアントは、異なった言語で実行されているかもしれない。また別の例では、複数の同期クライアントは、サーバに接続されていないが潜在的に同じデータを更新することができ、従って、データが同期イベントの間に失われないことを確実にする手段が取られることを必要とする。更に別の例では、ユーザは、プライベートネットワーク内及びインターネットなどの公衆網内の両方で同じウェブサイトと同期することを必要とするかもしれない。また別の例では、サーバからのコンテンツを同期させているクライアントは、コンテンツが変化してサーバ上の余分の負荷または同期したクライアント上の古いコンテンツのいずれかをもたらす頻度を正確に予測することができない。最終的に、サーバ管理者は、クライアントを同期させることを介してサーバに発生する負荷の制御を可能にすることを所望する。
【００２０】
これらの課題及び他の課題を解決するために、サーバ１２２及び／またはクライアントデバイス１８０は、構造化コンテンツを利用する改善された同期技術を実施することができる。構造化コンテンツは、幅、長さ、ビットサイズ、バイトサイズ、構文、フィールド、値、コード、フラグなどの１つまたは複数の画定された構造上のパラメータを有している任意のタイプの媒体コンテンツ（例えば、テキスト、音声、映像、画像、ピクチャ、動画、シンボル、キャラクタ、数、アイコン、その他）を示すことができる。構造化コンテンツは、アプリケーションデータ及び／またはユーザデータを含み、マイクロソフトアウトルック、マイクロソフトアクセス（商標）、マイクロソフトフロントページ（商標）、マイクロソフトワンノート（商標）、マイクロソフトパワーポイント（商標）、マイクロソフトワード（商標）、マイクロソフトビジオ（商標）、ＷＳＳアプリケーション、ＳＰＳアプリケーションなどの任意の数のアプリケーションプログラムをサポートすることができる。例えば、１つの実施形態では、構造化コンテンツは、例えば、カレンダリスト、作業リスト、連絡先リスト、ノートまたはメモのリスト、メールリストなどから１つまたは複数の項目などのマイクロソフトアウトルックに対するアプリケーションデータ及び／またはユーザデータを含むことができる。サーバ同期モジュール１２０及びクライアント同期モジュール１８２は、統合されて、サーバ１２２とクライアント１８０との間で共有される構造化コンテンツタイプを識別することができる。次に、サーバ１２２とクライアント１８０との間で共有される構造化コンテンツタイプに対応する構造化コンテンツ情報を同期させることができる。
【００２１】
構造化コンテンツを用いて同期動作を実行することにより、従来の同期技術に勝るいくつかの利点を提供することができる。様々な実施形態において、例えば、デバイス同士の間の同期動作を開始することを、多くの方法で改善することができる。例えば、ネットワークアドレス及び／またはハイパーリンクが、同期クライアントに対して生成されて、サーバ及び／またはクライアントでサポートされる特定のコンテンツタイプに基づいて、同期動作を開始することができる。異なるハイパーリンクが生成されて、異なるコンテンツの範囲に対する同期動作を開始することができる。別の例では、同期動作は、同期されているコンテンツの量に基づいて異なって開始されてもよい（例えば、ヘッダだけを同期させることに対してコンテンツセット全体を同期させる）。また別の例では、プロトコルハンドラを、ウェブブラウザから同期動作を開始するために用いてもよい。
【００２２】
一旦同期動作が開始されると、様々な実施形態はコンテンツが実際に同期する方法を改善することができる。例えば、サーバ側のチェンジログが、変更されたコンテンツだけを同期させるために用いられてもよい。トークンが前後にパスされて、前の同期イベント以後になされた新規な変更だけを得ることができる。別の例では、同期動作は、構造化スキーマの個々に要求されたかまたは画定されたフィールドをサポートするだけであってもよい。また別の例では、同期動作は、フォルダ階層において生成される階層的スコープのような異なった階層的スコープをサポートしてもよい。また別の例では、同期図が生成されて、様々なフィールド値によって決定されるフィルタリングされた一組のコンテンツを表示することができる。また別の例では、いくつかの実施形態は、ページング技術を用いて非常に大きいデータセットの同期をサポートすることができる。別の例では、いくつかの実施形態は、バージョン履歴を用いてコンフリクト検出及び自動解消を実行することができる。もう１つの例では、いくつかの実施形態は、コンフリクト解消のために「Ｅ−Ｔａｇｓ」を用いている添付ファイルの同期をサポートすることができる。別の例では、いくつかの実施形態は、プロパティバッグを用いて同期ウェブサイトとクライアントとの間のスキーマの不整合をサポートすることができる。更なる例では、いくつかの実施形態は、フィールド値マッピングを用いてサーバ/クライアント言語不整合をサポートすることができる。また別の例では、いくつかの実施形態は、読み出し／送信／リフレッシュのパターンを用いて読み出し及び更新をサポートすることができる。最終的に、いくつかの実施形態は、内部プライベートネットワークまたは外部公衆網からウェブサイトにアクセスするために、同期することができる代わりのＵＲＬ（universal resource locator）をクライアントに提供することができる。
【００２３】
同期動作を更に改善するために、様々な実施形態は、クライアントデバイスをウェブサイトに同期させるべきときに関するタイミングの問題を改善することができる。例えば、いくつかの実施形態は、望ましい同期間隔を同期クライアントに提供することによってクライアント負荷及び／またはサーバ負荷を管理することができる（例えば、クライアントはＰ分ごとに同期化する）。望ましい同期間隔は、最小同期間隔、最大同期間隔、または、いくつかの中間値を示すことができる。望ましい同期間隔は、サーバに記憶されたコンテンツ変更履歴データ（例えば、格子同期）、またはクライアントからの前の同期要求の結果（例えば、指数関数的減衰）に基づいていてもよい。
【００２４】
構造化コンテンツをサーバ１２２と同期させるために、クライアントデバイス１８０は、ＳｈａｒｅＰｏｉｎｔ．ＳｔｓｓｙｎｃＨａｎｄｌｅｒ  ＡｃｔｉｖｅＸ  Ｃｏｎｔｒｏｌを用いることができる。このコントロールは、マイクロソフトアウトルックとともにクライアントデバイス１８０上にインストールされ、マイクロソフトアウトルックがクライアントデバイス１８０上にインストールされてリストの特定のタイプに同期させることができる否かを示す。例えば、ＷＳＳバージョン３．０では、同期され得るリストのタイプには、カレンダリスト、連絡先リスト、文書リスト、作業リスト、掲示板リストなどを含む。
【００２５】
上記の実施形態に対する動作を、以下の図及び添付の例を参照して更に説明することができる。いくつかの図は、論理フローを含むことができる。本明細書に示したかかる図は特定の論理フローを含むことができるが、本明細書において開示したような一般的な機能が実行され得る方法の例を単に提供するだけであるということが理解されるだろう。更に、所定の論理フローは、特に明記しない限り示される命令で必ずしも実行されなければならないというわけではない。更に、所定の論理フローはハードウェア要素、プロセッサによって実行されるソフトウェア要素、またはそれらの任意の組み合わせによって実行され得る。実施形態は、上記の説明に限定されない。
【００２６】
図２は、論理フローの１つの実施形態を示す。図２は、論理フロー２００を示す。論理フロー２００は、ネットワーク１００、コンピュータデバイス１２２−１-ｎ、及び／またはクライアントデバイス１８０-１-ｓなどの、本明細書において開示されている１つまたは複数の実施形態で実行される動作の代表であってもよい。いくつかの実施形態では、例えば、サーバとクライアントとの間で共有される特定の構造化コンテンツタイプを、ブロック２０２における同期動作の前に識別することができる。構造化コンテンツタイプに対応する構造化コンテンツは、ブロック２０４で一旦識別されると、次に同期され得る。このように、同期は、クライアント及び／またはサーバによって記憶された一組のデータ全体よりむしろ、構造化コンテンツタイプによって識別されるような共有された構造化コンテンツに焦点を合わせることができる。従って、同期時間及び資源を削減し、それによってユーザに対する全体的なデバイス動作及びネットワークサービスを向上させることができる。
【００２７】
図３は、第１のメッセージフローの１つの実施形態を示す。図３は、クライアントが識別動作を実行するメッセージフロー３００を示す。図３に示すように、クライアントデバイス１８０は、サーバ１２２にメッセージ３０２を送信することができる。メッセージ３０２はサーバコンテンツリスト要求を含む。サーバ１２２は、メッセージ３０２を受信して、データベース１２４からサーバコンテンツリスト１３２を検索することができる。サーバ１２２はクライアントデバイス１８０にメッセージ３０４を送信することができる。メッセージ３０４は、サーバ１２２でサポートされる構造化コンテンツタイプを表す構造化コンテンツ値とともにサーバコンテンツリスト１３２を含む。クライアントデバイス１８０は、サーバコンテンツリスト１３２を受信して、クライアントコンテンツリスト１３０を検索することができる。クライアントコンテンツリスト１３０は、クライアントでサポートされる構造化コンテンツタイプを表している構造化コンテンツ値を含むことができる。クライアントデバイス１８０は、サーバコンテンツリスト１３２をクライアントコンテンツリスト１３０と比較して一致するコンテンツタイプを検出することができる。クライアントデバイス１８０は、共有コンテンツリスト１３４を生成して、サーバ１２２にメッセージ３０６を送信することができる。メッセージ３０６は、同期要求及び／または共有コンテンツリスト１３４を含むことができる。サーバ１２２はメッセージ３０６を受信し、サーバ１２２及びクライアントデバイス１８０は、同期動作を開始して、矢印３０８で示したように、サーバ１２２及びクライアント１８０でサポートされる構造化コンテンツタイプを同期させることができる。
【００２８】
図４は、第２のメッセージフローの１つの実施形態を示す。図４は、サーバが識別動作を実行するメッセージフロー４００を示す。図４に示すように、サーバ１２２は、メッセージ４０２を介してクライアントコンテンツリスト１３０を受信することができる。サーバ１２２は、サーバコンテンツリスト１３２を検索して、両方のコンテンツリストを比較することができる。サーバ１２２は、比較に従ってクライアントデバイス１８０及びサーバ１２２でサポートされる構造化コンテンツタイプを表している構造化コンテンツ値を有する共有コンテンツリスト１３４を生成することができる。サーバ１２２は、メッセージ４０４を介してクライアントデバイス１８０に共有コンテンツリスト１３４を送信することができる。クライアントデバイス１８０は、共有コンテンツリスト１３４を受信し、メッセージ４０６を介して共有コンテンツリスト１３４に従って構造化コンテンツタイプを同期させる同期要求を送信することができる。サーバ１２２は同期要求を受信し、サーバ１２２及びクライアントデバイス１８０は、矢印４０８で示したように、同期要求に従って同期動作を実行することができる。
【００２９】
様々な実施形態において、デバイス同士の間の同期動作を開始することを、多くの方法で改善することができる。例えば、ネットワークアドレス及び／またはハイパーリンクを、同期クライアントに対して生成し、サーバ及び／またはクライアントでサポートされる特定のコンテンツタイプに基づいて同期動作を開始することができる。異なるハイパーリンクが生成されて、異なるコンテンツ範囲に対する同期動作を開始することができる。１つの実施形態では、サーバ同期モジュール１２０は、ハイパーリンクを生成して、少なくとも１つの構造化コンテンツタイプとともに同期要求を送信することができる。その結果、ユーザは、特定の構造化コンテンツタイプをサーバ１２２と継ぎ目なく選択的に同期させることができる。
【００３０】
様々な実施形態において、同期されているコンテンツ量に基づいて異なった形で同期動作を開始することができる。例えば、１つの実施形態では、サーバ同期モジュール１２０は、同期させる構造化コンテンツの量を決定することができる。サーバ同期モジュール１２０は、決定された量に基づいて同期パラメータを設定することができる。サーバ１２２-１は、同期パラメータに従ってクライアント１８０-１に同期情報を送信することができる。例えば、構造化コンテンツタイプが電子メールメッセージであると仮定する。決定された量がサーバ１２２-１とクライアント１８０-１との間で同期されるべき大容量の電子メールメッセージである場合、サーバ１２２-１は、同期パラメータを設定して、電子メールコンテンツ全体よりも電子メールヘッダだけを最初に同期させるべきであるということを示すことができる。逆に、決定された量が小容量の電子メールメッセージである場合、サーバ１２２-１は、同期パラメータを設定して、電子メールコンテンツ全体がクライアント１８０-１と同期するべきであるということを示すことができる。別の例では、構造化コンテンツタイプが文書であると仮定する。決定された量がサーバ１２２-１とクライアント１８０-１との間で同期されるべき大容量の文書である場合、サーバ１２２-１は、同期パラメータを設定して、各々の文書の本文全体よりも各々の文書の特定の部分だけが最初に同期されるべきであるということを示すことができる。逆に、決定された量が小容量の文書である場合、サーバ１２２-１は、同期パラメータを設定して、各々の文書のコンテンツ全体がクライアント１８０-１と同期するべきであるということを示すことができる。この同じ技術は、また、文書の全体サイズを調べることにより用いられてもよく、大容量の文書は一回に送信される部分だけを有し、小容量の文書は１つのトランザクションで全体が送信される。これらは単に２、３の例であって、構造化コンテンツタイプの他の特徴を用いて同期パラメータを設定することができる。
【００３１】
様々な実施形態において、プロトコルハンドラを、ウェブブラウザから同期動作を開始するために用いることができる。一旦、共有構造化コンテンツタイプが識別されると、クライアント１８０-１のウェブブラウザは、前述のように、１つまたは複数のＵＲＬを提供して同期動作を開始することができる。これを実現するために、クライアント同期モジュール１８２は、プロトコルハンドラを用いて、サーバ１２２-１に異なった同期要求を送信することができる。
【００３２】
一旦同期動作が開始されると、様々な実施形態によりコンテンツが実際に同期する方法を改善することができる。例えば、サーバ側のチェンジログを用いて、変更コンテンツだけを同期させることができる。例えば、１つの実施形態では、サーバ同期モジュール１２０は、同期要求を受信して、特定の構造化コンテンツタイプを同期させることができる。サーバ同期モジュール１２０は、構造化コンテンツタイプによって示された構造化コンテンツがチェンジログを用いて修正されたか否かを判断することができる。サーバ１２２-１は、この判断に基づいてクライアントに同期情報を送信することができる。
【００３３】
読み出し／書き込み同期について、画定された技術が、ＷＳＳアプリケーションから変更を同期させるためにマイクロソフトアウトルックに必要である。このことは、チェンジログを用いかつウェブサービスＡＰＩを付随することで実行することができる。例えば、ＷＳＳバージョン３.０は、仮想サーバ、サイト及びリスト毎にチェンジログをサポートする。このことは、特に、追加され、編集され、削除され、名前を変えられ、さらに移動された項目に対してポーリングする能力をマイクロソフトアウトルックに許容することができる。更に、ウェブサービスが実施されて、チェンジログ項目についてのバルクの「ｇｅｔ」を実行することをマイクロソフトアウトルックに許容することができる。
【００３４】
様々な実施形態は、構造化コンテンツの複数のバージョンがそれぞれに修正されたか否かをバージョン履歴を用いて判断することができる。いくつかの実施形態は、バージョン履歴を用いてコンフリクト検出及び自動解消を実行することができる。バージョン履歴は、ピアツーピア環境において特定のクラスの同期コンフリクトを自動的に解消するために用いられるメカニズムである。特に、それは、ある項目に対する恒常的な連続的変更の結果であるコンフリクトを自動的に解消することができる。
【００３５】
一例として、第１のユーザが、オフィスで用いられるデスクトップコンピュータなどの第１のクライアントデバイス１８０-１に項目を同期させると仮定する。第１のユーザは、項目に２、３の変更を行うが、サーバ１２２-１へそれらの変更をコピーしない。第１のユーザは、第１のクライアントデバイス１８０-１をＰＤＡなどの第２のクライアントデバイス１８０-２と同期させて、オフィスを出て家に向かう。第１のユーザが帰宅すると、第１のユーザは、第２のクライアントデバイス１８０-２を家庭用ＰＣなどの第３のクライアントデバイス１８０-３と同期させる。第１のユーザは、第３のクライアントデバイス１８０-３からサーバ１２２-１へ該項目を同期させる前に、該項目に更なる変更を行う。その翌日、第１のユーザは、仕事に行き、第１のクライアントデバイス１８０-１をサーバ１２２-１と同期させる。第１のクライアントデバイス１８０-１は、それが有する更新された項目をサーバ１２２-１に送信しようとするが、サーバ１２２-１は、第１のクライアントデバイス１８０-１との前の同期以来の該項目に対する変更を検出し、従って、コンフリクトをもたらす。しかしながら、コンフリクトは、本当のコンフリクトではない。なぜなら、すでにサーバ１２２-１に存在する項目の更新バージョンは、第１のユーザが第３のクライアントデバイス１８０-３をサーバ１２２-１と同期させる場合に、第１のクライアントデバイス１８０-１上でなされた変更を含んでいるからである。いくつかの実施形態は、バージョン履歴を用いてこのようにシナリオを検出し、自動的にコンフリクトを解消することができる。
【００３６】
上記のシナリオでは、該項目に関する単一のバージョン番号は、コンフリクトを解消するのに不十分であるかもしれない。例えば、もし第１のユーザが第３のクライアントデバイス１８０-３からサーバ１２２-１と同期しなかった場合どうなるだろうか。それどころか、第２のユーザが該項目に対して関係のない変更を行ったと仮定する。この場合、本当にコンフリクトが存在する。単一のバージョン番号は、２つのシナリオを識別するのに不十分である。バージョン履歴技術は、追加の情報を記憶して、この課題を解決するのを助ける。
【００３７】
特に、バージョン履歴技術を、項目の複数のバージョン（例えば、バージョンＡ及びバージョンＢ）があるか否か、及び１つのバージョンは別のバージョンでなされた変更を含むか否か（例えば、バージョンＢは、バージョンＡでなされた変更を含むか）を判断するために用いてもよい。この場合、問題の項目のテキスト審査は、難しくて不正確であると判明するかもしれない。例えば、バージョンＢはバージョンＡからの変更を本当に含んでいるが、バージョンＢの変更のうちの１つはバージョンＡにおいて加えられたラインを除去することであったシナリオを検討する。
【００３８】
バージョン履歴技術を、著者のリストと、変更がどの順番でなされたかを示すそれらの各々に対するインクリメントする変更番号とを記録するために用いることができる。この場合の「オーサー」は、グローバルユーザ識別子（ＧＵＩＤ）で表されるコンピュータである。従って、バージョン履歴特性は、次のように、ＧＵＩＤ及び変更番号の連結リストを含むことができる。
｛199A4AEA-A573-40CB-BB3C-7A66C0375104:l,201B4AEA-A573-40CB-BB3C-7A66C0375104:2,185D4AEA-A573-40CB-BB3C-7A66C0375104:3｝
【００３９】
特定のコンピュータデバイスが所定の項目を編集するたびに、適当な同期モジュール（例えば、同期モジュール１２０及び／または１８２）は、最後の変更番号をとり、それの値を１増加して、そのＧＵＩＤの次にそれを書く。コンフリクトは、各々のバージョンに対する最も大きい変更セットを比較することによりバージョンＡとバージョンＢとの間で自動的に解消される。「最も大きい変更セット」は、最も大きい数を持つＧＵＩＤと番号との対を含むことができる。バージョンＡに対する最も大きい変更セットがバージョンＢに含まれ、バージョンＢに対する最も大きい変更セットがバージョンＡに含まれない場合、バージョンＢはより新規であって、バージョンＢが勝利者であるようにコンフリクトが解消される。しかしながら、バージョンＡに対する最も大きい変更セットがバージョンＢに含まれず、バージョンＢに対する最も大きい変更セットがバージョンＡに含まれない場合、バージョンＢは、バージョンＡになされた全ての編集を含んでいない。この場合、ユーザは、手作業でコンフリクトを解消することが必要であるかもしれない。
【００４０】
以前の例を引き続き述べると、第１のユーザが第１のクライアントデバイス１８０-１に項目を同期させると仮定する。サーバ同期モジュール１２０は、データベース１２４のバージョン履歴を維持することができる。クライアント同期モジュール１８２も、クライアントデバイス１８０-１-ｓのバージョン履歴を維持することができる。この時点で、バージョン履歴は以下のように現れ得る。  
バージョン履歴：{Server_GUID:1}
次に、第１のユーザは、第１のクライアントデバイス１８０-１上で項目を編集する。バージョン履歴は、そのとき次の通りに現れ得る。  
バージョン履歴：{Server_GUID:1, Work_GUID:2}
第１のユーザは、第２のクライアントデバイス１８０-２に、さらに、第２のクライアントデバイス１８０-２から第３のクライアントデバイス１８０-３に、項目を同期させる。項目に対する編集が存在しないので、バージョン履歴において対応する変更がない。第１のユーザは、第３のクライアントデバイス１８０-３上で項目を編集する。バージョン履歴は、以下のように更新される。  
バージョン履歴：{Server_GUID:1，Work_GUID:2，Home_GUID:3}
第１のユーザは、第３のクライアントデバイス１８０-３からサーバ１２２-１に同期化する。
【００４１】
第１のユーザは、その翌日に仕事に戻り、第１のクライアントデバイス１８０-１をサーバ１２２-１と同期させる。第１のクライアントデバイス１８０-１のクライアント同期モジュール１８２は、以下のようなバージョン履歴を有することができる。
{Server_GUID:1，Work_GUID:2}
サーバ１２２-１のサーバ同期モジュール１２０は、以下のようなバージョン履歴を有することができる。
{Server_GUID:1，Work_GUID:2，Home_GUID:3}
バージョンＡ及びバージョンＢに対するバージョン履歴の比較によりＡにおける最も大きい変更セット（Ｗｏｒｋ＿ＧＵＩＤ：２）は、バージョンＢに含まれるが、バージョンＢに対する最も大きい変更セット（Ｈｏｍｅ＿ＧＵＩＤ：３）は、バージョンＡに含まれないということが明らかになる。従って、サーバ同期モジュール１２０は、バージョンＢはバージョンＡになされた全ての編集を含むが、バージョンＡはバージョンＢになされた全ての変更を含まないということを知っている。バージョンＢは、バージョンＡの上位集合であって、それゆえに、コンフリクトに勝つ。
【００４２】
第１のユーザは、第３のクライアントデバイス１８０-３からサーバ１２２−１と同期しなかったが、それどころか、第２のユーザは、サーバ１２２-１に存在する項目に対する変更を行ったと仮定する。バージョン履歴を、このシナリオからコンフリクトを検出するために用いることができる。この場合、第４のクライアントデバイス１８０-４のクライアント同期モジュール１８２は、以下のバージョン履歴を有することができる。
{Server_GUID:1，Work_GUID:2}
その一方で、サーバ１２２-１のサーバ同期モジュール１２０は、以下のバージョン履歴を有することができる。
{Server_GUID:1，User2_Work_GUID:2}
バージョンＡ及びバージョンＢに対するバージョン履歴の比較で、バージョンＡの最も大きい変更セット（Work_GUID:2）はバージョンＢに含まれず、バージョンＢの最も大きい変更セット（User2_Work_GUID:2）はバージョンＡに含まれないということがここで明らかになる。従って、バージョンＢはバージョンＡの上位集合ではなくかつバージョンＡはバージョンＢの上位集合ではなく、サーバ同期モジュール１２０は、解消することを必要とする本当のコンフリクトを検出した。
【００４３】
様々な実施形態は、プロパティバッグを用いてデータスキーマのコンフリクトを検出することができる。いくつかの実施形態は、プロパティバッグを用いて、サーバ１２２とクライアント１８０との間のスキーマの不整合をサポートすることができる。プロパティバッグとは、アプリケーションプログラム及び／またはデバイスで用いる様々なデータスキーマに対する一組のフィールド定義を示すことができる。プロパティバッグは、固定されたまたはハードコードされたフィールドのセットよりはむしろ必要に応じてフィールドを定義するために用いられ得る。例えば、クライアントデバイス１８０によって実行されるマイクロソフトアウトルックに対するタスクスキーマは、サーバ１２２のＷＳＳアプリケーションが利用可能でない特定フィールドを必要とするかもしれないし、逆もまた同様である。プロパティバッグは、アドホックとしてマイクロソフトアウトルック及びＷＳＳアプリケーションの両方が用いることができる様々なリストまたはアプリケーションに対するフィールドを定義するために用いられ得る。このように、サーバ１２２とクライアント１８０との間のスキーマの不整合を、両方のデバイスで実行される実際のアプリケーションプログラムを必ずしも更新または変更することなく修正することができる。
【００４４】
様々な実施形態は、フィールド値マッピングを用いて言語コンフリクトを検出することができる。いくつかの実施形態は、フィールド値マッピングを用いてサーバ１２２-１とクライアント１８０-１との間の言語不整合をサポートすることができる。クライアントデバイス１８０-１及びサーバ１２２-１が同じ言語でない国際的なシナリオをサポートするために、この特徴は望ましいかもしれない。例えば、マイクロソフトアウトルックは、「状態（Status）」フィールド及び「優先度（Priority）」フィールドの値に基づくタスク上で実行する論理を有する。サーバ１２２-１は、サーバの言語に基づいてこれらのフィールドに異なる値を書き込むことができる。例えば、英語では、状態フィールドは、「開始されていない（Not Started）」、「据え置きされた（Deferred）」、「完了した（Completed）」等の表現を含むことができる。マイクロソフトアウトルックは、マイクロソフトアウトルックが理解する値にこれらの値を確実にマッピングする方法を知ることが必要である。１つの実施形態では、マッピングセクションを、マイクロソフトアウトルックが書き込まれた値を自分で理解する値にマッピングするために用いることができるリストに対するスキーマに加えることができる。
【００４５】
様々な実施形態は、１つまたは複数のページング技術を用いて構造化コンテンツタイプを同期させることができる。いくつかの実施形態は、様々なページング技術を用いてサーバ１２２-１とクライアント１８０-１との間の非常に大容量のデータセットの同期をサポートすることができる。サーバ１２２-１及びクライアント１８０-１に対する性能を向上させるために、ページ要求は、リスト内で変更された一組の項目を得るために用いられてもよい。変更された全ての項目を返送するよりはむしろ、サーバ１２２-１は最後のＱ項目（例えば、最後の１００項目）だけを返送してもよい。クライアント１８０-１がサーバ１２２-１とのより遅い通信接続を有する場合、またはサーバ１２２-１がリストの数千または何百万もの項目を有する場合に、この特徴は特に役立つ。項目の大容量は、例えば、クライアントデバイス１８０-１のマイクロソフトアウトルックとサーバ１２２-１との間のアドレスブック構造化コンテンツタイプを同期させる場合、特に、性能のボトルネックを引き起こすかもしれない。
【００４６】
所定のページング技術を、あらゆる方法を用いて実行することができる。１つの実施形態では、例えば、サーバ同期モジュール１２０は、返送用の最大項目数を特定するＧｅｔＬｉｓｔＣｈａｎｇｅｓＳｉｎｃｅＴｏｋｅｎウェブサービス上の「ｒｏｗＬｉｍｉｔ」と称されるプロパティをサポートすることができる。例えば、「rowLimit = 100」は、変更トークンの値以降に更新された最初の１００項目を返送する。プロパティが特定されない場合、変更トークン以降に変更された全ての項目を返送することがある。
【００４７】
サーバ１２２-１のＷＳＳアプリケーションが項目制限付きの要求を受信すると、削除動作は項目制限から外されてもよい。パラメータは、リストクエリーに渡されて、ｒｏｗＬｉｍｉｔに返送される項目数を制限することができる。この数よりも少ない項目が変わった場合、更新された変更トークンが項目とともに返送される。しかしながら、この数より多い項目が変わった場合、変更トークンは更新されず、最初は通過した同じ変更トークンが返送され得る。ＬｉｓｔＩｔｅｍＣｏｌｌｅｃｔｉｏｎＰｏｓｉｔｉｏｎＮｅｘｔに対する値がまた返送されてもよい。ＬｉｓｔＩｔｅｍＣｏｌｌｅｃｔｉｏｎＰｏｓｉｔｉｏｎＮｅｘｔに対する値を受信するとすぐ、クライアントデバイス１８０-１は、変更トークン及びこの値の両方を送信するとともに、サーバ１２２-１に再クエリーしなければならない。サーバ１２２-１は、ＬｉｓｔＩｔｅｍＣｏｌｌｅｃｔｉｏｎＰｏｓｉｔｉｏｎＮｅｘｔの開始から次のｒｏｗＬｉｍｉｔ項目数を返送するために新しいクエリーを実行することができる。この「If」ブロックは、次に必要に応じて再実行されてもよい。
【００４８】
クライアント１８０-１が更新を処理する前に必ず削除処理をする必要があるということは注目に値する。クライアント１８０-１がすでに削除した項目に対する削除を受信した場合、クライアント１８０-１はエラーを食い止めて次へ進まなければならない。クライアント１８０-１がサーバ１２２-１で削除された項目に対する更新をしようとした場合、クライアント１８０-１はエラーを食い止めて動作を続けなければならない。
【００４９】
様々な実施形態は、内部プライベートネットワークまたは外部公衆網（例えば、公衆インターネット）を介して、サーバ１２２-１と同期するためにクライアント１８０-１が用いることができる代わりのＵＲＬをクライアント１８０-１に提供することができる。例えば、１つの実施形態では、サーバ同期モジュール１２０は、内部プライベートネットワークから少なくとも１つの構造化コンテンツタイプを有する同期要求を送信するための第１のネットワークアドレス及び、外部公衆ネットワークから少なくとも１つの構造化コンテンツタイプとともに同期要求を送信するための第２のネットワークアドレスを生成することができる。この第１のアドレス及び第２のアドレスは、例えば、ハイパーリンクを用いて実行されるＵＲＬを含むことができる。
【００５０】
一例であるが、サーバ同期モジュール１２０は、同期要求に応答して返送されたデータとともに代わりのドメインマッピングを渡すことができる。このことは、ユーザがプライベートネットワーク（例えば、企業イントラネット）内部のリストに進み、マイクロソフトアウトルックなどの局所的なアプリケーションにリストを同期させるシナリオを許容する。次に、ユーザは、帰宅し、ハイパーテキスト転送プロトコル（ＨＴＴＰ）を介してリモートプロシージャコール（ＲＰＣ）を用いてメールに接続し、それらのシェアポイントリストが同様に同期するのを求める。サーバ１２２-１（例えば、シェアポイントサイト）がまた、公衆網（例えば、インターネットなどのエクストラネット）で公開される場合、ＵＲＬに対するドメインが異なる場合であっても、ユーザはリストを同期させることができる。
【００５１】
代わりのドメインマッピングを、いくつもの方法で実施することができる。１つの実施形態では、例えば、代わりのドメインを、以下の順序で返送することができる。
[Intranet] , [Default] , [Extranet] , [Internet] , [Custom]
これらのマッピングを、「ｌｉｓｔｉｔｅｍｓ」タグ上の「ＡｌｔｅｒｎａｔｅＵｒｌｓ」属性で返送することができる。マッピングが存在しない場合、同じ命令は、以下のように欠落したドメインに対して挿入されるコンマを用いて返送され得る。
(http://intranet, https://default, https://extranet.com,, http://custom）
これらの５つの代わりのドメインマッピングは、全て、集中管理で画定され得る。ドメインは、例えば、ＵＲＬのまさに最初の部分、例えば「http://www.microsoft.com」または「http://msw」、を含むことができる。クライアントアプリケーション（例えば、マイクロソフトアウトルック）は、これらのドメインを解析して、クライアントデバイス１８０-１-ｓについての状態に基づいてどれを使用するかについて決定する責任を負う。通常、クライアント１８０-１は、第１のドメインから始めて、順番に残りのドメインを処理する。
【００５２】
同期動作を更に改善するために、様々な実施形態は、クライアントデバイスをウェブサイトといつ同期させるかについてのタイミング問題を改善することができる。例えば、いくつかの実施形態は、同期クライアントに望ましい同期間隔（例えば、クライアントはＲ分毎に同期化する）を提供することによってクライアント負荷を管理することができる。望ましい同期間隔は、最小同期間隔、最大同期間隔、またはいくつかの中間値を表すことができる。１つの実施形態では、例えば、サーバ同期モジュール１２０は、同期間隔パラメータを生成することができる。サーバ同期モジュール１２０は、クライアント１８０-１に同期間隔パラメータを送信することができる。サーバ１２２-１は、同期間隔パラメータに従ってクライアント１８０-１から同期要求を受信することができる。
【００５３】
望ましい同期間隔を用いることにより、いくつかの利点を提供することができる。望ましい同期間隔の使用は、スケールを改善することができ、多数のマイクロソフトアウトルックのクライアント（例えば、１０万クライアント）により、シェアポイントサーバファーム（例えば、コンピュータアレイ１４０）が使用不能になることはない。例えば、マイクロソフトアウトルックが、クライアントデバイス１８０-１に６０分毎に各々の構造化コンテンツリストを同期させる、デフォルトの同期間隔を有すると仮定する。各々のユーザが最終的には最高１０の同期されたリストを加えると仮定すると、サーバ１２２-１に対するヒットの総数は、１０*２４*１００,０００／日に達するかもしれない。それは１日２４時間毎秒ほぼ２７８ヒットということになる。ほぼ６０分ごとに同期化するＲＳＳ（Really Simple Synchronization）頻度（feeds）は、この課題を更に悪化させるかもしれない。
【００５４】
様々な技術を、所定のサーバ１２２-１-ｎ上の作業負荷を減らすために用いることができる。１つの実施形態では、例えば、キャッシュリスト及び／またはサイトに対する修正された時間を、フロントエンドで実施することができる。最後にキャッシュされたリストまたはサイトが変更された時間以来の変更を求める要求がサーバ１２２-１に達する場合、サーバ１２２-１は変更がなかったということを知って、データベース１２４、１２６をクエリーすることを完全に回避することができる。キャッシュは、例えば、ほぼ５分毎といったある規則的な間隔で有効期限が切れることを必要としてもよい。キャッシュされるリストまたはサイトの数は、例えば、ほぼ１００のリスト及び／またはサイトなどのメモリ資源を収容することに限定される必要があるかもしれない。
【００５５】
所定のサーバ１２２-１-ｎ上の作業負荷を減らす別の技術は、日付／時間適応同期技術を実施することであってもよい。サーバ同期モジュール１２０は、クライアントデバイス１８０-１に同期間隔パラメータを送信することにより、所定のマイクロソフトアウトルッククライアントによってなされた多数の同期要求を減じることができる。同期間隔パラメータは、勤務時間、夜間及び週末などの日付／時間情報を織り込んだリスト変更履歴データを利用している次のリスト変更時間の蓋然性の予測に基づいて変化する。
【００５６】
様々な実施形態において、望ましい同期間隔は、サーバに記憶されたコンテンツ変更履歴データに基づいていてもよい。１つの実施形態では、例えば、サーバ同期モジュール１２０は、サーバ１２２-１によって記憶されたコンテンツ変更履歴データに基づいてクライアント１８０-１に対する同期間隔パラメータを生成することができる。サーバ同期モジュール１２０は、クライアント１８０-１に同期間隔パラメータを送信することができる。
【００５７】
コンテンツ変更履歴データに基づく技術の１つの例は、格子ベースの適応同期（「格子同期」）と称されてもよい。シェアポイントサーバ上の各々のリストは異なる使用特徴を有する。多くの要因は、リスト使用及び更新頻度に影響を及ぼすかもしれない。かかる要因の例は、リストタイプ、サイトタイプ、リストのサイズ、リストカスタマイズの量、サイトユーザ数、地理的位置及びユーザ分布、サイト訪問の総数、時間帯、サイトのプロジェクトの周期におけるそのときの位置（例えば、開始、中間、終了、またはアーカイブ）などを含むことができる。多くのこれらの要因は、構成ベースであり、利用パターンについての予測を、このデータに基づいて行うことができる。しかしながら、多くのこれらの要因はまた、時間ベースである。時間ベースの要因は、利用パターンに重大な影響を及ぼすかもしれない。サイトは、通常、実際は周期的であり、ウェブサイトが永久に同じ割合で用いられることはめったにない。更に、人々はスケジュール通りに働く傾向がある。従って、各時間枠が８時間から成っている場合であっても、午後１０時から午前６時までに発生する仕事量は、午前９時から午後５時までの間に発生する量より通常少ない。人々はまた、週末に働きたがらない。仕事の性質及び仕事の地理的分布がこれらの要因に影響するかもしれないということは注目するに値する。従って、前もってそれらをハードコードしようとするよりむしろ使用パターンに適応させることが重要であるかもしれない。サーバへの要求数を減らすのに最も劇的な影響を及ぼし、なおユーザの期待を満足させる提案は、時間ベースのアルゴリズムを含む必要があり、人々が働きかつそれによって所定のサイトを用いる方法に敏感である必要がある。
【００５８】
このような観点から、１つの設計的な考慮として、クライアントデバイス１８０-１に、クライアントデバイス１８０-１が次に同期動作を実行しなければならない望ましい時間を提供することが考えられる。クライアントデバイス１８０-１またはサーバ１２２-１のいずれかで変更がある場合、クライアントデバイス１８０-１はサーバ１２２-１と同期するだけでよい。従って、確率分析法を用いて、理想的な同期間隔を決定することができる。管理者は、クライアントデバイス１８０-１-ｓが再同期化するのを望む蓋然性閾値を調整することによって理にかなった方法でネットワーク１００の動作を調整することができる。例えば、コンテンツの１０％が更新される可能性がある場合に、サーバ管理者は、蓋然性閾値を調整してクライアントデバイス１８０-１に同期させるようになすことができる。そのことがあまりに多くのサーバ負荷をもたらす場合、管理者は５０％の蓋然性閾値に閾値を調整することができる。ネットワーク性能が許容可能なパラメータ範囲内になるまで、管理者はこの処理・調整を細かく行ってもよい。
【００５９】
場合によっては、将来のリスト利用のための蓋然性閾値は、使用履歴データに基づいていてもよい。例えば、リストは、データの集合または、１つまたは複数の構造化コンテンツタイプからなる項目を含んでいてもよい。使用は、しばしばパターンに従う。人々は生来習慣の奴隷であり、構造化作業環境は、それが予測可能性を生じさせるように、このことをさらに促進する。過去の使用を表すために、時間を格子に分割することができる。一週間の期間を仮定すると、ｙ軸は当該週の曜日であり、一方、ｘ軸は日毎の時間を示すことができる。格子の各セルにおいて、ブール値を、その期間にリストが更新されたか否かについて指し示すよう設定することができる。ここで、値「１」は、リストがこの期間に修正されたことを表し、値「０」はリストがこの期間に修正されなかったことを表す。例えば、月曜日の列で午前９：３０−午前９：４０のセルに注目すると、セルの値が１である場合、リストは月曜日の午前９：３０−午前９：４０の間に修正された。次の「１」は、月曜日の午後３：１０−午後３：２０までないかもしれない。先に進むと、１週間のサイト使用を監視することは、完成した格子をもたらす。リストがより頻繁に更新されるほど、格子はより多くの１値を有し、リストがそれほど頻繁に更新されないと、より多くの０値を有する。クライアントデバイス１８０-１が月曜日の午前９：０５にサーバ１２２-１と同期すると仮定する。何かが変更されたか否かを見るクエリーを実行した後に、サーバ１２２-１は、サーバ１２２-１がその次の同期イベントを実行しなければならない時に関してクライアントデバイス１８０-１に対するリコメンデーションを行うことをそのとき必要とする。履歴データを分析すると、更新が月曜日の午前９：３０−午前９：４０に生じたように見える。この履歴データに基づいて、サーバ１２２-１は、クライアントデバイス１８０-１に午前９：３０−午前９：４０の間にその次の同期を実行するように指示することができる。アルゴリズムで、値１に達するまで、格子を行き来することによってこのことを達成することができる。通過した各セルに対して、セル時間サイズを、同期同士の間の望ましい時間に加えることができる。この例では、９：００−９:１０のセル、９：１０−９：２０のセル、及び９：２０−９：３０のセルを通過した。従って、サーバ１２２-１は、３０分という望ましい同期間隔を返送することができる。
【００６０】
この点において、午前９：３０−午前９時４０分のリコメンデーションは、開始点に過ぎない。より長い期間が、リコメンデーションをより細かくする。前の例を続けると、リストが第２週の午前９：２２に更新されたと仮定する。第３週の間に、クライアントデバイス１８０-１は、午前９：０５にサーバ１２２-１との同期を再度実行し、サーバ１２２-１は、更新されたリコメンデーションを行うことを必要とする。格子を行き来すると、午前９：２０−９：３０のセルに値１、さらに午前９：３０−９：４０のセルに値１がある。格子アルゴリズムは、そのときのセルから始まって、値１を有するセルに達するまで、各々のセルの通過で１０分を加える。午前９：００−９：１０のセルを通過し、さらに午前９：１０−９：２０のセルを通過する。サーバ１２２-１は、ここでクライアント１８０-１に２０分という値を返送することができる。しかしながら、履歴証拠に基づいて、リストが２０分で更新されるか否かを示す蓋然性が生成されてもよい。午前９：０５の開始時間から午前９：３０の完了時間まで２つの可能な月曜日において、リストは１つの月曜日にだけ更新された。この履歴データに基づいて、蓋然性（確率）を１/２、即ち５０％と算出することができる。１０分を望ましい同期間隔に加えることができ、蓋然性分析を再び実行することができる。午前９：０５の開始時間から午前９：４０の完了時間までデータの２つの月曜日については、リストは２回更新された。従って、３０分の蓋然性は、１/２ + １/２ = ２/２、即ち１００％である。より多くのデータを用いることにより、精密なリコメンデーションをもたらす。それは、サーバ管理者が、サーバ１２２-１-ｎから情報を要求しているクライアントデバイス１８０-１-ｓにどのくらいの頻度で満足しているか、に対して、ユーザが直ちに最新のデータを有することがどれくらい重要か、についてインフォームドデシジョン（informed decision）になる。例えば、サーバ管理者が５０％以下で閾値を設定する場合、サーバ１２２-１は２０分の同期間隔を返送してもよい。しかしながら、閾値が５０−１００％の間で設定された場合、サーバは３０分の同期間隔を返送してもよい。
【００６１】
同期間隔を生成する一般化されたアルゴリズムは、以下のように示すことができる。  
Ｐは蓋然性を示し
Ｔはユーザ定義済み閾値を示し
Ｓは各セルのタイムスパンを示し、上記の例では、これは１０分である
Ｃはそのときのセルカウントを示し
Ｇ［］は格子であり、Ｇ［０］は現在時間における値を表すと仮定する
Ｍは格子のセルについての最大値であり、上記の例では、これは週の数である
Ｐ＝０；
Ｆｏｒ（Ｃ＝０；Ｐ＜Ｔ；Ｃ＋＋）
Ｐ＝Ｐ＋Ｇ［Ｃ］／Ｍ；
ｒｅｔｕｒｎ  Ｃ＊Ｓ
戻り値が各々のクライアント要求によって再計算される必要がない点は注目に値する。むしろ、戻り値は一時期キャッシュに格納され、次の間隔が始まるまで有効であるとみなされる。上記の例では、それは最高１０分である。
【００６２】
実際の格子を構築するために、項目が修正されるたびに、リストの最終修正時間がチェックされる。リストの最終修正時間が現在の時間と同じタイムスパンで起こる場合、変更は書き込まれる必要はない。例えば、午前９：００から午前９：１０までの間の同じ期間に起こる２つの変更は、１つの更新を必要とするだけである。このことは、ロックコンテンション及びスケールに役立ち、書き込み数を最小にしておく。リストの最終修正時間が現在の時間以外の異なるタイムスパンで起こった場合、現在のタイムスパンのセルの値を、「１」増加することができる。場合によっては、ＷＳＳバージョン３.０がすでにこれを処理しているにもかかわらず、リストに対する修正時間は同様に更新されることを必要とする。
【００６３】
格子アルゴリズムは、どれくらいのデータを記憶することができるか、さらに、どんな傾向が特定のアプリケーションの利用において共通か、に基づいて多くの側面で拡張可能である。ｘ方向において、各セルのタイムスパンは、１分に減じるかまたは１時間以上まで伸ばしてもよい。ｙ次元において、格子は拡張されて一月の各日に対して異なった列を含んでいてもよい。または、一日を表している１つの列だけに格子を折り畳んでもよい。実際、２日を有することにより少し知的な方法でそれを折り畳むことができ、そこで、一方は週日を表し、他方は週末日を表す。格子が１２時間のシフト勤務を表している場合、格子は、各々が開始から終了までの１２時間シフトを表しているｙ列を有することができる。
【００６４】
前に述べたように、サイト使用は、通常、予測可能な周期に付随する。これらの周期的期間は、何ヶ月かにわたってしばしばゆっくり変化する。格子アルゴリズムを洗練させるために、最近のデータは、古いデータよりも良いインジケータであるかもしれない。例えば、通常、６ヵ月前の月曜日に起こったリスト更新は、昨日起こったものより重要でなくなる。従って、より大きいデータの集合を維持し、時間に基づいて異なったより大きい集合の範囲内でデータに重みをかける機能を適用することによって、格子アルゴリズムを洗練することができる。あるいは、メモリ資源は、旧データを期限切れにすることによってより効果的に用いられ得る。例えば、格子が８週間毎にリセットされると仮定する。上記した前の例で定義された格子では、各セルの最大値は８になるだろう。従って、各セルを、ほんの３つのビットで表すことができる。
【００６５】
しかしながら、格子をリセットすることは、また、格子アルゴリズムの結果に影響を及ぼすことができるデータも除去する。この問題は、期間までに互いにオフセットされる２つの格子を生成することにより軽減することができる。例えば、第１の格子は、週１においてデータの記録を開始し、一方、第２の格子は、週４においてデータの記録を開始することができる。この点で、サーバ同期モジュール１２０は、蓋然性の算出のために第１の格子を用いることができる。週８において、第１の格子をリセットすることができ、サーバ同期モジュール１２０は、第２の格子を用いるために切り替えて、蓋然性の算出を実行することができる。サーバ同期モジュール１２０は、再び第１の格子で記録を開始することができる。このように、サーバ同期モジュール１２０は、１つの格子から次まで絶えず循環することができ、決してゼロから開始する必要はない。この場合、データフローの不連続は、４週間隔で起こる。円滑さの重要性により、このことはより多くの格子を追加することにより軽減することができる。例えば、８つの格子は、各々１週のより軽微な不連続性をもたらすかもしれない。複数の格子を用いることにより最近のイベントにより多くの力を与えて、蓋然性を生成するためにこのシステムをまた用いることができる、という点に注目する。
【００６６】
格子アルゴリズムの性能を更に改善するために、最大同期間隔及び最小同期間隔が設定されてもよい。最小同期間隔は恐らくセル幅のサイズにデフォルトで設定され、それは、上記の例では１０分である。最大間隔のサイズは、システムの信頼レベルによる。いずれも、閾値とともに管理者によって変更可能でなければならない。これらの値は、使用の間、システムを洗練するように調整されることができるが、それがすでに使用中だった後で、格子構造（例えば、ｘ軸及びｙ軸上の時間の表現）を変更するために邪魔となるかもしれない。格子が最小限の使用可能状態に投入されるまで、デフォルト時間は最初の同期に対して設定されなければならない。
【００６７】
この方法を、ＲＳＳなどの他の同期プロトコルに用いることができる。それはまた、コンテンツをキャッシュに格納する検索クローラー、インデクサー、及びプロキシサーバなどの領域に適用できる。格子アルゴリズムはクライアントで実施可能だが、クライアントはサーバでなされる全ての変更を知らないので、精度はたぶん低下するだろう。格子アルゴリズムはまた、クライアント‐クライアントの同期において用いられてもよい。それはまた、同期方法に基づく通知に関して用いられてもよく、そこで、通知はめったにコンテンツの変更を処理しないし、このシステムはより頻繁にコンテンツの変更を処理する。
【００６８】
格子方法は、所定の実施により、メモリ資源に様々な影響を及ぼすことができる。データ記憶の予測を、以下のように行うことができる。  
２０分の幅
７つの区別できる日
テーブル毎に８週間
２つのテーブル
＝３７８バイト
１０分の幅
２列（週日/週末）
テーブル毎に６週間
２つのテーブル
＝２８８バイト
【００６９】
更に間隔が履歴データに基づいて望ましい同期間隔を生成するために、望ましい同期間隔はまた、クライアントからの前の同期要求の結果に基づいていてもよい。１つの実施形態では、例えば、サーバ同期モジュール１２０は、クライアント１８０-１による前の同期要求からの前の同期結果に基づいてクライアントに対する同期間隔パラメータを生成することができる。サーバ同期モジュール１２０は、クライアント１８０-１に同期間隔パラメータを送信することができる。
【００７０】
一例として、サーバ同期モジュール１２０は、機能ベースの適応同期を実行して、同期間隔パラメータを生成することができる。所定のマイクロソフトアウトルッククライアントによって生成される同期要求の数は、何らかの形式の指数関数的減衰／指数関数的成長の機能を用いて生成され得る。例えば、最後の同期間隔をとる。変更が起こった場合、指数関数により時間間隔を減少させる。しかしながら、変更が起こらなかった場合、指数関数機能により時間間隔を増やす。
【００７１】
他の技術も、同期間隔パラメータを生成するために用いることができる。例えば、最後の修正の適応同期技術を用いることができる。この技術は、リストに対して最後に修正された時間に基づいて厳密に変化する同期間隔をクライアント１８０-１に送信することにより、マイクロソフトアウトルッククライアントによってなされる同期要求の数を減らす。例えば、リストが最後の１時間以内に修正された場合、２０分で再び同期する。リストが１時間以上前だが１日未満前に修正された場合、２時間で再び同期する。リストが１日以上前に修正された場合、一日で再び同期する。別の例では、複数のリスト技術に対する単一のクエリーも用いることができる。この技術は、同時に重要な全てのリストＧＵＩＤを渡す１つの要求を生成することをクライアント１８０-１に許容することによってマイクロソフトアウトルッククライアントによってなされる同期要求の数を減らす。最後の修正時間は全てのこれらのリストに対して点検されてバッチ処理されて、サーバ同期モジュール１２０は、どのリストに明確に同期させるべきかについてクライアントデバイス１８０-１に知らせることができる。また別の例では、電子メール通知ベースの同期技術を用いることができる。現在の同期技術は様々なポーリング技術を用いることができ、クライアントは定期的にまたは半定期的にサーバをポーリングする。１つの実施形態では、「隠し電子メール警報」を送信することによって同期イベントが必要であるということを、サーバ１２２-１はクライアント１８０-１に通知することができる。このことを、既存の警報インフラに利用することができる。警報はユーザによって必ずしも見られるというわけでなく、それは、ユーザが同期動作を実行することを選択する時にシェアポイントにおいて自動的に生成される。このことは、頻度の低いリスト変更に対して特に効果的であり得る。しかしながら、クライアントデバイス１８０-１は、この特定の技術を実施するために着信してくるメール要求の受信をサポートすることを必要とする。
【００７２】
多数の具体的な詳細は、実施形態の完全な理解を提供するために本明細書において説明された。しかしながら、実施形態はこれらの具体的な詳細なしに実施されてもよいということが当業者に理解されるだろう。他の例では、周知の動作、コンポーネント、及び回路を、実施形態を不明瞭にしないために詳述しなかった。本明細書において開示される特定の構造上の詳細及び機能の詳細は典型例であって、必ずしも実施形態の範囲を限定するというわけではないということが当業者に認められるだろう。
【００７３】
「特定の実施形態」または「１つの実施形態」に対する何らかの言及は、実施形態と関連して開示された特定の特性、構造または特徴が少なくとも１つの実施形態に含まれるということを意味するということは注目に値する。明細書の様々な場所における「１つの実施形態では」というフレーズの出現は、必ずしも全て同じ実施形態に言及しているというわけではない。
【００７４】
いくつかの実施形態は、それらの派生物とともに「結合される（coupled）」及び「接続される（connected）」という表現を用いて開示され得る。これらの用語は互いに同義語ではないということが理解されなければならない。例えば、いくつかの実施形態は、用語「接続される」を用いて説明されて、２つ以上の要素が互いに直接物理的または電気的に接触しているということを示す。別の例では、いくつかの実施形態は、用語「結合される」を用いて説明されて、２つ以上の要素が直接物理的または電気的に接触しているということを示す。しかしながら、用語「結合される」は、また、２つ以上の要素が互いに直接接触していないが、なお互いに協力または相互作用するということを意味することができる。実施形態は、上記の説明に限定されない。
【００７５】
例えば、いくつかの実施形態は、マシンによって実行される場合に、実施形態に従って方法及び／または動作をマシンに実行させることができる命令または命令セットを記憶することができる、機械可読媒体または物品（article）を用いて実施されてもよい。例えば、かかるマシンは、任意の適当な処理プラットフォーム、計算プラットフォーム、コンピュータデバイス、コンピュータデバイス、コンピュータシステム、処理システム、コンピュータ、プロセッサ等を含んでもよく、ハードウェア及び／またはソフトウェアの任意の適当な組合せを用いて実施することができる。マシン可読媒体または物品は、例えば、任意の適当なタイプのメモリユニット、メモリデバイス、メモリデバイス、メモリ物品、メモリ媒体、記憶デバイス、記憶物品、記憶媒体及び／または、例えばメモリ、着脱自在または固定媒体、消去可能または消去不能媒体、書き込み可能または再書き込み可能媒体、デジタルまたはアナログ媒体、ハードディスク、フロッピー（登録商標）ディスク、ＣＤ−ＲＯＭ（読み出し専用コンパクトディスク）、ＣＤ−Ｒ（書き込み可能コンパクトディスク）、ＣＤ−ＲＷ(書き換え可能コンパクトディスク)、光ディスク、磁気媒体、光磁気媒体、着脱自在メモリカードまたはディスク、様々なタイプのデジタル多用途ディスク、テープ、カセットなどの記憶デバイスを含むことができる。
【００７６】
本発明は構造上の特徴及び／または方法論的動作に特有の言語で説明されたが、添付の請求の範囲において画定された本発明が上述の特定の特徴または動作に必ずしも限定されるというわけではないということが理解されるべきである。むしろ、上述の特定の特徴及び動作は、請求項を実施する例の形で開示されている。
【図面の簡単な説明】
【００７７】
【図１】ネットワークの例示的な実施形態を示す図である。
【図２】論理フローの例示的な実施形態を示す図である。
【図３】第１のメッセージフローの例示的な実施形態を示す図である。
【図４】第２のメッセージフローの例示的な実施形態を示す図である。
【図１】
2009538475.tif 000003
【図２】
2009538475.tif 000004
【図３】
2009538475.tif 000005
【図４】
2009538475.tif 000006
【国際調査報告】
2009538475.tif 000007
2009538475.tif 000008