JP2010525740A - ワイヤレス・データ・サービス内において電子メール・メッセージをキャッシュする装置および方法 - Google Patents
ワイヤレス・データ・サービス内において電子メール・メッセージをキャッシュする装置および方法 Download PDFInfo
- Publication number
- JP2010525740A JP2010525740A JP2010506209A JP2010506209A JP2010525740A JP 2010525740 A JP2010525740 A JP 2010525740A JP 2010506209 A JP2010506209 A JP 2010506209A JP 2010506209 A JP2010506209 A JP 2010506209A JP 2010525740 A JP2010525740 A JP 2010525740A
- Authority
- JP
- Japan
- Prior art keywords
- message
- cache
- metadata
- 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.)
- Withdrawn
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04W—WIRELESS COMMUNICATION NETWORKS
- H04W4/00—Services specially adapted for wireless communication networks; Facilities therefor
- H04W4/12—Messaging; Mailboxes; Announcements
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q10/00—Administration; Management
- G06Q10/10—Office automation; Time management
- G06Q10/107—Computer-aided management of electronic mailing [e-mailing]
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F15/00—Digital computers in general; Data processing equipment in general
- G06F15/16—Combinations 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/42—Mailbox-related aspects, e.g. synchronisation of mailboxes
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/56—Unified messaging, e.g. interactions between e-mail, instant messaging or converged IP messaging [CPM]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/58—Message adaptation for wireless communication
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/56—Provisioning of proxy services
- H04L67/568—Storing data temporarily at an intermediate stage, e.g. caching
- H04L67/5682—Policies or rules for updating, deleting or replacing the stored data
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L51/00—User-to-user messaging in packet-switching networks, transmitted according to store-and-forward or real-time protocols, e.g. e-mail
- H04L51/21—Monitoring or handling of messages
- H04L51/224—Monitoring or handling of messages providing notification on incoming messages, e.g. pushed notifications of received messages
Landscapes
- Engineering & Computer Science (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Business, Economics & Management (AREA)
- Theoretical Computer Science (AREA)
- Human Resources & Organizations (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Computer Hardware Design (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Marketing (AREA)
- General Business, Economics & Management (AREA)
- Economics (AREA)
- Tourism & Hospitality (AREA)
- Data Mining & Analysis (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
データ・サービス内において電子メール・メッセージをキャッシュするシステムおよび方法について記載する。例えば、本発明の一実施形態によるコンピュータ実装方法は、ワイヤレス・データ処理デバイスの代わりに、第1電子メール・サーバから第1電子メール・メッセージ集合を取り出すステップと、第1電子メール・メッセージ集合からメタデータを抽出するステップと、メタデータを第1キャッシュに格納するステップであって、第1キャッシュ管理方針にしたがって第1キャッシュを管理する、ステップと、電子メール・メッセージの少なくともメッセージ本体を第2キャッシュに格納するステップであって、第2キャッシュ管理方針にしたがって第2キャッシュを管理する、ステップとを備えている。
【選択図】図1
【選択図】図1
Description
本発明は、一般的には、データ処理システムの分野に関する。更に特定すれば、本発明は、ワイヤレス・データ・サービス内において電子メール・メッセージをキャッシュするためのアーキテクチャの改良に関する。
電子メールは、今日世界において代用することができない通信ツールになっている。業務の世界では、事実上全ての従業員が電子メールを拠り所として、外部の顧客および内部の他の従業員と通信を行う。加えて、殆どの電子メール・ユーザは、少なくとも1つの個人的な電子メール・アカウントを有する。個人的電子メール・アカウントは、ユーザのインターネット・サービス・プロバイダ(例えば、Pacific Bell、AT&T Worldnet(商標)、America Online(商標)、...等)によって、またはインターネット・ウェブ・サイト(例えば、Yahoo(商標)メールまたはHotmail(商標))が提供することができる。
存在する問題の1つに、ユーザが複数の異なる電子メール・アカウント間で調整することを厄介であると感じることがあげられる。例えば、ユーザが仕事中1日を通じて彼/彼女の会社の電子メール・アカウントをチェックしていてもよいが、ユーザは彼/彼女の個人的な電子メール・アカウントをチェックするのを忘れる場合や、チェックできない場合がある。同様に、自宅における夜間または週末の間、ユーザは彼/彼女の個人の電子メール・アカウントにしかアクセスできない場合もある。このため、ユーザが彼/彼女の個人アカウントから会社の同僚に電子メールを送る場合、ユーザが自宅に戻って彼/彼女の個人電子メール・アカウントにログ・インするまで、ユーザは会社の同僚の回答を点検できない場合もある。逆に、ユーザが彼/彼女の会社のアカウントから友人に電子メールを送る場合、ユーザが作業に戻って彼/彼女の個人電子メール・アカウントにログ・インするまでは、友人の回答にアクセスできない場合もある。ユーザが同じ場所から双方の電子メール・アカウントにアクセスすることができる場合であっても、2つ以上の異なる電子メール・システムにユーザがログ・インしなければならないのは、いくらか厄介であり、特に、ユーザのデスクトップ・コンピュータおよび/またはワイヤレス・クライアント(例えば、Microsoft Outlook(商標)およびLotus Notes(商標))に、2つ以上の異なるユーザ・エージェントが必要となり得る場合には厄介である。
前述の問題は、多くの電子メール・システムが異なる、互換性のない電子メール規格によって動作するという事実によって更に悪化する。2つの最も普及している電子メール規格は、Post Office Protocol 3 (「POP3)」)およびInternet Messaging Access Protocol(「IMAP」)である。
POP3は、インターネット電子メール・アカウントに広く一般に用いられている。POP3サーバは、着信電子メール・メッセージがログ・インしたユーザによってダウンロードされるまで、この電子メール・メッセージを一時的に格納する。ユーザは、電子メールがダウンロードされると直ぐに電子メールを削除するように、またはユーザがこれらを削除することを指示するまで待つように、サーバを構成することができる。POP3は、構成変更可能な選択肢が制限された、比較的単純なプロトコルである。係属中の全てのメッセージおよび添付ファイルは、サーバ上の1つの電子メール・フォルダからユーザのクライアント・コンピュータまたはワイヤレス・デバイス上にある1つの電子メール・フォルダ(即ち、ユーザ・エージェントの「インボックス」)にダウンロードする。一意のメッセージ識別コードに基づいてメッセージを識別する。
IMAPは、一般に普及しているが、いくらか精巧になった別の電子メール規格であり、インターネット電子メール・アカウントおよび社内電子メール・アカウントの双方に広く用いられている。IMAP4が最新バージョンである。POP3とは異なり、これはメッセージ・データベースを設けて、その中でメッセージをフォルダ(例えば、インボックス、発送済みメール、保存メール、...等)に保管し、更にユーザ間で共有できる電子メールボックスを設けている。また、IMAPは多目的インターネット・メール拡張機能(「MIME」)との統合改善にも備えている。MIMEは、ファイルを電子メール・メッセージに添付するために用いられるプロトコルである(例えば、ユーザは、添付ファイルを自動的に受け入れそれをダウンロードするのを待つ必要なく、メッセージ・ヘッダのみを読むことができる)。
データ・サービス内において電子メール・メッセージをキャッシュするシステムおよび方法について記載する。例えば、本発明の一実施形態によるコンピュータ実装方法は、ワイヤレス・データ処理デバイスの代わりに、第1電子メール・サーバから第1電子メール・メッセージ集合を取り出すステップと、第1電子メール・メッセージ集合からメタデータを抽出するステップと、メタデータを第1キャッシュに格納するステップであって、第1キャッシュ管理方針にしたがって第1キャッシュを管理する、ステップと、電子メール・メッセージの少なくともメッセージ本体を第2キャッシュに格納するステップであって、第2キャッシュ管理方針にしたがって第2キャッシュを管理する、ステップとを備えている。
本発明の更に深い理解は、以下の図面と関連付けた以下の詳細な説明から得ることができる。
図1は、本発明の一実施形態による電子メール・システム・アーキテクチャを示す。
図2は、インターネットIMAPアカウントおよび外部POPアカウントを含む、本発明の更に具体的な実施形態を示す。
図3は、本発明の一実施形態による、内部アカウント・コードの外部アカウント・コードとのマッピングを示す。
図4は、内部および外部アカウントの双方がIMAPアカウントである、電子メール・システムの一実施形態を示す。
図5は、本発明の一実施形態による、グローバル識別コード(「GID」)の標準的IMAP識別コードに対するマッピングを示す。
図6は、電子メールをデータ処理デバイスに配信する改良システムの一実施形態を示す。
図7は、本発明の一実施形態によるユーザ・データベースに保持したユーザ・データの集合を示す。
図8は、本発明の一実施形態において用いられる係属メッセージ表を示す。
図9は、本発明の一実施形態によるプロセスを示す。
図10は、本発明の一実施形態によるシステム・アーキテクチャを示す。
図11は、本発明の一実施形態による複数のタスク・キューを示す。
図12は、本発明の一実施形態において用いられるシンクロナイザおよびメール・キャッシュを示す。
図13は、本発明の一実施形態にしたがって、アカウントを同期させるために実装する方法を示す。
図14は、1つ以上の電子メール・ストアとワイヤレス・データ処理デバイスとの間において電子メールを同期させるシステムの別の実施形態を示す。
図15は、1つ以上の電子メール・ストアとワイヤレス・データ処理デバイスとの間にいて電子メールを同期させる方法の一実施形態を示す。
説明全体を通じて、説明の目的のために、本発明の完全な理解が得られるように、多数の具体的な詳細を明記する。しかしながら、本発明は、これら具体的な詳細の一部が無くても実用化できることは、当業者には明らかであろう。一方、周知の構造およびデバイスは、ブロック図形態で示して、本発明の基礎となる原理が曖昧になるのを避けている。
前述の問題に取り組むために、本願の譲受人は、複数の電子メール・アカウント間において調整を行うシステムを開発した。このシステムのある種の態様は、APPARATUS AND METHOD FOR COORDINATING MULTIPLE EMAIL ACCOUNTS(複数の電子メール・アカウントを調整する装置および方法)と題する米国特許第7,155,725号、およびAPPARATUS AND METHOD FOR DISTRIBUTING ELECTRONIC MESSAGES TO A WIRELESS DATA PROCESSING DEVICE USING A MULTI-TIERED QUEUING ARCHITECTURE(多層待ち行列アーキテクチャを用いて電子メッセージをワイヤレス・データ処理デバイスに配信する装置および方法)と題する米国特許第7,162,513号(「従来特許」)に記載されている。これらの特許は、本願の譲受人に譲渡されており、ここで引用したことによりその内容が本願にも含まれるものとする。
これより、図1から図9に関して、従来特許について説明し、続いて内部および外部電子メール・アカウントからの電子メールの一掃効率的な調整、同期、および管理に対処する電子メール・システムへの新たな改良について説明する。以下に説明する本発明の実施形態においても、ワイヤレス・クライアント・デバイスを用いた実施態様を中心とするが、本発明の基礎原理は必ずしもワイヤレス実施態様に限定される訳ではない。
先行特許に記載された実施形態
本発明の実施形態は、図1に概略的に示すような、データ処理サービス100上において実現することができる。一実施形態では、サービス100は、ワイヤレス・データ処理デバイス101と任意の外部サーバとの間におけるプロキシとして機能し、ワイヤレス・デバイス101は、例えば、電子メール・サーバ130および131、ならびにウェブ・サーバ(図示せず)のように、外部サーバと通信する。例えば、標準的なアプリケーション、マルチメディア・コンテンツ、およびデータをサービス100によって、ワイヤレス・デバイス101が適正に解釈することができるフォーマットに変換することができる。サーバ100の一実施形態が、PORTAL SYSTEM FOR CONVERTING REQUESTED DATA INTO A BYTECODE FORMAT BASED ON PORTAL DEVICE'S GRAPHICAL CAPABILITIES(ポータル・デバイスのグラフィック処理能力に基づいて、要求データをバイトコード・フォーマットに変換するポータル・システム)と題する米国特許第6,721,804号に記載されている。この特許は、本願の譲受人に譲渡されており、ここで引用したことによりその内容が本願にも含まれるものとする。
本発明の実施形態は、図1に概略的に示すような、データ処理サービス100上において実現することができる。一実施形態では、サービス100は、ワイヤレス・データ処理デバイス101と任意の外部サーバとの間におけるプロキシとして機能し、ワイヤレス・デバイス101は、例えば、電子メール・サーバ130および131、ならびにウェブ・サーバ(図示せず)のように、外部サーバと通信する。例えば、標準的なアプリケーション、マルチメディア・コンテンツ、およびデータをサービス100によって、ワイヤレス・デバイス101が適正に解釈することができるフォーマットに変換することができる。サーバ100の一実施形態が、PORTAL SYSTEM FOR CONVERTING REQUESTED DATA INTO A BYTECODE FORMAT BASED ON PORTAL DEVICE'S GRAPHICAL CAPABILITIES(ポータル・デバイスのグラフィック処理能力に基づいて、要求データをバイトコード・フォーマットに変換するポータル・システム)と題する米国特許第6,721,804号に記載されている。この特許は、本願の譲受人に譲渡されており、ここで引用したことによりその内容が本願にも含まれるものとする。
図1に示す実施形態によれば、ユーザには、サービス100(例えば、1つ以上の電子メール・サーバ上に維持される)インターネット電子メール・アカウント102を提供する。本明細書において用いる場合、「インターネット」とは、電子メール・アカウントがサービス100によって維持および制御される事実に言及する。ユーザは、内部電子メール・アカウント102にアクセスして、電子メール・メッセージをユーザのワイヤレス・デバイス101からワイヤレス・ネットワーク120を通じて、および/またはクライアント・コンピュータ110(例えば、インターネットと通信するように結合されているパーソナル・コンピュータ)から送出および受信することができる。種々のネットワーク形式を用いることができ、例えば、セルラ・ディジタル・パケット・データ(「CDPD」)および汎用パケット無線サービス(「GPRS」)をサポートするものが含まれる。しかしながら、本発明の基礎原理は、ワイヤレス・ネットワーク120のいずれの特定の形式にも限定されないことを注記しておく。
内部電子メール・アカウント102に加えて、ユーザは種々の「外部」電子メール・アカウント130および131を有することができる。つまり、「外部」とは、サービス100によって直接的に維持も制御もなされないという意味である。前述のように、従来のシステムでは、ユーザは、個々の電子メール・アカウント102、130、および131の各々に別個にログ・インしなければならないのが通例であった。対照的に、本発明の一実施形態では、サービス100が自動的にユーザの外部アカウント130および131からメッセージを読み出し、これらのメッセージをユーザの内部電子メール・アカウント102に格納する。このため、ユーザは、1つのアカウント102から、そして、1つのユーザ・エージェントを用いて、彼/彼女のメッセージの全てにアクセスすることができる。
図1に示す実施形態では、サービス100上に構成されたインターフェース104が周期的に外部電子メール・アカウント130および131に照会して、新たなメッセージをチェックする。あるいは、または加えて、インターフェース104は、ユーザが内部電子メール・アカウント102にログ・インするとき毎に、ユーザからコマンドを受信したときにのみ、外部アカウント130および131からメッセージを取り出すことができる。一実施形態では、ユーザは、新たな電子メール・メッセージを受信すると、それを自動的にインターフェース104に送信するように、外部電子メール・アカウント130、131を構成することができる。
インターフェース104が外部電子メール・アカウント130、131からメッセージを取り出すことができるようになる前に、各アカウント(例えば、mail.pacbell.net)および有効なユーザ認証データ毎に、サーバのネットワーク・アドレスを最初にプログラミングしておかなければならない。例えば、外部電子メール・アカウント130、131は、通例、電子メール・メッセージをインターフェース104に供給する前に、有効なユーザ名およびパスワードを必要とする。したがって、図1に示すように、ユーザは、最初に外部電子メール・アカウント・データ107をインターフェースに供給することを要求される場合がある。
一旦外部電子メール・アカウント130、131からの電子メール・メッセージが内部電子メール・アカウント102内に格納されたなら、電子メールが最初から内部アカウント102にアドレスされていたかのように、これらに対して種々の電子メール動作(例えば、回答、削除、保存メール・フォルダに移動、...等)を実行することができる。加えて、一実施形態では、インターフェース104はメール・アカウント更新を外部電子メール・アカウント130、131に送信することができる。例えば、ユーザが特定のメッセージを削除した場合、メッセージを削除したことの指示が外部アカウント130、131に送信され、これによってメッセージ一貫性を種々の電子メール・アカウント間で維持する。一実施形態では、内部アカウント102に対する動作を外部アカウント130、131に反映させるべきか否かに関する選択は、ユーザによってアカウント毎に行うことができる。
IMAPプロトコル(例えば、IMAP4)を用いる内部電子メール・アカウントとPOP3プロトコルを用いる外部アカウントとの間において電子メール・メッセージを調整する特定の一実施形態を、図2に示す。この実施形態は、これら2つの特定的なプロトコルを用いて説明するが、本発明の基礎原理は、種々の代わりのメッセージング・プロトコル(例えば、分散メール・システム・プロトコル(「DMSP」)、X.400、...等)を用いても実現できることを注記しておく。
この実施形態では、POP取込/更新インターフェース206をサービス100上に構成して、1つ以上の外部POPサーバ214から電子メール・メッセージを取り出す。前述のように、POP取込/更新インターフェース206は、外部POPアカウント214上に新たな電子メール・メッセージ230がないか周期的に(例えば、15分毎)チェックするように、プログラミングすることができる。加えて、ユーザは、POP取込/更新インターフェース206に、いずれの所与の時点でも、ワイヤレス・デバイス101またはクライアント・コンピュータ110から、新たなメッセージをチェックするように命令することができる。
新たなメッセージをチェックするためにどのようにPOP取込/更新インターフェース206を始動させるかには関係なく、一旦始動させたなら、例えば、ユーザの電子メール・アカウント名およびパスワードのような認証データを、最初に外部POPアカウント214に送信する。一旦外部POPアカウント214によって認証データが受け入れられたなら、POPアカウント214はあらゆる新たな電子メール・メッセージをPOP取込/更新インターフェース206に送信する。一実施形態では、POPプロトコルを用いて、POPアカウント214からPOP取込/更新インターフェース206にファイルを送信する。しかしながら、本発明の基礎原理は、いずれのメッセージ送信プロトコルにも限定されるのではない。
ユーザの外部POPがどのように構成されているかに応じて、POP取込/更新インターフェース206に送信されるメッセージは、これらが送信されると直ちに外部アカウント214から自動的に削除することができ、またはユーザが後にメッセージを削除すべきことを指示するまで外部アカウント214上に維持することもできる。
一実施形態では、POP取込/更新インターフェース206は、新しい電子メール・メッセージを、内部IMAPアカウント210上で指定されたフォルダに転送する。例えば、ユーザがYahoo電子メール・アカウントおよびWorldnet電子メール・アカウントを有する場合、ユーザは内部IMAPアカウント210上に2つの独立したフォルダをセット・アップし(例えば、それぞれ、「Yahooメール」および「Worldnetメール」)、双方のアカウントからの新たな電子メール・メッセージを格納することができる(前述のように、IMAPは電子メール・メッセージ・フォルダに対するサポートに備えている)。
外部POPアカウント214が、電子メール・メッセージを読み出した後でもこれらのメッセージを格納するように構成されている場合、読み出し後に各メッセージのコピーが2つずつ存在する。即ち、外部アカウント214上に1つのコピー、および内部電子メール・データベース211上に1つのコピーが存在する。したがって、2つのアカウント間における調整拡大に備えるために、一実施形態では、電子メール・メッセージ・マッピング・ロジック212が、内部アカウント210および外部アカウント214上に格納されているメッセージ間にリンクを生成する。例えば、図3に示すような表を、電子メール・メッセージ・マッピング・ロジック212によって生成し、内部電子メール・メッセージ識別コード301を、外部電子メール・メッセージ識別コード302と対応付けることができる。動作において、ユーザが特定の内部電子メール・メッセージに関して動作を実行する毎に、電子メール・メッセージ・マッピング・ロジック212は、対応する外部電子メール・メッセージが存在するか否か判定する。存在する場合、POP取込/更新インターフェース206に通知し、次いでPOP取込/更新インターフェース206は、それに応じて、外部POPアカウント214を更新する。
例えば、再度図3を参照して、ユーザが内部メッセージIDコード"folder=saved mail, uid=3361"を有するメッセージを削除すると、電子メール・メッセージ・マッピング・ロジック212は、POP取込/更新インターフェース206に、外部メッセージIDコード"B881431776693cca7e41ccded 0f56613"を有する外部メッセージ番号4を外部POPサーバ214から削除すべきことを示す。すると、POP取込/更新インターフェース206は、POP3「削除」コマンドを外部POPアカウント214に送信して、そのメッセージ番号(例えば、"DELE4")を用いてメッセージを特定する。このように、ユーザは数個の異なるメール・アカウントを1つのアカウントから効果的に管理することができる。
ユーザは、彼/彼女のワイヤレス・デバイス101から内部電子メール・アカウント210にアクセスすることができ、一実施形態では、ワイヤレス・デバイス101は、電子メール・プロキシ204を通じてアカウントに接続する。ネットワーク・ポータル・アプリケーションに記載されているように、一実施形態では、電子メール・プロキシ204は、電子メール・メッセージおよびその他のコンテンツ(例えば、ウェブ・ページ、グラフィック画像等)を、個々のワイヤレス・デバイス101の処理能力に基づいて一意にフォーマットする。また、ユーザは、内部電子メール・アカウント210に、クライアント・デスクトップまたはノートブック・コンピュータ110を通じて、直接またはウェブ・インターフェース202(例えば、Yahoo MailおよびHotmailが提供するウェブ・インターフェースのような)を介してアクセスすることもできる。
図4は、内部電子メール・アカウント410および外部電子メール・アカウント414双方がIMAPアカウントである、一実施形態を示す。外部IMAPアカウント414は電子メール・フォルダのサポートを有するので、種々のレベルの電子メール調整が可能である。例えば、ユーザは、外部電子メール・アカウント414上で指定されたフォルダにおいて発見されたメッセージだけを取り出すようにIMAP取込/更新インターフェース406を構成することができる(例えば、「インボックス」フォルダからのみ)。一旦具体的なフォルダがユーザによって特定されると、内部アカウント410は、前述と同様にして、外部アカウント414からメッセージを取り出すことができる。例えば、一旦メッセージを外部アカウント414から読み出したなら、電子メール・メッセージ・マッピング・ロジック412を内部アカウント410内において実行して、各外部メッセージIDコードを内部メッセージIDコードと関連付ける(例えば、図3に概略的に示すように)。次いで、この関連付けを用いて、メッセージ更新をリモート・アカウント414に送信することができる。例えば、ユーザがメッセージを削除すると、電子メール・メッセージ・マッピング・ロジック412は、対応する外部メッセージが存在するか否か判定する(例えば、内部メッセージIDコードを用いて、表参照を実行することによって)。存在する場合、電子メール・メッセージ・マッピング・ロジック412は、外部IDコードをIMAP取込/更新インターフェース406に送信し、続いて、IMAP取込/更新インターフェース406は「削除」コマンドを外部IMAPアカウント414に送信する(即ち、外部IDコードによって、削除すべきメッセージを特定する)。
内部および/または外部IMAPアカウントを用いて作業する際の付加的な問題の1つは、電子メール・メッセージIDコードは各個々のIMAPフォルダ内でなければ一意でないことである。例えば、「インボックス」フォルダおよび「保存メール」フォルダ双方が、1から20までの範囲を取るIDコードを有する電子メール・メッセージを収容することもあり得る(即ち、異なる電子メール・メッセージに同じIDコードが用いられる)。加えて、電子メール・メッセージをソース・フォルダから宛先フォルダに移動するとき、新たなIDコードが与えられる(即ち、フォルダ内に既に格納されているメッセージに用いられたIDコードに基づいて)。その結果、内部電子メール・アカウント210、410および外部電子メール・アカウント214、414上に格納されているメッセージ間で精度の高いマッピングを維持するためには、何らかのメカニズムを設ける必要がある。
本発明の一実施形態では、IMAPフォルダ全体を通じて精度高く追跡するために、IMAPアカウント210、410上にある全てのメッセージに、一意のグローバルIDコード(「GID」)を生成する。標準的なIMAP識別コードとは異なり、メッセージのGIDは、アカウント210、410上にある当該メッセージを一意に識別し、メッセージが1つのフォルダから次のフォルダに移動しても変化しない。図5における表は、GIDの標準的IMAP IDコードへのマッピング例を明示する。一実施形態では、電子メール・メッセージ・マッピング・ロジック212、412は、各電子メール・メッセージのGIDを、リモート・アカウント上の対応するIDコードと関連付ける。その結果、ユーザが内部アカウント210、410においてファイルをフォルダ間で移動させても、外部アカウント214、414上の対応するメッセージをなおも特定することができる。
GIDは、様々な異なる方法で生成し維持することができる。一実施形態では、特定のメッセージに対する更新が行われたときにはいつでも、GIDマッピングを更新する。例えば、GID=20がINBOX:25に対応し、ユーザがINBOX:25をTrash:12に移動させた場合、それに応じてマッピングを更新する。この技法の利点の1つは、GIDによるメッセージの素早い参照が可能になることである。
別の実施形態では、X-GID:20のようなX-Headerをメール・メッセージの実際のヘッダに挿入する。メッセージを移動させると、ヘッダもそれと共に移動する。この技法の利点の1つは、メッセージをフォルダ毎に次々に追跡するのに要する作業が少なくなることである。
一実施形態では、ユーザが内部アカウント210、410からの電子メール・メッセージに応答すると、ヘッダ内にある"FROM:"フィールドが、メッセージを送信した先の元のアカウントを示す。例えば、メッセージが本来外部アカウント214、414に送られた場合、回答が内部アカウントにおいて生成されたという事実にも拘わらず、"FROM:"フィールドは外部アカウント・アドレスを含む。
加えて、メッセージを内部アカウントから送信したことの指示も、メッセージに含めることができる。例えば、メッセージをワイヤレス・デバイスから送信した場合、「ワイヤレス」デバイスからメッセージを送ったことの指示を、発信元の名称に添付することができ(例えば、「スコット・キスター(ワイヤレス)」scott.kister@danger.com)、これによってメッセージの真の発信元を特定しつつ、同時に元の電子メール受信アドレスを維持する。一実施形態では、この指示は、内部アカウント210、410において、エンド・ユーザによってイネーブルまたはディスエーブルすることができる。
図6は、電子メッセージをワイヤレス・データ処理デバイス101に配信する(distribute)電子メール・システムの別の実施形態を示す。この実施形態は、概略的に、ユーザ・データベース625、ユーザ・データベース625にアクセスするデータベース・プロキシ・サーバ620、電子メール・プロキシ・サーバ610、ディスパッチャ・サーバ615、およびメール・サーバ605上で(あるいは、別個のサーバ上で)実行するメール・エージェント606によって構成されている。
図7に示すユーザ・データベース625の一部の例は、ユーザ識別コード701のデータ処理デバイス識別コード702に対するマッピングを収容する。ユーザID/デバイスIDのマッピングは、サービス100が、所与のユーザのために電子メール・メッセージおよびその他のデータを送信すべき特定のワイヤレス・デバイス101を特定するために用いられる。加えて、ユーザ・データベース625は、ユーザのアカウント名、ユーザのオンライン・ステータス、ワイヤレス・デバイス101が通信している特定のディスパッチャ615を含む、およびユーザと関連付けられている加入者個人情報モジュール(「SIM」)識別コード(ユーザは1つよりも多いSIMを維持している場合もある)を収容する。
ディスパッチャ615は、ワイヤレス・デバイス101とサービス100との間で送信するデータのための通信中央地点を形成する。一実施形態では、ディスパッチャ615は、ワイヤレス・デバイス101とサービス100上に維持されている種々のプロキシ・サーバとの間にソケット接続(例えば、TCPソケット)を維持する。例えば、電子メール・セッションでは、ディスパッチャ615は、ワイヤレス・デバイス101と電子メール・プロキシ・サーバ610との間にソケット接続を開設し維持する。同様に、他のワイヤレス・アプリケーション(例えば、インスタント・メッセージング、ウェブ・ブラウジング、...等)では、ディスパッチャ615は、ワイヤレス・デバイス101としかるべきプロキシ・サーバ621(例えば、インスタント・メッセージング・プロキシ・サーバ、ウェブ・プロキシ・サーバ、...等)との間にソケット接続を確立し維持する。ユーザがサービス100にログ・インする毎またはサービス100からログ・アウトする毎に、ディスパッチャ615は、DBプロキシ620に、ユーザ・データベース625におけるユーザのオンライン・ステータスをそれに応じて更新するように通知する。加えて、ワイヤレス・ネットワーク120と、サービス100が動作するローカル・ネットワークとの間に帯域幅の大きな差がある場合、ディスパッチャ615は、各個々のソケット接続を通じてワイヤレス・デバイス101に送信するデータおよびワイヤレス・デバイス101から送信されるデータを、一時的にバッファする。
メール・サーバ605(または別個のサーバ)上で実行するメール・エージェント606は、連続的にユーザの電子メール・アカウントに対する変化を追跡する。一実施形態では、エージェント606はユーザのインボックスを周期的にチェックして、ユーザが何らかの新たな電子メール・メッセージを受信したか否か判定する。ユーザに宛てられた新たな電子メール・メッセージが到達すると、メール・エージェント606は「新電子メール・メッセージ」警報を電子メール・プロキシ・サーバ610に送信する。電子メール・プロキシ・サーバ610は、新電子メール・メッセージ警報をDBプロキシ・サーバ620に転送する。電子メール・プロキシ・サーバは、新電子メール・メッセージ警報のフォーマットを標準フォーマット(例えば、IMAP)からサービス100が採用している専用のメッセージング・フォーマットに変換することができる。
DBプロキシ・サーバ620は、ユーザ・データベース625に照会して、ユーザがオンラインかまたはオフラインか判定し、オンラインである場合、どのディスパッチャを通じてデータ処理デバイス101が接続されているかも判定する。DBプロキシ・サーバ620は、次に、新電子メール・メッセージ警報を自動的にユーザのワイヤレス・デバイス101に、ディスパッチャ615を通じて送信する。つまり、ユーザがオンラインの場合、彼/彼女は、何らかの新たな電子メール・メッセージが彼/彼女の電子メール・アカウントに到達したときに、自動指示を受信する。
しかしながら、ユーザがオフラインの場合、DBプロキシ620は新電子メール警報を、図8に示すような、係属メッセージ表800に格納する。係属メッセージ表は、表に格納されているデータ・タイプを示すメッセージ・タイプ指示801と、基礎メッセージ・データを収容するメッセージ・オブジェクト802とによって構成されている。図8には、3種類のメッセージ・タイプ、新電子メール・メッセージ警報801、新電子メール・メッセージ811、および新インスタント・メッセージ812が示されている。勿論、本発明の基礎原理に従いつつも、事実上無制限の数のメッセージ・タイプを一時的にユーザ・データベース625内において待ち行列に入れることができる。
一実施形態では、一旦新電子メール・メッセージ警報が、ある特定のメール・フォルダ(例えば、特定のメール・サーバ上にあるユーザのインボックス)に対して、ユーザの係属メッセージ表800に格納されると、それ以上の警報や電子メール・メッセージは、そのメール・フォルダに対して、表には格納されず、これによってネットワーク帯域およびユーザ・データベース625上の記憶空間を保存する。しかしながら、異なるフォルダに対する新電子メール警報を受信した場合、新電子メール警報を係属メッセージ表800に格納する。
ユーザがディスパッチャ615を介してサービス100に再接続するときにはいつでも、ディスパッチャ615は最初にDBプロキシ620をチェックして、何らかの電子メール・メッセージ警報、電子メール・メッセージ、または他のタイプのデータが、ワイヤレス・デバイス101に対して係属中になっていないか判定する。係属中になっている場合、ディスパッチャ615は、これらをDBプロキシ620を通じて受信し、これらをワイヤレス・デバイス101に送信する。
一実施形態では、一旦ワイヤレス・デバイス101が新電子メール・メッセージ警報810を受信したなら(直ちに、またはユーザ・データベースの中において待ち行列に入れた後)、ワイヤレス・デバイス101は、指定されたグローバルID値よりも高い新たな電子メール・メッセージ全ての要求を送信する。この要求は、デバイス101が自動的に生成しても、または手動でユーザ・コマンドに応答して生成してもよい。図5に示すように、サービス100が新たな電子メール・メッセージを受信するに連れて、新たなグローバルIDが順次割り当てられる。したがって、ワイヤレス・デバイス101は、そのローカル電子メール・ストレージに照会して、既にダウンロード済みの電子メール・メッセージに対する最大GID値を特定し、次いで、特定したGID値よりも大きなGID値を有する全ての電子メール・メッセージを要求することができる。このように全ての新電子メール・メッセージに対して一括要求を送信することにより、新たな電子メール・メッセージ毎に個々に要求する技法と比較すると、多大な量のネットワーク帯域幅の節約となる。
ディスパッチャ615は、この一括要求を電子メール要求と同一視し(例えば、要求に関連するデータ・オブジェクトのヘッダを読むことにより)、応答して、この要求を電子メール・プロキシ610に転送する。前述のように、要求がウェブ・ページ要求またはインスタント・メッセージング・トランザクションであった場合、ディスパッチャはこの要求をウェブ・プロキシ・サーバまたはインスタント・メッセージ・プロキシ・サーバにそれぞれ転送する。
電子メール・プロキシ610は、要求をデコードし、応答して要求をIMAPプロトコル(またはメール・サーバ605が採用する他のプロトコル)に変換する。例えば、「全ての新電子メール・メッセージ」に対する1つの要求に応答して、プロキシ・サーバ610は、新たな電子メール・メッセージ各々を個々に要求し、次いでこれらを1つの一括電子メール・メッセージ応答に束ねて、データ処理デバイス101に転送しても、ネットワーク帯域幅を保存することになる。
一実施形態では、プロキシ・サーバ610は、各電子メール・メッセージのコンテンツ全体(即ち、電子メール・ヘッダ+本体)ではなく、新たな電子メール・メッセージ全てのヘッダのリストを最初に要求する。一旦データ処理デバイス101においてメッセージ・ヘッダを受信したなら、ユーザはメッセージ・ヘッダから各メッセージの主題の行を調べて、彼/彼女が読みたい電子メール・メッセージのみをダウンロードすることができる。
ワイヤレス・ネットワーク120は、通例、有線ネットワーク程信頼性が高くない。したがって、ワイヤレス・デバイス101は、ときとして、サービス100とのデータ・トランザクションの最中に、ワイヤレス・ネットワーク120から切断される場合もある。例えば、電子メール・プロキシ610が1つ以上の電子メール・メッセージをユーザの代わりに電子メール・サーバ605から受信した後で、しかもディスパッチャ615によって、要求された電子メール・メッセージのワイヤレス・デバイス101への配信に成功した後に、ワイヤレス・デバイス101が移動してワイヤレス・ネットワークとの接触が絶たれる場合もある。これが生じた場合、一実施形態では、ディスパッチャ615は、ワイヤレス・デバイス101が再度オンラインに戻るまで、電子メール・メッセージ(またはその他のデータ)をメモリにおいて待ち行列に入れる。一旦ワイヤレス・デバイス101がディスパッチャ615との接続を再確立したなら、ディスパッチャ615は、待ち行列に入れたデータをワイヤレス・デバイス101に送信する。
一実施形態では、しかしながら、ユーザがある所定の時間期間(例えば、5分間)接触を絶ったままであった場合、ディスパッチャ615は待ち行列データをDBプロキシ620に送信し、次いで、DBプロキシ620がデータを係属メッセージ表800の中に格納する。これは、前述の通りである。あるいは、または加えて、ディスパッチャ615は、データをワイヤレス・デバイス101に送信しようとする試みを(指定時間量ではなく)指定回数だけ行った後、待ち行列データをDBプロキシ620に送信してもよい。
ユーザがサービス100との接続を再確立すると、ディスパッチャ615(最初にデータを待ち行列に入れたディスパッチャとは異なるディスパッチャであってもよい)は、DBプロキシ620に、何らかの係属データがないか照会する。次いで、DBプロキシ620は係属データをディスパッチャ615に送信し、ディスパッチャ615はデータをワイヤレス・デバイス101に転送する。
このように、サービス100は、複数のレベルの待ち行列を用いて、電子メール・メッセージおよびその他のデータのために信頼性の高い配信システムを提供する。ディスパッチャ615は、短期キューとして作用し、指定時間期間の間電子メール・メッセージを格納する。ワイヤレス・デバイス101が、指定時間期間の後もオフラインのままである場合、ディスパッチャ615は係属中の電子メール・メッセージを、DBプロキシ620が維持するユーザ・データベース625に転送することによって、メモリおよび処理パワーを解放し、ディスパッチャ615はこれらを他のデータ処理デバイスの接続に割り当てし直すことができる。次いで、電子メール・メッセージおよびその他のデータをユーザ・データベース625に無期限に(即ち、ワイヤレス・デバイス101が再度オンラインになるまで)格納する。
図9は、説明したばかりの電子メール配信プロセスの種々の態様を概略的に示すフローチャートである。902において、メール・エージェント606は、新たな電子メール・メッセージがメール・サーバ605上にあるユーザのインボックスに到達したことを検出する。904において、DBプロキシ620は、ワイヤレス・デバイス101が現在オンラインになっているか否か、ユーザ・データベース625に対する照会を通じて判定する。オンラインでない場合、新たな電子メール通知をユーザ・データベース906の中で待ち行列に入れ、後にサービス100に接続する次のときに、ワイヤレス・デバイス101に送信する。
ワイヤレス・デバイス101がオンラインの場合、908において、ディスパッチャは新電子メール通知をワイヤレス・デバイス101に送信する。909において、電子メール・プロキシ610は、ワイヤレス・デバイス101から新たな電子メール・メッセージ全ての要求を受信する(例えば、ある指定されたGID値よりも上)。910において、電子メール・プロキシは、新たな電子メール・メッセージを読み出し、フォーマットし直し、ディスパッチャに送信する(例えば、これらを1つの応答に束ねることによって)。次いで、912において、ディスパッチャ615は、電子メール・メッセージをワイヤレス・デバイスに送信しようとする。
送信に成功したと914において判定した場合、プロセスは終了する。しかしながら、送信が失敗であった場合、ディスパッチャ615は、918において、再送信閾値条件(例えば、時間閾値または再送信試行閾値を過ぎていない)に達していないと判定される限り、920において、電子メール・メッセージをそのローカル・メッセージ・キューから送信しようとし続ける。再送信閾値に達した場合、922において、電子メール・メッセージをディスパッチャのキューから、ユーザ・データベース625内にある長期係属メッセージ・キュー(例えば、係属メッセージ表800)に送信する。
電子メール調整および同期システムの新たな実施形態
図10は、内部および外部電子メール・メール・サーバからの電子メール・メッセージを管理する更に別の技法を採用したアーキテクチャを示す。この実施形態では、電子メール・メッセージの同期、配信、およびスケジューリングは、非同期新メール通知受信部1005、タスク・キュー1006、同期部1007、メール・キャッシュ1008、およびスケジューラ1009を含む、様々な新たなコンポーネントによって遂行する。特に明記しない限り、図10に示すコンポーネントは、先に説明した対応するコンポーネント(例えば、DBプロキシ1014、ディスパッチャ1012、メール・プロキシ1010等)と同じくまたは同様に動作するものとする。
図10は、内部および外部電子メール・メール・サーバからの電子メール・メッセージを管理する更に別の技法を採用したアーキテクチャを示す。この実施形態では、電子メール・メッセージの同期、配信、およびスケジューリングは、非同期新メール通知受信部1005、タスク・キュー1006、同期部1007、メール・キャッシュ1008、およびスケジューラ1009を含む、様々な新たなコンポーネントによって遂行する。特に明記しない限り、図10に示すコンポーネントは、先に説明した対応するコンポーネント(例えば、DBプロキシ1014、ディスパッチャ1012、メール・プロキシ1010等)と同じくまたは同様に動作するものとする。
本発明の一実施形態では、タスク・キュー1014は、非同期新メール通知受信部1005、スケジューラ1009、メール・プロキシ1010、および同期部1007のような、他のシステム・コンポーネントによってタスクが置かれるキュー(または一連のキュー)である。タスク・キュー1014は、厳密には線形キューではない。これは、リレーショナル・データベースであり、例えば、項目がキューの中にいる時間長、タスクの優先度が高いか低いか、そしてそれが他のタスクと合体することができるか否かを含む、複雑な発見的方法に応じて、このリレーショナル・データベースから、実行する次のタスクに照会することができる。データベースの実施態様では、別個のタスクをデータベースの各行に格納することもできる。また、タスク・キュー1006は、乱調状態(例えば、2つのエンティティが同じタスクを同時に完了させようとする場合に発生する可能性がある)を防止するために原子的歯止め動作 (atomic locking operation)を実行する1つ以上の小さなサーバ・アプリケーションを含むこともできる。一旦タスクがタスク・キューに入力されると、これらは続いて、同期部1007(以下で説明する)のような他のコンポーネントによって処理される。
図11に示すように、タスク・キュー1006は、複数の個別キュー1101〜1103で構成することができ、各キューは、同様の種類および/または優先度のタスク1110〜1113を収容する。例えば、各タスク・キュー1101〜1103は、異なる優先度レベルを表すことができる。この実施形態では、他の変数が全て等しいとすると(例えば、各タスクがキュー内にある時間長のような)、相対的に高い方の優先度レベルを有するキューの中にあるタスクは、相対的に優先度レベルが低いタスクに先だってサービスされる。あるいは、または加えて、各タスク・キュー1101〜1103は、異なる種類のタスクを格納することもできる。例えば、非同期新メール通知受信部1005が供給する新電子メール通知を1つのキューに入れてもよく、スケジューラ1009によってスケジュールが組まれた電子メール動作を別のキューに入れてもよく、更に同期部1007が生成したメッセージ本体要求を第3のキューに入れてもよい。
勿論、異なるタスク「種類」は、実際には、各タスク種類の異なるスケジューリング要件を満たすように、異なる優先度を表すこともできる。例えば、メール・プロキシ1010が生成するユーザ行動/要求は、速い折返しを必要とし、したがって「高優先度」キューに追加される。同期タスクは、関係する項目を纏めてバッチ処理できるように、ランダム・アクセスが可能なキューに入れるとよい。スケジューラ1009が生成するようなその他のタスクは、通常の中間優先度の先入れ先出し(「FIFO」)キューに入れればよい。本発明の基礎原理に従いつつも、タスクを特徴付け、これらのタスクを区別してキューに入れる種々の代替技法および/または追加技法も用いることができる。
また、本発明の一実施形態はメール・キャッシュ1008も含み、この中には、ユーザの種々のメール・アカウントの最後の既知状態を表すメッセージ・データ、デバイスに送信したデータ、デバイスにこれから送信しなければならないデータ、種々のメール・アカウントにこれから送信しなければならないデータ、および性能向上のためにキャッシュするメッセージ本体の過渡的ローカルコピー(transient local copy)を格納する。メッセージ・データを格納するために、メール・キャッシュ1008内には1つ以上のリレーショナル・データベースを用いることができる。
図11は、メール・キャッシュ1008の一実施形態を示す。メール・キャッシュ1008は、論理的に、永続構造ストア1204と、メッセージ本体キャッシュ1205とに細分割されている。
永続構造ストア1204は、各ユーザの電子メール・アカウント(例えば、外部アカウント1002および内部アカウント1003)の分かっている最後の状態を反映する。一実施形態では、永続構造ストア1204に格納されている情報は、メッセージ本体を除くユーザのメール・データの全てを含む(例えば、送り主、主題、メッセージ受信先、メッセージ日付等)。以下に、永続構造ストアの一実施形態の枠組みの概要を示す。
1.各ユーザと関連付けられている電子メール・アカウントのリスト。
2.アカウント毎に、アクセス方法、サーバ・アドレス、認証証明書、最後の同時時刻、同期詳細履歴、および同期を実行したフォルダのリスト。
3.フォルダ毎に、電子メール・メッセージのリスト。
4.メッセージ毎に、限定ではなく、日付、主題、フラグ、送り主、および受信先を含む、当該メッセージの概要リストを作成するために十分な情報。
1.各ユーザと関連付けられている電子メール・アカウントのリスト。
2.アカウント毎に、アクセス方法、サーバ・アドレス、認証証明書、最後の同時時刻、同期詳細履歴、および同期を実行したフォルダのリスト。
3.フォルダ毎に、電子メール・メッセージのリスト。
4.メッセージ毎に、限定ではなく、日付、主題、フラグ、送り主、および受信先を含む、当該メッセージの概要リストを作成するために十分な情報。
前述の基本的なメール・データ構造に加えて、永続構造ストア1204は、仮想フォルダ、メッセージ・スレッド、および全テキスト検索用単語索引も含むことができる。一実施形態では、永続構造ストア1204は、発信元サーバ(例えば、メール・ストア1002、1003)上にある各メッセージの最後の分かっている状態と、係属、未同期変化の同定(identity)を含む現在の局所状態との間の差異を維持する。
以下に、メッセージについてのサーバ上において最後に分かっている状態と現在の局所状態との間の差の例を示す。
1.メッセージをローカルに削除したが、この削除を未だ同期していない。
2.メッセージをローカルに「隠した」。これは、同期させることを意図しない削除である。
3.まだ同期されていないフラグ変化(例えば、「見た」に変化した「見ていない」の指示(designation)。
4.メッセージを異なるフォルダに移動し、まだ同期させていない。
1.メッセージをローカルに削除したが、この削除を未だ同期していない。
2.メッセージをローカルに「隠した」。これは、同期させることを意図しない削除である。
3.まだ同期されていないフラグ変化(例えば、「見た」に変化した「見ていない」の指示(designation)。
4.メッセージを異なるフォルダに移動し、まだ同期させていない。
一実施形態では、永続構造ストアは、メッセージだけでなく、フォルダに関するメタデータも格納するので、フォルダについてのサーバ上において最後に分かっている状態と現在の局所状態との間の差の例も表すことができる。これらは、フォルダの名称変更および削除も含むことができる。
一実施形態では、キャッシュ管理方針にしたがって、情報を永続構造ストア1204に維持する。最も単純な場合、一旦あるユーザ用の永続構造ストアが指定の閾値に達したなら、古い方の情報から除去して行き、新しい情報のための余裕を作る。あるいは、最も長い時間期間アクセスされないままでいる情報を除去して、新たな情報および/またはアクセスされた時期が遅い情報のための余裕を作る。本発明の基礎原理に従いつつも、種々のその他のキャッシュ管理方針を実施することもできる。
永続構造ストア1204内に格納されているメタデータは、各メール・サーバの状態を反映し、再発生が容易であるので(即ち、リモート・サーバに照会することによって)、したがってこれは過渡的と見なされる。しかしながら、メール・サーバの新たな状態を、メール・キャッシュに格納されている最後のバージョンと比較し、相違だけをデータ処理デバイスに送ることが可能になるので、メタデータをメール・キャッシュに維持することにより、重要な最適化が得られる。メール・サーバの以前の状態がなければ、データ処理デバイスに送る必要があるデータは遥かに多くなり、デバイスは、それが既に知っていることおよび知らないことを判定する責務を伴うことになる。
これらの概念を念頭に入れて、本発明の一実施形態では、複数のメール・キャッシュをサポートするために、複数のサーバをサービスの中に実装する。メール・システムに接続すると、データ処理デバイスは、当該ユーザのメール・アカウントについてのメタデータが格納されている特定のメール・キャッシュ・サーバ上に「拠点を構える」ことになる。加えて、性能のために、メール・データを共有ストレージ(例えば、ユーザ・データベース)にコピーしない。デバイスのメール・キャッシュを格納しているサーバが故障した場合(ユーザは再度拠点を構えなければならない)、本発明の一実施形態は、メール・ストアとのキャッシュなし同期反復を実行する、動作の瞬断(performance hit)を受け入れる。
本発明の一実施形態では、一部のメタデータはローカル専用である(即ち、メール・キャッシュだけに格納されている)。これは、例えば、「隠されている」というフラグが立っているメッセージを含む。他のメール・データ(メール・ストアから常に取り出すことができる)とは対照的に、このデータは確実に永続的である必要がある。これを遂行するために、永続構造ストア内に2列のデータを実装する。1つは確実に永続的であり(即ち、共有ストレージ内または複数のサーバに跨ってこれを格納することにより)、1つはそうではない。
メッセージ本体キャッシュ1205は、完全なメッセージ本体を保持する。これらは、永続構造ストア1204におけるメッセージ・メタデータと相互参照される。一実施形態では、メッセージ本体は、第2キャッシュ管理方針にしたがって、一時的にメッセージ本体キャッシュ1205内に格納する。第2キャッシュ管理方針は、通例、永続構造ストアのキャッシュ管理方針とは異なる。非常に大きな第三者の電子メールの可能性を想定すると、キャッシュ管理方針は、通例、いつでも一度にユーザの電子メール・データの全てをキャッシュすることはない。代わりに、インテリジェント方針を実施して、メッセージがキャッシュの中にある時間長、メッセージがアクセスされた最後の時刻、ユーザのアカウントにおける全体的な活動レベル、およびキャッシュ内に既に格納されているデータ量というような変数に基づいて、メッセージを除去する。例えば、ユーザが特定のメッセージに頻繁に(指定の閾値よりも上)アクセスする場合、メッセージ本体キャッシュ1205は、メッセージが比較的長い時間キャッシュの中にあるという事実にも拘わらず、メッセージのコピーを保持することができる。対照的に、あるメッセージがキャッシュの中に長い時間(例えば、第1指定時間期間)にあり、最近ユーザがアクセスしていない(例えば、第2指定時間期間)場合、メッセージ本体をメッセージ本体キャッシュから削除すればよい。メッセージを保持すべきかまたは削除すべきか判定するためには、種々のその他のキャッシュ管理変数を実装してもよい。
一実施形態では、性能を最適化するために、メッセージ本体取込部(fetcher)は、新たな入手可能な本体を検出したときはいつでも、思惑的にメール・サーバからメッセージ本体を取り出す(即ち、データ処理デバイスからの明示的な指令なくして)。一実施形態では、デバイスによって要求されるまで、思惑的に取り込んだ本体をデバイスには送信しない。
一実施形態では、データ処理デバイス101上に、メッセージ・キャッシングの第2レイヤを実装する。具体的には、この実施形態では、新たな電子メール・メッセージを受信すると直ちに、そのメッセージについてのメタデータを、「新メッセージ」通知と共に、データ処理デバイスに送る。一実施形態では、メタデータは、永続構造ストア1204に格納されているのと同じデータである。あるいは、メタデータは、永続構造ストア1204に格納されているデータの内、限られた部分集合(例えば、メッセージの主題、送り主、および受信先)としてもよい。メッセージ本体は、エンド・ユーザによって要求されたときにのみ、データ処理デバイスに送信される。
一実施形態では、異なるキャッシュ管理方針をデータ処理デバイス上で実施して、メタデータおよび/またはメッセージ本体をキャッシュする(即ち、システム・メール・キャッシュ1008上で実施するキャッシュ管理方針とは異なる)。例えば、一旦メッセージ本体がデバイスにダウンロードされたなら、メッセージ本体をメッセージ本体キャッシュ内に保持する理由はない。つまり、この実施形態では、ダウンロードしたメッセージ本体を自動的にメッセージ本体キャッシュから削除する。一旦デバイス上に来れば、当該デバイス上における別個のキャッシュ管理方針にしたがって、メッセージ本体をキャッシュする。例えば、一実施形態では、所定の時間期間アクセスされなかったメッセージ本体は、エンド・ユーザによって要求されるまで、キャッシュから除去することができる。
一実施形態では、デバイス側キャッシュを管理するために、2つの判断基準、即ち、メッセージ・サイズおよびメッセージの古さを用いる。一実施形態では、最少数のメッセージをキャッシュから削除することによって殆どのメモリを取り返すように、非常に大きなメッセージ(即ち、閾値を超える)をキャッシュから除去する。これは、非常に新しく(即ち、指定時間期間以内に受信した)非常に大きなメッセージは、可能であれば、キャッシュから除去「すべきでない」という制限を受ける。
一実施形態では、同期部1007は、デーモン(即ち、連続ループで走るソフトウェア・コンポーネント)であり、連続的にユーザのメール・アカウント1002、1003のキャッシュのビューを更新し、ユーザが行った変更を用いてメール・アカウントを更新し、これら2つの間の対立を調停する。また、メール・プロキシ1010を通じてデータを非同期的にデバイス101に送る。
図12に示すように、同期部1007の一実施形態は、メッセージ本体取込コンポーネント1202、および同期ロジック1201を含む。その名称が示唆するように、メッセージ本体取込部1202は、新たなメッセージ本体を読み出し、エンド・ユーザの要求時にキャッシュから除去されたメッセージ本体を取り出すことを責務とする(例えば、永続構造ストア1204の中に未だある可能性があるが、メッセージ本体キャッシュからは既に消去されているメッセージの本体)。メッセージ本体取込部は、外部メール・ストア1002およびローカル・メール・ストア1003双方と通信して、要求されたメッセージ本体を取り出す。
同期ロジック1201は、ユーザのメール・アカウントのメール・キャッシュのビューを更新し、ユーザが行った変更を用いてメール・アカウントを更新し、これら2つの間の対立を調停する。言い換えると、同期ロジック1201は、ユーザの電子メール・アカウントのローカル表現が、それらの管轄サーバ上における実際の状態と一致すること、この同じ状態がワイヤレス・デバイス101にも忠実に反映されること、そしていずれの末端における変更もしかるべき伝えられることを保証することを責務とするコンポーネントである。また、データをデバイスにメール・プロキシ1010を通じて非同期に送る。一実施形態では、帯域幅を保存するために、同期ロジック1201は、しかるべきときには、複数のメール動作を組み合わせる。例えば、エンド・ユーザが特定のメッセージを読み出し、修正し、フォルダに移動させ、次いで削除した場合、削除動作だけを同期させればよい。
動作において、同期部は、連続的にタスク・キュー1006に照会して、同期する必要があるアカウントを調べる。ユーザ・アカウントに対する入力は、以下の状況では、タスク・キューの中に置かれる。
1.非同期新メール通知受信部が、外部メール・ストア1002から、そのアカウントに対する新メール通知を(SMTP受信部1004を通じて)受信したとき。
2.ユーザがワイヤレス・デバイス101上で、または元のアカウントに対する反映(mirroring)を必要とするウェブベースのインターフェースを通じて、メッセージ・データに対して変更を行ったとき。
3.スケジューラ1009が、ユーザのアカウントを同期する時刻であると判定したとき。
4.ユーザの行為の結果、キャッシュ・ミスが発生し、メッセージ・データを(再)ダウンロードしなければならなくなったとき。尚、これは、ユーザの行為が概してリアル・タイムで係属中となる特殊な場合であることを注記しておく。つまり、この動作に対して、「高優先度」タスク・キュー(例えば、図11におけるキュー1101)を用いるとよい。この場合、所望のコンテンツは、シンク(sync)要求に対するパラメータであり、待機中のクライアントは適時の完了通知(timely completion notice)を受信しなければならない(即ち、サービスに対する要求は、ユーザが読むのを待っているメッセージのアイデンティティを含む)。
1.非同期新メール通知受信部が、外部メール・ストア1002から、そのアカウントに対する新メール通知を(SMTP受信部1004を通じて)受信したとき。
2.ユーザがワイヤレス・デバイス101上で、または元のアカウントに対する反映(mirroring)を必要とするウェブベースのインターフェースを通じて、メッセージ・データに対して変更を行ったとき。
3.スケジューラ1009が、ユーザのアカウントを同期する時刻であると判定したとき。
4.ユーザの行為の結果、キャッシュ・ミスが発生し、メッセージ・データを(再)ダウンロードしなければならなくなったとき。尚、これは、ユーザの行為が概してリアル・タイムで係属中となる特殊な場合であることを注記しておく。つまり、この動作に対して、「高優先度」タスク・キュー(例えば、図11におけるキュー1101)を用いるとよい。この場合、所望のコンテンツは、シンク(sync)要求に対するパラメータであり、待機中のクライアントは適時の完了通知(timely completion notice)を受信しなければならない(即ち、サービスに対する要求は、ユーザが読むのを待っているメッセージのアイデンティティを含む)。
一実施形態では、動作すべきタスク・キュー1006からのアカウントを特定した後、同期部は、図13に示すように、以下の行為を実行する。
1301.起源サーバへの接続
同期部は、最初に、アカウントの起源サーバ(origin server)(例えば、外部メール・ストア1002またはローカル・メール・ストア1003)に接続する。こうするために、同期部は、必要なアカウント・タイプ/位置情報、および認証証明書をDBプロキシ1014から入手し、次いでこの情報を用いてアカウントの起源サーバとの接続を確立する。
同期部は、最初に、アカウントの起源サーバ(origin server)(例えば、外部メール・ストア1002またはローカル・メール・ストア1003)に接続する。こうするために、同期部は、必要なアカウント・タイプ/位置情報、および認証証明書をDBプロキシ1014から入手し、次いでこの情報を用いてアカウントの起源サーバとの接続を確立する。
1302.最後の同期以来の変更を判定する
次に、同期部1007は、最後の同期以来、そのアカウントにおいて何が変化したか判定する。こうするために、リモート・フォルダのリストおよび収容しているメッセージについての概要データを、起源サーバから取り込む。一実施形態では、「クイック・スキャン」同期モードを採用し、所与の高水位(high-water mark)よりも新しいメッセージ概要のみを照会する。このモードは、古い方のメッセージにおけるフラグ変化を見過ごすが、新しいメッセージを発見する。一旦起源サーバからデータを収集したなら、これを永続構造ストアにおけるアカウントの表現と比較する。相違が発見された場合、そのいずれもがリモート変化(remote changes)の集合を構成する。
次に、同期部1007は、最後の同期以来、そのアカウントにおいて何が変化したか判定する。こうするために、リモート・フォルダのリストおよび収容しているメッセージについての概要データを、起源サーバから取り込む。一実施形態では、「クイック・スキャン」同期モードを採用し、所与の高水位(high-water mark)よりも新しいメッセージ概要のみを照会する。このモードは、古い方のメッセージにおけるフラグ変化を見過ごすが、新しいメッセージを発見する。一旦起源サーバからデータを収集したなら、これを永続構造ストアにおけるアカウントの表現と比較する。相違が発見された場合、そのいずれもがリモート変化(remote changes)の集合を構成する。
1303.対立を解決する
次に、同期部は、起源サーバの変化集合とユーザのローカル変化集合との間に存在し得るあらゆる対立を解決しようとする。ユーザ・アカウントのメール・データに対する係属ローカル変化のリストをリモート変化リストと比較したときに、同じデータ項目が双方の場所で変化している場合、対立が存在しており、解決しなければならない(双方の端末で変化が同一であるのでないならば)。一実施形態では、同期部における対立検出および相関ロジックは、サーバが信頼できるという原則に基づいて、起源サーバのバージョンをローカル・バージョンよりも優先する。あるいは、一実施形態では、対立検出および相関ロジックは、ローカル変化バージョンを選択する。別の実施形態では、同期部はユーザに照会し、ユーザに正しい変化バージョンを選択させる。
次に、同期部は、起源サーバの変化集合とユーザのローカル変化集合との間に存在し得るあらゆる対立を解決しようとする。ユーザ・アカウントのメール・データに対する係属ローカル変化のリストをリモート変化リストと比較したときに、同じデータ項目が双方の場所で変化している場合、対立が存在しており、解決しなければならない(双方の端末で変化が同一であるのでないならば)。一実施形態では、同期部における対立検出および相関ロジックは、サーバが信頼できるという原則に基づいて、起源サーバのバージョンをローカル・バージョンよりも優先する。あるいは、一実施形態では、対立検出および相関ロジックは、ローカル変化バージョンを選択する。別の実施形態では、同期部はユーザに照会し、ユーザに正しい変化バージョンを選択させる。
1304.ローカル変化のアップロード
対立解決によって排除されていないローカル変化を、外部メール・サーバ1002が要求するプロトコル・シーケンスを通じて(例えば、IMAP STOREコマンド、POP DELEコマンド等)、サーバにアップロードする。
対立解決によって排除されていないローカル変化を、外部メール・サーバ1002が要求するプロトコル・シーケンスを通じて(例えば、IMAP STOREコマンド、POP DELEコマンド等)、サーバにアップロードする。
1305.リモート変化のダウンロード
前述のステップによって未だ入手していないいずれの関連構造データも、発見したあらゆる新メッセージの本体と共にダウンロードする。結果を永続構造ストア1204およびメッセージ本体キャッシュ1205に入れる。一実施形態では、新たに追加したメッセージ本体は、ある最少時間量だけキャッシュ内に残留して、デバイスがその非同期メール変更通知に応答し、本体を要求することを可能にする。
前述のステップによって未だ入手していないいずれの関連構造データも、発見したあらゆる新メッセージの本体と共にダウンロードする。結果を永続構造ストア1204およびメッセージ本体キャッシュ1205に入れる。一実施形態では、新たに追加したメッセージ本体は、ある最少時間量だけキャッシュ内に残留して、デバイスがその非同期メール変更通知に応答し、本体を要求することを可能にする。
1306.該当する通知の待ち行列
一旦リモート変化をダウンロードしたなら、メール・プロキシ1010およびディスパッチャ1012を通じたデバイスへの非同期配信のために、該当する通知(例えば、新メール通知、メッセージ削除通知等)を待ち行列に入れる(前述の通り)。一実施形態では、リモート変化に起因して永続構造ストアに新たな情報が入ると、デバイスへの非同期通知の配信が行われ、一方、デバイスは追加データを要求する場合もある。フラグのオンおよびオフの切り換えというような単純な変化の場合、データ自体を通知に収容してもよい。
一旦リモート変化をダウンロードしたなら、メール・プロキシ1010およびディスパッチャ1012を通じたデバイスへの非同期配信のために、該当する通知(例えば、新メール通知、メッセージ削除通知等)を待ち行列に入れる(前述の通り)。一実施形態では、リモート変化に起因して永続構造ストアに新たな情報が入ると、デバイスへの非同期通知の配信が行われ、一方、デバイスは追加データを要求する場合もある。フラグのオンおよびオフの切り換えというような単純な変化の場合、データ自体を通知に収容してもよい。
一実施形態では、スケジューラ1009はデーモンであり、ユーザ・アカウントに対するタスクをタスク・キュー1006に入れることによって、同期部に、どのアカウントにおいてそしていつ動作するか指令する。スケジューラ1009は、アカウント活動およびユーザの好みのような変数に基づいて、アカウント毎に異なるシンク−頻度発見的方法を採用してもよい。例えば、ユーザが活発に彼/彼女のアカウント上で作業している場合(例えば、活発に電子メール・メッセージを送りそして読んでいる)、スケジューラ1009は一時的に同期の頻度を高めることができる。同様に、ユーザの外部メール・アカウント1002が非常に活発である場合、スケジューラ1009は同期の頻度を高めることができる(活動が少ないアカウントに対して)。一実施形態では、スケジューラ1009はDBプロキシ1014をチェックして、アカウントの活動を判定する。DBプロキシ1014が、ユーザのアカウントが「活発である」と判定した場合(例えば、新たなメッセージが存在するため)、スケジューラ1009は同期の頻度を高める。対照的に、DBプロキシ1014が、ユーザのアカウントが「活発でない」と判定した場合(例えば、ユーザがオフラインである、および/または新たなメッセージが存在しない)、スケジューラ1009は同期の頻度を低くする。同様に、最後の同期中に一過性のエラー(transient error)が発生した場合(例えば、期限切れまたは誤ったパスワードまたはその他の認証データのために)、スケジューラ1009は、同期の頻度をさらに大きく低下させてもよく、または、エラーが解決するまで(例えば、正しいユーザ名およびパスワードがシステムに供給されるまで)予定した同期をディスエーブルしてもよい。一般に、スケジューラが採用する発見的方法は、限定ではなく、以下の変数を含む。最後の同期の時刻、同期の時のエラー頻度、このアカウントにおいて見られるメールの分量、外部メール・プロバイダの要件/選択、および同期させ直す係属中の変化の分量。
前述のように、一実施形態では、メール・プロキシ1010はワイヤレス・デバイス101に対して待ち行列機能を実行し、ディスパッチャ1012を通じてデバイスに伝達する。例えば、同期部1007による同期、および/または非同期新メール通知受信部1005が受信した新メール通知に応答して、メール・プロキシ1010は、新メール通知をワイヤレス・デバイス101にプッシュする。一実施形態では、新メッセージ通知は、メッセージ毎にメタデータを含む(例えば、送り主ID、主題、日時等のような、永続構造ストア1204に格納されている情報と同一、またはその部分集合)。メタデータを用いて、ユーザは次にメッセージ本体全てをメッセージ本体キャッシュ1205に要求することができる。
一実施形態では、SMTP受信部1004は、外部SMTPサーバ1001からのインバウンドSMPT要求(例えば、新メッセージのような電子メール・アカウント更新)を処理する。また、新たなメッセージをローカル・メール・ストア1003に入れる前に、スパム・フィルタリングおよび添付ファイル抜き取りを実行することもできる。一旦インバウンド・メッセージをローカル・メール・ストア1003に入れたなら、非同期新メール通知受信部1005に、新たなメッセージの到達に対して警報する。
一実施形態では、ローカル・メール・ストア1003は、内部ユーザ・アカウントに属するメッセージ、および外部SMTPサーバ1001から受信した外部メッセージを格納するところである。これは、外部メール・アカウント1002と全く同様に、IMAPサーバとしてもよく、その場合、ローカル・メール・ストア1003と外部アカウント1002との間にある唯一の相違(同期部1007およびメール・キャッシュ1008のような他のシステム・コンポーネントの観点から)は、ローカル・メール・ストア1003がサービス100によってホストされることだけである。
前述のように、非同期新メール通知受信部1005は、ユーザの種々の電子メール・アカウント(例えば、外部アカウント1002およびローカル・メール・アカウント1003)における新メールの到達に関する非同期の通知を扱う。ある種の外部アカウント1002は、新メール通知を非同期新メール通知受信部1004にプッシュすることによって、外部アカウントを連続的にポールして変化を見つける必要性を軽減することもできる。
図14は、1つ以上の電子メール・ストア1401〜1403とワイヤレス・データ処理デバイス101との間において、同期モジュール1407およびメール・キャッシュ1408を用いて電子メールを同期するシステムの別の実施形態を示す。注記すべきは、この実施形態は、前述の実施形態のように、スケジューラやタスク・キューを含まないことである。同期は、データ処理デバイス101上のメール・データの状態に対する修正のような、デバイス主導イベントに基づいて実行する。
図14に示すサービスによって実現するメール・ストアと同期させるための方法の一実施形態を図15に示す。1501aにおいて、データ処理デバイス上でユーザがメール動作を実行する。例えば、ユーザは1つ以上の電子メール・メッセージを削除するとしてもよい。
1502において、この動作および電子メール・メッセージ(群)の識別情報を同期モジュール1407に報告する(メール・プロキシ1010を通じて)。1503において、同期部1407はメール・ストア1401〜1403の1つにおいて動作を実行しようとする(即ち、動作が実行された電子メール・メッセージを収容するメール・ストア)。1504において、そのメール・ストアは、必要であれば、動作に対して対立解決を実行する。同期部が要求した動作が以前の動作と対立する場合、メール・サーバは同期部による要求を拒絶することもできる。一例として、ユーザがデスクトップ・インターフェース(例えば、ウェブ・ブラウザ)を通じてメール・ストアに接続し、電子メール・メッセージをデータ処理デバイスから削除する前にその電子メール・メッセージを新たなフォルダに移動させた後に、削除の試行は失敗に終わる。メール・ストア上には、種々のその他の既知の対立解決技法を実施することもできる。
1505において、同期部1407は、動作が要求されたメール・ストアから、更新した状態情報を取り出す。上の例に戻って、電子メール・メッセージを新たなフォルダに移動させたために削除動作が失敗した場合、この情報を同期部1407に送る。
1506において、同期部1407はメール・キャッシュ1408の中にある状態情報を更新する。一実施形態では、メール・キャッシュ1408は、前述のメール・キャッシュ1008と同じアーキテクチャを採用する。例えば、メール・キャッシュは、各ユーザのメール・ストアの状態に関するメタデータを格納する永続構造ストア1204と、メッセージ本体をキャッシュするメッセージ本体キャッシュ1205とを含む。 このようにして、更新した状態情報を永続構造ストア1204および/またはメッセージ本体キャッシュ1205において反映させる。
1507において、メール・キャッシュ1408は更新した変更をワイヤレス・データ処理デバイス101に送信する。
一実施形態では、前述したような複数の同期部およびメール・キャッシュを、複数の物理的サーバを跨いで実装する。ユーザをサービスに接続するとき、ユーザのメール・キャッシュを特定のサーバに維持する。即ち、サービス内における特定のメール・キャッシュ・サーバおよび/または同期部を、そのユーザの拠点とする。サービスが、ユーザに代わって、特定のメール・ストアに接続したい場合、最初にチェックを行って、特定のメール・サーバ・キャッシュおよび同期部がユーザの拠点になっているか否か判定する。この情報は、ユーザ・データベース内に維持するとよい。そうなっている場合、メール要求をそこに向ける。この場合、リモート・メール・サーバへの生の接続が既に確立されていてもよく、再利用することができる。
ユーザのリモート・メール・サーバ・セッションに関する大量の状態が、ユーザ/アカウントの拠点となっているメール・キャッシュにローカルに維持されている。このデータは、サーバおよびネットワーク挙動(performance)についてはローカルである。そのユーザ/アカウントの拠点を別のノードに移し易くするために(例えば、サーバが故障した場合、または異なるサーバの集合間で負荷のバランスを取り直すことが望まれる場合)、本発明の一実施形態では、ユーザ・データベースのような共有ストレージにローカル状態を移動させる(即ち、DBプロキシを通じて)。
本発明の実施形態は、以上に明記したような種々のステップを含むことができる。これらのステップは、汎用または特殊目的プロセッサにある種のステップを実行させる機械実行可能命令に具体化することができる。あるいは、これらのステップは、当該ステップを実行するハードワイヤ・ロジックを内蔵する特定のハードワイヤ・コンポーネントによって、またはプログラミングしたコンピュータ・コンポーネントおよびカスタム・ハードウェア・コンポーネントの任意の組み合わせによって実行することもできる。
また、本発明の実施形態は、機械実行可能命令を格納する機械読み取り可能媒体として提供することもできる。機械読み取り可能媒体は、限定ではなく、フロッピ・ディスク、光ディスク、CD−ROM、および光磁気ディスク、ROM、RAM、EPROM、EEPROM、磁気または光カード、伝搬媒体、あるいは電子命令を格納するのに適したその他の種類の媒体/機械読み取り可能媒体を含むことができる。例えば、本発明は、通信リンク(例えば、モデムまたはネットワーク接続)を通じて搬送波またはその他の伝搬媒体に具体化したデータ信号によってリモート・コンピュータ(例えば、サーバ)から要求元コンピュータ(例えば、クライアント)に転送することができるコンピュータ・プログラムのようにダウンロードすることもできる。
以上の説明全体を通じて、説明の目的上、本発明の完全な理解を得るために、多数の具体的な詳細を明記した。しかしながら、本発明はこれらの具体的な詳細の一部がなくても実用化可能であることは、当業者には明白であろう。例えば、図10に示した機能モジュールは、各々、別個の物理的サーバ機として実現することができ、あるいは複数の物理的機械に跨って分散させることもできる。更に、ある種のモジュールを1つの機械の上で共に集合化することもできる。加えて、以上では本発明の実施形態をIMAPおよびPOPの文脈で説明したが、本発明の基礎原理は、いずれの特定の種類のプロトコルにも限定されない。したがって、本発明の範囲および主旨は、以下に続く特許請求の範囲に関して判断すべきものとする。
Claims (21)
- コンピュータ実装方法であって、
ワイヤレス・データ処理デバイスの代わりに、第1電子メール・サーバから第1電子メール・メッセージ集合を取り出すステップと、
前記第1電子メール・メッセージ集合からメタデータを抽出するステップと、
前記メタデータを第1キャッシュに格納するステップであって、第1キャッシュ管理方針にしたがって前記第1キャッシュが管理される、ステップと、
前記電子メール・メッセージの少なくともメッセージ本体を第2キャッシュに格納するステップであって、第2キャッシュ管理方針にしたがって前記第2キャッシュが管理される、ステップと、
を備えた、コンピュータ実装方法。 - 請求項1記載の方法であって、更に、
前記第1キャッシュから前記ワイヤレス・データ処理デバイスに前記メタデータの一部を自動的に送信するステップと、
前記ワイヤレス・データ処理デバイスから前記メッセージ本体に対する要求を受信したときにのみ、メッセージ本体を前記ワイヤレス・データ処理デバイスに送信するステップと、
を備えた、方法。 - 請求項2記載の方法であって、更に、
第3キャッシュ管理方針にしたがって、前記ワイヤレス・データ処理デバイス上において前記メッセージ本体およびメタデータを管理するステップを備えた、方法。 - 請求項1記載の方法において、前記第1キャッシュ管理方針は、メタデータを、該メタデータに関連したメッセージ本体を前記第2キャッシュ管理方針が保持するよりも相対的に長い時間保持する、方法。
- 請求項1記載の方法において、前記メタデータは、少なくとも、メッセージ識別コード、メッセージ送り元、およびメッセージ主題を含む、方法。
- 請求項1記載の方法であって、更に、
前記ワイヤレス・デバイスから電子メールに対する要求を受信するステップと、
前記電子メール・メッセージの本体が前記第2キャッシュに格納されているか否か判定するステップと、
前記メッセージ本体が前記第2キャッシュに格納されていない場合、前記第1電子メール・サーバから前記電子メール・メッセージ本体を取り出すステップと、
前記電子メール・メッセージ本体を前記ワイヤレス・デバイスに送信するステップと、
を備えた、方法。 - 請求項1記載の方法であって、更に、
前記ワイヤレス・データ処理デバイスの代わりに、第2電子メール・サーバから第2電子メール・メッセージ集合を取り出すステップと、
前記第2電子メール・メッセージ集合からメタデータを抽出するステップと、
前記第1電子メール・メッセージ集合からの前記メタデータと共に、前記第2電子メール・メッセージ集合からの前記メタデータを前記第1キャッシュに格納するステップと、
前記第2電子メール・メッセージ集合の少なくともメッセージ本体を、前記第1電子メール・メッセージ集合のメッセージ本体と共に前記第2キャッシュに格納するステップと、
を備えた、方法。 - プログラム・コードを格納する少なくとも1つのメモリと、
前記プログラム・コードを処理する少なくとも1つのプロセッサであって、
ワイヤレス・データ処理デバイスの代わりに、第1電子メール・サーバから第1電子メール・メッセージ集合を取り出す動作と、
前記第1電子メール・メッセージ集合からメタデータを抽出する動作と、
前記メタデータを第1キャッシュに格納する動作であって、第1キャッシュ管理方針にしたがって前記第1キャッシュが管理される、動作と、
前記電子メール・メッセージの少なくともメッセージ本体を第2キャッシュに格納する動作であって、第2キャッシュ管理方針にしたがって前記第2キャッシュが管理される動作と、
を実行する、少なくとも1つのプロセッサと、
を有する、電子メール・メッセージ・キャッシュ・システム。 - 請求項8記載のシステムであって、
前記第1キャッシュから前記ワイヤレス・データ処理デバイスに前記メタデータの一部を自動的に送信する動作と、
前記データ処理デバイスから前記メッセージ本体に対する要求を受信したときにのみ、メッセージ本体を前記ワイヤレス・データ処理デバイスに送信する動作と、
を、前記プロセッサに実行させる追加のプログラム・コードを含む、システム。 - 請求項9記載の方法であって、
第3キャッシュ管理方針にしたがって、前記ワイヤレス・データ処理デバイス上において前記メッセージ本体およびメタデータを管理する動作を、前記プロセッサに実行させる追加のプログラム・コードを含む、方法。 - 請求項8記載の方法において、前記第1キャッシュ管理方針は、メタデータを、該メタデータと関連したメッセージ本体を前記第2キャッシュ管理方針が保持するよりも相対的に長い時間保持する、方法。
- 請求項8記載の方法において、前記メタデータは、少なくとも、メッセージ識別コード、メッセージ送り元、およびメッセージ主題を含む、方法。
- 請求項8記載の方法であって、
前記ワイヤレス・デバイスから電子メールに対する要求を受信する動作と、
前記電子メール・メッセージの本体が前記第2キャッシュに格納されているか否か判定する動作と、
前記メッセージ本体が前記第2キャッシュに格納されていない場合、前記第1電子メール・サーバから前記電子メール・メッセージ本体を取り出す動作と、
前記電子メール・メッセージ本体を前記ワイヤレス・デバイスに送信する動作と、
を、前記プロセッサに実行させる追加のプログラム・コードを含む、方法。 - 請求項8記載の方法であって、
前記ワイヤレス・データ処理デバイスの代わりに、第2電子メール・サーバから第2電子メール・メッセージ集合を取り出す動作と、
前記第2電子メール・メッセージ集合からメタデータを抽出する動作と、
前記第1電子メール・メッセージ集合からの前記メタデータと共に、前記第2電子メール・メッセージ集合からの前記メタデータを前記第1キャッシュに格納する動作と、
前記第2電子メール・メッセージ集合の少なくともメッセージ本体を、前記第1電子メール・メッセージ集合のメッセージ本体と共に前記第2キャッシュに格納する動作と、
を、前記プロセッサに実行させる追加のプログラム・コードを含む、方法。 - プログラム・コードが格納された機械読み取り可能媒体であって、前記プログラム・コードが機械によって実行されると、該機械に、
ワイヤレス・データ処理デバイスの代わりに、第1電子メール・サーバから第1電子メール・メッセージ集合を取り出す動作と、
前記第1電子メール・メッセージ集合からメタデータを抽出する動作と、
前記メタデータを第1キャッシュに格納する動作であって、第1キャッシュ管理方針にしたがって前記第1キャッシュが管理される、動作と、
前記電子メール・メッセージの少なくともメッセージ本体を第2キャッシュに格納する動作であって、第2キャッシュ管理方針にしたがって前記第2キャッシュが管理される、動作と、
を実行させる、機械読み取り可能媒体。 - 請求項15記載のシステムであって、
前記第1キャッシュから前記ワイヤレス・データ処理デバイスに前記メタデータの一部を自動的に送信する動作と、
前記データ処理デバイスから前記メッセージ本体に対する要求を受信したときにのみ、メッセージ本体を前記ワイヤレス・データ処理デバイスに送信する動作と、
を、前記機械に実行させる追加のプログラム・コードを含む、システム。 - 請求項16記載の方法であって、
第3キャッシュ管理方針にしたがって、前記ワイヤレス・データ処理デバイス上において前記メッセージ本体およびメタデータを管理する動作を、前記機械に実行させる追加のプログラム・コードを含む、方法。 - 請求項15記載の方法において、前記第1キャッシュ管理方針は、メタデータを、該メタデータと関連したメッセージ本体を前記第2キャッシュ管理方針が保持するよりも相対的に長い時間保持する、方法。
- 請求項15記載の方法において、前記メタデータは、少なくとも、メッセージ識別コード、メッセージ送り元、およびメッセージ主題を含む、方法。
- 請求項15記載の方法であって、
前記ワイヤレス・デバイスから電子メールに対する要求を受信する動作と、
前記電子メールの本体が前記第2キャッシュに格納されているか否か判定する動作と、
前記メッセージ本体が前記第2キャッシュに格納されていない場合、前記第1電子メール・サーバから前記電子メール・メッセージ本体を取り出す動作と、
前記電子メール・メッセージ本体を前記ワイヤレス・デバイスに送信する動作と、
を、前記機械に実行させる追加のプログラム・コードを含む、方法。 - 請求項15記載の方法であって、
前記ワイヤレス・データ処理デバイスの代わりに、第2電子メール・サーバから第2電子メール・メッセージ集合を取り出す動作と、
前記第2電子メール・メッセージ集合からメタデータを抽出する動作と、
前記第1電子メール・メッセージ集合からの前記メタデータと共に、前記第2電子メール・メッセージ集合からの前記メタデータを前記第1キャッシュに格納する動作と、
前記第2電子メール・メッセージ集合の少なくともメッセージ本体を、前記第1電子メール・メッセージ集合のメッセージ本体と共に前記第2キャッシュに格納する動作と、
を、前記機械に実行させる追加のプログラム・コードを含む、方法。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/789,536 US20080270548A1 (en) | 2007-04-24 | 2007-04-24 | Apparatus and method for caching email messages within a wireless data service |
PCT/US2008/004879 WO2008133820A1 (en) | 2007-04-24 | 2008-04-15 | Apparatus and method for caching email messages within a wireless data service |
Publications (2)
Publication Number | Publication Date |
---|---|
JP2010525740A true JP2010525740A (ja) | 2010-07-22 |
JP2010525740A5 JP2010525740A5 (ja) | 2011-06-02 |
Family
ID=39888302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2010506209A Withdrawn JP2010525740A (ja) | 2007-04-24 | 2008-04-15 | ワイヤレス・データ・サービス内において電子メール・メッセージをキャッシュする装置および方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20080270548A1 (ja) |
EP (1) | EP2149091A4 (ja) |
JP (1) | JP2010525740A (ja) |
KR (1) | KR20100015641A (ja) |
CN (1) | CN101702943A (ja) |
WO (1) | WO2008133820A1 (ja) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2012057014A1 (ja) * | 2010-10-25 | 2012-05-03 | パナソニック株式会社 | 通信システム |
JP2012155453A (ja) * | 2011-01-25 | 2012-08-16 | Nec System Technologies Ltd | データ共有化装置、プログラム及び方法 |
US9166941B2 (en) | 2007-04-24 | 2015-10-20 | Microsoft Technology Licensing, Llc | Synchronizing email messages between external and local email servers and/or a wireless device |
JP2016502806A (ja) * | 2012-11-20 | 2016-01-28 | ドロップボックス, インコーポレイテッド | メッセージクライアントにサービスを提供するシステム及び方法 |
US9729695B2 (en) | 2012-11-20 | 2017-08-08 | Dropbox Inc. | Messaging client application interface |
US9755995B2 (en) | 2012-11-20 | 2017-09-05 | Dropbox, Inc. | System and method for applying gesture input to digital content |
Families Citing this family (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8577971B2 (en) * | 2007-06-29 | 2013-11-05 | Apple Inc. | Email fetching system and method in a portable electronic device |
US20090138560A1 (en) * | 2007-11-28 | 2009-05-28 | James Joseph Stahl Jr | Method and Apparatus for Automated Record Creation Using Information Objects, Such as Images, Transmitted Over a Communications Network to Inventory Databases and Other Data-Collection Programs |
US7970881B2 (en) * | 2008-02-19 | 2011-06-28 | Microsoft Corporation | Bypassing uploading of data from a wireless device using outbound attachment caching |
US20090254624A1 (en) * | 2008-04-08 | 2009-10-08 | Jeff Baudin | E-mail message management system |
US8380669B2 (en) * | 2009-06-05 | 2013-02-19 | Apple Inc. | Throttling to reduce synchronizations of excessively changing data |
US10104492B2 (en) | 2010-03-01 | 2018-10-16 | Iot Holdings, Inc. | Machine-to-machine gateway architecture and functionality, wherein the machine-to-machine gateway includes a reachability, addressing, and repository (RAR) entity |
US8843452B2 (en) * | 2010-11-01 | 2014-09-23 | International Business Machines Corporation | Utilizing metadata to optimize efficiency for archiving emails |
CN102867001B (zh) * | 2011-07-05 | 2019-12-24 | 腾讯科技(北京)有限公司 | 获取信息的方法和装置 |
TWI625048B (zh) * | 2011-10-24 | 2018-05-21 | 內數位專利控股公司 | 在複數服務層之間機器到機器(m2m)通信的方法、系統及裝置 |
KR20130097600A (ko) * | 2012-02-24 | 2013-09-03 | 삼성전자주식회사 | 휴대 단말기에서 이메일을 표시하는 장치 및 방법 |
CN103684812B (zh) * | 2012-08-31 | 2017-07-07 | 国际商业机器公司 | 用于管理远程设备的方法和装置 |
CN104680357A (zh) * | 2013-11-29 | 2015-06-03 | 腾讯科技(深圳)有限公司 | 电子邮件管理方法及装置 |
US10033668B2 (en) * | 2014-01-16 | 2018-07-24 | Dropbox, Inc. | Enhancing performance of message search and retrieval |
US10176516B2 (en) * | 2015-05-29 | 2019-01-08 | Amazon Technologies, Inc. | Offline creation of marketplace listings |
US10397160B2 (en) * | 2015-08-19 | 2019-08-27 | Blackberry Limited | Method to pre-select folders to synchronize during initial email activation on a mobile device |
US10033680B2 (en) * | 2015-10-27 | 2018-07-24 | Blackberry Limited | Method for priming inbox and conversations during initial synchronization of messages |
US9531785B1 (en) * | 2016-06-16 | 2016-12-27 | Ox Software Gmbh | Ad hoc injection of IMAP objects |
US10423583B1 (en) * | 2016-12-27 | 2019-09-24 | EMC IP Holding Company LLC | Efficient caching and configuration for retrieving data from a storage system |
WO2019029793A1 (en) * | 2017-08-08 | 2019-02-14 | Continental Automotive Gmbh | METHOD FOR OPERATING A CACHE MEMORY |
US11252539B2 (en) * | 2018-01-18 | 2022-02-15 | Nec Corporation | Message delivery device, Method, and recording medium |
CN111031094B (zh) * | 2019-11-06 | 2022-07-12 | 远景智能国际私人投资有限公司 | IoT系统中的数据传输方法、装置、设备及存储介质 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6636733B1 (en) * | 1997-09-19 | 2003-10-21 | Thompson Trust | Wireless messaging method |
US20030105825A1 (en) * | 2001-05-01 | 2003-06-05 | Profluent, Inc. | Method and system for policy based management of messages for mobile data networks |
US7228383B2 (en) * | 2001-06-01 | 2007-06-05 | Visto Corporation | System and method for progressive and hierarchical caching |
US20040260710A1 (en) * | 2003-02-28 | 2004-12-23 | Marston Justin P. | Messaging system |
WO2005046148A1 (en) * | 2003-10-31 | 2005-05-19 | Bluespace Group Limited | Caching in an electronic messaging system |
US8275839B2 (en) * | 2004-03-31 | 2012-09-25 | Google Inc. | Methods and systems for processing email messages |
US7698369B2 (en) * | 2004-05-27 | 2010-04-13 | Strongmail Systems, Inc. | Email delivery system using metadata on emails to manage virtual storage |
US7212814B2 (en) * | 2004-11-24 | 2007-05-01 | Research In Motion Limited | Methods and apparatus for efficiently managing the storage of e-mail message information for a mobile station |
US7596587B2 (en) * | 2006-07-19 | 2009-09-29 | Yahoo! Inc. | Multi-tiered storage |
-
2007
- 2007-04-24 US US11/789,536 patent/US20080270548A1/en not_active Abandoned
-
2008
- 2008-04-15 EP EP08742930.4A patent/EP2149091A4/en not_active Withdrawn
- 2008-04-15 JP JP2010506209A patent/JP2010525740A/ja not_active Withdrawn
- 2008-04-15 WO PCT/US2008/004879 patent/WO2008133820A1/en active Application Filing
- 2008-04-15 CN CN200880013196A patent/CN101702943A/zh active Pending
- 2008-04-15 KR KR1020097021631A patent/KR20100015641A/ko not_active IP Right Cessation
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9166941B2 (en) | 2007-04-24 | 2015-10-20 | Microsoft Technology Licensing, Llc | Synchronizing email messages between external and local email servers and/or a wireless device |
WO2012057014A1 (ja) * | 2010-10-25 | 2012-05-03 | パナソニック株式会社 | 通信システム |
JP2012155453A (ja) * | 2011-01-25 | 2012-08-16 | Nec System Technologies Ltd | データ共有化装置、プログラム及び方法 |
JP2016502806A (ja) * | 2012-11-20 | 2016-01-28 | ドロップボックス, インコーポレイテッド | メッセージクライアントにサービスを提供するシステム及び方法 |
US9729695B2 (en) | 2012-11-20 | 2017-08-08 | Dropbox Inc. | Messaging client application interface |
US9755995B2 (en) | 2012-11-20 | 2017-09-05 | Dropbox, Inc. | System and method for applying gesture input to digital content |
US9935907B2 (en) | 2012-11-20 | 2018-04-03 | Dropbox, Inc. | System and method for serving a message client |
US10178063B2 (en) | 2012-11-20 | 2019-01-08 | Dropbox, Inc. | System and method for serving a message client |
US11140255B2 (en) | 2012-11-20 | 2021-10-05 | Dropbox, Inc. | Messaging client application interface |
Also Published As
Publication number | Publication date |
---|---|
EP2149091A1 (en) | 2010-02-03 |
US20080270548A1 (en) | 2008-10-30 |
WO2008133820A1 (en) | 2008-11-06 |
CN101702943A (zh) | 2010-05-05 |
KR20100015641A (ko) | 2010-02-12 |
EP2149091A4 (en) | 2013-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5383660B2 (ja) | 外部電子メールサーバ及び/又はローカル電子メールサーバ及び/又は無線装置の間での電子メールメッセージの同期 | |
JP2010525740A (ja) | ワイヤレス・データ・サービス内において電子メール・メッセージをキャッシュする装置および方法 | |
JP4959732B2 (ja) | 無線データ処理機器に電子メッセージを配信する装置及び方法 | |
US8166112B2 (en) | Virtual mail storage for mail distributed using corporate distribution lists | |
US8307036B2 (en) | Email server with enhanced least recently used (LRU) cache | |
EP2221737B1 (en) | Caching email unique identifiers | |
US20130007164A1 (en) | Email server with proxy caching of unique identifiers | |
US20090094332A1 (en) | System and method for enabling offline use of email through a browser interface | |
WO2004114120A1 (en) | Method and system for data collection for alert delivery | |
US9319243B2 (en) | Message server that retains messages deleted by one client application for access by another client application | |
US20070073815A1 (en) | Email server with proxy caching of message identifiers and related methods | |
WO2007040503A1 (en) | Email server with least recently used cache | |
KR100438545B1 (ko) | 무선 단말기에서의 메일 수신 방법 | |
EP1929724B1 (en) | Email server with proxy caching of message identifiers and related methods | |
CA2621649C (en) | Email server with proxy caching of unique identifiers | |
JP2005242924A (ja) | 文書管理用コンピュータプログラムならびに文書管理装置および方法 | |
CA2549250A1 (en) | System and method for integrating electronic mail services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A521 | Request for written amendment filed |
Free format text: JAPANESE INTERMEDIATE CODE: A523 Effective date: 20110414 |
|
A621 | Written request for application examination |
Free format text: JAPANESE INTERMEDIATE CODE: A621 Effective date: 20110414 |
|
A761 | Written withdrawal of application |
Free format text: JAPANESE INTERMEDIATE CODE: A761 Effective date: 20121109 |