(57)【特許請求の範囲】
【請求項１】
第１のデバイスと第２のデバイスとの間で電子メール・メッセージを同期化するための方法において、
前記第１のデバイスにおいて電子メール・メッセージを格納するステップであって、前記電子メール・メッセージは複数のプロパティ・グループを含み、前記複数のプロパティ・グループはそれぞれ１または複数のプロパティを含み、前記複数のプロパティ・グループのうちの少なくとも１つは、複数のプロパティを含む、ステップと、
前記第１のデバイス上の前記電子メール・メッセージを第２のデバイスと同期化する同期化プロセスを実行するステップであって、前記同期化プロセスは、前記電子メール・メッセージの変更されたグループを前記第２のデバイスにストリーミングし、前記電子メール・メッセージ内の変更されていないグループは前記第１のデバイスから前記第２のデバイスにストリーミングすることなく、前記第１のデバイスと前記第２のデバイスとにおいて前記電子メール・メッセージを同期化することを含み、前記電子メール・メッセージ内の前記変更されたグループは、前記電子メール・メッセージの前記複数のプロパティ・グループのうち、前回の同期化以降に変化した１つまたは複数のプロパティを有するグループである、ステップと
を含むことを特徴とする方法。
【請求項２】
前記複数のプロパティ・グループは、フォローアップ・プロパティ・グループおよびリード・ステータス・プロパティ・グループを含むことを特徴とする請求項１に記載の方法。
【請求項３】
前記第１のデバイスから前記第２のデバイスに同期化要求を送信するステップと、
前記同期化要求に対する応答として前記変更されたグループを前記第２のデバイスから受信するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項４】
前記前回の同期化の間に前記第２のデバイスからアイテム・トークンを受信するステップと、
前記第１のデバイスにおいて前記アイテム・トークンを格納するステップと
をさらに含み、
前記同期化要求は、前記アイテム・トークンを含むことを特徴とする請求項３に記載の方法。
【請求項５】
前記アイテム・トークンは、前記前回の同期化以降に変化した前記電子メール・メッセーにおけるプロパティ・グループを決定するのに使用可能であることを特徴とする請求項４に記載の方法。
【請求項６】
前記変更されたグループは、前記電子メール・メッセージのプロパティのうち２つ以上のプロパティを含むことを特徴とする請求項１に記載の方法。
【請求項７】
同期化するための複数のデータ・アイテムを監視するステップであって、前記複数のデータ・アイテムは、前記電子メール・メッセージを含む、ステップと、
前記電子メール・メッセージが前記前回の同期化の後に変化していると判断するステップと、
前記電子メール・メッセージが前記前回の同期化の後に変化していると判断した後に、前記電子メール・メッセージ内の変更されたプロパティ・グループを決定するステップと
をさらに含むことを特徴とする請求項１に記載の方法。
【請求項８】
前記電子メール・メッセージが前記前回の同期化の後に変化していると判断するステップは、アイテム変更識別子を使用して、前記電子メール・メッセージが前記前回の同期化の後に変化していると判断することを含み、
前記電子メール・メッセージ内の変更されたプロパティ・グループを決定するステップは、前記複数のプロパティ・グループに対する変更識別子を使用して、前記電子メール・メッセージ内の前記変更されたグループを識別することを含み、
前記方法は、
前記電子メール・メッセージが前記前回の同期化の後に変化していると判断した後に、前記アイテム変更識別子を更新するステップと、
前記複数のプロパティ・グループの変更識別子を使用して前記電子メール・メッセージ内の前記変更されたグループを識別した後に、前記変更されたグループの変更識別子を更新するステップと
をさらに含むことを特徴とする請求項７に記載の方法。
【請求項９】
命令と複数のプロパティを有する電子メール・メッセージとを記憶する１つまたは複数のコンピュータ記憶媒体であって、前記複数のプロパティは複数のプロパティ・グループに分けられており、前記複数のプロパティ・グループの各々が前記複数のプロパティのうちの１つまたは複数のプロパティを含み、前記複数のプロパティ・グループのうちの少なくとも１つのプロパティ・グループは複数の種類のプロパティを含む、コンピュータ記憶媒体と、
前記命令を読み出して実行する処理ユニットと
を備えたコンピューティングデバイスであって、
前記処理ユニットは、前記命令を実行することにより前記コンピューティングデバイスに、前記電子メール・メッセージ内の変更されていないグループは他のコンピューティングデバイスからストリーミングすることなく、前記電子メール・メッセージ内の変更されたグループをストリーミングして同期化させ、前記電子メール・メッセージ内の前記変更されたグループは、前記電子メール・メッセージの前記複数のプロパティ・グループのうち、前記コンピューティングデバイスと前記他のコンピューティングデバイスとの間の前回の同期化以降に変化した１または複数のプロパティを有するグループであることを特徴とする、前記コンピューティングデバイス。
【請求項１０】
クライアントデバイスの同期化レートを高める方法であって、
前記クライアントデバイスから、前回の同期化の後に変化した１つまたは複数の電子メール・メッセージを同期化するための要求を送信するステップであって、前記１つまたは複数の電子メール・メッセージはそれぞれ、複数の修正可能なプロパティを含み、前記１つまたは複数の電子メール・メッセージの各々における前記複数の修正可能なプロパティは、少なくともリード・プロパティ・グループと、フォローアップ・フラグ・プロパティ・グループとを含む複数のプロパティ・グループに分類され、前記リード・プロパティ・グループは、前記電子メール・メッセージが読まれたかどうかを示すプロパティを含み、前記フォローアップ・フラグ・プロパティ・グループは、前記電子メール・メッセージに設定されたフォローアップ・フラグを示すプロパティを含むステップと、
前記前回の同期化の後に変化した前記１つまたは複数の電子メール・メッセージを同期化するための前記要求に応答して、前記クライアントデバイスにおいて、前記１つまたは複数の電子メール・メッセージのうち第１の電子メール・メッセージの前記複数のプロパティ・グループのうち、１または複数の修正されていないプロパティ・グループは受信することなく、修正されたプロパティ・グループを受信するステップであって、前記修正されたプロパティ・グループのプロパティの値は、前記前回の同期化の後に変化しており、前記修正されていないプロパティ・グループ内のプロパティはいずれも前記前回の同期化の後に変化した値を有さない、ステップと
を含むことを特徴とする方法。
【請求項１１】
前記クライアントデバイスから要求を送信するステップは、前記要求をサーバデバイスに送信することを含むことを特徴とする請求項１０に記載の方法。
【請求項１２】
前記複数のプロパティ・グループを有さない、第２の電子メール・メッセージが変化したと決定するステップと、
前記クライアントデバイスにおいて、前記第２の電子メール・メッセージの全体を受信するステップと
をさらに含むことを特徴とする請求項１０に記載の方法。
【請求項１３】
クライアントデバイスの同期化レートを高める方法であって、
前記クライアントデバイスから、前回の同期化の後に変化した１つまたは複数の電子メール・メッセージを同期化する要求を送信するステップであって、前記１つまたは複数の電子メール・メッセージはそれぞれ、複数の修正可能なプロパティを有し、前記１つまたは複数の電子メール・メッセージの各々における前記複数の修正可能なプロパティは、少なくともリード・プロパティ・グループと、フォローアップ・フラグ・プロパティ・グループとを含む複数のプロパティ・グループに分類され、前記リード・プロパティ・グループは、前記電子メール・メッセージが読まれたかどうかを示すプロパティを含み、前記フォローアップ・フラグ・プロパティ・グループは、前記電子メール・メッセージに設定されたフォローアップ・フラグを示すプロパティを含むステップと、
前記前回の同期化の後に、前記１つまたは複数の電子メール・メッセージのうち第１の電子メール・メッセージが変化したと決定するステップと、
前記第１の電子メール・メッセージの前記複数のプロパティ・グループが、修正されたプロパティ・グループを含むかどうか判断するステップであって、前記修正されたプロパティ・グループのプロパティの値は前記前回の同期化の後に変化している、ステップと、
前記第１の電子メール・メッセージの前記複数のプロパティ・グループのうち、１つまたは複数の修正されていないプロパティ・グループはストリーミングすることなく、前記修正されたプロパティ・グループを同期化するステップであって、前記修正されていないプロパティ・グループ内のプロパティはいずれも、前記前回の同期化の後に変化した値を有さない、ステップと
を含むことを特徴とする方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、部分的アイテムの変更の追跡および同期化に関する。
【背景技術】
【０００２】
ラップトップ、ハンドヘルド、およびその他のポータブルのコンピュータまたはコンピューティング・デバイスは、それらのデバイスのサイズが、より小さくなり、価格がより安くなるにつれ、人気が高まっている。さらに、ポータブル・コンピュータの動作速度および処理能力の向上が、それらのコンピュータの人気を高めている。多くのポータブル・コンピュータは、アドレス帳、ゲーム、電卓などの、複数のアプリケーション・プログラムを格納することができる。アプリケーション・プログラムは、製造中、ポータブル・コンピュータに（例えば、ＲＯＭ（読み取り専用メモリ）上に）永久に（取り外せない形で）インストールされることが可能である。あるいは、ポータブル・コンピュータを購入した後、１つまたは複数のアプリケーション・プログラムが、ユーザによってインストールされることもできる。
【０００３】
そのようなデバイスの増大した人気および計算能力を使用して、人々は、１台以上のコンピューティング・デバイスを使用して、データおよびアプリケーションを格納することを始めている。多くの人々は、例えば、それらの人々の通常のデスクトップ・コンピュータに加えて、しばしば、ラップトップ・コンピュータを使用する。また、セルラー電話機、ＰＤＡ（パーソナル・デジタル・アシスタント）、インターネット・サービスなどの、他のデバイスも、データおよびアプリケーションを格納するために使用される。
【０００４】
これらのコンピューティング・デバイスのそれぞれは、分散コンピューティング・システムの一部とすることが可能であり、そこでは、関連する情報が、互いに関係付けられている可能性があり、および複数のそのようなデバイス上に格納される。例えば、キャッシュ・モードで実行されている電子メール・クライアントは、そのクライアント上にローカルでメール・ボックスのコピーを保持するように設計される。このため、ユーザが、ＰＤＡと、デスクトップ作業コンピュータとを有する場合、各デバイスは、そのデバイス上にローカルで格納している電子メール・アイテムを有することになる。理想的には、ＰＤＡの電子メール情報は、デスクトップ作業コンピュータにおける電子メール情報と一致しなければならない。
【０００５】
同一の情報、または関連する情報が、２つの場所に格納される場合、データが、一方の場所で変化するが、他方の場所では変化しないことが想定される。この問題は、同期化を通して解決することが可能であり、同期化は、分散システム内の各デバイスが、最新の情報またはデータを有することを確実にしようと試みる自動化されたプロセスである。しかし、同期化は、それ自体に幾つかの問題を有する。例えば、２つのデバイスが、互いに同期化する際、通常、そのようなシステムは、アイテムごとに、例えば、電子メール・メッセージごと、連絡ごと、予約（appointment）ごとなどに、変更を追跡する。したがって、２つのデバイスまたはコンピューティング・システムが、同期化しようと試みると、変更されたプロパティ（例えば、フラグ、添付ファイル、本文、受信者など）のサイズが、如何に小さくても、アイテム全体が、ダウンロードされる。一部の高帯域幅の転送システムの場合、このフルアイテム追跡−同期化プロセスは、あったとしてもほとんど問題とならないが、より低速のリンク、例えば、無線接続では、アイテム全体をダウンロードすること、またはストリーミングすることは、データ転送速度をひどく制約する可能性がある。
【０００６】
例えば、とりわけ、フォローアップ・フラグ・プロパティ、受信者プロパティ、本文プロパティ、および１つまたは複数の添付ファイル・プロパティを含む電子メール・メッセージを考慮されたい。フォローアップ・フラグの色が変更された場合、別のデバイスと同期化する際、アイテム全体が、この時点で、ダウンロードされなければならない。添付ファイル、およびその電子メール内の他のデータが、比較的大きい場合、フォローアップ・フラグの、この比較的小さなバイト・サイズ変更により、アイテム全体がダウンロードされることになり、低速のデータリンクを介して大きなデータ転送速度時間がもたらされる。
【０００７】
高帯域幅データリンクが使用される場合でさえ、アイテム全体をダウンロードすることは、依然として、望ましくない可能性がある。例えば、顧客が、ダウンロードされたバイト数に基づいて、アイテムのダウンロードに対する代金を支払うとき、少量のデータだけしか、例えば、前述したフォローアップ・フラグだけしか、アイテム上で変化していない場合、顧客は、それでも、ダウンロードされるアイテム全体の代金を支払わなければならない。そのような金の浪費は、ユーザに多くの苛立ちを生じさせる可能性がある。
【０００８】
一部のレプリケーション・システムが、アイテムごとにデバイスを追跡して同期化するシステムの前述した欠点に対する問題解決法の１つである可能性がある。一部のレプリケーション・システムは、プロパティごとに変更を追跡することを可能にするが、これらのシステムは、それでも、それらのシステム独自の固有な問題を有する。例えば、多数のアイテムに関して、個別の各プロパティを追跡することは、高いストレージ要件と高い処理要件をともに生じさせる。このため、これらの追跡−同期化システムは、ほとんどの用途には、実際的でない。
【発明の概要】
【発明が解決しようとする課題】
【０００９】
現行の同期化システムの前段で特定された欠陥および欠点は、本発明の例示的な実施形態によって克服される。以下の概要は、以下の詳細な説明においてさらに説明される、いくつかの選定された概念を、簡略化された形態で紹介するために提供されることに留意されたい。しかし、この概要は、特許請求の範囲に記載された主題の重要な特徴、または不可欠な特徴を特定することを意図しておらず、また、特許請求の範囲に記載された主題の範囲を決定する助けとして使用されることも意図していない。
【課題を解決するための手段】
【００１０】
一実施形態において、アイテム内の個別の各プロパティの変更を監視することなしに、変化しているアイテムの、いくつかの選定された部分だけを同期化することにより、クライアントとサーバとの間の同期化レートを高めるための方法、システム、およびコンピュータ・プログラム製品が、提供される。この実施形態では、サーバとクライアントとの間の前回の同期化以来、変化しているデータ・アイテムを同期化する要求が、受信され、データ・アイテムは、改変される、または、変更されることが可能な、複数のプロパティを有する完全なメッセージを表す。データを同期化する要求に応答して、最初に、データ・アイテムが、前回の同期化以来、変化していると決定される。そのようなデータ・アイテムは、業界の通念、および複数のプロパティ・グループの各グループ内のプロパティがどのように関係するかに関する意味の理解に基づいて事前定義された、複数のプロパティ・グループを含む。次に、複数のプロパティ・グループの中から少なくとも１つのプロパティ・グループが、前回の同期化以来、変化していると決定される。したがって、その少なくとも１つのプロパティ・グループは、同期化を行う際に、クライアントとサーバとの間のデータ転送時間を短くするために、その少なくとも１つのデータ・アイテム全体をストリーミングすることなしに、同期化されることが可能である。
【００１１】
別の実施形態において、アイテム内の個別の各プロパティの変更を監視することなしに、クライアントとサーバとの間の同期化レートを高めるために、アイテムの、いくつかの選定された部分への変更を追跡するための方法、システム、およびコンピュータ・プログラム製品が、提供される。この実施形態では、複数のデータ・アイテムが、同期化する目的で監視され、複数のデータ・アイテムのそれぞれは、改変される、または、変更されることが可能な、複数のプロパティを有する完全なメッセージを提示する。そのような監視中、クライアントとサーバとの間の前回の同期化以来、データ・アイテムが変化していると決定され、データ・アイテムは、業界の通念、および複数のプロパティ・グループの各グループ内のプロパティがどのように関係するかに関する意味の理解に基づいて事前定義された、複数のプロパティ・グループを含む。
【００１２】
データ・アイテムが変化しているとの決定に基づき、そのデータ・アイテムに関連付けられたアイテム変更識別子が、更新され、この識別子は、クライアントと同期化するために、そのデータ・アイテムが変化していることを識別するのに使用される。したがって、それらの複数のプロパティ・グループの中からの少なくとも１つのプロパティ・グループが、前回の同期化以来、変化していることも決定される。その少なくとも１つのプロパティ・グループが、変化しているとの決定に基づき、その少なくとも１つのプロパティ・グループに関連付けられたプロパティ・グループ変更識別子が、更新され、この識別子は、その少なくとも１つのプロパティ・グループが変化していることを識別するのに使用されて、クライアントとサーバとの間のデータ転送時間を短くするために、その少なくとも１つプロパティ・グループだけが、クライアントと同期化されるようにする。
【００１３】
別の実施形態において、本発明は、アイテム・データ構造を格納している１つまたは複数のコンピュータ可読媒体も提供する。アイテム・データ構造は、以下を含む。すなわち、改変される、または、変更されることが可能な複数のプロパティ、その複数のプロパティの１つまたは複数が、クライアントとの前回の同期化以来、改変されている、または、変更されているかどうかを示すアイテム変更識別子、業界の通念、および複数のプロパティ・グループの各グループ内の１つまたは複数のプロパティがどのように関係するかに関する意味の理解に基づいて事前定義された、複数のプロパティ・グループからの１つまたは複数のプロパティをそれぞれが含む、複数のプロパティ・グループ、およびアイテム全体を同期化することなしに、変化しているプロパティ・グループだけを同期化するために、その複数のプロパティ・グループのいずれが、変化しているかを示すための複数のプロパティ・グループ変更識別子である。
【００１４】
本発明のさらなる特徴および利点は、後段の説明において示され、一部は、その説明から明白となり、あるいは本発明の実施によって知ることができる。本発明の特徴および利点は、添付の特許請求の範囲で特に指摘される手段および組み合わせによって実現され、得られることが可能である。本発明の以上、およびその他の特徴は、以下の説明、および添付の特許請求の範囲から、より完全に明白となり、あるいは後段で説明される本発明の実施によって知ることができる。
【００１５】
本発明の前述した利点および特徴、ならびに、その他の利点および特徴を得ることができるやり方を説明するため、前段で簡単に説明した本発明のより詳細な説明を、添付の図面に示される本発明の特定の実施形態を参照して行う。これらの図面は、本発明の通常の実施形態だけを表しており、したがって、本発明の範囲を限定すると解釈されるべきではないものとを理解して、本発明を、添付の図面の使用によって、さらに具体的に、さらに詳細に表し、説明する。
【図面の簡単な説明】
【００１６】
【図１Ａ】例示的な実施形態によるプロパティ・グループに限って同期化するための分散システムを示す図である。
【図１Ｂ】例示的な実施形態によるアイテムに関するプロパティ・グループのマッピングを示す図である。
【図１Ｃ】例示的な実施形態による例示的な同期化アイテム・ストリームを示す図である。
【図２Ａ】例示的な実施形態によるクライアントとサーバとの間の同期化レートを高める方法を示す流れ図である。
【図２Ｂ】例示的な実施形態によるアイテムの、いくつかの選定された部分への変更を追跡する方法を示す流れ図である。
【図３】本発明の様々な特徴を実施するための適切な動作環境を提供する例示的なコンピューティング・システムを示す図である。
【発明を実施するための形態】
【００１７】
本発明は、変化しているアイテムのいくつかの選定された部分だけを同期化することにより、同期化レートを高めるための方法、システム、およびコンピュータ・プログラム製品に及ぶ。本発明の実施形態は、後段でより詳細に説明する、様々なコンピュータ・ハードウェアまたはコンピュータ・モジュールを含む専用コンピュータまたは汎用コンピュータを含むことが可能である。
【００１８】
本明細書における実施形態を詳細に説明するのに先立ち、本願全体にわたって使用される、いくつかの用語を定義することが役立つであろう。第１に、「データ・アイテム」または「アイテム」は、本明細書では、改変される、または変更されることが可能なプロパティを有する完全なメッセージを表すのに使用される。例えば、データ・アイテムは、完全な（complete）電子メール・メッセージ、完全な連絡、完全な予約、完全なタスク、完全な付箋、または２つのコンピューティング・デバイス間で同期化されることが可能な他の任意のタイプのメッセージであることが可能である。アイテムに関する「プロパティ」は、他のプロパティとは無関係に改変される、または変更されることが可能なメッセージの一部分を表す。そのようなプロパティの例には、フォローアップ・フラグ（follow-up flag）、優先フラグ（priority flag）、アイテムの本文（body of an item）、個々の添付ファイル（individual attachments）、個々の受信者（individual recipients）、メッセージ・ステータス（message status）、メッセージ優先度（message priority）、またはメッセージに関する他の任意のよく知られたプロパティのようなものが含まれる。例示的な実施形態は、プロパティが、「プロパティ・グループ」に分けられることが可能であり、プロパティ・グループは、後段でより詳細に説明するとおり、プロパティ・グループの各グループ内のプロパティがどのように関係するかに関する業界の通念（industry wisdom）、およびセマンティックスの理解に基づき、事前定義されることを規定する。
【００１９】
本明細書における実施形態は、２つのデバイス間で、例えば、サーバとクライアントとの間で扱われ、追跡されるアイテム同期化の方法を変更する。アイテムへの変更が、前述した明確に定義されたプロパティ・グループに入れられ、各グループが、その他のグループとは無関係に追跡される。例えば、１つのグループは、アイテムの本文を含むことが可能であり、別のグループは、添付ファイルを含むことが可能であるのに対して、さらに別のグループは、フォローアップ・フラグ、リード・ステータス、優先フラグなどのような非常に変化しやすいプロパティ（highly volatile properties）を含むことが可能である。プロパティ・グループは、業界の通念（industry wisdom）に基づいて明確に定義されているので、本明細書における実施形態は、データ転送速度と、通常のレプリケーション・システムに必要とされるストレージ要件および／または処理要件との間でバランスをとる、ことに留意されたい。つまり、本発明は、アイテム内の個別の各プロパティの変更を監視することなしに、変化しているアイテムの、いくつかの選定された部分だけを同期化することにより、クライアントとサーバとの間の同期化レートを高める。したがって、比較的大きい電子メール・メッセージ上の小さいデータ・プロパティ（例えば、フォローアップ・フラグ）に変更が行われている場合、この変更は、キャッシュ・モード下で実行中のクライアントへの大量のダウンロードを引き起こさず、また、高いストレージおよび個々の各プロパティを追跡するための処理要件も存在しない。
【００２０】
本発明の様々な実施形態に関するさらなる詳細を説明するのに先立ち、本発明の原理を実施するのに使用されることが可能な、適切なコンピューティング・アーキテクチャを、図３に関連して説明する。以下の説明において、本発明の実施形態は、特に明記しない限り、１つまたは複数のコンピュータによって実行される動作(act)、および操作の記号表現に関連して説明する。このため、そのような動作および操作は、ときにはコンピュータによって実行されるとして参照され、構造化された形態でデータを表す電気信号についての、コンピュータの処理装置による操作、を含むことが理解されよう。この操作は、データを変換したり、またはコンピュータのメモリ・システム内の幾つかのロケーションでデータを保持ししたりして、当業者がよく理解している仕方で、コンピュータの操作を再構成したり、または変更したりする。データが保持されるデータ構造は、データのフォーマットによって定義された特定のプロパティを有するメモリの物理的ロケーションである。しかし、本発明の原理を以上の文脈で説明しているものの、以下に説明するいくつかの動作および操作をハードウェアで実施することもできることが当業者には理解されるとおり、この説明は、限定的であることを意図していない。
【００２１】
図面を参照すると、同様の符号が同様の要素を参照しており、本発明の原理が、適切なコンピューティング環境において実施されるとして示されている。以下の説明は、本発明の図示される実施形態に基づき、本明細書で明示的に説明されない代替の実施形態に関して、本発明を制限するものと解釈されるべきではない。
【００２２】
図３は、これらのデバイスのために使用可能な例示的なコンピュータ・アーキテクチャの概略図を示す。説明の目的に対して、図示されるアーキテクチャは、適切な環境の一例に過ぎず、本発明の用法または機能の範囲について、何ら限定を示唆することは意図していない。また、それらのコンピューティング・システムが、図３に示されるコンポーネントの任意のいずれか、またはそれらの組み合わせに関連する依存関係または要件も有すると解釈してはならない。
【００２３】
本発明の原理は、多数の他の汎用または専用のコンピューティング環境もしくはコンピューティング構成、または通信環境もしくは通信構成で機能する。本発明で使用するのに適した、よく知られているコンピューティング・システム、コンピューティング環境、およびコンピューティング構成の例には、移動電話機、ポケット・コンピュータ、パーソナル・コンピュータ、サーバ、マルチプロセッサ・システム、マイクロ・プロセッサベースのシステム、ミニ・コンピュータ、メインフレーム・コンピュータ、ならびに以上のシステムまたはデバイスのいずれかを含む分散コンピューティング環境が含まれるが、以上には限定されない。
【００２４】
最も基本的な構成では、コンピューティング・システム３００は、通常、少なくとも１つの処理装置３０２、およびメモリ３０４を含む。メモリ３０４は、揮発性（ＲＡＭなどの）であっても、不揮発性（ＲＯＭ、フラッシュ・メモリなどの）であっても、あるいはこの２つの何らかの組み合わせであってもよい。この最も基本的な構成が、破線３０６によって図３に示される。この説明、および特許請求の範囲において、「コンピューティング・システム」は、ソフトウェア、ファームウェア、またはマイクロ・コードを実行して、或る機能を実行することができる任意のハードウェア・コンポーネント、もしくはハードウェア・コンポーネントの組み合わせとして定義される。コンピューティング・システムは、分散された機能を実現するように分散されることさえ可能である。
【００２５】
記憶媒体デバイスは、さらなるフィーチャおよび機能を有することが可能である。例えば、記憶媒体デバイスは、ＰＣＭＣＩＡカード、磁気ディスクおよび光ディスク、ならびに磁気テープを含むが、以上には限定されない、さらなるストレージ（リムーバブルなストレージおよびリムーバブルでないストレージ）を含んでもよい。このさらなるストレージが、図３に、リムーバブルなストレージ３０８、およびリムーバブルでないストレージ３１０によって示される。コンピュータ記憶媒体には、コンピュータ可読命令、データ構造、プログラム・モジュール、またはその他のデータなどの情報を格納するために任意の方法または技術で実装された、揮発性媒体および不揮発性媒体、リムーバブルな媒体およびリムーバブルでない媒体が含まれる。メモリ３０４、リムーバブルなストレージ３０８、およびリムーバブルでないストレージ３１０はすべて、コンピュータ記憶媒体の例である。コンピュータ記憶媒体には、ＲＡＭ、ＲＯＭ、ＥＥＰＲＯＭ、フラッシュ・メモリ、その他のメモリ技術、ＣＤ−ＲＯＭ、デジタル・バーサタイル・ディスク、その他の光ストレージ、磁気カセット、磁気テープ、磁気ディスクストレージ、その他の磁気記憶装置、ならびに所望の情報を格納するのに使用することができ、コンピューティング・システムがアクセスすることができる他の任意の媒体が含まれるが、以上には限定されない。
【００２６】
本明細書で使用される「モジュール」または「コンポーネント」という用語は、コンピューティング・システム上で実行されるソフトウェア・オブジェクトまたはソフトウェア・ルーチンを指すことが可能である。本明細書で説明される様々なコンポーネント、モジュール、エンジン、およびサービスは、コンピューティング・システム上で実行されるオブジェクトまたはプロセスとして（例えば、別々のスレッドとして）実施されることが可能である。本明細書で説明されるシステムおよび方法は、好ましくはソフトウェアで実施されるが、ハードウェア、またはソフトウェアとハードウェアの組み合わせでの実施も、可能であり、企図される。この説明において、「コンピューティング・エンティティ」は、本明細書で前に定義したとおり、任意のコンピューティング・システムであることが可能であり、あるいはコンピューティング・システム上で実行される任意のモジュールもしくはモジュールの組み合わせであることが可能である。
【００２７】
また、コンピューティング・システム３００は、ホストが、例えば、ネットワーク３２０を介して、他のシステムおよびデバイスと通信することを可能にする、通信チャネル３１２も含むことが可能である。通信チャネル３１２は、通信媒体の例である。通信媒体は、通常、搬送波などの変調されたデータ信号、または他のトランスポート機構で、コンピュータ可読命令、データ構造、プログラム・モジュール、またはその他のデータを具現化し、通信媒体には、任意の情報配信媒体が含まれる。例として、限定としてではなく、通信媒体には、有線ネットワークまたは直接有線接続などの有線媒体、ならびに音響媒体、電波媒体、赤外線媒体、およびその他の無線媒体などの無線媒体が含まれる。本明細書で使用されるコンピュータ可読媒体という用語には、記憶媒体と通信媒体がともに含まれる。
【００２８】
また、コンピューティング・システム３００は、キーボード、マウス、ペン、音声入力コンポーネント、タッチ入力デバイスなどの入力コンポーネント３１４も有することが可能である。出力コンポーネント３１６には、スクリーン・ディスプレイ、スピーカ、プリンタなど、ならびに、それらのコンポーネントを駆動するためのレンダリング・モジュール（しばしば、「アダプタ」と呼ばれる）が含まれる。コンピューティング・システム３００は、電源供給装置３１８を有する。これらすべてのコンポーネントは、当技術分野でよく知られており、本明細書で詳しく説明される必要はない。
【００２９】
図１Ａは、例示的な実施形態によるクライアント１０５とサーバ１２５との間でプロパティ・グループ１０４を同期化するための分散システム１００を示す。分散システム１００は、図３に関連して前述したコンピューティング・システム３００と同様であることが可能であるが、そうである必要はない。図１Ａに示されるとおり、分散システム１００は、いくつかのコンピューティング・デバイス１１０、１１５などの任意のいずれかであることが可能なクライアント１０５を含む。例えば、クライアント１０５は、電話機１１０、ＰＤＡ１１０、ラップトップ・コンピュータ１１５、または他の任意のコンピューティング・デバイスなどの無線デバイスであることが可能である。
【００３０】
本発明は、データリンクが低速であるシステム、例えば、無線通信において、最も有利であることに留意されたい。しかし、本発明は、そのようなリンクに限定されず、任意の環境において利用されることが可能である。例えば、前述したとおり、本発明は、サーバ１２５からクライアント１０５に転送されたデータの量に基づいて、ユーザが、サービスの代金を支払うことを要求するシステムにおいて、利用されてもよい。したがって、サーバ１２５とクライアント１０５との間の特定のデータリンクへのいずれの具体的な言及も、本明細書では、例示の目的に限って使用され、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００３１】
本発明を、サーバ１２５およびクライアント１０５に関して説明するが、本明細書における実施形態を説明する際の、これらのデバイスの役割は、入れ替えられてもよいことに、さらに留意されたい。例えば、以下の説明は、サーバ１２５上で行われる、アイテム１７０の変更に関して述べられ、そのような変更が、変更をクライアント１０５にストリーミングすることによって同期化される。しかし、クライアント１０５上の変更が、追跡されて、サーバ１２５にアップロードされることも可能であることに留意されたい。このため、サーバ１２５とクライアント１０５との間、ならびにクライアント１０５またはサーバ１２５として本明細書で使用される任意の特定のデバイスの間で生じるイベントに関する以下の説明は、例示の目的に限って、本明細書で使用され、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００３２】
図１Ａに示されるとおり、サーバ１２５は、複数のフォルダ１６５（例えば、フォルダ「Ａ」）を含み、ここで、各フォルダ１６５は、いくつかのタイプのアイテム１７０を表す、または含むことが可能である。例えば、フォルダ１６５は、電子メール・アイテム・メッセージを収容する、または含むことが可能であり、別のフォルダ１６５は、連絡アイテム情報を含むことが可能である。もちろん、前述したとおり、本明細書で提供される例示的な実施形態に従って同期化されることが可能な多種多様なアイテムタイプが、存在することが可能である。加えて、フォルダ１６５以外の他のトポロジおよびデータ構成が、本発明の実施に使用することができる。例えば、様々なタイプのアイテム１７０を様々な仕方で分けて格納するテーブルまたはその他の方法も、本発明に利用可能である。したがって、いずれの特定のトポロジ、データ・フォーマット、および／または格納階層も、例示の目的に限って、本明細書で使用され、本発明の範囲を限定する、または狭めることを意図するものではない。
【００３３】
各フォルダ１６５は、前述したとおり、複数のアイテム１７０（例えば、アイテム「Ａ」）を収容する。各アイテム１７０には、アイテム変更ＩＤ（識別子）１７５が関連付けられ、これは、後段でより詳細に説明するとおり、アイテム１７０およびアイテム１７０のプロパティが、サーバ１２５とクライアント１０５との間の前回の同期化以来、変更されていることを識別するのに使用されることができり。また、各アイテム１７０にはプロパティ・グループ１８０（例えば、プロパティ・グループ「Ａ」）が含まれる。前述したとおり、プロパティ・グループ１８０は、複数のプロパティ・グループ１８０の各グループ内のプロパティがどのように関係するかに関する業界の通念（industry wisdom）、およびセマンティックスの理解に基づいて事前定義される。例えば、プロパティ・グループは、プロパティの変わりやすさ（volatility）、通常のメモリ・サイズ要件、および／またはその他の考慮事項に基づいて、決定されることが可能である。さらに、プロパティ・グループ１８０は、メッセージ・ステータス、フォローアップ・フラグ、優先フラグ、または頻繁に改変され、かつ／または変更される、その他のプロパティなどの、非常に変わりやすいプロパティを含むことが可能である。
【００３４】
あるいは、または併せて、プロパティ・グループ１８０は、他のプロパティと比較された場合の、プロパティの相対サイズに基づいて、定義されてもよい。例えば、添付ファイルは、通常、他のプロパティより大きいサイズであり、したがって、１つのプロパティ・グループの中に存在することが可能であるのに対して、受信者、および／またはメッセージの本文などの、より小さいデータサイズは、別のプロパティ・グループ１８０の中に存在することが可能である。他のプロパティとあまり関係のないプロパティに関する、種々雑多な（miscellaneous）プロパティ・グループ１８０が、存在することさえ可能である。
【００３５】
プロパティ・グループ１８０は、現在の業界の通念（industry wisdom）に基づいて事前定義されるが、この知識は、変わることがあることに留意されたい。したがって、実施形態は、プロパティ・グループ１８０が、拡張可能であり、差し込み可能であり、スケーラブルであると規定する。つまり、プロパティ・グループ１８０は、各プロパティ・グループ１８０内のプロパティが、移動されること、削除されること、追加されること、および／または、変更されることが可能であるように、構成される。同様に、プロパティ・グループ１８０自体、再定義されること、作成されること、および／または削除されることが可能である。加えて、プロパティ・グループ１８０の定義は、アイテム１７０のタイプに応じて、異なることが可能である。例えば、電子メール・アイテム１７０に関して定義されたプロパティ・グループ１８０は、連絡アイテム１７０に関して定義されたプロパティ・グループ１８０とは異なることが可能である。このため、後段でより詳細に説明するとおり、クライアント１０５は、様々なフォルダ１６５内の各アイテム１７０に関して使用されている、適切なマッピング１９０を知る必要がある。
【００３６】
どのようにプロパティ・グループ１８０が定義されるかにかかわらず、各プロパティ・グループ１８０には、通常、プロパティ・グループ変更ＩＤ１８５が割り当てられ、これは、その特定のプロパティ・グループ１８０に変更が生じていることを識別するのに使用されることが可能である。例えば、アイテム／プロパティ・グループ・モジュール１５０は、アイテム１７０に生じている変更を監視することができ、そのアイテム１７０内の各プロパティ・グループ１８０に関する変更も監視することができる。変更が生じと、変更ＩＤジェネレータ１６０が、アイテム変更ＩＤ１７５、および適切なプロパティ・グループ変更ＩＤ１８５を変更することができる。
【００３７】
一部の実施形態では、アイテム変更ＩＤ１７５とプロパティ変更ＩＤ１８５は、同一の識別子であることが可能であり、例えば、アイテムとプロパティ・グループが、同時に更新されたことを示す。しかし、例えば、ＧＵＩＤ（グローバル一意識別子）が使用される場合、このことが該当するとは限らないことに留意されたい。変更ＩＤ１７５、１８５は、任意のよく知られた英数字またはその他の識別データ・オブジェクトであることが可能であることに、さらに留意しなければならない。例えば、変更ＩＤ１７５、１８５は、それぞれ、アイテム１７０および／またはプロパティ・グループ１８５のハッシュであることが可能である。もちろん、前述したとおり、変更ＩＤ１７５、１８５は、ＧＵＩＤの単純なカウンタ（counter）に基づいて、生成されてもよい。また、アイテム１７０およびプロパティ・グループ１８０の変更を識別するための他の機構も、本発明に利用可能であることに留意されたい。したがって、変更を識別するための、本明細書で説明される、いずれの特定のタイプの変更識別子１７５、１８５、および／または識別子１７５、１８５の用法も、例示の目的に限られ、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００３８】
ＩＤ１７５、１８５のタイプ、またはプロパティ・グループの変更がどのように識別されるかにかかわらず、サーバ１２５内部のアイテム／プロパティ・モジュール１５０が、１つまたは複数のアイテム１７０の変更を識別すると、そのようなアイテム変更の通知１２０が、クライアント１０５に、サーバ１２５に同期化するように指示しようとして、クライアント１０５に送信されることが可能である。もちろん、サーバ１２５と同期化するよう、クライアント１０５を促すための他の機構も、本発明に利用可能である。例えば、クライアント１０５は、定期的に、すなわち、或る事前定義された間隔で、サーバ１２５に問い合わせて、サーバ１２５と同期化してもよい。したがって、クライアント１０５とサーバ１２５との間の同期化プロセスの、いずれの特定の開始も、例示の目的に限って、本明細書で使用され、本発明の範囲を限定する、または狭めることを意図するものではない。
【００３９】
それでも、同期化プロセスが開始されると、サーバ１２５は、クライアント１０５から同期化要求１３０を受信することになる。例示的な実施形態は、同期化要求１３０が、クライアント１０５とサーバ１２５との間の前回の同期化以来、変化が生じているかどうかを決定する際に使用されることが可能な、１つまたは複数のアイテム・トークン１３５ｓ（例えば、アイテム・トークン「Ａ」）を含むことが可能であることを規定する。アイテム・トークン１３５について詳細に説明するのに先立って、アイテム・トークン１３５は、同期化要求１３０内に必ずしも含まれなくてもよいことに留意されたい。例えば、その他のハンドシェーク機構が、別の仕方で、サーバ１２５にアイテム・トークン１３５を送信するよう、クライアント１０５を促してもよい。代替として、アイテム・トークン１３５は、サーバ１２５上に既に格納されていてもよい。したがって、同期化要求１３０内にアイテム・トークン１３５を含めることは、例示の目的に限って本明細書で使用され、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００４０】
各アイテム・トークン１３５に関連付けられているのは、アイテム変更ＩＤ１４０である。各アイテム変更ＩＤ１４０または各アイテム・トークン１３５に関して、複数のプロパティ・グループ変更ＩＤ１４５（例えば、プロパティ・グループ「Ａ」変更ＩＤ）も存在する。アイテム変更ＩＤ１４５およびプロパティ・グループ変更ＩＤ１４５は、クライアント１０５とサーバ１２５との間の前回の同期化に関して、アイテム１７０、および対応するプロパティ・グループ１８０に関連付けられていた識別子を表す。つまり、アイテム・トークン１３５は、サーバ１２５との前回の同期化中に格納されるべきデータのブラブ（blob）として、クライアント１０５に渡されていた可能性がある。次に、このデータ１３５のブラブ（blob）が、前回の同期化以来、変化しているアイテム１７０、より具体的には、各アイテム１７０内のプロパティ・グループ１８０、を決定する際に、変更識別子比較器１５５によって使用されることが可能である。
【００４１】
例えば、各アイテム・トークン１３５が、各アイテム１７０と比較されることが可能である。より具体的には、アイテム・トークン１３５と、実際のアイテム１７０との両方における変更ＩＤ１７５、１４０、およびプロパティ・グループＩＤ１８５、１４５が、変更識別子比較器１５５を使用して比較されることが可能である。値が異なる場合、すなわち、アイテム・トークン１３５に関するアイテム変更ＩＤ１４０、およびプロパティ・グループＩＤ１４５が、アイテム変更ＩＤ１７５およびプロパティ・グループＩＤ１８５と一致しない場合、アイテム１７０およびプロパティ・グループ１８０において変更が、生じている。前述したとおり、アイテム・トークン１３５に関する変更ＩＤは、前回の同期化以来、アイテム１７０およびプロパティ・グループ１８０が変化していることを決定する際に、サーバ１２５上のアイテム１７０およびプロパティ・グループ１８０と比較されるものの、アイテム１７０およびプロパティ・グループ１８０の変更が生じたこと、または生じている場合を決定する他の方法も、本発明に利用可能である。例えば、サーバ１２５は、変更ＩＤ１４０、１４５、１７５、１８５を必要とせずに、クライアント側１０５で、どのような変更が必要とされているかを特定するのに必要とされる情報のすべてを格納することができる。したがって、本明細書で説明される、変更ＩＤ１４０、１４５、１７５、１８５の特定の用法は、例示の目的に限られ、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００４２】
変化しているプロパティ・グループ１０４がどのように識別されるかにかかわらず、そのような変更されたプロパティ・グループ１０４は、同期化アイテム・ストリーム１０２内に含められることが可能であり、ストリーム１０２は、次に、後段で説明される例示的な実施形態に従って、クライアント１０５に送信されることが可能である。さらに、前述したとおり、特定のバージョン管理ＩＤ１９５によって識別されるマッピング１９０も、同期化アイテム・ストリーム１０２の前、最中、または後に送信されることが可能である。やはり、後段でより詳細に説明するとおり、同期化アイテム・ストリーム１０２内のプロパティ・グループ１０４は、そのようなプロパティ・グループ１０４のために使用される特定のマッピング１９０バージョン１９５を識別しなければならない。
【００４３】
図１Ｂは、或る特定のバージョン識別子１９５に関するマッピング１９０の例示的なブロック図を示す。図示されるとおり、マッピング１９０は、複数のアイテム１０６、および各アイテム１０６ごとにプロパティ・グループ１０８、１１４を含む。もちろん、任意の特定のアイテム１０６内で識別されることが可能な、任意の数のプロパティ・グループ１０８、１１４が、存在することが可能である。さらに、プロパティ１１２、１１６も、特定の各プロパティ・グループ１０８、１１４ごとにマップされる。例えば、プロパティ・グループ「Ａ」１０８は、プロパティ１１２「Ｃ」および「Ｅ」を含むことが可能であるのに対して、プロパティ・グループ「Ｂ」１１４は、プロパティ「Ａ」１０６を含むことが可能である。
【００４４】
マッピング１９０が、比較的小さい、変わりやすいデータプロパティに関するプロパティ・グループ「Ａ」１０８を有する電子メール・アイテム１０６を識別するのに対して、プロパティ・グループ「Ｂ」１１４に関するマッピングは、より大きいプロパティを含む例と考慮されたい。このため、プロパティ・グループ「Ａ」１０８内のプロパティ「Ｃ」１１２およびプロパティ「Ｅ」１１２は、それぞれ、フォローアップ・フラグおよび優先フラグであることが可能である。他方、プロパティ・グループ「Ｂ」１１４に関するプロパティ「Ａ」１１６は、添付ファイルであることが可能である。もちろん、マッピング１９０を提供する他のよく知られた方法も、本発明に利用可能である。したがって、図１Ｂ内で提供されるマッピング構成は、例示の目的に限って本明細書で使用され、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００４５】
現在のおよび以前のプロパティ・グループ・マッピング１９０は、サーバ・データベース上に永続させられることが可能であり、バージョンＩＤ１９５によってアクセスされることが可能であることに留意されたい。知られていないバージョン識別子１９５を有するアイテム１７０に遭遇した場合、またはアイテム１７０が、グループ識別子を有さない場合、そのアイテムは、全くプロパティ・グループ１８０を有さないかのように扱われなければならず、全体として扱われなければならない。したがって、これらのようなアイテム１７０が、クライアント１０５にダウンロードされる必要がある場合、そのアイテム１７０全体が、ストリーミング１０２される。
【００４６】
一実施形態は、本明細書で高速転送と呼ばれるストリーミング機構による同期化を提供する。このプロセスは、変更されたプロパティ・グループ１０４を細分して、それらのグループ１０４を生のバイナリ・ストリームにシリアル化することにより、サーバ１２５が、同期化要求１３０に応答することを可能にする。サーバ１２５は、メッセージ１０２を、固定サイズの応答バッファの中に入れることができる量にパッケージングして、このデータ１０２をクライアント１０５に戻す。すると、クライアント１０５は、バイト・ストリーム１０２をシリアル化解除することにより、そのデータを解析して、プロパティ・グループ１０４を再構築する。バイト・ストリーム１０２の例示的なフォーマットが、図１Ｃに関連して後段で示され、図１Ｃは、同期化アイテム・ストリーム１０２の例、すなわち、同期化アイテム・ストリーム１０２が、どのようなものであることが可能であるかについての有線転送（または無線転送）データ表現を示す。
【００４７】
同期化アイテム・ストリーム１０２の最初の部分は、応答ストリーム１０２に後続するすべてのアイテムの合計サイズについての情報を提供するために、ストリーム１０２の先頭に追加されたＩｎｃｒＳｙｎｃＰｒｏｇｒｅｓｓＩｔｅｍ１１８である。次に、ＩｎｃｒＳｙｎｃＰｒｏｇｒｅｓｓＰｅｒＩｔｅｍ１２２が、同期化アイテム・ストリーム１０２における次のアイテムの合計サイズを示す。同期化ストリーム１０２内の次のグループ１２４は、マーカ、ＩｎｃｒＳｙｎｃＰｒｏｐＧｒｏｕｐＭａｐによって示されるマッピングであり、このマッピングは、ストリーム１０２における次のアイテム、もしくは次の複数のアイテムが、どのようなプロパティ・グループ・マッピングを使用するかを、クライアント１０５に知らせる。したがって、様々なプロパティ・グループ１８０が、ＩｎｃｒＳｙｎｃＰｒｏｐＧｒｏｕｐマーカ、および各プロパティ・グループ１８０内のプロパティＩＤのアレイまたはリストを使用して、識別されることが可能である。つまり、同期化アイテム・ストリーム１０２は、本明細書で説明するとおり、様々なバージョンＩＤ１９５に関して、マッピング１９０、またはマッピング１９０のグループを含むことが可能である。しかし、前述したとおり、マッピング１９０は、同期化アイテム・ストリーム１０２内に必ずしも含められなくてもよく、同期化ストリーム１０２の後に続く、またはストリーム１０２に先行することも可能であることに留意されたい。
【００４８】
次のタグのセット１２６、すなわち、ＩｎｃｒＳｙｎＰｒｏｐＧｒｏｕｐＩＤは、ストリームにおける次のアイテム、もしくは次の複数のアイテムが、どのようなプロパティ・グループ・マッピングを使用するかを意味する。つまり、このグループ１２６内のバージョンＩＤは、後続のアイテムに関するマッピング１９０バージョンＩＤ１９５を識別する。次に、ＩｎｃｒＳｎｙＣｈｇＩｔｅｍ１２８は、変更されたアイテムの先頭を意味するマーカであり、このマーカは、そのアイテム内で変更されている数々のプロパティ・グループを後続する。例えば、ＩｎｃｒＳｎｙＣｈｇＰｒｏｐＧｒｏｕｐ１３２における複数のマーカによって示されるとおり、変更された様々なプロパティ・グループが、識別されることが可能である。例えば、ストリーム１３４において示されるとおり、ＩｎｃｒＳｎｙＣｈｇＰｒｏｐＧｒｏｕｐは、現在のＩｔｅｍＲｅｃｉｐｉｅｎｔｓを削除するＤｅｌＰｒｏｐ要素を最初に有することにより、受信者プロパティを変更し、次に、ＳｔａｒｔＲｅｃｉｐマーカおよびＥｎｄＲｅｃｉｐマーカを使用して受信者プロパティを置き換える。別の例として、ストリーム１３６における要素は、アイテム添付ファイルに関するＩｎｃｒＳｙｎｃＣｈｇＰｒｏｐＧｒｏｕｐを含み、現在のＩｔｅｍＡｔｔａｃｈｍｅｎｔｓが、ＤｅｌＰｒｏｐを使用して削除され、ＮｅｗＡｔｔａｃｈマーカおよびＥｎｄＡｔｔａｃｈマーカを使用して置き換えられるようにする。もちろん、その他のプロパティ・グループが、その後に与えられる省略記号に示されるとおり、ストリーム内に含められることが可能である。
【００４９】
他の例示的な実施形態は、アイテムを同期化する既存の方法を、本明細書で提供される現在の実施形態と組み合わせることを提供する。例えば、マッピングが全く提供されない旧来のシステムにおいて、アイテム全体が、同期化アイテム・ストリーム１０２内でダウンロードされることが可能である。例えば、要素１３８に示されるとおり、ＩｎｃｒＳｙｎｃＰｒｏｇｒｅｓｓＰｅｒＩｔｅｍが、次のアイテムの合計サイズを示し、ＩｎｃｒＳｙｎｃＣｈｇＩｔｅｍが、アイテムを変更することの始まりにマークを付ける。次のマーカ、すなわち、ＩｎｃｒＳｙｎｃＤｅｌ、ＩｎｃｒＳｙｃＲｅａｄ、およびＩｎｃｒＳｙｎｃＥｎｄに関するマーカ１４２は、（１）クライアント１０５から削除されるべきアイテムのリスト、（２）後続するリード・ステータス遷移、および（３）同期化セッションの終了を意味するマーカ、をそれぞれ意味する。最後に、ＩｎｃｒＳｙｎｃＳｔａｔｅＢｅｇｉｎは、最後の同期化状態が、バイト・ストリームにおいて後続することを意味し、ＩｎｃｒｙＳｙｎｃＳｔａｔｅＥｎｄは、同期化状態が完了したことを意味するマーカである。
【００５０】
また、本発明は、機能的ステップ（functional steps）、および／または非機能的動作を含む方法に関して説明されることも可能である。以下は、本発明を実施する際に実行されることが可能なステップおよび／または動作の説明である。通常、機能的ステップは、本発明を、達せられる結果の点で説明するのに対して、非機能的動作は、或る特定の結果を達するための、より具体的な動作を説明する。機能的ステップおよび／または非機能的動作は、或る特定の順序で説明される、または特許請求の範囲に記載されることが可能であるものの、本発明は、ステップおよび／または動作のいずれかの特定の順序または組み合わせに、必ずしも限定されない。さらに、特許請求の範囲の記述における、さらに、図２Ａおよび図２Ｂに関する流れ図の以下の説明におけるステップおよび／または動作の用法は、そのような用語の所望される特定の用法を示すように使用される。
【００５１】
図２Ａおよび図２Ｂは、本発明の様々な例示的な実施形態に関する流れ図を示す。図２Ａおよび図２Ｂの以下の説明は、図１Ａ〜図１Ｃからの対応する要素をときとして参照する。これらの図からの特定の要素に参照が行われることがあるが、そのような要素は、例示の目的に限って使用され、特に明記しない限り、本発明の範囲を限定する、または狭めることを意図するものではない。
【００５２】
図２Ａは、アイテム内の個々の各プロパティの変更を監視することなしに、変化しているアイテムの選定された部分だけを同期化することにより、クライアントとサーバとの間の同期化レートを高める方法２００に関する流れ図を示す。方法２００は、データ・アイテムを同期化する要求を受信する動作２０５を含む。例えば、サーバ１２５は、サーバ１２５とクライアント１０５との間の前回の同期化以来、変化しているデータ・アイテム１７０を同期化する同期化要求１３０を受信することが可能であり、データ・アイテム１７０は、改変されている、または、変更されている可能性がある、様々なプロパティを有する完全なメッセージを表す。例えば、データ・アイテム１７０は、電子メール・メッセージ、連絡、予約、カレンダ情報、タスク、付箋などであることが可能である。プロパティには、受信者、アドレス、本文、添付ファイル、フラグ、状態識別子、またはメッセージに関する他の任意の無数のプロパティが含まれることが可能である。また、データ・アイテム１７０を同期化するためのサーバ１２５とクライアント１０５との間のデータリンクは、無線接続であっても、有線接続であってもよく、クライアント１０５上の顧客は、サーバ１２５からダウンロードされたバイト数に基づき、データ・アイテム１７０の同期化に対する代金を支払うことにも留意されたい。
【００５３】
また、方法２００は、クライアントとサーバとの間のデータ転送の時間を短くするためのステップ２２５も含む。より具体的には、２２５のためのステップは、前回の同期化以来、データ・アイテムが変化していると決定する動作２１０を含む。例えば、サーバ１２５は、データ・アイテム１７０が、クライアント１０５とサーバ１２５との間の前回の同期化以来、変化していると決定する（変更ＩＤ比較器１５５、または本明細書で説明される他の方法を使用して）ことができる。前述したとおり、データ・アイテム１７０は、プロパティ・グループの各グループ内の１つまたは複数のプロパティがどのように関係するかに関する業界の通念（industry wisdom）、およびセマンティックスの理解に基づいて事前定義されたプロパティ・グループ１７０を含む。例えば、電子メール・メッセージにおいて、様々なプロパティ・グループには、本文プロパティ、受信者プロパティ・グループ、件名プロパティ・グループ、添付ファイル・プロパティ・グループ、優先フラグ・プロパティ・グループ、リード・ステータ・スプロパティ・グループ、雑多プロパティ・グループ、および／または以上の任意の組み合わせが含まれることが可能である。もちろん、他のプロパティ・グループが、定義されることも可能であり、拡張可能であり、差し込み可能であり、スケーラブルであり、したがって、プロパティ・グループ内のそれぞれのプロパティは、追加される、削除される、または、プロパティ・グループ内で再定義されることが可能であり、プロパティ・グループのそれぞれは、業界の通念（industry wisdom）の変化に基づき、追加される、削除される、または再定義されることが可能である。
【００５４】
また、２２５のステップは、前回の同期化以来、データ・アイテム内のいずれのプロパティ・グループが変化しているかを決定する動作２１５も含む。例えば、アイテム／プロパティ・グループ・モジュール１５５および変更ＩＤ比較器１５５を使用して、前回の同期化以来、いずれのプロパティ・グループ１８０が変化しているかを決定することが可能である。したがって、２２５のステップは、データ・アイテム全体をストリーミングすることなしに、変更されたグループもしくは複数のグループを同期化する動作２２０を含む。特に、同期化アイテム・ストリーム１０２は、同期化する際、クライアントとサーバとの間のデータ転送の時間を短くするために、データ・アイテム１７０全体をストリーミングすることなしに、前回の同期化以来、変化している様々なプロパティ・グループ１０４を含めて、クライアント１０５に、ストリーミングされることが可能である。
【００５５】
データ・アイテム１７０、ならびにプロパティ・グループ１８０の変化についての決定は、データ・アイテムおよびプロパティ・グループに関する変更識別子１４０、１４５、１７５、１８５に基づくことが可能である。さらに、データ・アイテム１７０とプロパティ・グループ１８０に関する変更識別子１４１、１４５、１７５、１８５は、同一であることも可能である。さらに、データ・アイテム１７０およびプロパティ・グループ１８０に関する変更識別子１４０、１４５、１７５、１８５は、英数字の番号、グローバル一意識別子、またはハッシュ値であることが可能である。
【００５６】
他の実施形態は、データ・アイテム１７０、およびデータ・アイテム１７０内のプロパティ・グループ１８０のマッピング１９０を提供する。このマッピングは、変化しているプロパティ・グループ１０４の同期化アイテム・ストリームを送信する前、送信している最中、または送信した後に、送信されることが可能である。いずれにしても、クライアント１０５は、マッピング１９０を使用して、プロパティ・グループ１８０の各グループに、いずれのプロパティが含まれているかを知ることができる。さらに、第２のデータ・アイテム１７０が、変化しているが、プロパティ・グループ１８０を有さないと決定されることが可能である。そのような場合、第２のデータ１７０アイテム全体が、クライアント１０５にストリーミングされることが可能である。
【００５７】
図２Ｂは、アイテム内の個々の各プロパティの変化を監視することなしに、クライアントとサーバとの間の同期化レートを高めるために、アイテムのいくつかの選定された部分への変更を追跡する方法２５０の流れ図を示す。方法２５０は、同期化目的で複数のデータ・アイテムを監視する動作２５５を含む。例えば、アイテム／プロパティ・グループ・モジュール１５０、またはその他のコンポーネントが、データ・アイテム１７０を監視することができ、ここで、データ・アイテム１７０は、改変される、または、変更されることが可能な複数のプロパティを有する完全なメッセージを表す。そのようなプロパティには、限定されないが、本明細書で前述したプロパティ、例えば、添付ファイル、フラグ、本文部分などが含まれる。
【００５８】
また、方法２５０は、クライアントとサーバとの間の前回の同期化以来、データ・アイテムが、変化していると決定する動作２６０も含む。例えば、変化識別子比較器１５５を使用して、サーバ１２５とクライアント１０５との間の前回の同期化以来、データ・アイテム１７０が変化していると決定することが可能である。前述したとおり、データ・アイテムは、プロパティ・グループの各グループ内のプロパティがどのように関係するかに関する業界の通念、およびセマンティックスの理解に基づいて事前定義された複数のプロパティ・グループ１８０を含む。データ・アイテムが変化しているとの決定に基づき、方法２５０は、アイテム変更識別子を更新する動作２６５をさらに含む。例えば、変更識別子ジェネレータ１６０を使用して、データ・アイテム１７０に関連付けられたアイテム変更ＩＤ１７５を更新することが可能であり、ＩＤ１７５は、クライアント１０５と同期化するために、データ・アイテム１７０が変化していることを識別するのに使用される。
【００５９】
同様に、方法２５０は、データ・アイテム内のいずれのプロパティ・グループが、変化しているかを決定する動作２７０を含む。つまり、アイテム／プロパティ・グループ・モジュール１５０内部の変更識別子比較器１５５を使用して、クライアント１０５とサーバ１２５との間の前回の同期化以来、いずれのプロパティ・グループ１８０が、変化しているかを決定することが可能である。プロパティ・グループが変化しているという決定に基づき、方法２５０は、プロパティ・グループ変更識別子を更新する動作２７５を含む。例えば、変更識別子ジェネレータ１６０を使用して、プロパティ・グループ１８０用の変更ＩＤ１８５を更新することが可能であり、ＩＤ１８５は、クライアント１０５とサーバ１２５との間のデータ転送の時間を短くするために、プロパティ・グループ１８０が変化していることを識別するのに使用されて、そのプロパティ・グループ１８０だけが、クライアント１０５と同期化されるようにする。また、上記の他の代替の実施形態も、方法２５０に利用可能であることにも留意されたい。
【００６０】
本発明は、本発明の趣旨または基本的な特徴を逸脱することなく、他の具体的な形態で実施されることが可能である。説明される実施形態は、すべての点で、単に例示的であり、制限的ではないものと考えられたい。したがって、本発明の範囲は、以上の説明によってではなく、添付の特許請求の範囲によって示される。特許請求の範囲の均等性の趣意および範囲に含まれるすべての変更が、特許請求の範囲に包含されるべきものとする。
【図１Ａ】
0005356561.tif 000002
【図１Ｂ】
0005356561.tif 000003
【図１Ｃ】
0005356561.tif 000004
【図２Ａ】
0005356561.tif 000005
【図２Ｂ】
0005356561.tif 000006
【図３】
0005356561.tif 000007