JP2004213670A - サーバとクライアントとの間の改良された同期方法 - Google Patents

サーバとクライアントとの間の改良された同期方法 Download PDF

Info

Publication number
JP2004213670A
JP2004213670A JP2004000704A JP2004000704A JP2004213670A JP 2004213670 A JP2004213670 A JP 2004213670A JP 2004000704 A JP2004000704 A JP 2004000704A JP 2004000704 A JP2004000704 A JP 2004000704A JP 2004213670 A JP2004213670 A JP 2004213670A
Authority
JP
Japan
Prior art keywords
email
component
message
request
client
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.)
Granted
Application number
JP2004000704A
Other languages
English (en)
Other versions
JP4633365B2 (ja
JP2004213670A5 (ja
Inventor
Joseph R Warren
アール.ウォーレン ジョーゼフ
Karl Froelich
フローリッヒ カール
Remi A Lemarchand
エー.ルマーチャンド レミー
Robert R Noviskey
アール.ノビツキー ロバート
Ronald E Gray
イー.グレイ ロナルド
Aaron Hartwell
ハートウェル アーロン
Brendan Power
パワー ブレンダン
Brent Curtis
カーティス ブレント
Nicole A Bonilla
エー.ボニーラ ニコル
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 JP2004213670A publication Critical patent/JP2004213670A/ja
Publication of JP2004213670A5 publication Critical patent/JP2004213670A5/ja
Application granted granted Critical
Publication of JP4633365B2 publication Critical patent/JP4633365B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F15/00Digital computers in general; Data processing equipment in general
    • G06F15/16Combinations of two or more digital computers each having at least an arithmetic unit, a program unit and a register, e.g. for a simultaneous processing of several programs
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/21Monitoring or handling of messages
    • H04L51/234Monitoring or handling of messages for tracking messages
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/42Mailbox-related aspects, e.g. synchronisation of mailboxes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L69/00Network arrangements, protocols or services independent of the application payload and not provided for in the other groups of this subclass
    • H04L69/08Protocols for interworking; Protocol conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L51/00User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
    • H04L51/06Message adaptation to terminal or network requirements
    • H04L51/066Format adaptation, e.g. format conversion or compression
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10TECHNICAL SUBJECTS COVERED BY FORMER USPC
    • Y10STECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y10S707/00Data processing: database and file management or data structures
    • Y10S707/99931Database or file accessing
    • Y10S707/99932Access augmentation or optimizing

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Computer Hardware Design (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Security & Cryptography (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Transfer Between Computers (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)

Abstract

【課題】 本発明は、改良されたクライアントとサーバ通信のためのシステムと方法、より詳細には、電子メール環境などにおける、クライアントとサーバとの間の通信に使用される改良されたプロトコルに関する。
【解決手段】 電子メールサーバは、電子メールメッセージのための最適なメッセージボディを提供し、要求されたプロパティ(群)がデータオブジェクト内に適切に定義されていない場合にはデータオブジェクト全体を転送し、ダウンロード進行の追跡時に使用する進捗データを提供し、データオブジェクトにエラーが有ればエラー情報を送信することができる。ある電子メールサーバの構成要素で発生した電子メール変更を、別の電子メールサーバの構成要素で最適化することができ、関連したデータストア中のフォルダに発生する変更のテーブルを維持し、テーブル中に発生した変更を登録された電子メールクライアントの構成要素に通知することができる。
【選択図】 図11B

Description

本発明は、一般的にはコンピュータネットワークに関し、より詳細には、電子メールアプリケーションのようなクライアントのアプリケーションとサーバのアプリケーションとの間の通信方法に関する。
電子メールは、通信のための重要な手段となっている。電子メールシステムは典型的には、サーバの構成要素(たとえばMicrosoft(登録商標) Exchange Server)とクライアントの構成要素(たとえばMicrosoft(登録商標) OutlookまたはMicrosoft(登録商標) Outlook Express)を含む。これらの構成要素は、典型的にはソフトウェアアプリケーションプログラムであり、計算装置(たとえばサーバ、PC、ラップトップパソコン、PDA(Personal Digital Assistance))の上で実行するように構成される。
電子メールシステムのクライアントの構成要素とサーバの構成要素のようなクライアントとサーバは、通信を容易にするため、多くの場合は通信プロトコルを決めている。このプロトコルは、通信中の各パーティに期待される動作、たとえば要求と応答の期待される順序、を定義する規則を定める。複雑なプロトコルは予期しない動作を処理する規則を有する。
クライアントとサーバの構成要素が改良されると、改良されたバージョンがエンドユーザに分配される。新しい構成要素の機能およびネットワーク機能を利用するため、新しい通信プロトコルが発明されることも多い。サーバの構成要素の設置台数が相当数に上る場合には、クライアントの構成要素は、プロトコルのセットを用いて、サーバの構成要素の選択された以前のバージョンと通信する能力を有するかもしれない。
新しいプロトコルが、全体を置き換えるのではなく、以前のバージョンのプロトコルに基礎を置く場合も時々発生する。このような場合には、新しいプロトコルは、以前のバージョンのプロトコルを装うために、機能を有効または無効にできるプロトコル要素により構成されるかもしれない。同様に、クライアントの構成要素の設置台数が相当数に上る場合には、サーバの構成要素は、プロトコルを用いて、クライアントの構成要素の選択された以前のバージョンと通信する能力を有するかもしれない。
本発明は、このようなシステムと方法を提供する。追加的な発明の特徴とともに、本発明のこれらおよびその他の利点は、本明細書に提供される本発明の説明により明確になるであろう。
本発明は、改良されたクライアントおよびサーバの通信のためのシステムと方法を提供する。より詳細には、本発明は、クライアントとサーバとの間の通信に用いられることができる改良されたプロトコルに関する。本発明は、電子メールサーバの環境に対して特に関連を有するが、本明細書に述べられる特徴は他のクライアント−サーバネットワークにおいても使用することができる。
本発明の態様によると、電子メールの変更は、たとえその電子メールの変更が別の電子メールサーバで起こっても、電子メールサーバの構成要素において最適化されることができる。第1の電子メールサーバの構成要素は、電子メールクライアントの構成要素によって閲覧された電子メールメッセージの変更に関して、連続しない第1のデータを保持する。第2の電子メールサーバの構成要素は、電子メールクライアントの構成要素によって閲覧された電子メールメッセージの変更に関して、第2のデータを保持する。そして、第2の電子メールサーバの構成要素は、連続しない第1のデータを最適化する。
本発明の別の態様によると、電子メールサーバの構成要素は、関連したデータストアのフォルダに生じる変更のテーブルを保持することができ、そのテーブル内で生じる変更を加えられた(subscribed)電子メールクライアントの構成要素へ通知することができる。テーブルは、電子メールデータオブジェクトを含む複数のフォルダに対してなされる変更に関係して保持される。電子メールクライアントの構成要素は、そのテーブルに加わり、そのテーブル内の変更に応じて、通知がその電子メールクライアントの構成要素へ送信される。
本発明のさらに別の態様によると、電子メールサーバの構成要素は、テーブルに変更をもたらした電子メールクライアントの構成要素への通知を抑制することができる。電子メールサーバの構成要素は、変更に応じて第1の電子メールクライアントの構成要素へ通知を送信しない要求の指示を受信し、変更および指示に応じて第1の電子メールクライアントの構成要素の代わりにテーブル内の全てのサブスクライバへその変更に関連する通知を送信する。
本発明の種々の実施例の説明に進む前に、本発明の種々の実施形態を実施することができるコンピュータおよびネットワークの環境の説明を行う。必須ではないが、本発明は、コンピュータで実行されるプログラムにより実施することができる。一般に、プログラムはルーチン、オブジェクト、コンポーネント、データ構造その他を含み、特定のタスクを実行し、または特定の抽象データ型を実装する。ここで用いられる用語「プログラム」は、単一のプログラムモジュールまたは協働する複数のプログラムモジュールを包含する。ここで用いられる用語「コンピュータ」は、一つまたは複数のプログラムを電子的に実行する、パーソナルコンピュータ(PC)、携帯型装置、マルチプロセッサシステム、マイクロプロセッサ搭載のプログラム可能な電子製品、ネットワークPC、ミニコンピュータ、タブレットPC、メインフレームコンピュータ、マイクロプロセッサやマイクロコントローラを持つ電化製品、ルータ、ゲートウェイ、ハブ、その他の任意の装置を含む。本発明を分散処理環境においても採用することができ、タスクは通信ネットワークを介してリンクされたリモート処理装置によって処理される。分散処理環境においては、プログラムはローカルとリモートの両方の記憶装置に配置される場合がある。
本発明を用いることができるネットワーク化された環境の一例を、図1を参照して説明する。例示的ネットワークは雲状に表現されたネットワーク11を介して互いに通信するいくつかのコンピュータ10を含む。ネットワーク11はルータ、ゲートウェイ、ハブ等の多数の良く知られた構成要素を含み、コンピュータ10は有線および/または無線媒体を介して通信することを可能とする。ネットワーク11上で互いに影響し合うとき、一つまたは複数のコンピュータは、クライアント、サーバまたは他のコンピュータに関するピアとして動作することができる。したがって、本明細書に含まれる特定の例は、これらすべてのコンピュータの類型を参照しないが、本発明の種々の実施形態は、クライアント、サーバ、ピアまたはそれらの組合せで実施することができる。
図2を参照すると、ここで説明される本発明のすべてまたは部分を実施することができるコンピュータの基本構成の一例が示されている。その最も基本的な構成において、コンピュータ10は典型的には、少なくとも一つの処理ユニット14とメモリ16を含む。処理ユニット14は、本発明の種々の実施形態にしたがってタスクを実行するため命令を実行する。これらのタスクを実行する際に、処理ユニット14は、電子信号をコンピュータ10およびコンピュータ10の外部の装置に伝送し、ある結果を生じさせる。コンピュータ10の厳密な構成および類型によって、メモリ16は、揮発性(たとえばRAM(Random Access Memory))、不揮発性(たとえばROM(Read Only Memory)またはフラッシュメモリ)または両者のある組合せとなる。この最も基本的な構成は、図2では線で囲まれた18に示される。また加えて、コンピュータは追加的特徴/機能を有することがある。コンピュータ10は、たとえば、限定するものではないが、磁気または光ディスク若しくはテープを含む付加的な記憶装置(取り外し可能な記憶装置201や取り外し不可能な記憶装置202の)を含むことがある。コンピュータの記憶媒体は、揮発性または不揮発性、取り外し可能または取り外し不可能な媒体を含み、コンピュータで実行可能な命令、データ構造、プログラムモジュールまたその他のデータを含む情報の蓄積のための任意の方法または技術により実現されている。コンピュータの記憶媒体は、限定するものではないが、RAM、ROM、EEPROM(Electronically Erasable and Programmable Read Only Memory)、フラッシュメモリ、CD−ROM(Compact Disk Read Only Memory)、DVD(digital versatile disk)またはその他の光学式記憶装置、磁気カセット、磁気テープ、磁気ディスク記憶装置またはその他の磁気記憶装置もしくは任意の他の媒体を含み、所望の情報を格納し、コンピュータ10によりアクセスすることができる。これらのコンピュータの記憶装置媒体のいずれをもコンピュータ10の記憶装置の一部とすることができる。
また、コンピュータ10は、好ましくは他の装置との通信を可能とする通信接続装置205を含む。通信接続装置は通信媒体の一例である。通信媒体は、典型的にはコンピュータ読み取り可能な命令、データ構造、プログラムモジュールまたその他のデータを搬送波または他の伝送機構のような変調データの信号中に具現化し、任意の情報伝達媒体を含む。限定するものでないが例として、用語「通信媒体」は、有線ネットワークや直接配線接続のような有線媒体と、音響、RF(Radio Frequency)、赤外線および他の無線媒体のような無線媒体を含む。ここで用いられる用語「コンピュータ読み取り可能な記録媒体」はコンピュータの記憶媒体と通信媒体の両方を含む。
またコンピュータ10は、キーボード、マウス、ペン、音声入力装置、タッチ式入力装置などのような入力装置204を含む。また表示装置20、スピーカ、プリンタなどのような出力装置203も含まれる。これらの装置のすべては本技術分野でよく知られており、ここで詳細に説明するまでもない。
本発明は、改良されたクライアントおよびサーバの通信のためのシステムと方法に関し、より詳細には、クライアントとサーバとの間の通信に用いられることができる改良されたプロトコルに関する。本発明は、電子メールサーバの環境に特別な関連を有するが、ここに述べられる特徴は他のクライアント−サーバのネットワークにおいても使用することができる。しかしながら、説明を容易にするために、本発明はクライアント−サーバの電子メールの環境を参照して説明される。
本発明は、クライアントのアプリケーションまたは構成要素が複数のバージョン、および/またはサーバのアプリケーションまたは構成要素が複数のバージョンであるクライアント−サーバの環境で実施することができる。この目的のため、図3は、ネットワークの電子メール環境においてクライアントとサーバの構成要素の両方が多様なバージョンである場合を示す図である。一般には、クライアントとサーバの構成要素は、以前のバージョンと互換性を有するように構成される。すなわち、クライアントの構成要素は、サーバの構成要素の新しいバージョンおよび前のバージョンと通信することができ、逆もまた同様である。プロトコルのセットは、各々が自己完結型である幾つかの異なるプロトコルを構成することができる。あるいはまた、プロトコルの構成要素のセットが利用可能であり、特定の構成要素をそのプロトコルのセット内で特定のプロトコルを構成するために用いることができる。
とにかく、図3に示すネットワークの電子メールの環境において、最新のバージョンの電子メールクライアントの構成要素303は、プロトコル307を用いて最新のバージョンの電子メールサーバの構成要素306と最も良く通信できる。しかしながら、最新のバージョンの電子メールサーバの構成要素306は、プロトコルのセット内の他のプロトコル(たとえば図3のプロトコル308や309)を用いて選択された以前のバージョンの電子メールクライアントの構成要素、たとえば電子メールクライアントの構成要素302や電子メールクライアントの構成要素301とも、通信することができる。電子メールクライアントの構成要素303はまた、選択された以前のバージョンの電子メールサーバの構成要素と、プロトコル310や311のようなプロトコルを用いて、電子メールサーバの構成要素305や電子メールサーバの構成要素304と、通信することができる。
ここで用いられるように、一般的に、本発明のプロトコルを説明する目的のため、「最新の」電子メール(サーバまたはクライアント)の構成要素、または電子メール(サーバまたはクライアント)の構成要素の最新のバージョンは、説明される新しい機能または機能群を認識し、利用し、実行し、および/またはそれら機能に基づいて動作することができるサーバまたはクライアントの構成要素である。これらの用語は本明細書中で、本発明のプロトコルの種々の態様を認識するクライアントとサーバの構成要素を説明するために用いられるが、説明される特定の態様のみを、あるいは説明される態様の一つ以上を認識する構成要素を含む。同様に、「以前の」電子メールの構成要素、または電子メールの構成要素の以前のバージョンは、本発明のプロトコルの態様を認識せず、それに基づいて動作することができない構成要素である。
プロトコルのネゴシエーション手順(procedure)を、クライアントとサーバ(たとえば、最新のバージョンの電子メールサーバの構成要素306および最新のバージョンの電子メールクライアントの構成要素303)との間のプロトコルを確立するためにしばしば用いる。このようなプロトコルのネゴシエーション手順は公知ではあるが、電子メールクライアントの構成要素401(図4)と電子メールサーバの構成要素402(同じく図4)との間のプロトコルのネゴシエーション手順の簡単な説明を、読む者の便のために提供する。電子メールクライアントの構成要素401と電子メールサーバの構成要素402との間の通信のセッションのはじめに、電子メールクライアントの構成要素401は、電子メールサーバの構成要素402へ、たとえばクライアントの構成要素バージョンスタンプの形態で、クライアントのバージョン情報を含むメッセージ403を送信する。電子メールサーバの構成要素402は、たとえばサーバの構成要素バージョンスタンプの形態で、サーバのバージョン情報を含むメッセージ404によりメッセージ403に対して応答する。
クライアントとサーバのバージョン情報を、電子メールクライアントの構成要素401と電子メールサーバの構成要素402との間の通信の確立を試みるために多様な方法で用いることができる。例えば、バージョン情報を使用して、通信を継続するための適したプロトコルを選択し、あるいはさらに通信が可能か否かを決定することができる。プロトコルを確立する際に、バージョン情報を使用して、例えば、特定の利用可能なプロトコルの態様または構成要素を動作可能または動作不可能にすることができる。
電子メールサーバの構成要素は、多数の電子メールクライアントの構成要素からの要求を並行して受信し処理することができる。単一のクライアントが示される場合には、明示的に記述が他にない限り、単に図と付随する説明を簡略にするためである。
本発明の電子メールネットワークはネットワークにおけるクライアントおよびサーバの構成要素間でクエリおよびデータを渡すにため、要求と応答の交換を利用する。実際には、プロトコルの性能は、電子メールネットワークにおけるクライアントとサーバとの間の通信を実現するために用いた潜在する通信ネットワークの伝送機構により影響される。たとえば、潜在する通信ネットワークの伝達機構として遠隔手続き読み出し(RPC)を用いる電子メールネットワークにおいて、よりサイズの大きな(たとえば32KBの)単一のRPCを使用する方が、より小さなサイズ(たとえば2KB)のいくつかのRPCを使用するよりも、はるかに効率的かもしれない。このような電子メールネットワークにおける性能を改善するための既知の方法の1つは、複数の要求や応答をバッファして、単一のRPCとして送信することである。
一例として図5は、電子メールクライアントの構成要素501と電子メールサーバの構成要素502との間の要求と応答のやり取りを示す。電子メールクライアントの構成要素501と電子メールサーバの構成要素502は、各々決まったサイズの通信バッファ503、504、505および506を有する。バッファ503、504、505および506は、一次的にデータを保持するためにメモリ上に確保された領域である。電子メールクライアントの構成要素501は、バッファ503の内容をバッファ504へ転送する前に、バッファ503に一つまたは複数の小要求(sub request)あるいは遠隔操作(ROPs:remote operations)で満たすことで、リクエスト−応答のサイクルを開始する。
バッファ504に受信された後、各ROPは電子メールサーバの構成要素502によって順番に処理され、対応する結果がバッファ505に書き込まれる。各ROPは何らかの結果を生み出す。その結果は、電子メールクライアントの構成要素501により要求されたデータ、たとえば特定の電子メールメッセージのセットを含むことができる。電子メールサーバの構成要素502はバッファ505を監視し、ほぼ一杯(たとえば残り8KB以下)になると、電子メールサーバの構成要素502は未処理のROPのいずれをもバッファ505の末尾に書き込み、そしてバッファ505の内容をバッファ506へ送信する。電子メールクライアントの構成要素501は、次いで、バッファ503が再び一杯になったときに電子メールサーバの構成要素502に再依頼するために未処理のROPをバッファ503に書き込み、新たな要求―応答サイクルを開始する。
典型的には応答のサイズは平均では要求のサイズより大きい。このため、応答用のバッファ505および506のサイズは典型的には要求用のバッファ503および504のサイズより大きく構成される。本発明の一実施形態では、応答用のバッファ505および506の最適サイズは96KBとなるように決められ、要求用のバッファ503および504の32KBのサイズに対して3対1の比率である。一実施形態では、電子メールクライアントの構成要素が503、504、505および506の任意のバッファのサイズを設定することができる。
例えば図5に示す電子メールネットワークでは、バッファを用いる一部の電子メールネットワークは、電子メールクライアントの構成要素と電子メールサーバの構成要素との間で高速転送モードを使用する。高速転送モードは、ROPのように、クライアントによる要求を含み、結果としてサーバでの高速転送のデータソースの初期化を伴う要求と、結果として高速転送のデータソースからクライアントへのデータの効率的転送をもたらす要求との2種類に分類される。高速転送のデータソースは、たとえばデータベース表である。高速転送のデータソースは、すぐに使える一次的なデータストアとして働き、後のデータの要求が他の方法に比較してより少ない遅延で提供されることを可能にする。時として、第2の種類の高速転送モードの要求を用いて、明示的に応答のサイズを特定することによりデータの効率的転送を実現しようとする、たとえば応答のサイズをクライアント受信バッファ全体のサイズに設定し、応答のオーバーヘッドを少なくする。
図6Aは少なくとも二つの要求―応答のサイクルを有する高速転送操作を示す。第1の要求601において、ROP(たとえばFXPrepare)はサーバ502の高速転送のデータソースを初期化する。サーバにおいては、FXPrepareのみが処理され(すなわち高速転送のデータソースが初期化され)、その結果が第1の応答602で返信される。第2の要求603において、ROP(たとえばFXGetBuffer)は、サーバが高速転送のデータソースからバッファ505に書き込むことを要求する。サーバは高速転送のデータソースをバッファへ移し、結果を第2の応答604で返信する。電子メールサーバの構成要素の出力バッファ505が、高速転送のデータソースが空になる前に一杯になると、追加のFXGetBufferのROPが要求されることがある。
図6Bは単一の要求―応答サイクルのみを有する高速転送操作を示す。第1の要求605において、FXPrepareとFXGetBufferの両方が電子メールサーバの構成要素502によって処理され、両操作の結果が第1の応答606で返信される。電子メールサーバの構成要素502において、FXPrepareの結果はFXGetBufferが利用できる。なぜならば、各バッファ503、504、505および506の共有データテーブルとして明示的に定義されているからである。より効率的なデータ転送をもたらすことから、要求―応答のサイクルの数を減らすことが望まれる。2サイクル以上の要求―応答サイクルを有する高速転送操作は、バッファ505が一杯でFXGetBufferの結果を保持できない場合に発生するであろう。
図6Aおよび6Bならびに本明細書中の同様な図におけるROPは、特に言及しない限り、ROPの連続によって実際に実施される場合の概略であると理解されたい。
典型的には、ROPの結果のサイズはROPの要求のサイズとは異なる。ROPの結果のサイズを予測することは常に可能なわけではない。ROPの結果のサイズを削減するためにデータ圧縮技術が用いられると、ROPの結果のサイズを予測することはさらに難しい。ROPの結果のサイズを予測することができないということは、たとえば全新規メッセージを単一の要求―応答サイクルでクライアントにダウンロードしようとするような、特定のクライアントの操作を完了するために要求される要求―応答サイクルの数を最小にするための、プロトコルのマニュアルによる調整を防ぐことができる。プロトコルのマニュアルによる調整は、プロトコルの要求、応答および/またはROPの順序やサイズのマニュアルでの設定が含まれる。
本発明の一つの態様にしたがえば、キーとなるROP(たとえばFXGetBuffer)がその結果のサイズを予測するための要求に囚われないと指定することで、要求―応答サイクルの数は自動的に最小化される。その代わりに、そのようなROPは、電子メールサーバの構成要素502により、バッファ505(バッファ506も同様)の限界に到達するまで処理される。
一例として、複数のバージョンの電子メールサーバの構成要素を含む環境においては、以前のバージョンのサーバの構成要素と新しいバージョンのサーバの構成要素とに対し、別個のROPが定義されることがある。新しいバージョンはその結果のサイズを予測するための要求に囚われない。これらのROPの特徴は次の表に明らかにされる。
Figure 2004213670
以前のバージョンのサーバの構成要素のためのROPは、その構成において既存の従来技術のROPと同様である。すなわち、ROPは、出力バッファ(たとえば送信バッファ505)において、応答を保持するために確保されねばならないサイズを予測し要求する。一方、サーバの構成要素の最新バージョンの出力バッファに対して要求されるサイズは、予測されず、代わりに以前のバージョンのサーバの構成要素により予期された最大を超える値、たとえば32KBより大きな値に設定される。出力バッファのサイズがサーバの構成要素によって予期された値を超えて定義されるという事実は、サーバの構成要素が新しいサイズ制限のパラメータを探すようにする合図となり、新しいサイズが、たとえばサーバの構成要素の出力バッファの書き込みとなる場合がある。これらの特徴により、ROPを処理する電子メールサーバの構成要素の複雑性を僅かに増加するのみで、要求―応答サイクルの数は自動的に最小化される。
上記表および本明細書中の同様な表に示されるパラメータの順序は、特に相反する明示的記述を伴わない限り、たとえば、ネットワークを介して送信され、もしくは電子メールクライアントの構成要素または電子メールサーバの構成要素のいずれのメモリに格納されるパラメータの順序とは必ずしも関連しないことに注意すべきである。さらに、分かり易くするため、変更のないパラメータは省略しているものがある。
電子メールネットワークにおいて、プロトコルの一つの典型的な役割は、電子メールクライアントの構成要素と電子メールサーバの構成要素との間で、データオブジェクト、たとえば電子メールメッセージの転送を実現することである。このようなデータオブジェクトの更なる例は、電子メールメッセージおよび他のデータオブジェクトを含む電子メールフォルダ、および、たとえば電子メールを処理するための規則を含み、またはフォルダに含まれるデータオブジェクトを如何に表示するかを定義する、フォルダ関連情報(FAI) データオブジェクトを含む。データオブジェクトは電子メールクライアントの構成要素にとっては捉えにくい可能性がある。すなわち電子メールクライアントの構成要素はデータオブジェクトの内容を解釈する何の手段も持たないことがある。一方、データオブジェクトは名前付けされたプロパティから構成される場合があり、たとえば電子メールメッセージは「to」、「from」、「subject」、「importance」、「body1」、「body2」、「body3」、「attachment1」、「attachment2」などの名前付けされたプロパティを含む。
データオブジェクトが不明瞭な電子メールネットワークと比べて、データオブジェクトが名前付けされたプロパティから構成される電子メールネットワークの一つの利点は、データオブジェクトの一部のみを転送するというプロトコルの能力ゆえに、プロトコル性能を改善できる可能性があるということである。名前付けされたプロパティを有することは、データオブジェクト全体を送信することなく、データオブジェクトの特定のプロパティのみを送信することを可能にする。
たとえば、電子メールメッセージはヘッダプロパティのセットとボディプロパティのセットにより構成される場合がある。電子メールクライアントの構成要素の希望が、ヘッダプロパティを先に転送し、その後にボディプロパティを転送するかまたはまったく転送しないというようなものとすることができる。この機能は、すべてのメッセージの全体をダウンロードされる前に、ユーザがいくつかのメッセージのヘッダ情報を見ることを可能にする。この機能を用いることにより、帯域幅利用についてのよりきめ細かな制御をクライアントの構成要素によって実現することができ、このことにより確実にプロトコル性能が改善されるであろう。加えて、クライアントの構成要素は、この機能を用いることにより(たとえばボディは選択されたヘッダについてのみダウンロードされるようにできる)結果として帯域幅の使用を減らすことができ、これは狭帯域幅の環境において特に望ましい。
サーバの構成要素がボディとヘッダのプロパティを二つの個別の要求―応答サイクル(すなわち、ヘッダとボディの各々に一つずつ)で送信するように設定していると、プロトコルの性能は必ずしも向上しない。たとえば、電子メールクライアントの構成要素の希望がヘッダとボディ両方のプロパティを同時に要求するようなものである場合には、単一の要求―応答サイクルがヘッダとボディの両方を読み出せる状況に対して、プロトコルの性能は低下する可能性がある。このように、単にデータオブジェクトが名前付けされたプロパティから構成されるようにするだけで、改善されたプロトコルの性能に自動的に結びつくわけではない。改善されたプロトコル性能の達成は、データオブジェクトを構成するプロパティの選択と、それらがプロトコルにより如何に用いられるかに依存する。その選択は、最新のバージョンと以前のバージョンの電子メールクライアントの構成要素の要件および最新のバージョンと以前のバージョンの電子メールサーバの構成要素の要件を含む要因の数に依存する場合がある。電子メールクライアントの構成要素の要件の例は、異なる情報を表示する際の異なる緊急性のレベルを満足させること、また電子メールクライアントの構成要素のユーザによってセットされた趣向が含まれる。電子メールサーバの構成要素の要件の例は、データの効率的な格納と読み出し、およびプロトコルの要求の効率的な処理が含まれる。
通常の従来技術による電子メール環境は、名前付けされたプロパティで構成されることができるデータオブジェクト、たとえば名前付けされたプロパティからなるヘッダのセットおよびボディのセットを含むことができる電子メールメッセージを用い、二つのセットがそれぞれ個別に要求されおよび/または処理されることができる。別の従来技術による例は、名前付けされたプロパティよりなるボディのセットが、たとえばプレーンテキスト、HTML(hypertext mark-up language)、RTF(rich text format)などのような複数の電子メールメッセージフォーマットの複数のバージョンの電子メールメッセージのボディを含むような電子メールメッセージの場合である。この状況では、従来技術による電子メールサーバの構成要素は、電子メールメッセージのボディに対するプロトコルの要求に対して多くの方法で応答することができる。最も複雑性の低い応答方法は、その電子メールメッセージのボディのすべてのバージョンを送信することであろうが、この方法は結果として帯域幅の利用を増加させる。
図7Aは、この状況で以前の(従来技術の)バージョンの電子メールサーバの構成要素が応答するために使用する手順の一部を示す。ステップ701で電子メールサーバの構成要素は各電子メールメッセージのボディのフォーマットを調査する。フォーマットの一つが予め定められた標準のフォーマット(たとえばRTF)であれば、手順はステップ703に移動し、標準フォーマットの電子メールメッセージのボディを要求している電子メールクライアントの構成要素に送信する。いずれのフォーマットも予め定められた標準のフォーマットでなかった場合は、ステップ701はステップ702へ分岐し、電子メールメッセージのボディバージョンのひとつが標準フォーマットに変換される。図7Aにより示される部分処理手順(subprocedure)は、単一のバージョンのみの電子メールメッセージのボディしかなく、電子メールメッセージのボディがプロトコルにより要求されている標準フォーマットではない場合にも用いることができる。
図7Bは、本発明の態様にしたがって、最新のバージョンの電子メールサーバの構成要素によって用いられる手順の一部を示す。ステップ704で、プロトコルは、電子メールサーバの構成要素により用いられるこの部分処理手順によってBEST_BODYフラグの調査を要求する。この例のフラグおよび本明細書中で用いられる他のフラグは、電子メールサーバの構成要素に向けられ、電子メールクライアントの構成要素が最新のバージョンでありフラグと関連付けられた機能が実行されることを要求していることを示す。他の指示を用いることもできる。たとえば、この機能は、最新のバージョンの電子メールクライアントの構成要素が検出された場合にデフォルトで実行されるようにしてもよい。
いずれにせよ、BEST_BODYフラグが見付からなければ、次にステップ704はステップ701に分岐し、図7Aを参照して説明したように処理される。
フラグが見付かれば、手続きは、ステップ705に移動し、最適な電子メールメッセージのボディが、要求している電子メールクライアントの構成要素に送信されるために選択される。要求された電子メールメッセージと関連付けられた電子メールメッセージのボディが一つしかない場合は、それが最適なものである。いくつかの電子メールメッセージのボディが利用できる場合、例えば異なるフォーマットで、電子メールサーバの構成要素は、たとえば予め定められた電子メールメッセージのボディフォーマット(たとえば、RTF、HTML、プレーンテキスト)の優先順位にしたがい、それらの中から最適なものを選択する。次いで、処理はステップ703に移動し、選択された電子メールメッセージのボディが電子メールクライアントの構成要素へ送信される。この実施例において、電子メールクライアントの構成要素は複数の電子メールメッセージのボディフォーマットを表示することができ、したがって電子メールサーバの構成要素が電子メールメッセージのボディを標準フォーマットに変換する要求から開放される。さらに、電子メールクライアントの構成要素は、希望ならば、最適な電子メールメッセージのボディを異なるフォーマットに変換することもできる。
電子メールサーバの構成要素が電子メールメッセージのボディを変換するタスクを離れているため、本発明は性能の改善をもたらしたことになる。さらに、最新のバージョンの電子メールサーバの構成要素は、中程度の複雑性の増加のみで、以前のバージョンの電子メールクライアントの構成要素からのプロトコルの要求に応答することができる。
ROPを用いて電子メールサーバの構成要素と電子メールクライアントの構成要素との間で電子メールフォルダの複製(replication)を得ることができる。フォルダを同期する要求は、たとえば、SynchFolderROPにより行われることができる。電子メールクライアントの構成要素が標準外の電子メールメッセージのボディフォーマットを表示することができる場合は、SynchFolderROPの中でBEST_BODYフラグをセットし、電子メールサーバの構成要素に電子メールメッセージのボディを標準フォーマットで返送するよう要求するのでなく、電子メールサーバの構成要素が最適なフォーマットを使用可能な電子メールメッセージのボディの中から選択するよう指示する。電子メールサーバの構成要素は、中程度の複雑性の増加のみで、BEST_BODYフラグを伴うROPおよびBEST_BODYフラグを伴わないROPの両方を適切に処理することができるようになる。以前のバージョンおよび最新のバージョンのサーバと通信するためのROPは、たとえば、次の表に列挙される特徴を含む。
Figure 2004213670
図8A−8Cは、電子メールサーバの構成要素と電子メールクライアントの構成要素との間で電子メールメッセージのセットを転送する既存のいくつかの異なるモードを示す。各モードについて、各電子メールメッセージはヘッダのセットおよびボディのセットを含む名前付けされたプロパティを有し、いくつかの電子メールメッセージはフォルダに格納されている。図8Aは全アイテム転送モードを示す。図では、まず第1の電子メールメッセージのヘッダ801が送信され、次に第2の電子メールメッセージのヘッダ803の前に第1の電子メールメッセージのボディ802、次いで、第2の電子メールメッセージのボディ804など、電子メールメッセージのセットが転送されるまでを示す。図8Bはヘッダ先送り転送モードを示す。このモードでは、第1の電子メールメッセージのヘッダ805が転送され、次いで、第2の電子メールメッセージのヘッダ806など、すべての電子メールメッセージのヘッダが転送され、その後にはじめて第1の電子メールメッセージのボディ807が転送され、次いで第2の電子メールメッセージのボディ808など、電子メールメッセージのセットが転送されるまでを示す。図8Cは、ヘッダのみ転送モードを示す。名称が示唆するように、電子メールメッセージのヘッダ809のみが電子メールメッセージのセットの転送要求に対する応答として転送される。電子メールメッセージのボディ810は、さらに明示的な要求があればそれに対する応答としてのみ転送される。これらのモードの何れにおいても、転送の順序は、より高い優先順位の電子メールクライアントの構成要素の要求、たとえば特定の電子メールメッセージのボディの要求によって、一時的に割り込まれるようにできる。
電子メールフォルダは、電子メールメッセージのセットの転送要求のターゲットの一例である。しかしながら、電子メールフォルダは、電子メールメッセージのほかにデータオブジェクトを含む場合がある。上記したように、転送モードは、ヘッダ先送りやヘッダみの転送モードのように、電子メールメッセージのヘッダおよび電子メールメッセージのボディを参照して定義されることが多い。このような転送モードでは、名前付けされたプロパティよりなるヘッダのセットや名前付けされたプロパティよりなるボディのセットが適切に定義されていないデータオブジェクトを転送しようと試みると、結果としてプロトコル障害をもたらす場合が多い。本発明の一態様は、名前付けされたプロパティよりなるヘッダおよびボディのセットが適切に定義されていないデータオブジェクトを、部分でなく常に全体を転送されるよう規定することにより、このような状態を回避する。この実施形態は図8Dで例示される。この例では、電子メールサーバの構成要素と電子メールクライアントの構成要素との間の転送はヘッダのみ転送モードで行われている。したがって、第1の電子メールメッセージのヘッダ811が転送され、それからデータオブジェクト812が次の転送の候補になる。名前付けされたプロパティよりなるヘッダのセットが、データオブジェクト812について、FAIのように適切に定義されていない場合には、データオブジェク全体が転送される。次の転送の候補が適切に定義された名前付けされたプロパティよりなるヘッダのセットを有する(すなわち、候補となるデータオブジェクが所有する名前付けされたプロパティのすべてが、名前付けされたプロパティよりなるヘッダのセットに属していると、電子メールクライアントの構成要素によって明示的に定義されている)場合は、電子メールメッセージのヘッダ813のみが転送される。
本発明の態様を実施する一つの方法の例は、IGNORE_MODE_ON_FAIのように、上記したSynchFolderROPのような同期ROPに含まれるであろう、フラグを使用することである。電子メールサーバの構成要素は、中程度の複雑性の増加のみにより、IGNORE_MODE_ON_FAIフラグを伴う、およびIGNORE_MODE_ON_FAIフラグを伴わない両方のROPを適切に処理することができる。ROPは、電子メールサーバの構成要素と電子メールクライアントの構成要素との間で電子メールフォルダの複製を得るために、次の表に明らかにされる特徴を含む。
Figure 2004213670
電子メールメッセージは、典型的には1または複数の電子メールネットワークユーザに向けられる。電子メールメッセージは、それが電子メールサーバの構成要素によって格納のために受け付けられた場合に、配達されたと見なされることがある。電子メールネットワークはいくつかの電子メールサーバの構成要素を有することがある。典型的には電子メールネットのワークプロトコルは、電子メールネットワークユーザが新規メッセージについて調べなければならない電子メールサーバの構成要素の数を制限するための、ある仕組みを有する。よくある例はホームサーバの仕組みであり、そこでは特定の電子メールネットワークユーザに向けられた電子メールメッセージは、そのユーザのホームサーバと呼ばれる一つの特定の電子メールサーバの構成要素によってのみ受け付けられるよう規定される。このような場合、電子メールクライアントの構成要素は、たとえば新規電子メールメッセージの有無のチェックまたは新規電子メールメッセージ通知の登録の際に、そのホームサーバのみを考慮するように設定される。
図9は、単純なホームサーバの仕組み例であっても、複雑な関係を有するであろうことを示す。図9に示す例では、最初に特定の電子メールサーバの構成要素901が特定の電子メールネットワークユーザのためのホームサーバとして指定される。時間の経過につれ、そのユーザに対して指定されるホームサーバは、典型的には管理上の理由により、異なる電子メールサーバの構成要素903、そして905へ遷移する。電子メールサーバの構成要素901、903、905は、たとえば、物理的に異なりまたは論理的に異なり、もしくはバージョンが異なるかもしれない。電子メールクライアントの構成要素902は、時刻Tから時刻Tまでの間に電子メールサーバの構成要素901とのみ通信し、次いで、電子メールクライアントの構成要素904は、時刻Tまで、電子メールサーバの構成要素903とのみ通信し、そして次に電子メールクライアントの構成要素906は、電子メールサーバの構成要素905とのみ通信することになる。電子メールクライアントの構成要素902、904、906は同一でも別でもよい。電子メールサーバの構成要素901と903は時間Tの以降に存続してもしなくてもよい。これらの複雑な関係は次に説明される電子メールメッセージのストアの複製に特に密接に関連する。
電子メールメッセージは、電子メールサーバの構成要素により明示的な電子メールメッセージストアに格納され、たとえば公知のデータベース技術を用いて実行されることができる。電子メールサーバの構成要素は一つまたは複数のこのようなメッセージストアを有することができる。電子メールネットワークユーザは、ホームメッセージストアを有することができる。ホームメッセージストアを変更することは、ホームサーバを変更することについて説明したのと同様の効果を持つであろう。
いくつかの電子メールネットワークプロトコルは、電子メールメッセージストアの一部を電子メールクライアントの構成要素のローカルの記憶装置に複製する能力を含む。リモートの電子メールメッセージストアの一部をローカルの電子メール記憶装置に複製することは、たとえば電子メールネットワークユーザがそれらの閲覧を明示的に要求する前に、すべての新規電子メールメッセージをローカルの電子メール記憶設備に複製することで、プロトコル性能および/または体感のプロトコル性能が改善する。またこのような複製は、追加的な電子メールクライアントの構成要素の機能を提供することにもなり、たとえば、電子メールクライアントの構成要素の電子メールネットワークユーザが、ネットワークの接続が中断されている間に、電子メールメッセージを閲覧することを可能にする。
電子メールネットワーク環境においては、単純な複製はすぐに非効率になるであろう。たとえば、電子メールサーバの構成要素が、特定の電子メールネットワークユーザと関連付けされた一つの電子メールメッセージを有し、そのメッセージがそのネットワークユーザについてのクライアントの構成要素で既に複製されており、かつその電子メールネットワークユーザへの新規電子メールメッセージが到着すると、そのときには、単純な複製要求に対する応答として、二つの電子メールメッセージを送信しなければならない必要があることになる。この二つの電子メールメッセージの複製の後にもう一つの新規電子メールメッセージが到着すると、そのときには、単純な複製要求に対する応答として、今度は三つの電子メールメッセージを送信しなければならない必要があることになり、それが続くことになる。一部の電子メールネットワークプロトコルは、この問題を軽減するために電子メールメッセージストアの増加分の複製を提供している。増加分を複製では、電子メールメッセージストアに対する、前回の正常な増加分の複製の後に発生した変更のみが、複製要求に対する応答として必ず送信されることになる。たとえば、最後の正常な増加分複製以後の変更が、一つの新規電子メールメッセージの到着のみであれば、複製要求に対する応答としてその新規電子メールメッセージのみが必ず送信されることになる。
図10は、増加分を複製する機能を備えるプロトコルのより詳細な一例を示す。電子メールメッセージストアは、いくつかの電子メールフォルダに小分けにされているかもしれない。各電子メールフォルダは他とは独立に複製され、複製処理においてよりきめの細かい制御を提供することができる。この例では、増加分複製処理は同期と称せられる。なぜなら、電子メールクライアントの構成要素501から電子メールサーバの構成要素502への、そして電子メールサーバの構成要素502から電子メールクライアントの構成要素501への変更の伝達を含むからである。同期要求信号1001に続き、SynchFolderROPが電子メールサーバの構成要素502によって処理される。ROPはfolderIDパラメータ(表示せず)およびstateblobパラメータを含む。folderIDパラメータは、同期要求1001のターゲットである電子メールフォルダを識別する。stateblobパラメータは、電子メールサーバの構成要素502が、あるとすれば、最後に同期されてからどの変更が電子メールフォルダに発生したかを判断することができるようにする情報を含む。要求1001が、ターゲットのフォルダに対する電子メールクライアントの構成要素501による最初の同期要求を表している場合は、電子メールサーバの構成要素502は、電子メールメッセージストアにおけるターゲットの電子メールフォルダを空のフォルダと比較して変化しているかを判定する。要求1001に対する応答1002において、電子メールサーバの構成要素502は、電子メールクライアントの構成要素501に対して、そのターゲットのフォルダに追加された任意の電子メールメッセージおよび/または他のデータオブジェクト、およびそのターゲットのフォルダから削除された任意の電子メールメッセージおよび/または他のデータオブジェクトの一覧を含む任意の変更を送信する。また電子メールサーバの構成要素502は、電子メールクライアントの構成要素501におけるターゲットのフォルダの同期直後の状態を表す新規のstateblobを生成し、そのstateblobを応答1002において送信する。電子メールクライアントの構成要素501が要求1001と同一のフォルダに対する次の同期要求1003を送信する場合には、要求1003は、応答1002とともに返信された同一のstateblobをパラメータとして含むであろう。前述同様に、電子メールサーバの構成要素502はstateblobに含まれる情報を用いて、あるとすれば、どの変更が目標のフォルダに発生したかを判断し、それらの変更を新規に生成されたstateblobとともに応答1004により電子メールクライアントの構成要素501へ返信する。
stateblobデータオブジェクトのサイズが大きいと、たとえば、各々の電子メールフォルダ同期要求とともに、電子メールサーバの構成要素との間で送受信されるため、プロトコル性能に不利に働く。電子メールフォルダの同期を提供する一部の電子メールネットワークプロトコルでは、大部分において、stateblobは、電子メールクライアントの構成要素によって閲覧された電子メールメッセージについての変更を識別するメッセージ変更IDデータオブジェクトのセットより構成される。変更された電子メールメッセージがその構成要素に転送されたときに、その電子メールメッセージの変更は、電子メールクライアントの構成要素および/または電子メールサーバの構成要素により閲覧されたとされることができる。
メッセージ変更IDデータオブジェクトの一つの目的は、電子メールネットワーク全体の環境において電子メールメッセージについての変更を一意に識別することである。ホームサーバ方式を適用する電子メールネットワークにおいては、ユーザのホームサーバは、メッセージ変更IDデータオブジェクトを以前に閲覧されていない電子メールメッセージの変更と結びつける責任がある場合がある。たとえば、ホームサーバは、サーバIDデータオブジェクトおよび通し番号を備えるメッセージ変更IDデータオブジェクトを利用することができる。サーバIDデータオブジェクトは、全世界で一意に決まる識別子(GUID)のような公知の技術を用いて、電子メールネットワーク全体の環境において電子メールサーバの構成要素を一意に識別することができる。このように識別子がそれ自体大きいサイズである場合には、サーバIDデータオブジェクトを、代わりに電子メールサーバの構成要素によって維持されている識別子参照テーブルの見出しとすることができる。通し番号は、たとえば、電子メールサーバの構成要素内で6バイトカウンターにより提供され、電子メールサーバの構成要素がまだ閲覧されていない電子メールメッセージを格納のために受け付けるたびに増加されるだろう。
説明の目的で、メッセージ変更IDデータオブジェクトは、たとえば、“S:1”のように表現する。ここで、‘S’は第1の電子メールサーバの構成要素のサーバIDデータオブジェクトを表し、‘1’は通し番号を表す。メッセージ変更IDデータオブジェクトのセットは、たとえば、“S:1、S:2、S:3”のように表され、ここで“S:1”、“S:2”および“S:3”は、サーバIDがSである電子メールサーバの構成要素によって採用される連続するメッセージ変更IDデータオブジェクトである。
stateblobの大部分が、電子メールクライアントの構成要素により閲覧された電子メールメッセージの変更を表すメッセージ変更IDデータオブジェクト(“Message Changes Seen”セット)より構成される場合には、そのセットを、たとえば、“S:1、S:2、S:3、S:4”のセットを“S:1−4”のように符号化しサイズを削減するある技術が開発されている。さらに、電子メールサーバの構成要素は、自身の通し番号が常に増加していくことを確認できる。連続しないMessage Changes Seenセット、たとえば“S:1、S:3、S:5、S:7”、が“S:1−7”のように符号化された場合でも範囲として最小と最大の通し番号を含んでいれば、機能を損なうことはない。
図9に示された例では、Message Changes Seenセットは、現在のホームサーバ(たとえば、S)でなく電子メールサーバの構成要素(たとえば、S、S)により生成されたメッセージ変更IDデータオブジェクトを含む場合がある。現在のホームサーバにより生成されたメッセージ変更IDデータオブジェクトを固有の(native)メッセージ変更IDと称し、他のホームサーバにより生成されたメッセージ変更IDデータオブジェクトを外来の(foreign)メッセージ変更IDと称すこととする。以前のバージョンの電子メールサーバの構成要素と通信するための電子メールネットワークのプロトコルは、連続しない外来のメッセージ変更IDシーケンスを、最小と最大の通し番号を含む幅として最適化する機能を備えていない。次の表は本発明の実施形態においてこのような最適化を含む利点を示すものである。
Figure 2004213670
本発明の一実施形態では、次の表に明らかにされる特徴を含むROPを用いて、電子メールサーバの構成要素と電子メールクライアントの構成要素との間の電子メールフォルダの同期を得る。電子メールサーバの構成要素は、改良されたstateblob符号化技術を中程度の複雑性の増加のみにより実装することができる。
Figure 2004213670
図11Aと図11Bは、SynchFolderROPに応答するために、以前のバージョンのサーバと最新のバージョンのサーバによって、それぞれに使用される部分処理手順の差異を示す。図11Aは、ステップ1101、1102および1103を示す。ステップ1101で、最初のMessage Changes Seenセットが構成される。ステップ1102で、そのMessage Changes Seenセットの要素(固有のメッセージ変更IDデータオブジェクト)が最適化される。ステップ1103で最適化されたMessage Changes Seenセットがstateblobデータオブジェクトに追加され、同期を要求した電子メールクライアントの構成要素への応答とともに送信されることができる。図11Bは追加のステップ1104を含み、ステップ1103で、Message Changes Seenセットが、今度は改良された最適化を伴って、stateblobデータオブジェクトに追加される前に、Message Changes Seenセットの要素である外来のメッセージ変更IDデータオブジェクトもまた最適化されることを示す。
電子メールメッセージストアを電子メールフォルダに小分けにすることは、同期処理上のよりきめの細かい制御をもたらす一方で、それによりプロトコル性能の改善が自動的にできるわけではなく、プロトコル性能の低下をもたらす場合もある。たとえば、一部のプロトコルは、各メッセージストアのフォルダが個別に同期されることを要求する。典型的に、各同期操作はいくらかのオーバーヘッドを有し、そのオーバーヘッドはかなりの量になる場合がある。stateblobデータオブジェクトを利用する同期操作は、かなりの量のオーバーヘッドを有する操作の一例である。メッセージストアの全体を同期する場合、各メッセージストアのフォルダを個別に同期することを要求するプロトコルは、同期操作をほとんど要求しないプロトコルと比較して不利になるであろう。
メッセージストアの全体を同期することおよび同期を維持することは、電子メールクライアントの構成要素にとって望ましい目標である。通常の従来技術による電子メールクライアントの構成要素は、この目標を実現する方法を求めているが、時としてプロトコル性能に逆の影響を及ぼすことさえある。本発明の一態様は、深い階層テーブルを利用することによりこの目標を達成しつつ、プロトコルへの逆の影響を最小にすることができることである。通常の従来技術による電子メールサーバの構成要素は、深い階層テーブルを提供することができていなかった。
電子メールメッセージストアを電子メールフォルダに小分けされている場合、それらの電子メールフォルダを階層に編成することができる。図12は電子メールフォルダの階層の一例を示す。図12では、フォルダ1204がフォルダ1203のサブフォルダとなる。順に、フォルダ1203がフォルダ1202のサブフォルダとなる。フォルダ1201はルートフォルダである。ルートフォルダは他のどのフォルダのサブフォルダでもない。他のすべてのフォルダは、フォルダ1201をルートとするフォルダ階層の要素である。典型的に、フォルダ階層の各フォルダは、他のすべてのフォルダに直接の関連を有するわけではない。フォルダはそのサブフォルダにのみ直接の関連を有し、またフォルダは自身がサブフォルダとなっているフォルダのいずれにも直接の関連を有する。多くの場合には、すべてのフォルダが直接の関連を有する唯一のフォルダは、その階層のルートフォルダである。
深い階層テーブルは、フォルダ階層のすべてのフォルダについての情報を含むことができる。各フォルダは深い階層テーブルの中に一つの列を有する。深い階層テーブル内の情報は、それを用いて、特定の時間間隔の間に電子メールフォルダの内容が更新したかどうかを判定するために使用されるようなものである。特定の時間間隔における電子メールフォルダの内容の更新を判定することは、その時間間隔の始めに取ったフォルダの列の写しと、その時間間隔の終りに取ったそのフォルダの行の写しとの単純比較を使用することで実現できる。一実施形態においては、深い階層テーブルの各行は次の属性を有する。
Figure 2004213670
深い階層テーブルにおける電子メールフォルダの列の属性は、フォルダの内容に変更がなされる度に更新されることができる。深い階層テーブルの更新を効率良く実現するためには、深い階層テーブルの迅速かつ直接な参照が役立つことを見出した。深い階層テーブルにアクセスしようとする場合には、最低限、小さくてそして予測可能な間接参照レベルの数があることを見出した。たとえば、深い階層テーブルをフォルダ階層にける任意のレベルに位置決めすることは、予測可能な間接参照レベルの数を実現することにはならない。本発明の一実施形態においては、この理由から深い階層テーブルは、電子メールネットワークユーザの電子メールメッセージストアのフォルダ階層のルートフォルダと関連付けられている。
電子メールクライアントの構成要素と電子メールサーバの構成要素との間の通信を、通信セッションに分割することができる。電子メールメッセージストアの同期の消失は、セッションの合間、たとえばネットワーク接続の中断の間に発生する。通信セッションの開始時おいて電子メールメッセージストアの同期を再確立するため、以前のバージョンの電子メールサーバの構成要素と通信するための一部のプロトコルは、フォルダ階層内の各フォルダに対するSynchFolderROPを採用した。典型的には、いくつかのフォルダの内容はセッションの合間で変更されていない。変更されていないフォルダをそのターゲットとしたSynchFolderROPは、“同期不要”の結果となる。“同期不要”は、電子メールクライアントの構成要素に対し何れのフォルダの変更も転送されない結果となるが、それでも、たとえばstateblobデータオブジェクト関連するかなりの量のオーバーヘッドを有する場合がある。
図13は、深い階層テーブルを利用することで、この“同期不要”の結果を回避する本発明の実施形態を示す。第1の要求1301において、電子メールクライアントの構成要素501は、深い階層テーブルを要求するROP(たとえばGetHierarchyTable)を電子メールサーバの構成要素502に送信する。第1の応答1302において、深い階層テーブルの複製が電子メールクライアントの構成要素501に供給される。典型的には、電子メールクライアントの構成要素501は、深い階層テーブルについての以前の複製を有する。電子メールクライアントの構成要素501は、二つの複製の列と列の比較を用いることによって電子メールサーバの構成要素502のユーザの電子メールメッセージストア内のどのフォルダが変更されているかを迅速に決定することができる。次に、ROP(たとえばSynchFolder)を、変更されたフォルダのみを同期するために用いる。要求1303および応答1304は、変更されたフォルダを同期するために必要なだけ繰返されるだろう。同期が成功すると、電子メールクライアントの構成要素の深い階層テーブルの複製が応答1302で送信された最新の複製に合致するように更新されるであろう。電子メールクライアントの構成要素501が深い階層テーブルの以前の複製を有さない場合は、最新の複製内に列を有するすべてのフォルダが同期されるだろう。
一旦、ユーザの電子メールメッセージストアの同期が確立されると、同期は、周期的に上記したセッションのスタートのステップを繰返すことで(すなわち電子メールサーバの構成要素をポーリングして)維持されるが、この方法には欠点がある。たとえばポーリング間隔がユーザの電子メールメッセージストアの変更間隔より非常に短い場合がある。このような場合、深い階層テーブルの比較のうちの比較的多くが、フォルダが変化していないと示すことになるであろう。このような比較は、実際には、無駄な努力であり、このような無駄を回避できるプロトコルがより効率的であることになる。
一部の電子メールネットワークは、電子メールクライアントの構成要素が登録して、たとえば、特定の電子メールフォルダの内容が変化したとき、電子メールサーバの構成要素によって通知される機能を含む。一部の以前のバージョンの電子メールクライアントの構成要素は、そのような機能を使用し、ユーザの電子メールメッセージストアの同期を維持するため、ユーザのフォルダ階層内の各フォルダと関連付けられた変更通知のために別個の登録を行うようなにしている。本発明の実施形態においては、電子メールクライアントの構成要素は、深い階層テーブルと関連付けられた変更通知のための単一の登録のみを行う。単一の登録はより効果的である。なぜなら、確立するため要求されるROPがより少なく、サーバ側で使われるリソースがより少ないからである。
さらに図13を参照して、最新のバージョンの電子メールクライアントの構成要素501は、本発明の態様によれば、電子メールサーバの構成要素502との通信セッションの開始時に第1の要求1301でGetHierarchyTableROPを用い、電子メールクライアントの構成要素501は、応答1302で返信される深い階層テーブルと関連付けられた変更通知に自動的に加えられる(subscribed)。電子メールクライアントの構成要素でユーザの電子メールメッセージストア中の電子メールフォルダに変更が生ずると、たとえば、電子メールメッセージがフォルダに追加され、また深い階層テーブルが上記したように更新される。深い階層テーブルが変更されると電子メールクライアントの構成要素501への通知アラート1305が起動される。通知アラートは、要求1301によりなされたサブスクリプションに対する応答中にあって、明示的な要求-応答サイクルを構成するものではない。したがって、本発明により提供されるような通知システムの使用は、電子メールネットワークのオーバーヘッドを大幅に減らす結果となる。
単一の登録は多数の通知をもたらすことができる。一実施形態では、アラートは、コネクションレスネットワークのトランスポート機構、たとえば、UDP/IP(User Datagram Ptotocol/Internet Protocol)を使用して配信されるが、任意の適したネットワークのトランスポート機構を用いることができる。アラートに応答して、電子メールクライアントの構成要素501は、電子メールサーバの構成要素502に対して、ROP(たとえばGetNotification)を含む要求1306を送信する。応答1307で、深い階層テーブル何れの変更された列(すなわち、通知のトリガとなった変更されたフォルダに相当する列)は、電子メールクライアントの構成要素501へ送信される。電子メールクライアントの構成要素501は、ROP(たとえばSynchFolder)を用いて、変更されたフォルダのみを同期する。
複数の電子メールクライアントの構成要素501が、同一のデータオブジェクト(たとえば、同一の電子メールフォルダ)と関連付けられた変更通知に加えられることができ、たとえば、協業機能を提供することができる。図18に示されるように、電子メールクライアントの構成要素1801、1802および1803は、電子メールサーバの構成要素1804に配置された同一のデータオブジェクト(図示しない)と関連付けられた変更通知に加えられている。電子メールクライアントの構成要素1803は、ROP1805を電子メールサーバの構成要素1804に送信し、これがデータオブジェクトに変更をきたす。変更の結果として、電子メールサーバの構成要素1804は、変更通知1806、1807および1808を電子メールクライアントの構成要素1801、1802および1803に送信する。変更通知は、変更されたデータオブジェクトを識別する以上の情報はほとんど運ばないため、たとえば電子メールクライアントの構成要素が特定の変更の原因を判定する方法がない場合がある。たとえばデータオブジェクトが電子メールフォルダであれば、変更通知1806、1807および1808によって、電子メールクライアントの構成要素1801、1802および1803の各々が変更されたフォルダの同期を開始するであろう。この例では、電子メールクライアントの構成要素1803は、この変更の原因であるため、結果は“同期不要”となる。
前述した理由により、“同期不要”となる同期は除くことが望ましい。しかしながら、説明した通知の振る舞いは常に望ましくないわけではなく、一部の電子メールクライアントの構成要素はこれに依存している場合がある。本発明の態様は、プロトコル性能を改善するために、電子メールクライアントの構成要素が最新のバージョンの電子メールサーバの構成要素の通知の振る舞いを設定することができる能力を提供し、同時に以前のバージョンの電子メールクライアントの構成要素に従来通りの通知の振る舞いを提供する。
図19Aは、以前のバージョンの電子メールクサーバの構成要素により提供されることができる通知の振る舞いを示す。図19Bは、本発明の態様にしたがって、設定可能な通知の振る舞いを示す。望むならば、最新のバージョンの電子メールクライアントの構成要素は、たとえば要求とともにフラグ、図19Bの例ではIGNORE_OWNフラグを供給することによって、電子メールサーバの構成要素に図19B示す通知の振る舞いができることを示すことができる。
ステップ1901で、通知されるサブスクライバのセットの中から次に候補が選択される。ステップ1904で、サブスクライバにIGNORE_OWNフラグが有るかを調査する。フラグが無ければ、ステップ1904からステップ1902へ分岐し、その候補のサブスクライバに通知が送信される。フラグが見付かれば、ステップ1904からステップ1905へ分岐し、そこでこの通知のトリガとなったかどうかについてサブスクリプションを再び調査する。この決定は、たとえば、そのサブスクリプションがなされた際に使用されたセッションの通信セッション識別子(「セッションID」)を調査することによってなされる。セッションIDは、たとえば全世界で一意に決まる識別子(GUID)および6バイトの通し番号を含む。また通知は、その原因と関連付けられたセッションIDかどうかが調査される。この二つが一致すると、その通知は削除される。結果として、通知の原因となった電子メールクライアントの構成要素もまたその通知を受け取らない。次に処理は以下に説明するステップ1903に進む。
サブスクライバが通知のトリガとなっておらず、サブスクリプションと関連付けられたセッションIDが通知の原因と関連付けられたセッションIDと同一でなければ、ステップ1905はステップ1902へ分岐し、通知が送信される。次いで、処理はステップ1903に進み、そこで通知されるべきサブスクライバがさらに存在するかを判定する。存在すれば部分処理手順はステップ1901へ戻り、そうでなければこの処理を終了する。
上記のように、電子メールメッセージのキャッシュ記憶装置を利用する電子メールクライアントの構成要素は、たとえばROPを介して、ローカルのクライアントデータストアと電子メールサーバの構成要素で使用可能なデータストアとの間のメッセージまたは他のデータオブジェクトを同期することを要求できる。電子メールクライアントの構成要素は、同様にメッセージがサーバのストアからクライアントのストアへ複写されるよう要求することができる。どちらの場合にも、要求は高速転送モードを用いてなされることができる。
典型的には、メッセージまたはファイルのような他のデータが同期または複写のために要求される場合、その要求(たとえばROP)は同期が要求されるすべてのメッセージの指示を含む。このリストは、電子メールサーバの構成要素により、たとえば上述したstateblob機能を利用して、自動的に構成されることができる。以前のバージョンの(従来技術の)電子メールサーバの構成要素にとって、ROPの要求における一つのメッセージまたはデータオブジェクト内のエラーは、その要求におけるすべての項目の障害原因となり得る。この過程は図14Aに示され、ROP(たとえばFXPrepare)を含む要求が、ステップ1401で複写または同期の対象として指定されたメッセージIDのセットとともに送信される。電子メールサーバの構成要素502において高速転送機構が設定され、ステップ1402で高速転送IDが電子メールクライアントの構成要素501に送信される。次いで、電子メールクライアントの構成要素501は、たとえばFXGetBufferROPを含む要求を通じて、データオブジェクトを複写または同期を要求する(ステップ1403)。電子メールサーバの構成要素502が要求されたメッセージを開こうとするとき、一つまたは複数のメッセージまたはデータオブジェクトでエラーが発生する。エラーの例には、メッセージまたはデータオブジェクトの破損、サーバの障害、電子メールサーバの構成要素502のメモリ不足またはデータオブジェクトについてのウィルスの発見が含まれる。
エラーが起こると、電子メールサーバの構成要素502は、ステップ1404で電子メールクライアントの構成要素501に向けて流されるデータの中に致命的ROPエラーを送信する。このようにして、同期が失敗すると、メッセージIDのセット内のメッセージは同期または複写されず、stateblobまたは類似する更新情報は電子メールクライアントの構成要素501によって受信されない。この場合、電子メールクライアントの構成要素501は、データオブジェクトの同期または複写を別の機会に要求しなければならない。エラーが電子メールサーバの構成要素502で修復されない場合、エラーメッセージが送信され続け、メッセージIDのセット内のメッセージは、絶対に同期または複写されない、ということも起こり得る。
本発明の一つの態様によると、最新の電子メールサーバの構成要素は、致命的ROPエラーの代わりに、同期が失敗する特定のデータオブジェクト(たとえば電子メールメッセージ)のみに関するエラー情報を送信することができる。この機能は、エラーを有するメッセージまたは他のデータオブジェクトが応答の中に含まれていても、ROP内のメッセージまたは他のデータオブジェクトもしくは他の要求は、送信され、同期または複写されることを可能とする。
オブジェクト特有のエラーを扱う方法の一例として、最新のバージョンの電子メールサーバの構成要素は、オブジェクトエラーを有するデータオブジェクトについてのデータの流れの中でエラーメッセージを送信することができる。この例では、参照の容易のため、エラーをFXErrorInfoと表する。望むならば、さらに以下に述べるように、FXErrorInfoは、エラーを有するデータオブジェクトのメッセージID、メッセージの脱落の原因に関する追加的情報のような情報を含んでも良い。
図14Bは、メッセージMにエラーが発生した場合の同期を示す。エラーは、メッセージM、メッセージM、続いてFXErrorInfo、およびメッセージMを含むFXGetBufferの応答1405の結果となる。FXErrorInfo情報は、電子メールクライアントの構成要素501がどのメッセージがエラーを有するかを知り、応答中の他のすべてのメッセージを同期することを可能にする。エラーメッセージFXErrorInfoがエラーの理由についての情報を含む場合、その情報はそれに応じて、クライアントの構成要素によって、たとえばエラーメッセージをユーザに表示することによって、使用される。
下表はFXErrorInfoが取り得るフォーマットの一例を示す。
Figure 2004213670
例示的フォーマットはバージョン属性、エラーコード属性およびメッセージID属性を含むことが判るであろう。加えて、もし望むならば、一つまたは複数の属性を追加してもよい。さらに、上記したように、補助フィールドをエラーの詳細の通信のために定義することもできる。このように、属性が、エラーの詳細のフィールド(たとえば配列)のサイズを指定するために定義され、たとえば、エラーの詳細の通信のための非構造化配列を提供することができる。上述のように、エラーの詳細を、電子メールクライアントの構成要素501が望むように、処理することができる。
FXErrorInfoは、第1の応答の同期が完了、たとえばstateblobまたは他の情報が電子メールクライアントの構成要素501に提供される結果となることを可能にする。電子メールクライアントの構成要素は、今メッセージMまで同期されているので、同期のための次の要求1406は、Mの後のメッセージ(たとえばM、M)を有する応答1407の結果となるであろう。
電子メールクライアントの構成要素501が最新のバージョンであり、したがってFXErrorInfoメッセージを処理することができることを示すため、たとえばFXRecoverModeのようなフラグを定義することができ、それを同期または複写を要求するROPとともに伝達することができる。他の指示を、電子メールクライアントの構成要素501がFXErrorInfoメッセージを処理することができる電子メールサーバの構成要素502と通信するために、使用することもできる。
電子メールサーバの構成要素502が一つまたは複数のメッセージまたは他のデータオブジェクトを電子メールクライアントの構成要素501へ送信する場合、電子メールクライアントの構成要素へのデータの流れは、プロパティタグ(たとえばptag)により分離または定義されることができる。たとえばメッセージのリストは、各メッセージについてメッセージ開始ptagおよびメッセージ終了ptagを含むことができる。開始および終了ptagの間にプロパティリストptagおよびサブジェクトptagがあり、文字列のプロパティを有することができる。サブジェクトptagは、後ろにサブジェクトそのものが来る場合がある。他のプロパティタグを含むこともできる。
メッセージの送信中にエラーが生ずる場合には、FXErrorInfoはptagとして提供され、上表に定義されたようにバイナリのプロパティを有するかもしれない。成功のメッセージおよびエラーが発生した場合のメッセージを有するデータの流れの一例を次に示す。エラーが生ずる場合には、メッセージ終了ptagはその特定のメッセージ対して用いられず、ptagFXErrorInfoがそのメッセージの最後のptagとなる。
ptagMessageListStart
ptagMessageStart
ptagPropList
ptagSubject [PT_STRING]
”Re; Your email”
・・・
ptagMessageEnd
ptagMessageStart
・・・
ptagFXErrorInfo [PT_BINARY]
[Contents as described by table]
ptagMessageStart
・・・
ptagMessageEnd
ptagMessageListEnd
図15Aは、電子メールサーバの構成要素502が以前のバージョンの電子メールクライアントの構成要素501にメッセージを転送するために使用する手順を示す。最初のステップ1501で、メッセージのセットは、たとえば高速転送データストアにメッセージのセットを配置することにより、準備される。ステップ1502で、たとえば電子メールサーバの構成要素502の送信バッファに配置されるとすぐに、メッセージのストリーム(streaming)が始まる。メッセージをストリーム中にエラーが発生すると、ステップ1504で、致命的ROPエラーが電子メールクライアントの構成要素501にストリームされる。そこで部分処理手順は終了する。メッセージの送出中にエラーが発生しなかった場合、ステップ1503でそのセット内にもっとメッセージがあるか判定がなされる。メッセージがあれば、処理はステップ1502に戻り、次のメッセージがストリームされ、メッセージがなければ、この部分処理手順は終了する。
図15Bは、電子メールサーバの構成要素502の最新のバージョンによってメッセージのセットを操作する手順を示す。ステップは、電子メールクライアントの構成要素が最新のバージョンか以前のバージョンかにより異なる。ステップ1501乃至1504は、以前のバージョンの電子メールクライアントの構成要素に対して取る手順であり、前の段落における同一参照番号のステップと同一の処理を行う。
ステップ1502で、メッセージのストリーム中にエラーが発見されると、ステップ1505で、要求がFXRecoverModeのようなフラグを含むかを判定する。要求がフラグを含む場合、すなわち電子メールクライアントの構成要素501が最新のバージョンである場合には、ステップ1505はステップ1506に分岐し、FXErrorInfoが電子メールクライアントの構成要素501に向けてストリームされ、次いで、処理はステップ1503に続く。要求がフラグを含まない場合は、ステップ1505はステップ1504に分岐し、そこで致命的ROPエラーがストリームされ、この部分処理手順は終了する。
見て解るように、要求の中のフラグの存在は、失敗し致命的ROPエラーを送出する代わりに、FXErrorInfoをストリームすることを可能とすることで、ストリーム処理が継続することを可能にする。フラグは最新のバージョンの電子メールクライアントの構成要素501により送信される。以前のバージョンの電子メールクライアントの構成要素はフラグを含まず、したがって、上記したように、エラーが発生すると致命的ROPエラーが送出される。
望むならば、別の実施形態により、エラーメッセージ(たとえばFXErrorInfo)を、メッセージ全体についてではなく、メッセージの特定のプロパティまたは他のデータオブジェクトについて、送出することができる。たとえばFXErrorInfoは、メッセージのボディについてまたはメッセージへの添付に対して送出されることができる。したがって電子メールクライアントの構成要素501では、エラーを有するプロパティだけは同期または複写されないが、エラー無しで正しく送信されたプロパティを同期または複写することができる。
ときとして、メッセージまたは他のデータオブジェクトは、多数のFXGetBufferの応答にわたる程十分なサイズである場合がある。このようなメッセージを処理するため、電子メールクライアントの構成要素501は、ロールバック論理を含み、部分的に受信されたメッセージのいずれを部分的に処理し、エラーメッセージを受信した後に、続けてさらにメッセージを適切に受信することができる。
ときには、電子メールクライアントの構成要素が、電子メールメッセージのようなデータオブジェクトの複写または同期の進捗に関するフィードバックを与えられることが望まれる。本発明の一態様では、電子メールクライアントの構成要素501の最新のバージョンは、たとえば電子メールサーバの構成要素502にデータオブジェクトの同期や複写の要求するときに、PROGRESS_MODEのようなフラグを送信することにより、進捗モードを扱うことができることを示すことができる。応答において、電子メールサーバの構成要素502の最新のバージョンは、メッセージとともに、全メッセージの合計サイズ、メッセージの合計数、各メッセージの合計サイズまたはこれらの任意一つまたは組み合わせといった、多様な情報を送信することができる。
以前のバージョンの電子メールクライアントの構成要素501についての例として図16Aに示すように、電子メールクライアントの構成要素501は、メッセージのセットのための高速転送要求(1601と1603)に対する応答で、メッセージを受信する。図16Aにおいて、メッセージは、二つの応答1604および1606で受信される。高速転送機構を使用する以前のバージョンの電子メールクライアントの構成要素501においては、クライアントへストリームされるメッセージの進捗指示は提供されていなかった。
しかしながら、図16Bに示すように、電子メールクライアントの構成要素によるメッセージのセットへの要求に対する応答1607において、電子メールサーバの構成要素502は、転送されるデータオブジェクトの合計数および転送される全データオブジェクトの合計サイズを提供することができる。この情報は図16BではPallと表現されている。また電子メールサーバの構成要素502の最新のバージョンは、図16Bでは“P、P、P、…”によって示された各メッセージのサイズを供給する。加えて、望むならば、各メッセージおよびメッセージのグループ全体と関連付けられた情報は、各メッセージがFAIか実際の電子メールメッセージかどうかに関する追加的情報を含むこともできる。一実施形態では、図16Bで“Pall”で表現された情報は、高速転送要求に対する応答の中で送信され、データストリームの処理を単純にするために、零のデータオブジェクトが転送される場合でさえも常に送信される。
転送されるすべてのデータオブジェクトのサイズと数に関するフォーマットの一例を下表に示す。
Figure 2004213670
FAIデータオブジェクトの数、すべてのFAIデータオブジェクトの合計サイズ、転送される電子メールメッセージの数および転送されるすべての電子メールメッセージの合計サイズについて別個の属性が定義されていることが判るであろう。他の組合せおよび追加的属性を希望通りにフォーマットに追加することができる。
次の表は、各メッセージとともに供給されるサイズおよび他の情報に関するフォーマットを示す。
Figure 2004213670
フォーマットは、次のメッセージのサイズおよび次のメッセージがFAIであるか否かの表示を含むことが判るであろう。
図17Aと図17Bは、電子メール構成要素の以前のバージョンと、電子メール構成要素の最新のバージョンの各々にしたがってメッセージのセットをストリームするための手順を示す。図17Aの手順は、図15Aの手順1501−1503と同様である。図17Bにおいては、最新のバージョンの電子メールクライアントの構成要素501によって、たとえばROPとともに、PROGRESS_MODEフラグが送信されている。メッセージのセットが準備された後ステップ1701で、そのフラグがあるかどうかが判定される。フラグがあれば、ステップ1702で全体の進捗データが送信され、次いで、処理はステップ1502に進み、そこで最初のメッセージがストリームされる。フラグが無ければステップ1701は直接ステップ1502に分岐する。
最初のメッセージがストリームされた後、処理はステップ1703に進み、そこでフラグが利用可能かどうかを判定する。利用可能であれば、次いでステップ1703はステップ1704に分岐し、そこでメッセージ毎の進捗データがストリームされる。次いで、処理は前述のステップ1503に進む。フラグが利用可能でなければステップ1703は直接ステップ1503に分岐する。
最新のバージョンのサーバの構成要素が最新のバージョンのクライアントの構成要素へデータを送信するデータのストリームの一例を以下に示す。このデータのストリームは上述したデータの流れと類似しているが、追加的に総データの進捗のためのptag(ptagIncrSyncProgressMode)を含み、たとえばバイナリのプロパティを有する。加えて、各メッセージについて、メッセージ毎の進捗データが、たとえばptagIncrSyncProgressModePerMsgとして供給される。
ptagIncrSyncProgressMode [PT_BINARY]
[Contents as described by table]
ptagMessageListStart
ptagIncrSyncProgressModePerMsg [PT_BINARY]
[Contents as described by table]
ptagMessageStart
ptagPropList
ptagSubject [PT_STRING]
“Re; Your email”
・・・
ptagMessageEnd
ptagIncrSyncProgressModePerMsg [PT_BINARY]
[Contents as described by table]
PtagMessageStart
・・・
ptagMessageEnd
ptagIncrSyncProgressModePerMsg [PT_BINARY]
[Contents as described by table]
PtagMessageStart
・・・
ptagMessageEnd
ptagMessageListEnd
この例では、総データの進捗を含むptag(ptagIncrSyncProgressMode)およびメッセージの進捗データのためのptag(ptagIncrSyncProgressModePerMsg)は、各々、メッセージのリストの前と、各メッセージの前に位置している。しかしながら、データオブジェクトのストリームの構造を修正して、進捗データがメッセージの中やメッセージリストの中に含まれるようにすることもできる。さらにデータオブジェクトのストリームの構造をメッセージおよび/またはメッセージリストを区切るptagをすべて除去するよう修正することも可能である。
進捗データを受信する電子メールクライアントの構成要素は、このデータを電子メールサーバの構成要素からのデータオブジェクトの同期または複写の進捗を判定するために利用することができ、メッセージ毎の進捗データを利用して個別のメッセージ毎の進捗を判定することができる。この情報は、たとえば同期の進捗についての実時間の情報を監視する際に、有益な場合がある。
いくつかの異なる文字セットが電子メールメッセージあるいは他のデータオブジェクトを格納するために使用される。たとえば、英語の文字を格納するためにASCII(American Standard Code for Information Interchange)が最も一般的に使用されている。しかしながら、ASCIIは、8ビット文字を基本としているため、すべての言語のための文字を格納するためには充分ではない。すなわち、ASCIIコードは、256文字のみで使用することができ、英語では充分であるが、より多くの文字を有する言語には不充分である。他方、Unicodeは、各文字につき16ビット(2バイト)を使用する文字コード体系であり、したがってASCIIより多くの文字を含むことができる。Unicodeは、65、536の文字を持つことができ、したがって世界のほとんどすべての言語を符号化するために使用することができる。Unicodeは、ASCII文字コード体系をその中に包含する。
一般に、電子メールクライアントの構成要素501の以前のバージョンは、指定されたコードページすなわち文字コード体系、および/またはそれと関連付けられた言語を有する。たとえば、電子メールクライアントの構成要素501の特定のバージョンは、ドイツ語のコードページを有し、他のバージョンはANSI(American National Standard Institute)のコードページを有する場合がある。ときとして、電子メールクライアントの構成要素501は、指定されたコードページでない文字コード体系で電子メールを受信したいことがある。本発明の一つの態様によれば、最新バージョンのクライアントの構成要素は、電子メールサーバの構成要素がすべての電子メールをUnicodeで供給するよう強制することができる。一旦電子メールが電子メールクライアントの構成要素501によって受信されると、そのUnicodeの電子メールをクライアントのコードページに変換でき、あるいはまたUnicodeフォーマットで維持することができる。
電子メールクライアントの構成要素501が、電子メールがUnicodeで提供されるよう要求することを示すために、電子メールクライアントの構成要素501は、電子メールサーバの構成要素502に、たとえばFORCEUNICODEのようなフラグを提供する。フラグは、ROPのような要求とともに提供することができる。電子メールサーバの構成要素502が最新のバージョンである場合には、電子メールサーバの構成要素502は、その電子メールのUnicode版を提供することができ、あるいは利用できるならば、他の文字コード体系の電子メールメッセージをUnicodeに変換することができる。
図20は、本発明の一態様にしたがって、メッセージに対して特定の文字コード体系を提供するための手順を示す。まずステップ2001で、電子メールサーバの構成要素502はそのデータストアからメッセージを読み出す。ステップ2002で、FORCEUNICODEフラグの有無が判断される。フラグがなければ、ステップ2002はステップ2003に分岐し、そこで電子メールサーバの構成要素502は、必要ならば変換して、電子メールクライアントの構成要素の指定されたコードページで電子メールメッセージを提供する。
FORCEUNICODEフラグがあれば、次にステップ2002はステップ2004に分岐し、そこでメッセージがUnicodeで格納されているかどうかが判定される。Unicodeで格納されていれば、ステップ2004はステップ2005に分岐し、そこでメッセージがUnicode文字コード体系で電子メールクライアントの構成要素501に供給される。メッセージがUnicodeで格納されていなければ、ステップ2004はステップ2006に分岐し、そこでメッセージはUnicodeに変換され、次に処理はステップ2005へ続き、そこでメッセージが電子メールクライアントの構成要素にUnicodeで供給される。
ここで引用した出版物、特許出願および特許を含むすべての引例は、各引例が個別にかつ明確に参照により開示されることが表記されかつその内容がその中に述べられているのと同一の範囲まで、その参照によりその開示内容を本明細書の一部とする。
用語「一つの」、「前記」および本発明(特に以下の請求範囲)を説明するのに使用する同様な言葉は、本明細書中で指示しないまたは文脈から明らかに否定されない限り、単一および複数の両方を意味するものと解釈されるべきである。用語「備える」、「含む」、「有す」、「持つ」、「包含する」および「よりなる」は、特に言及しない限り、制限の無い用語(すなわち、「―――を含むが、それに限定されない」という意味)と解釈されるべきである。本明細書中の値の範囲の説明は、本明細書中で指示しない限り、単にある範囲の中にある各個の数値を別個に引用する代わりの簡略な方法を意図したものであり、各個の値は明細書中で個別に説明されるのと同じように詳細な説明に包含される。ここで述べられるすべての方法は、本明細書中で指示しないまたは文脈から明らかに否定されない限り、任意の適切な順序で実行されることができる。ここで提供された任意のおよびすべての例または例示的表現(たとえば「のような」、「に類する」)の使用は、単に本発明をより明らかにすることを意図してのものであり、特許請求しない限り、発明の範囲に制限をつけようとするものではない。明細書中のいずれの表現も、特許請求の範囲に記載されていない要素であり、本発明の実施に関し本質的であると解釈されてはならない。
本明細書中で、本発明を実施する上で発明者が最良の形態であると承知しているものを含む本発明の好ましい実施形態が説明されている。上記した説明を読むことで当業者にはこれらの好ましい実施形態の変更態様が明らかになるであろう。発明者等は、当業者がこれら変更態様を適切に採用することを予期し、かつ発明者等は、発明がここで明確に説明されたものと異なる方法で実施されることを予定している。したがって、適用する法律により認められるように、本発明は、添付した特許請求範囲に記載される内容に対するすべての改造および均等なものを含む。さらに、本明細書中で指示しないまたは文脈から明らかに否定されない限り、すべての可能な変更態様における上述の要素の組合せのいずれもが本発明の請求範囲に包含される。
ネットワークによって接続されたコンピュータの概略図である。 本発明の実施形態の実施に用いることができる例示的なコンピュータシステムを示す概略図である。 電子メールクライアントの構成要素と電子メールサーバの構成要素の両方が複数のバージョンを有する環境を示す概略図である。 電子メールクライアントの構成要素と電子メールサーバの構成要素の間のプロトコルネゴシエーション手順の例を示すプロトコル図である。 電子メールクライアントの構成要素と電子メールサーバの構成要素が決まったサイズの通信バッファを有する例示的電子メールネットワークを示す概略図である。 高速転送操作を完成するため二つの要求―応答サイクルを必要とする例示的プロトコルを示すプロトコル図である。 高速転送操作を完成するため一つの要求―応答サイクルを必要とする例示的プロトコルを示すプロトコル図である。 電子メールクライアントの構成要素へ電子メールメッセージのボディを送信するための例示的手順を示すフローチャートである。 本発明の態様にしたがって、電子メールクライアントの構成要素へ電子メールメッセージのボディを送信するための手順を示すフローチャートである。 全アイテム転送モードを示すシーケンス図である。 ヘッダ先送り転送モードを示すシーケンス図である。 ヘッダのみ転送モードを示すシーケンス図である。 ヘッダ先送りまたはヘッダのみ転送モードの例外を示すシーケンス図である。 電子メールクライアントの構成要素のホーム電子メールサーバの構成要素が時間の経過とともに変更されることを示す概略図である。 電子メールクライアントの構成要素と電子メールサーバの構成要素との間で電子メールフォルダを同期するための例示的プロトコルを示すプロトコル図である。 stateblobの部分を最適化する例示的手順を示すフローチャートである。 本発明にしたがって、stateblobの部分を最適化する手順を示すフローチャートである。 電子メールフォルダの階層を示す概略図である。 本発明の態様にしたがって、電子メールメッセージストアの同期を行い、同期を維持するための例示的プロトコルを示すプロトコル図である。 ROPレベルでエラー情報を通信するための例示的プロトコルを示すプロトコル図である。 本発明の態様にしたがって、メッセージごとのエラー情報を通信するための例示的プロトコルを示すプロトコル図である。 ROPレベルでのエラー情報を生成する手順を示すフローチャートである。 本発明の態様にしたがって、メッセージごとのエラー情報を生成する手順を示すフローチャートである。 高速転送操作を実行するための例示的プロトコルを示すプロトコル図である。 本発明の態様にしたがって、高速転送操作を実行中に進捗情報を供給するための例示的プロトコルを示すプロトコル図である。 メッセージのセットをストリームするための手順を示すフローチャートである。 本発明の態様にしたがって、進捗情報を伴ってメッセージのセットをストリームするための手順を示すフローチャートである。 電子メールサーバの構成要素の同一のデータオブジェクトに対する変更の結果として、通知がなされる複数の電子メールクライアントの構成要素を示す概略図である。 複数のサブスクライバに通知するための手順を示すフローチャートである。 本発明の態様にしたがって、複数のサブスクライバに通知するための手順を示すフローチャートである。 本発明の態様にしたがって、所望のコードページを使用する電子メールメッセージを提供するための手順を示すフローチャートである。
符号の説明
10 コンピュータ
11 ネットワーク
14 処理ユニット
16 メモリ
18 基本的な構成
20 表示装置
201 取り外し可能な記憶装置
202 取り外し不可能な記憶装置
203 出力装置
204 入力装置
205 通信接続装置
307〜311 プロトコル
901,903,905 電子メールサーバの構成要素
902,904,906 電子メールクライアントの構成要素

Claims (21)

  1. 電子メールクライアントの構成要素によって閲覧された電子メールのメッセージの変更に関して、第1の電子メールサーバの構成要素で、連続しない第1のデータを保持すること、
    前記電子メールクライアントの構成要素によって閲覧された電子メールのメッセージの変更に関して、第2の電子メールサーバの構成要素で、第2のデータを保持すること、および
    前記第2の電子メールサーバの構成要素で、前記連続しない第1のデータを最適化すること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  2. 前記第2のデータおよび前記連続しない第1のデータを前記電子メールクライアントの構成要素へ送信すること
    をさらに含むコンピュータ実行可能命令を含むことを特徴とする請求項1に記載のコンピュータ読み取り可能な記録媒体。
  3. 電子メールデータのオブジェクトを含む複数のフォルダに対してなされた変更に関して、テーブルを保持すること、
    電子メールクライアントの構成要素を前記テーブルに加えること、および
    前記テーブル中の変更に応じて、前記電子メールクライアントの構成要素へ通知を送信すること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  4. 前記電子メールクライアントの構成要素は、前記複数のフォルダ内の電子メールデータのオブジェクトの要求の結果として、自動的に加えられることを特徴とする請求項3に記載のコンピュータ読み取り可能な記録媒体。
  5. 前記要求は、前記電子メールデータのオブジェクトが配置されているフォルダの同期の要求を含むことを特徴とする請求項4に記載のコンピュータ読み取り可能な記録媒体。
  6. 前記要求は、電子メールのメッセージの複製の要求を含むことを特徴とする請求項4に記載のコンピュータ読み取り可能な記録媒体。
  7. 電子メールデータオブジェクトを含む複数のフォルダに対してなされた変更に関して、テーブルに加えること、
    前記テーブル内の変更に応じて、変更したフォルダに対応する前記テーブル内の列に関して、電子メールクライアントの構成要素に対する通知を受信すること、および
    前記通知に応じて、変更した前記フォルダのみを同期する要求を送信すること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  8. 前記加えることは、前記複数のフォルダ内の電子メールデータオブジェクトの要求の結果として自動的に生じることを特徴とする請求項7に記載のコンピュータ読み取り可能な記録媒体。
  9. 前記要求は、前記電子メールデータのオブジェクトが配置されているフォルダの同期の要求を含むことを特徴とする請求項8に記載のコンピュータ読み取り可能な記録媒体。
  10. 前記要求は、電子メールのメッセージのコピーの要求を備えることを特徴とする請求項8に記載のコンピュータ読み取り可能な記録媒体。
  11. 電子メールクライアントの構成要素において、
    電子メールデータのオブジェクトを含む複数のフォルダに対してなされた変更に関して、テーブルに加えることであって、該テーブルは電子メールサーバの構成要素によって保持されること、
    前記フォルダの少なくとも1つフォルダ内の前記電子メールデータのオブジェクトの少なくとも1つに対する変更が生じること、および
    通知が前記電子メールクライアントの構成要素へ送信されないことを要求する指示を前記電子メールサーバの構成要素へ送信すること
    を含むことを特徴とするコンピュータによって実行される方法。
  12. 前記指示は、要求とともに含まれるフラグを含むことを特徴とする請求項11に記載のコンピュータによって実行される方法。
  13. 前記要求は、前記メッセージが配置されているフォルダの同期の要求を含むことを特徴とする請求項12に記載のコンピュータによって実行される方法。
  14. 前記要求は、電子メールのメッセージの複製の要求を含むことを特徴とする請求項12に記載のコンピュータによって実行される方法。
  15. 請求項11に記載の方法を実行するためのコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  16. 電子メールクライアントの構成要素の識別子を含む第1のデータフィールドと、
    前記電子メールクライアントの構成要素によって、電子メールフォルダ内の電子メールデータオブジェクトに対してなされた変更を表す第2のデータフィールドと、
    前記変更に関して、通知が前記電子メールクライアントの構成要素へ送信されないことを要求する指示と
    を備えることを特徴とするコンピュータ読み取り可能な記録媒体上に具現化されたデータパケット。
  17. 前記指示は、要求とともに含まれるフラグを備えることを特徴とする請求項16に記載のデータパケット。
  18. 電子メールデータオブジェクトを含む複数のフォルダに対してなされた変更に関して、テーブルを保持すること、
    前記テーブルに第1の電子メールクライアントの構成要素を加えること、
    前記フォルダの少なくとも1つのフォルダ内の前記電子メールデータオブジェクトの少なくとも1つに対する変更を受信することであって、該変更が前記第1の電子メールクライアントの構成要素に起因すること、
    前記変更に応じて、通知が前記第1の電子メールクライアントの構成要素へ送信されないことを要求する指示を受信すること、および
    前記変更および前記指示に応じて、前記第1の電子メールクライアントの構成要素以外の前記テーブルのサブスクライバへ、前記変更に関して、通知を送信すること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  19. 前記指示は、要求とともに含まれるフラグを含むことを特徴とする請求項18に記載のコンピュータ読み取り可能な記録媒体。
  20. 前記要求は、前記フォルダの少なくとも1つのフォルダ内の同期の要求を含むことを特徴とする請求項19に記載のコンピュータ読み取り可能な記録媒体。
  21. 前記要求は、電子メールのメッセージの複製の要求を含むことを特徴とする請求項19に記載のコンピュータ読み取り可能な記録媒体。
JP2004000704A 2003-01-03 2004-01-05 サーバとクライアントとの間の改良された同期方法 Expired - Fee Related JP4633365B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43786903P 2003-01-03 2003-01-03
US10/367,273 US7386590B2 (en) 2003-01-03 2003-02-14 System and method for improved synchronization between a server and a client

Publications (3)

Publication Number Publication Date
JP2004213670A true JP2004213670A (ja) 2004-07-29
JP2004213670A5 JP2004213670A5 (ja) 2007-02-22
JP4633365B2 JP4633365B2 (ja) 2011-02-16

Family

ID=32511094

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004000704A Expired - Fee Related JP4633365B2 (ja) 2003-01-03 2004-01-05 サーバとクライアントとの間の改良された同期方法

Country Status (13)

Country Link
US (5) US7386590B2 (ja)
EP (1) EP1435585B1 (ja)
JP (1) JP4633365B2 (ja)
KR (1) KR101034421B1 (ja)
CN (1) CN100481821C (ja)
AU (2) AU2003268734B8 (ja)
BR (1) BR0306066A (ja)
CA (1) CA2452916C (ja)
MX (1) MXPA03011675A (ja)
MY (1) MY144908A (ja)
PL (1) PL364200A1 (ja)
RU (3) RU2346323C2 (ja)
TW (1) TWI269557B (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100640401B1 (ko) 2005-07-13 2006-10-30 삼성전자주식회사 모바일 이메일 서버와 클라이언트 단말 간 동기 유지방법과 시스템 및 그 단말

Families Citing this family (59)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7366760B2 (en) * 2003-01-03 2008-04-29 Microsoft Corporation System and method for improved client server communications of email messages
US7620688B2 (en) * 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component
US7386590B2 (en) 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
US8230112B2 (en) * 2003-03-27 2012-07-24 Siebel Systems, Inc. Dynamic support of multiple message formats
US7373602B2 (en) * 2003-05-28 2008-05-13 Microsoft Corporation Method for reading electronic mail in plain text
US7536440B2 (en) * 2003-09-18 2009-05-19 Vulcan Portals Inc. Method and system for email synchronization for an electronic device
US20050076085A1 (en) * 2003-09-18 2005-04-07 Vulcan Portals Inc. Method and system for managing email attachments for an electronic device
US7921162B2 (en) * 2004-07-19 2011-04-05 The Go Daddy Group, Inc. Notification system and method for domain name registrars
US7546613B2 (en) * 2004-09-14 2009-06-09 Oracle International Corporation Methods and systems for efficient queue propagation using a single protocol-based remote procedure call to stream a batch of messages
US20060101064A1 (en) 2004-11-08 2006-05-11 Sharpcast, Inc. Method and apparatus for a file sharing and synchronization system
US8626719B2 (en) * 2004-11-11 2014-01-07 Emc Corporation Methods of managing and accessing e-mail
US8195746B2 (en) * 2005-03-11 2012-06-05 International Business Machines Corporation Automatic off-line availability for document content linked in electronic mail messages
US7305420B2 (en) * 2005-05-25 2007-12-04 Microsoft Corporation Synchronizing modifiable documents with multiple clients using document subsections
US20060277270A1 (en) * 2005-06-03 2006-12-07 Microsoft Corporation Record and playback of server conversations from a device
US9282081B2 (en) * 2005-07-28 2016-03-08 Vaporstream Incorporated Reduced traceability electronic message system and method
US7610345B2 (en) 2005-07-28 2009-10-27 Vaporstream Incorporated Reduced traceability electronic message system and method
US7962585B2 (en) * 2005-08-15 2011-06-14 Microsoft Corporation Partial item change tracking and synchronization
US7844672B2 (en) * 2005-08-25 2010-11-30 International Business Machines Corporation Methods, systems, and computer program products for managing email in a client-server environment
US7454414B2 (en) * 2005-08-30 2008-11-18 International Business Machines Corporation Automatic data retrieval system based on context-traversal history
KR100705238B1 (ko) * 2005-11-15 2007-04-06 엘지전자 주식회사 에러 체크 코드를 이용한 데이터 동기화 방법과 이를 위한이동 통신 단말기 및 서버
US7956358B2 (en) 2006-02-07 2011-06-07 Macronix International Co., Ltd. I-shaped phase change memory cell with thermal isolation
US7962566B2 (en) * 2006-03-27 2011-06-14 Sap Ag Optimized session management for fast session failover and load balancing
US7640249B2 (en) * 2006-03-29 2009-12-29 Sap (Ag) System and method for transactional session management
US9501803B2 (en) * 2007-04-12 2016-11-22 Siemens Industry, Inc. Devices, systems, and methods for monitoring energy systems
US10120733B2 (en) * 2007-08-30 2018-11-06 Red Hat, Inc. Remote procedure call supporting multiple versions
US20090327354A1 (en) * 2008-06-26 2009-12-31 Microsoft Corporation Notification and synchronization of updated data
US9477727B2 (en) 2008-08-01 2016-10-25 Sybase, Inc. Abstracting data for use by a mobile device having occasional connectivity
US8335762B2 (en) * 2008-10-06 2012-12-18 Microsoft Corporation Resource tracking
US20100153335A1 (en) * 2008-12-12 2010-06-17 Microsoft Corporation Synchronizing multiple classes with disparate schemas in the same collection
US20100268784A1 (en) * 2009-04-17 2010-10-21 Marc Henness Data synchronization system and method
US9336291B2 (en) * 2009-12-30 2016-05-10 Sybase, Inc. Message based synchronization for mobile business objects
US8909662B2 (en) * 2009-12-30 2014-12-09 Sybase, Inc. Message based mobile object with native PIM integration
US8788458B2 (en) 2009-12-30 2014-07-22 Sybase, Inc. Data caching for mobile applications
US10102242B2 (en) 2010-12-21 2018-10-16 Sybase, Inc. Bulk initial download of mobile databases
US8892569B2 (en) 2010-12-23 2014-11-18 Ianywhere Solutions, Inc. Indexing spatial data with a quadtree index having cost-based query decomposition
TWI452472B (zh) * 2011-01-27 2014-09-11 Hon Hai Prec Ind Co Ltd 存取閘道器及其提供雲存儲服務方法
US9002926B2 (en) 2011-04-22 2015-04-07 Go Daddy Operating Company, LLC Methods for suggesting domain names from a geographic location data
US9110807B2 (en) 2012-05-23 2015-08-18 Sybase, Inc. Cache conflict detection
US8874682B2 (en) 2012-05-23 2014-10-28 Sybase, Inc. Composite graph cache management
US10057318B1 (en) 2012-08-10 2018-08-21 Dropbox, Inc. System, method, and computer program for enabling a user to access and edit via a virtual drive objects synchronized to a plurality of synchronization clients
US9547704B1 (en) * 2012-10-22 2017-01-17 Google Inc. Email robustness checking
US8806200B2 (en) * 2012-11-30 2014-08-12 Prakash Baskaran Method and system for securing electronic data
RU2527210C1 (ru) * 2013-06-14 2014-08-27 Общество с ограниченной ответственностью "Новые технологии презентаций" Способ и система для передачи данных от веб-сервера клиентским терминальным устройствам посредством локальной беспроводной коммуникационной сети
US9715694B2 (en) 2013-10-10 2017-07-25 Go Daddy Operating Company, LLC System and method for website personalization from survey data
US9684918B2 (en) 2013-10-10 2017-06-20 Go Daddy Operating Company, LLC System and method for candidate domain name generation
US10498777B2 (en) * 2014-03-17 2019-12-03 Citrix Systems, Inc. Real-time push notifications for cloud-based applications
US9660933B2 (en) 2014-04-17 2017-05-23 Go Daddy Operating Company, LLC Allocating and accessing hosting server resources via continuous resource availability updates
US9501211B2 (en) 2014-04-17 2016-11-22 GoDaddy Operating Company, LLC User input processing for allocation of hosting server resources
US9953105B1 (en) 2014-10-01 2018-04-24 Go Daddy Operating Company, LLC System and method for creating subdomains or directories for a domain name
US9785663B2 (en) 2014-11-14 2017-10-10 Go Daddy Operating Company, LLC Verifying a correspondence address for a registrant
US9779125B2 (en) 2014-11-14 2017-10-03 Go Daddy Operating Company, LLC Ensuring accurate domain name contact information
US9678799B2 (en) 2015-02-12 2017-06-13 International Business Machines Corporation Dynamic correlated operation management for a distributed computing system
US10587564B2 (en) * 2015-03-05 2020-03-10 Microsoft Technology Licensing, Llc Tracking electronic mail messages in a separate computing system
US10277549B2 (en) * 2015-06-04 2019-04-30 Apple Inc. Prioritized email synchronization with server
US11334596B2 (en) 2018-04-27 2022-05-17 Dropbox, Inc. Selectively identifying and recommending digital content items for synchronization
US11340760B2 (en) * 2019-09-06 2022-05-24 Dropbox, Inc. Generating a customized organizational structure for uploading content to a cloud-based storage system
US11329940B2 (en) 2019-10-28 2022-05-10 Microsoft Technology Licensing, Llc Coordinated unread count for email applications
CN113965580A (zh) * 2020-06-29 2022-01-21 北京字节跳动网络技术有限公司 同步消息的方法和装置
CN114124925B (zh) * 2020-08-25 2023-05-12 华为技术有限公司 一种电子邮件的同步方法及电子设备

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001078319A2 (en) * 2000-04-10 2001-10-18 Research In Motion Limited System and method for bundling information

Family Cites Families (75)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS63205747A (ja) 1987-02-13 1988-08-25 インターナシヨナル・ビジネス・マシーンズ・コーポレーシヨン 通信方法及びデータ処理システム
RU2095857C1 (ru) 1989-01-17 1997-11-10 Филипс Электроникс Н.В. Способ передачи информации с использованием носителя данных, носитель информации и устройство для воспроизведения информации с такого носителя
DE69220093T2 (de) 1992-06-18 1997-12-04 Ibm Verarbeitungsnetzwerk für verteilte anwendungsprogramme.
US5537551A (en) 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5325361A (en) 1992-12-01 1994-06-28 Legent Corporation System and method for multiplexing data transmissions
US5694561A (en) 1994-12-12 1997-12-02 Microsoft Corporation Method and system for grouping and manipulating windows
GB2300991B (en) * 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
JP3184763B2 (ja) 1995-06-07 2001-07-09 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチメディア直接アクセス記憶装置及びフォーマット方法
US5712907A (en) * 1995-09-18 1998-01-27 Open Port Technology, Inc. Pro-active message delivery system and method
US5923846A (en) 1995-11-06 1999-07-13 Microsoft Corporation Method of uploading a message containing a file reference to a server and downloading a file from the server using the file reference
US5923848A (en) 1996-05-31 1999-07-13 Microsoft Corporation System and method for resolving names in an electronic messaging environment
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
WO1998010580A1 (fr) 1996-09-03 1998-03-12 Toyota Jidosha Kabushiki Kaisha Controleur de communications d'information et systeme correspondant
US6377978B1 (en) 1996-09-13 2002-04-23 Planetweb, Inc. Dynamic downloading of hypertext electronic mail messages
US6233318B1 (en) 1996-11-05 2001-05-15 Comverse Network Systems, Inc. System for accessing multimedia mailboxes and messages over the internet and via telephone
JP3318503B2 (ja) 1997-02-27 2002-08-26 京セラ株式会社 無線通信システム
JPH1168987A (ja) 1997-08-15 1999-03-09 Sony Corp 情報通信システム、情報通信端末、サーバ装置および情報通信方法
US6138146A (en) 1997-09-29 2000-10-24 Ericsson Inc. Electronic mail forwarding system and method
US6073137A (en) * 1997-10-31 2000-06-06 Microsoft Method for updating and displaying the hierarchy of a data store
AU757557B2 (en) 1997-11-13 2003-02-27 Intellectual Ventures I Llc File transfer system
US6938073B1 (en) * 1997-11-14 2005-08-30 Yahoo! Inc. Method and apparatus for re-formatting web pages
US6324587B1 (en) * 1997-12-23 2001-11-27 Microsoft Corporation Method, computer program product, and data structure for publishing a data object over a store and forward transport
US6233316B1 (en) * 1998-01-27 2001-05-15 Dsc Telecom, L.P. Voice enhanced phone card
US6167402A (en) 1998-04-27 2000-12-26 Sun Microsystems, Inc. High performance message store
FI105971B (fi) 1998-04-30 2000-10-31 Nokia Mobile Phones Ltd Menetelmä ja laitteisto sähköpostin käsittelemiseksi
US6134582A (en) 1998-05-26 2000-10-17 Microsoft Corporation System and method for managing electronic mail messages using a client-based database
US6219694B1 (en) 1998-05-29 2001-04-17 Research In Motion Limited System and method for pushing information from a host system to a mobile data communication device having a shared electronic address
US20010054115A1 (en) 1998-05-29 2001-12-20 Tabitha Ferguson System and method for bundling information
US6438585B2 (en) 1998-05-29 2002-08-20 Research In Motion Limited System and method for redirecting message attachments between a host system and a mobile data communication device
CA2275840A1 (en) 1998-08-18 2000-02-18 Lucent Technologies Inc. Generalized messaging construct
US6886030B1 (en) 1998-08-18 2005-04-26 United Video Properties, Inc. Electronic mail system employing a low bandwidth link for e-mail notifications
US6505255B1 (en) * 1999-04-29 2003-01-07 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Method for formatting and routing data between an external network and an internal network
US6639687B1 (en) 1998-09-08 2003-10-28 International Business Machines Corporation Progress indicator for multiple actions
US6917965B2 (en) * 1998-09-15 2005-07-12 Microsoft Corporation Facilitating annotation creation and notification via electronic mail
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
JP3603936B2 (ja) 1999-01-22 2004-12-22 株式会社ソニー・コンピュータエンタテインメント 電子メール広告システム
US6449634B1 (en) 1999-01-29 2002-09-10 Digital Impact, Inc. Method and system for remotely sensing the file formats processed by an E-mail client
WO2000057612A2 (en) 1999-03-22 2000-09-28 Webxi Application layer protocol
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6442748B1 (en) * 1999-08-31 2002-08-27 Accenture Llp System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment
US6304898B1 (en) 1999-10-13 2001-10-16 Datahouse, Inc. Method and system for creating and sending graphical email
US20020055351A1 (en) * 1999-11-12 2002-05-09 Elsey Nicholas J. Technique for providing personalized information and communications services
JP2001197247A (ja) 2000-01-11 2001-07-19 Fuji Xerox Co Ltd 画像データ送受信装置及び通信システム
US6993559B2 (en) 2000-02-14 2006-01-31 Bigbow.Com, Inc. System, method, apparatus and computer program product for operating a web site by electronic mail
US6684088B1 (en) 2000-03-01 2004-01-27 Axi Mobile Ltd. System and method for displaying electronic mail messages on a low bandwidth device
US6438584B1 (en) * 2000-03-07 2002-08-20 Letter Services, Inc. Automatic generation of graphically-composed correspondence via a text email-interface
US6968364B1 (en) * 2000-03-30 2005-11-22 Microsoft Corporation System and method to facilitate selection and programming of an associated audio/visual system
JP2001339422A (ja) 2000-05-25 2001-12-07 Mitsubishi Electric Corp メールデータ管理システム
US6732101B1 (en) * 2000-06-15 2004-05-04 Zix Corporation Secure message forwarding system detecting user's preferences including security preferences
US6560883B2 (en) * 2000-06-28 2003-05-13 Snap-On Technologies, Inc. Method and system for conducting wheel alignment
JP2002125090A (ja) 2000-08-01 2002-04-26 Canon Inc 通信装置、通信方法、記憶媒体およびプログラム
WO2002021749A2 (en) 2000-09-08 2002-03-14 Plumtree Software Providing a personalized web page by accessing different servers
KR100453459B1 (ko) 2000-09-26 2004-10-15 인터렉스 가부시키가이샤 전자메일을 광고매체로 이용하기 위한 시스템 및 방법
US6934734B2 (en) 2000-12-04 2005-08-23 International Business Machines Corporation Method and apparatus for managing and presenting changes to an object in a data processing system
FI20002854A (fi) 2000-12-22 2002-06-23 Nokia Corp Etälataamisen tilaindikaattorit langattomissa lyhyen kantaman laitteissa
CA2329891A1 (en) 2000-12-29 2002-06-29 Subsecond Technology Inc. Method and apparatus for remote database maintenance and access
JP2002208959A (ja) 2001-01-09 2002-07-26 Casio Comput Co Ltd 電子メールサーバ装置、電子メール転送制御方法及び記録媒体
BR0208612A (pt) 2001-03-22 2005-03-15 Michael Chung Método e sistemas para correio eletrônico, marketing alvo e direto na internet, e banner de correio eletrônico
US6973481B2 (en) 2001-03-23 2005-12-06 Emailias Llc System and method for creating and managing forwarding email address
US7224491B2 (en) 2001-03-28 2007-05-29 Minolta Co., Ltd. Data communication apparatus, data communication system, data communication method, control program, and computer readable storage medium stored with control program
AUPR444601A0 (en) 2001-04-17 2001-05-17 Pro-Super Holdings Limited Business tracking system
JP3798263B2 (ja) 2001-06-01 2006-07-19 三菱電機株式会社 電子メールサーバ及び電子メールキャッシュ方法及び電子メールキャッシュプログラム
US20030093565A1 (en) 2001-07-03 2003-05-15 Berger Adam L. System and method for converting an attachment in an e-mail for delivery to a device of limited rendering capability
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
US20030035607A1 (en) * 2001-08-15 2003-02-20 Motorola, Inc. Apparatus for effecting conversion between communication signals in a first signal-form and communication signals in a second signal-form and method of manufacture therefor
US6973384B2 (en) * 2001-12-06 2005-12-06 Bellsouth Intellectual Property Corporation Automated location-intelligent traffic notification service systems and methods
US20030177171A1 (en) * 2002-01-22 2003-09-18 Brown Bruce Loring Electronic mail retrieval
US20030231207A1 (en) 2002-03-25 2003-12-18 Baohua Huang Personal e-mail system and method
US7031973B2 (en) 2002-06-10 2006-04-18 Microsoft Corporation Accounting for references between a client and server that use disparate e-mail storage formats
US6868143B1 (en) 2002-10-01 2005-03-15 Bellsouth Intellectual Property System and method for advanced unified messaging
US20040068544A1 (en) 2002-10-08 2004-04-08 Bellsouth Intellectual Property Corporation Multi-user e-mail client and alert schema
US7366760B2 (en) 2003-01-03 2008-04-29 Microsoft Corporation System and method for improved client server communications of email messages
US7386590B2 (en) 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
US7620688B2 (en) 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component
US9209992B2 (en) 2009-12-28 2015-12-08 International Business Machines Corporation Method, data processing program, and computer program product for handling instant messaging sessions and corresponding instant messaging environment

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2001078319A2 (en) * 2000-04-10 2001-10-18 Research In Motion Limited System and method for bundling information

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100640401B1 (ko) 2005-07-13 2006-10-30 삼성전자주식회사 모바일 이메일 서버와 클라이언트 단말 간 동기 유지방법과 시스템 및 그 단말

Also Published As

Publication number Publication date
BR0306066A (pt) 2005-06-14
AU2003268734B8 (en) 2010-02-04
KR101034421B1 (ko) 2011-05-12
US7386590B2 (en) 2008-06-10
KR20040062892A (ko) 2004-07-09
US7899872B2 (en) 2011-03-01
AU2010201166B2 (en) 2011-12-01
RU2008127702A (ru) 2010-01-20
TW200420044A (en) 2004-10-01
US20040133644A1 (en) 2004-07-08
JP4633365B2 (ja) 2011-02-16
RU2346323C2 (ru) 2009-02-10
MY144908A (en) 2011-11-30
AU2010201166A1 (en) 2010-04-15
US20110161448A1 (en) 2011-06-30
RU2008127701A (ru) 2010-01-20
AU2003268734A1 (en) 2004-07-22
EP1435585A1 (en) 2004-07-07
RU2421790C2 (ru) 2011-06-20
EP1435585B1 (en) 2017-03-29
CA2452916C (en) 2013-01-29
MXPA03011675A (es) 2005-06-03
US20130297709A1 (en) 2013-11-07
PL364200A1 (en) 2004-07-12
RU2003138081A (ru) 2005-06-10
CN1522013A (zh) 2004-08-18
US8423621B2 (en) 2013-04-16
CN100481821C (zh) 2009-04-22
TWI269557B (en) 2006-12-21
US20120209928A1 (en) 2012-08-16
RU2477517C2 (ru) 2013-03-10
US20080208998A1 (en) 2008-08-28
US9590927B2 (en) 2017-03-07
US8473560B2 (en) 2013-06-25
CA2452916A1 (en) 2004-07-03
AU2003268734B2 (en) 2009-12-24

Similar Documents

Publication Publication Date Title
JP4456877B2 (ja) 電子メールメッセージの最適なメッセージボディの提供方法
JP4633365B2 (ja) サーバとクライアントとの間の改良された同期方法
JP4438989B2 (ja) サーバとクライアントとの間でデータをストリームするための方法
AU2014200931A1 (en) System and method for improved synchronization between a server and a client
AU2012200888A1 (en) System and method for improved synchronization between a server and a client

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20070105

A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20070105

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20090618

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090710

A601 Written request for extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A601

Effective date: 20091009

A602 Written permission of extension of time

Free format text: JAPANESE INTERMEDIATE CODE: A602

Effective date: 20091015

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091110

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20100115

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100415

A02 Decision of refusal

Free format text: JAPANESE INTERMEDIATE CODE: A02

Effective date: 20100525

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20100924

RD13 Notification of appointment of power of sub attorney

Free format text: JAPANESE INTERMEDIATE CODE: A7433

Effective date: 20100927

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A821

Effective date: 20100927

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

Free format text: JAPANESE INTERMEDIATE CODE: A911

Effective date: 20101020

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: 20101112

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20101117

R150 Certificate of patent or registration of utility model

Ref document number: 4633365

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20131126

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

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

LAPS Cancellation because of no payment of annual fees