JP2004215279A - サーバとクライアントとの間でデータをストリームするための方法 - Google Patents

サーバとクライアントとの間でデータをストリームするための方法 Download PDF

Info

Publication number
JP2004215279A
JP2004215279A JP2004000701A JP2004000701A JP2004215279A JP 2004215279 A JP2004215279 A JP 2004215279A JP 2004000701 A JP2004000701 A JP 2004000701A JP 2004000701 A JP2004000701 A JP 2004000701A JP 2004215279 A JP2004215279 A JP 2004215279A
Authority
JP
Japan
Prior art keywords
email
data
request
computer
component
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
JP2004000701A
Other languages
English (en)
Other versions
JP2004215279A5 (ja
JP4438989B2 (ja
Inventor
Joseph R Warren
アール.ウォーレン ジョーゼフ
Min Zhong
ミン ツォン
Karl Froelich
フローリッヒ カール
Nicole A Bonilla
エー.ボニーラ ニコル
Robert R Noviskey
アール.ノビツキー ロバート
Alec Dun
ダン アレク
Ronald Eric Gray
エリック グレイ ロナルド
Aaron Hartwell
ハートウェル アーロン
Steven F Goddard
エフ.ゴッダード スティーブン
Brendan Power
パワー ブレンダン
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 JP2004215279A publication Critical patent/JP2004215279A/ja
Publication of JP2004215279A5 publication Critical patent/JP2004215279A5/ja
Application granted granted Critical
Publication of JP4438989B2 publication Critical patent/JP4438989B2/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
    • 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/21Monitoring or handling of messages
    • 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
    • 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

Abstract

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

Description

本発明は、一般的にはコンピュータネットワークに関し、より詳細には、電子メールアプリケーションのようなクライアントのアプリケーションとサーバのアプリケーションとの間の通信方法に関する。
電子メールは、通信のための重要な手段となっている。電子メールシステムは典型的には、サーバの構成要素(たとえばMicrosoft(登録商標) Exchange Server)とクライアントの構成要素(たとえばMicrosoft(登録商標) OutlookまたはMicrosoft(登録商標) Outlook Express)を含む。これらの構成要素は、典型的にはソフトウェアアプリケーションプログラムであり、計算装置(たとえばサーバ、PC、ラップトップパソコン、PDA(Personal Digital Assistance))の上で実行するように構成される。
電子メールシステムのクライアントの構成要素とサーバの構成要素のようなクライアントとサーバは、通信を容易にするため、多くの場合は通信プロトコルを決めている。このプロトコルは、通信中の各パーティに期待される動作、たとえば要求と応答の期待される順序、を定義する規則を定める。複雑なプロトコルは予期しない動作を処理する規則を有する。
クライアントとサーバの構成要素が改良されると、改良されたバージョンがエンドユーザに分配される。新しい構成要素の機能およびネットワーク機能を利用するため、新しい通信プロトコルが発明されることも多い。サーバの構成要素の設置台数が相当数に上る場合には、クライアントの構成要素は、プロトコルのセットを用いて、サーバの構成要素の選択された以前のバージョンと通信する能力を有するかもしれない。
新しいプロトコルが、全体を置き換えるのではなく、以前のバージョンのプロトコルに基礎を置く場合も時々発生する。このような場合には、新しいプロトコルは、以前のバージョンのプロトコルを装うために、機能を有効または無効にできるプロトコル要素により構成されるかもしれない。同様に、クライアントの構成要素の設置台数が相当数に上る場合には、サーバの構成要素は、プロトコルを用いて、クライアントの構成要素の選択された以前のバージョンと通信する能力を有するかもしれない。
本発明は、このようなシステムと方法を提供する。追加的な発明の特徴とともに、本発明のこれらおよびその他の利点は、本明細書に提供される本発明の説明により明確になるであろう。
本発明は、改良されたクライアントおよびサーバの通信のためのシステムと方法を提供する。より詳細には、本発明は、クライアントとサーバとの間の通信に用いられることができる改良されたプロトコルに関する。本発明は、電子メールサーバの環境に対して特に関連を有するが、本明細書に述べられる特徴は他のクライアント−サーバネットワークにおいても使用することができる。
本発明の態様では、電子メールサーバの構成要素は、応答のセット内のひとつのエラーのために応答のセットの全体を失敗とする代わりに、エラーを有するデータオブジェクトについてのエラー情報を発行することができる。電子メールサーバの構成要素は、電子メールクライアントの構成要素から、複数の電子メールデータオブジェクトの要求および電子メールクライアントの構成要素がエラーを有する電子メールデータオブジェクトを取り扱う能力を有することの指示を受信することができる。この要求および指示に応答して、電子メールサーバの構成要素は、複数の電子メールデータオブジェクトを読み出し、各々の電子メールデータオブジェクトについて、電子メールデータオブジェクトを開く際にエラーが発生しない場合は、電子メールクライアントの構成要素に電子メールデータオブジェクトを送信することができる。しかし、電子メールデータオブジェクトを開く際にエラーが発生した場合には、電子メールサーバの構成要素は、電子メールクライアントの構成要素にエラーメッセージを送信する。
本発明の他の態様では、電子メールサーバの構成要素は、電子メールクライアントの構成要素に進捗データを提供し、これにより電子メールクライアントの構成要素は、電子メールサーバの構成要素からのダウンロードの進捗状況を追跡することができる。電子メールクライアントの構成要素は、複数の電子メールデータオブジェクトの要求および電子メールクライアントの構成要素が進捗モードデータを取り扱う能力を有することの指示を送信する。この要求および表示に応答して、電子メールサーバの構成要素は、複数の電子メールデータオブジェクトを読み出し、電子メールクライアントの構成要素にその複数のデータオブジェクトとともに進捗モードデータを提供する。進捗モードデータは、その複数の電子メールデータオブジェクトのサイズ、各オブジェクトのサイズ、オブジェクトの数、オブジェクトがフォルダに関連した情報(FAI)であるかどうか、追加的情報、またはこれらの任意の組み合わせを含むことができる。
本発明の更に別の態様では、電子メールクライアントの構成要素により送信された要求は、その要求に対する応答のサイズについての制限を指示せずに、必要あれば電子メールサーバの構成要素がバッファを満たすことを可能とする。電子メールクライアントの構成要素は、要求の中で複数の小要求を送信し、各小要求は、電子メールサーバの構成要素における操作を要求し、サイズ情報を指示する。各小要求に応じて、サイズ情報が電子メールサーバの構成要素によって予期された範囲中のサイズ限界を含む場合には、電子メールサーバの構成要素は、応答をそのサイズ限界で制限する。サイズ情報が電子メールサーバの構成要素によって予期された範囲外のサイズ限界を含む場合には、電子メールサーバの構成要素は、サイズ情報の以内で新しいサイズ限界を探す。新しいサイズ限界は、「利用可能なバッファを満たせ」というような任意の表現とすることができる。
本発明の種々の実施例の説明に進む前に、本発明の種々の実施形態を実施することができるコンピュータおよびネットワークの環境の説明を行う。必須ではないが、本発明は、コンピュータで実行されるプログラムにより実施することができる。一般に、プログラムはルーチン、オブジェクト、コンポーネント、データ構造その他を含み、特定のタスクを実行し、または特定の抽象データ型を実装する。ここで用いられる用語「プログラム」は、単一のプログラムモジュールまたは協働する複数のプログラムモジュールを包含する。ここで用いられる用語「コンピュータ」は、一つまたは複数のプログラムを電子的に実行する、パーソナルコンピュータ(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 2004215279
以前のバージョンのサーバの構成要素のための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 2004215279
図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 2004215279
電子メールメッセージは、典型的には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 2004215279
本発明の一実施形態では、次の表に明らかにされる特徴を含むROPを用いて、電子メールサーバの構成要素と電子メールクライアントの構成要素との間の電子メールフォルダの同期を得る。電子メールサーバの構成要素は、改良されたstateblob符号化技術を中程度の複雑性の増加のみにより実装することができる。
Figure 2004215279
図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 2004215279
深い階層テーブルにおける電子メールフォルダの列の属性は、フォルダの内容に変更がなされる度に更新されることができる。深い階層テーブルの更新を効率良く実現するためには、深い階層テーブルの迅速かつ直接な参照が役立つことを見出した。深い階層テーブルにアクセスしようとする場合には、最低限、小さくてそして予測可能な間接参照レベルの数があることを見出した。たとえば、深い階層テーブルをフォルダ階層にける任意のレベルに位置決めすることは、予測可能な間接参照レベルの数を実現することにはならない。本発明の一実施形態においては、この理由から深い階層テーブルは、電子メールネットワークユーザの電子メールメッセージストアのフォルダ階層のルートフォルダと関連付けられている。
電子メールクライアントの構成要素と電子メールサーバの構成要素との間の通信を、通信セッションに分割することができる。電子メールメッセージストアの同期の消失は、セッションの合間、たとえばネットワーク接続の中断の間に発生する。通信セッションの開始時おいて電子メールメッセージストアの同期を再確立するため、以前のバージョンの電子メールサーバの構成要素と通信するための一部のプロトコルは、フォルダ階層内の各フォルダに対する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 2004215279
例示的フォーマットはバージョン属性、エラーコード属性およびメッセージ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 2004215279
FAIデータオブジェクトの数、すべてのFAIデータオブジェクトの合計サイズ、転送される電子メールメッセージの数および転送されるすべての電子メールメッセージの合計サイズについて別個の属性が定義されていることが判るであろう。他の組合せおよび追加的属性を希望通りにフォーマットに追加することができる。
次の表は、各メッセージとともに供給されるサイズおよび他の情報に関するフォーマットを示す。
Figure 2004215279
フォーマットは、次のメッセージのサイズおよび次のメッセージが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 (72)

  1. コンピュータ読み取り可能な記録媒体上で具現化されるデータパケットであって、
    電子メールクライアントの構成要素を識別する第1のデータフィールドと、
    複数の電子メールデータオブジェクトに対する要求を含む第2のデータフィールドと、
    前記電子メールクライアントの構成要素がエラーを有する電子メールデータオブジェクトを取り扱う能力があることの指示を含む第3のデータフィールドと
    を含むことを特徴とするデータパケット。
  2. 前記指示は、前記要求とともに含まれるフラグを含むことを特徴とする請求項1に記載のデータパケット。
  3. 前記要求は、前記電子メールデータオブジェクトが配置されるフォルダの同期の要求を含むことを特徴とする請求項1に記載のデータパケット。
  4. 前記要求は、電子メールメッセージの複写の要求を含むことを特徴とする請求項1に記載のデータパケット。
  5. 電子メールクライアントの構成要素から、複数の電子メールデータオブジェクトに対する要求および前記電子メールクライアントの構成要素がエラーを有する電子メールデータオブジェクトを取り扱う能力があることの指示を受信すること、および
    前記要求および前記指示に応答して、前記複数の電子メールデータオブジェクトを読み出すこと、および
    前記電子メールデータオブジェクトの各々について、
    前記電子メールデータオブジェクトを開く際に、エラーが発生しない場合には、前記電子メールデータオブジェクトを前記電子メールクライアントの構成要素に送信すること、および
    前記電子メールデータオブジェクトを開く際に、エラーが発生する場合には、エラーメッセージを前記電子メールクライアントの構成要素に送信すること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  6. 前記エラーメッセージは、前記電子メールデータオブジェクトについてのバージョン情報を含むことを特徴とする請求項5に記載のコンピュータ読み取り可能な記録媒体。
  7. 前記バージョン情報は、16ビットの整数を含むことを特徴とする請求項6に記載のコンピュータ読み取り可能な記録媒体。
  8. 前記エラーメッセージは、前記電子メールデータオブジェクトに対する識別情報を含むことを特徴とする請求項5に記載のコンピュータ読み取り可能な記録媒体。
  9. 前記識別情報は、32ビットの整数を含むことを特徴とする請求項8に記載のコンピュータ読み取り可能な記録媒体。
  10. 前記識別情報は、全世界で一意に決まる識別子および6バイトの通し番号を含むことを特徴とする請求項8に記載のコンピュータ読み取り可能な記録媒体。
  11. 前記エラーメッセージは、前記エラーに関して情報を含むことを特徴とする請求項5に記載のコンピュータ読み取り可能な記録媒体。
  12. 前記エラーに関して前記情報は、通信エラーの詳細のための大きな配列を含むことを特徴とする請求項11に記載のコンピュータ読み取り可能な記録媒体。
  13. 前記指示は、前記要求とともに含まれるフラグを含むことを特徴とする請求項5に記載のコンピュータ読み取り可能な記録媒体。
  14. 前記要求は、前記電子メールデータオブジェクトが配置されるフォルダの同期の要求を含むことを特徴とする請求項5に記載のコンピュータ読み取り可能な記録媒体。
  15. 前記要求は、電子メールメッセージの複写の要求を含むことを特徴とする請求項5に記載のコンピュータ読み取り可能な記録媒体。
  16. 電子メールクライアントの構成要素から、複数の電子メールデータオブジェクトに対する要求および前記電子メールクライアントの構成要素がエラーを有する電子メールデータオブジェクトを取り扱う能力があることの指示を送信すること、および
    前記電子メールデータオブジェクトの各々について、
    前記電子メールデータオブジェクトがエラーを含まない場合には、前記電子メールクライアントの構成要素において、前記電子メールデータオブジェクトを受信することおよび前記電子メールデータオブジェクトを複写すること、および
    前記電子メールデータオブジェクトがエラーを含む場合には、エラーメッセージを受信すること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  17. 前記エラーメッセージは、前記電子メールデータオブジェクトに対する識別情報を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記録媒体。
  18. 前記エラーメッセージは、前記エラーに関して情報を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記録媒体。
  19. 前記指示は、前記要求とともに含まれるフラグを含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記録媒体。
  20. 前記要求は、前記電子メールデータオブジェクトが配置されるフォルダの同期の要求を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記録媒体。
  21. 前記要求は、電子メールメッセージの複写の要求を含むことを特徴とする請求項16に記載のコンピュータ読み取り可能な記録媒体。
  22. コンピュータ読み取り可能な記録媒体上で具現化されるデータパケットであって、
    電子メールデータオブジェクトに関して識別情報を識別する第1のデータフィールドと、
    前記電子メールデータオブジェクトについてのエラーコードを含む第2のデータフィールドと
    を含むことを特徴とするデータパケット。
  23. 前記電子メールデータオブジェクトについてのバージョン情報を表す第3のデータフィールドをさらに含むことを特徴とする請求項22に記載のデータパケット。
  24. 前記第3のデータフィールドは、16ビットの整数を含むことを特徴とする請求項23に記載のデータパケット。
  25. 前記電子メールデータオブジェクトについての識別情報を表す第3のデータフィールドをさらに含むことを特徴とする請求項22に記載のデータパケット。
  26. 前記第3のデータフィールドは、32ビットの整数を含むことを特徴とする請求項25に記載のデータパケット。
  27. 前記第3のデータフィールドは、全世界で一意に決まる識別子および6バイト通し番号を含むことを特徴とする請求項25に記載のデータパケット。
  28. 前記エラーコードに関連するエラーに関する情報を含む第3のデータフィールドをさらに含むことを特徴とする請求項22に記載のデータパケット。
  29. 前記エラーに関する前記情報は、通信エラーの詳細のための大きな配列を含むことを特徴とする請求項28に記載のデータパケット。
  30. コンピュータ読み取り可能な記録媒体上で具現化されるデータパケットであって、
    電子メールクライアントの構成要素を識別する第1のデータフィールドと、
    複数の電子メールデータオブジェクトに対する要求を含む第2のデータフィールドと、
    前記電子メールクライアントの構成要素が進捗モードデータを取り扱う能力があることの指示を含む第3のデータフィールドと
    を備えることを特徴とするデータパケット。
  31. 前記進捗モードデータは、前記電子メールデータオブジェクトの各々のサイズを含むことを特徴とする請求項30に記載のデータパケット。
  32. 前記指示は、前記要求とともに含まれるフラグを含むことを特徴とする請求項30に記載のデータパケット。
  33. 前記要求は、前記電子メールデータオブジェクトが配置されるフォルダの同期の要求を含むことを特徴とする請求項30に記載のデータパケット。
  34. 前記要求は、電子メールメッセージの複写の要求を含むことを特徴とする請求項30に記載のデータパケット。
  35. 前記進捗モードデータは、複数の電子メールデータオブジェクトのサイズを含むことを特徴とする請求項30に記載のデータパケット。
  36. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内のフォルダ関連情報オブジェクトの数を含むことを特徴とする請求項30に記載のデータパケット。
  37. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の前記フォルダ関連情報オブジェクトの合計のサイズを含むことを特徴とする請求項36に記載のデータパケット。
  38. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージ数を含むことを特徴とする請求項30に記載のデータパケット。
  39. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージの合計のサイズを含むことを特徴とする請求項38に記載のデータパケット。
  40. 前記進捗モードデータは、各オブジェクトがフォルダ関連情報オブジェクトであるか否かをさらに含むことを特徴とする請求項30に記載のデータパケット。
  41. 電子メールクライアントの構成要素から、複数の電子メールデータオブジェクトに対する要求および前記電子メールクライアントの構成要素が進捗モードデータを取り扱う能力があることの指示を受信すること、
    前記要求および前記指示に応答して、前記複数の電子メールデータオブジェクトを読み出すこと、および
    前記電子メールデータオブジェクトの各々のサイズを含む進捗モードデータを、前記複数の電子メールデータオブジェクトとともに、前記電子メールクライアントの構成要素に提供すること、
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  42. 前記指示は、前記要求とともに含まれるフラグを含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  43. 前記要求は、前記電子メールデータオブジェクトが配置されるフォルダの同期の要求を含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  44. 前記要求は、電子メールメッセージの複写の要求を含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  45. 前記進捗モードデータは、前記複数のデータオブジェクトのサイズをさらに含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  46. 前記進捗モードデータは、前記複数のデータオブジェクト内のフォルダ関連情報オブジェクトの数をさらに含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  47. 前記進捗モードデータは、前記複数のデータオブジェクト内の前記フォルダ関連情報オブジェクトの合計のサイズをさらに含むことを特徴とする請求項46に記載のコンピュータ読み取り可能な記録媒体。
  48. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージの数をさらに含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  49. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト中の電子メールメッセージの合計のサイズをさらに含むことを特徴とする請求項48に記載のコンピュータ読み取り可能な記録媒体。
  50. 前記進捗モードデータは、各オブジェクトがフォルダ関連情報オブジェクトであるか否かをさらに含むことを特徴とする請求項41に記載のコンピュータ読み取り可能な記録媒体。
  51. 電子メールクライアントの構成要素から、複数の電子メールデータオブジェクトに対する要求および前記電子メールクライアントの構成要素が進捗モードデータを取り扱う能力があることの指示を受信すること、
    前記要求および前記表示に応答して、前記複数の電子メールデータオブジェクトを読み出すこと、および
    前記複数の電子メールデータオブジェクトのサイズを含む進捗モードデータを、前記複数の電子メールデータオブジェクトとともに、前記電子メールクライアントの構成要素に提供すること、
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  52. 前記指示は、前記要求とともに含まれるフラグを含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  53. 前記要求は、前記電子メールデータオブジェクトが配置されるフォルダの同期の要求を含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  54. 前記要求は、電子メールメッセージの複写の要求を含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  55. 前記進捗モードデータは、前記複数の電子メールデータオブジェクトの各々のサイズをさらに含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  56. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内のフォルダ関連情報オブジェクトの数をさらに含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  57. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の前記フォルダ関連情報オブジェクトの合計のサイズをさらに含むことを特徴とする請求項56に記載のコンピュータ読み取り可能な記録媒体。
  58. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージ数をさらに含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  59. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージの合計のサイズをさらに含むことを特徴とする請求項58に記載のコンピュータ読み取り可能な記録媒体。
  60. 前記進捗モードデータは、各オブジェクトがフォルダ関連情報オブジェクトであるか否かをさらに含むことを特徴とする請求項51に記載のコンピュータ読み取り可能な記録媒体。
  61. コンピュータで実施される方法であって、
    電子メールクライアントの構成要素から、複数の電子メールデータオブジェクトに対する要求および前記電子メールクライアントの構成要素が進捗モードデータを取り扱う能力があることの指示を送信すること、
    電子メールサーバの構成要素において、前記要求および前記指示に応答して、前記複数の電子メールデータオブジェクトおよび前記複数の電子メールデータオブジェクトに対する進捗モードデータを読み出すこと、および
    前記電子メールクライアントの構成要素において、前記進捗モードデータを受信することおよび前記進捗モードデータを利用して前記電子メールクライアントの構成要素への前記複数の電子メールデータオブジェクトの送信の進捗を監視すること
    を含むことを特徴とする方法。
  62. 前記進捗モードデータは、前記複数の電子メールデータオブジェクトのサイズを含むことを特徴とする請求項61に記載の方法。
  63. 前記進捗モードデータは、前記複数の電子メールデータオブジェクトの各々のサイズを備えることを特徴とする請求項61に記載の方法。
  64. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内のフォルダ関連情報オブジェクトの数を含むことを特徴とする請求項61に記載の方法。
  65. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の前記フォルダ関連情報オブジェクトの合計のサイズを含むことを特徴とする請求項64に記載の方法。
  66. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージの数を含むことを特徴とする請求項61に記載の方法。
  67. 前記進捗モードデータは、前記複数の電子メールデータオブジェクト内の電子メールメッセージの合計のサイズを含むことを特徴とする請求項66に記載の方法。
  68. 前記進捗モードデータは、各オブジェクトがフォルダ関連情報オブジェクトであるか否かをさらに含むことを特徴とする請求項61に記載の方法。
  69. 電子メールクライアントの構成要素から、要求中の複数の子要求を受信することであって、前記子要求の各々が電子メールサーバの構成要素における操作を要求し、サイズ情報を含むこと、および
    各子要求に応答して、
    前記サイズ情報が前記電子メールサーバの構成要素の期待する範囲内のサイズ限界を含む場合には、応答を前記サイズ限界で制限すること、および
    前記サイズ情報が前記電子メールサーバの構成要素の期待する範囲外のサイズ限界を含む場合には、前記サイズ情報の中に新規サイズ限界を見付けること
    を含むコンピュータ実行可能命令を記録したことを特徴とするコンピュータ読み取り可能な記録媒体。
  70. 前記サイズ情報は、前記電子メールサーバの構成要素の期待する範囲外のサイズ限界を含む場合には、前記電子メールサーバの構成要素のバッファを前記応答で満たすことをさらに備えることを特徴とする請求項69に記載のコンピュータ読み取り可能な記録媒体。
  71. コンピュータで実施される方法であって、
    電子メールクライアントの構成要素において、要求中に複数の子要求を生成することであって、前記子要求の各々が電子メールサーバの構成要素における操作を要求しおよびサイズ情報を含むこと、および
    前記要求を前記電子メールサーバの構成要素に送信すること、
    電子メールサーバの構成要素において、
    前記要求を受信すること、および
    前記子要求の各々に応答して、
    前記サイズ情報が前記電子メールサーバの構成要素の期待する範囲内のサイズ限界を含む場合には、応答を前記サイズ限界で制限すること、および
    前記サイズ情報が前記電子メールサーバの構成要素の期待する範囲外のサイズ限界を含む場合には、前記サイズ情報の中に新規サイズ限界を見付けること
    を含むことを特徴とする方法。
  72. 前記サイズ情報が前記電子メールサーバの構成要素の期待する範囲外のサイズ限界を含む場合には、前記電子メールサーバの構成要素のバッファを前記応答で満たすことをさらに備えることを特徴とする請求項71に記載の方法。
JP2004000701A 2003-01-03 2004-01-05 サーバとクライアントとの間でデータをストリームするための方法 Expired - Fee Related JP4438989B2 (ja)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US43786903P 2003-01-03 2003-01-03
US10/367,161 US7620688B2 (en) 2003-01-03 2003-02-14 Progress mode for electronic mail component

Publications (3)

Publication Number Publication Date
JP2004215279A true JP2004215279A (ja) 2004-07-29
JP2004215279A5 JP2004215279A5 (ja) 2007-02-22
JP4438989B2 JP4438989B2 (ja) 2010-03-24

Family

ID=32511093

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2004000701A Expired - Fee Related JP4438989B2 (ja) 2003-01-03 2004-01-05 サーバとクライアントとの間でデータをストリームするための方法

Country Status (16)

Country Link
US (1) US7620688B2 (ja)
EP (3) EP1435711B1 (ja)
JP (1) JP4438989B2 (ja)
KR (1) KR101021385B1 (ja)
CN (1) CN100433733C (ja)
AT (2) ATE378758T1 (ja)
AU (1) AU2003268611B2 (ja)
BR (1) BR0306065A (ja)
CA (2) CA2452527C (ja)
DE (2) DE60317453T2 (ja)
HK (1) HK1066953A1 (ja)
MX (1) MXPA03011674A (ja)
MY (1) MY137065A (ja)
PL (1) PL364157A1 (ja)
RU (1) RU2331920C2 (ja)
TW (1) TWI339052B (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012503231A (ja) * 2008-09-15 2012-02-02 マイクロソフト コーポレーション ウェブアプリケーションのための非同期待ち行列型メッセージング
JP2013524727A (ja) * 2010-04-15 2013-06-17 マイクロソフト コーポレーション Httpを介した信頼性のあるプロトコルトンネリングのための方法およびシステム

Families Citing this family (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2003105004A1 (en) * 2002-06-06 2003-12-18 Crescendo Networks Ltd. System and method for connecting multiple slow connections to multiple fast connections
US7111039B2 (en) 2002-11-20 2006-09-19 Microsoft Corporation System and method for using packed compressed buffers for improved client server communications
US7650403B2 (en) 2002-11-20 2010-01-19 Microsoft Corporation System and method for client side monitoring of client server communications
US7386590B2 (en) * 2003-01-03 2008-06-10 Microsoft Corporation System and method for improved synchronization between a server and a client
US20150195231A1 (en) * 2004-09-30 2015-07-09 Nahush Mahajan System and Method for Avoiding Loops in Automatic Message Processing
KR100659584B1 (ko) * 2004-12-07 2006-12-20 한국전자통신연구원 메시지 교환 방법
US7788237B2 (en) * 2004-12-17 2010-08-31 Microsoft Corporation Method and system for tracking changes in a document
US7805629B2 (en) * 2005-03-04 2010-09-28 Netapp, Inc. Protecting data transactions on an integrated circuit bus
US7899680B2 (en) * 2005-03-04 2011-03-01 Netapp, Inc. Storage of administrative data on a remote management device
US8291063B2 (en) * 2005-03-04 2012-10-16 Netapp, Inc. Method and apparatus for communicating between an agent and a remote management module in a processing system
US8090810B1 (en) 2005-03-04 2012-01-03 Netapp, Inc. Configuring a remote management module in a processing system
US7610345B2 (en) 2005-07-28 2009-10-27 Vaporstream Incorporated Reduced traceability electronic message system and method
US9282081B2 (en) 2005-07-28 2016-03-08 Vaporstream Incorporated Reduced traceability electronic message system and method
US7471218B2 (en) * 2006-09-18 2008-12-30 National Semiconductor Corporation Methods and systems for efficiently storing and retrieving streaming data
CN100417074C (zh) * 2006-09-30 2008-09-03 中兴通讯股份有限公司 一种无线局域网ip组播传输异常的快速检测方法
US20090037735A1 (en) * 2007-08-01 2009-02-05 O'farrell David Method and system for delivering secure messages to a computer desktop
US8396928B2 (en) * 2007-09-21 2013-03-12 Smartbrief, Inc. Methods and systems for handling electronic message content for electronic communications devices
US8407296B2 (en) * 2007-09-24 2013-03-26 Smartbrief, Inc. Multiple and multi-part message methods and systems for handling electronic message content for electronic communications devices
CN101583150B (zh) * 2009-06-18 2011-04-20 中兴通讯股份有限公司 一种无线接入点检测无线终端异常的方法及装置
US9084180B2 (en) * 2011-12-14 2015-07-14 Qualcomm Incorporated Systems and methods for transmitting and receiving discovery and paging messages
US10158594B2 (en) 2015-09-16 2018-12-18 Microsoft Technology Licensing, Llc Group headers for differentiating conversation scope and exposing interactive tools
US11405345B2 (en) 2016-11-01 2022-08-02 Microsoft Technology Licensing, Llc E-mail with smart reply and roaming drafts
US10516630B2 (en) 2016-11-01 2019-12-24 Microsoft Technology Licensing, Llc Switching synchronization systems for synchronizing server/client data
US10812434B2 (en) * 2017-03-23 2020-10-20 Blackberry Limited Apparatus and method for maintaining message databases in eventual consistency distributed database systems
FR3064437A1 (fr) * 2017-03-24 2018-09-28 Orange Procede de recommandation d'une pile de communication
US11347375B2 (en) * 2018-03-21 2022-05-31 Atlassian Pty Ltd. Digital task management using an intermediary single-account issue inbox system
CN114124925B (zh) * 2020-08-25 2023-05-12 华为技术有限公司 一种电子邮件的同步方法及电子设备

Family Cites Families (49)

* 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 Филипс Электроникс Н.В. Способ передачи информации с использованием носителя данных, носитель информации и устройство для воспроизведения информации с такого носителя
WO1993025962A1 (en) 1992-06-18 1993-12-23 International Business Machines Corporation Distributed applications processing network
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
JP3184763B2 (ja) 1995-06-07 2001-07-09 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチメディア直接アクセス記憶装置及びフォーマット方法
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
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
AU3782997A (en) 1996-09-03 1998-03-26 Toyota Jidosha Kabushiki Kaisha Information communication controller and system for the same
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 情報通信システム、情報通信端末、サーバ装置および情報通信方法
US6073137A (en) 1997-10-31 2000-06-06 Microsoft Method for updating and displaying the hierarchy of a data store
EP1038368B1 (en) 1997-11-13 2013-07-31 Intellectual Ventures I LLC File transfer system
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
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
US20040024824A1 (en) 2000-04-10 2004-02-05 Ferguson Tabitha K System and method for bundling information
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
US6886030B1 (en) 1998-08-18 2005-04-26 United Video Properties, Inc. Electronic mail system employing a low bandwidth link for e-mail notifications
CA2275840A1 (en) * 1998-08-18 2000-02-18 Lucent Technologies Inc. Generalized messaging construct
US6639687B1 (en) * 1998-09-08 2003-10-28 International Business Machines Corporation Progress indicator for multiple actions
WO2000016221A1 (en) 1998-09-15 2000-03-23 Microsoft Corporation Interactive playlist generation using annotations
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
US6304898B1 (en) 1999-10-13 2001-10-16 Datahouse, Inc. Method and system for creating and sending graphical email
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
JP2001339422A (ja) 2000-05-25 2001-12-07 Mitsubishi Electric Corp メールデータ管理システム
WO2002021749A2 (en) 2000-09-08 2002-03-14 Plumtree Software Providing a personalized web page by accessing different servers
EP1235396A4 (en) 2000-09-26 2004-01-07 Interlex Inc SYSTEM AND METHOD FOR USING ELECTRONIC POST AS ADVERTISING MEDIUM
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 電子メールサーバ装置、電子メール転送制御方法及び記録媒体
AUPR444601A0 (en) 2001-04-17 2001-05-17 Pro-Super Holdings Limited Business tracking system
JP3798263B2 (ja) 2001-06-01 2006-07-19 三菱電機株式会社 電子メールサーバ及び電子メールキャッシュ方法及び電子メールキャッシュプログラム
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
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
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

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2012503231A (ja) * 2008-09-15 2012-02-02 マイクロソフト コーポレーション ウェブアプリケーションのための非同期待ち行列型メッセージング
US8949344B2 (en) 2008-09-15 2015-02-03 Microsoft Corporation Asynchronous queued messaging for web applications
JP2013524727A (ja) * 2010-04-15 2013-06-17 マイクロソフト コーポレーション Httpを介した信頼性のあるプロトコルトンネリングのための方法およびシステム

Also Published As

Publication number Publication date
CA2841691C (en) 2015-02-17
DE60317453D1 (de) 2007-12-27
RU2003137881A (ru) 2005-06-10
EP1631025B9 (en) 2011-12-21
EP1631024A2 (en) 2006-03-01
PL364157A1 (en) 2004-07-12
EP1631024A3 (en) 2006-05-31
KR20040062891A (ko) 2004-07-09
HK1066953A1 (en) 2005-04-01
KR101021385B1 (ko) 2011-03-14
BR0306065A (pt) 2005-05-17
EP1631024B1 (en) 2013-01-16
JP4438989B2 (ja) 2010-03-24
AU2003268611A1 (en) 2004-07-22
EP1435711A1 (en) 2004-07-07
CN100433733C (zh) 2008-11-12
MY137065A (en) 2008-12-31
AU2003268611B2 (en) 2009-07-09
DE60317453T2 (de) 2008-03-06
ATE490632T1 (de) 2010-12-15
EP1631025A3 (en) 2006-05-17
US20040133643A1 (en) 2004-07-08
TWI339052B (en) 2011-03-11
MXPA03011674A (es) 2005-02-25
ATE378758T1 (de) 2007-11-15
RU2331920C2 (ru) 2008-08-20
DE60335218D1 (de) 2011-01-13
CA2452527A1 (en) 2004-07-03
CA2452527C (en) 2016-08-23
CN1518304A (zh) 2004-08-04
US7620688B2 (en) 2009-11-17
TW200421802A (en) 2004-10-16
EP1631025A2 (en) 2006-03-01
EP1631025B1 (en) 2010-12-01
CA2841691A1 (en) 2004-07-03
EP1435711B1 (en) 2007-11-14

Similar Documents

Publication Publication Date Title
JP4633365B2 (ja) サーバとクライアントとの間の改良された同期方法
JP4456877B2 (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: 20090703

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20090731

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20091030

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

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

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

Free format text: PAYMENT UNTIL: 20130115

Year of fee payment: 3

R150 Certificate of patent or registration of utility model

Ref document number: 4438989

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

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

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