CN101702943A - 用于高速缓存无线数据服务中的电子邮件消息的装置和方法 - Google Patents
用于高速缓存无线数据服务中的电子邮件消息的装置和方法 Download PDFInfo
- Publication number
- CN101702943A CN101702943A CN200880013196A CN200880013196A CN101702943A CN 101702943 A CN101702943 A CN 101702943A CN 200880013196 A CN200880013196 A CN 200880013196A CN 200880013196 A CN200880013196 A CN 200880013196A CN 101702943 A CN101702943 A CN 101702943A
- Authority
- CN
- China
- Prior art keywords
- message
- email message
- metadata
- speed cache
- 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.)
- Pending
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]
-
- 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]
-
- 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/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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Human Resources & Organizations (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Entrepreneurship & Innovation (AREA)
- Strategic Management (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Marketing (AREA)
- Tourism & Hospitality (AREA)
- General Business, Economics & Management (AREA)
- Quality & Reliability (AREA)
- Operations Research (AREA)
- Economics (AREA)
- Data Mining & Analysis (AREA)
- Information Transfer Between Computers (AREA)
- Data Exchanges In Wide-Area Networks (AREA)
Abstract
描述了一种用于高速缓存数据服务中的电子邮件消息的系统和方法。例如,根据本发明的一个实施例的计算机实现的方法包括:代表无线数据处理设备从第一电子邮件服务器中取得第一组电子邮件消息;从该第一组电子邮件消息中提取元数据;将该元数据存储在第一高速缓存中,该第一高速缓存根据第一高速缓存管理策略来管理;至少将电子邮件消息的消息正文存储在第二高速缓存中,该第二高速缓存根据第二高速缓存管理策略来管理。
Description
背景
发明领域
本发明一般涉及数据处理系统领域。更具体而言,本发明涉及用于高速缓存无线数据服务中的电子邮件消息的改进的体系结构。
相关技术描述
电子邮件在已变成当今世界中无法代替的通信工具。在商业世界中,实际上所有员工都依靠电子邮件来与顾客进行外部通信并与其他员工进行内部通信。另外,大多数电子邮件用户具有至少一个个人电子邮件帐户。个人电子邮件帐户可由用户的因特网服务提供商(例如,Pacific Bell、AT&T WorldnetTM、America OnlineTM等)或由因特网网站(例如,YahooTM邮件或HotmailTM)来提供。
所存在的一个问题是用户可能发现难以在多个不同的电子邮件帐户之间进行协调。例如,虽然用户可在工作时整天检查他/她的公司电子邮件帐户,但该用户可能不记得或可能无法检查他/她的个人电子邮件帐户。类似地,在晚上或周末在家时,用户只可访问他/她的个人电子邮件帐户。由此,如果用户将电子邮件从他/她的个人帐户发送到商业合作人,则该用户可能直到回家并登录到他/她的个人电子邮件帐户后才能够审阅该商业合作人的回复。相反,如果用户将电子邮件从他/她的公司帐户发送到一朋友,则该用户可能直到返回工作并登录到他/她的公司电子邮件帐户后才能够访问该朋友的回复。即使用户能够从同一位置访问这两个电子邮件帐户,但需要该用户登录到两个或更多不同的电子邮件系统有些繁重,尤其是在用户的台式计算机和/或无线客户机(例如,Microsoft OutlookTM和Lotus NotesTM)上需要两个或更多不同的用户代理程序的时候。
上述问题由于许多电子邮件系统与不同的、不兼容的电子邮件标准一起工作的事实而进一步恶化。两个最常见的电子邮件标准是邮局协议3(“POP3”)和因特网消息收发访问协议(“IMAP”)。
POP3常用于因特网电子邮件帐户。POP3服务器临时存储传入电子邮件消息直到这些消息被登录的用户下载。该用户可将该服务器配置成一旦电子邮件消息被下载就删除这些消息或者等待直到用户指示这些消息应被删除。POP3是具有有限可配置选项的相对简单的协议。所有待决消息和附件都从服务器上的单个电子邮件文件夹下载到用户的客户计算机或无线设备上的单个电子邮件文件夹(即,用户代理程序的“收件箱”)。消息基于唯一消息标识码来标识。
IMAP是另一常见且稍微复杂一些的电子邮件标准,该标准广泛地用于因特网电子邮件帐户和公司电子邮件帐户两者。IMAP4是最新版本。不同于POP3,IMAP提供其中消息可被归档在可在用户之间共享的文件夹(例如,收件箱、已发送邮件、已保存邮件等)和电子邮箱中的消息数据库。IMAP还提供与多用途因特网邮件扩展(“MIME”)的改进的集成,MIME协议用于将文件附加到电子邮件消息(例如,用户可只阅读消息标题而不必自动接受并等待下载所附文件)。
概述
描述了一种用于高速缓存数据服务中的电子邮件消息的系统和方法。例如,根据本发明的一个实施例的计算机实现的方法包括:代表无线数据处理设备从第一电子邮件服务器中取得第一组电子邮件消息;从该第一组电子邮件消息中提取元数据;将该元数据存储在第一高速缓存中,该第一高速缓存根据第一高速缓存管理策略来管理;至少将电子邮件消息的消息正文存储在第二高速缓存中,该第二高速缓存根据第二高速缓存管理策略来管理。
附图简述
从结合以下附图的以下详细描述中可以获得对本发明的更好的理解,附图中:
图1示出了根据本发明的一个实施例的电子邮件系统体系结构。
图2示出了包括内部IMAP帐户和外部POP帐户的本发明的更具体的实施例。
图3示出了根据本发明的一个实施例的内部帐户代码到外部帐户代码的映射。
图4示出了其中内部和外部帐户两者都是IMAP帐户的电子邮件系统的一个实施例。
图5示出了根据本发明的一个实施例的全局标识码(“GID”)到标准IMAP标识码的映射。
图6示出了用于向数据处理设备分发电子消息的改进的系统的一个实施例。
图7示出了根据本发明的一个实施例的在用户数据库中维护的一组用户数据。
图8示出了本发明的一个实施例中所采用的待决消息表。
图9示出了根据本发明的一个实施例的过程。
图10示出了根据本发明的一个实施例的系统体系结构。
图11示出了根据本发明的一个实施例的多个任务队列。
图12示出了本发明的一个实施例中所采用的同步器和邮件高速缓存。
图13示出了根据本发明的一个实施例的所实现的同步帐户的方法。
图14示出了用于在一个或多个电子邮件存储和无线数据处理设备之间同步电子邮件的系统的另一实施例。
图15示出了用于在一个或多个电子邮件存储和无线数据处理设备之间同步电子邮件的方法的一个实施例。
优选实施例的详细描述
贯穿本说明书,出于说明目的阐述了众多具体细节以便提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实践本发明。在其它情况下,以框图形式示出了公知的结构和设备以避免使本发明的基本原理含糊难懂。
为了解决上述问题,本申请的受让人开发了一种用于在多个电子邮件帐户之间进行协调的系统。该系统的某些方面在题为APPARATUS AND METHODFOR COORDINATING MULTIPLE EMAIL ACCOUNTS(用于协调多个电子邮件帐户的装置和方法)的美国专利第7,155,725号;以及题为APPARATUS ANDMETHOD FOR DISTRIBUTING ELECTRONIC MESSAGES TO A WIRELESSDATA PROCESSING DEVICE USING A MULTI-TIERED QUEUINGARCHITECTURE(用于使用多层队列体系结构来向无线数据处理设备分发电子消息的装置和系统)的美国专利第7,162,513号(“现有专利”)中描述。这些专利被转让给本申请的受让人并通过引用结合于此。
现有专利中所描述的系统现在将参考图1-9来描述,之后是对电子邮件系统的新的改进的描述,该改进允许更高效地协调、同步和管理来自内部和外部电子邮件帐户的电子邮件。尽管以下所描述的本发明的各实施例将再次聚焦于使用无线客户机设备的实现,但本发明的基本原理不必限于无线实现。
现有专利中所描述的实施例
本发明的实施例可在诸如图1所概括地示出的数据处理服务100上实现。在一个实施例中,服务100担当无线数据处理设备101和诸如例如,电子邮件服务器120和131和web服务器(未示出)等无线设备101与其进行通信的任何外部服务器之间的代理。例如,标准应用程序、多媒体内容和数据可由服务100转换为无线设备101可正确地解释的格式。服务100的一个实施例在题为PORTAL SYSTEM FOR CONVERTING REQUESTED DATA INTO ABYTECODE FORMAT BASED ON PORTAL DEVICE′S GRAPHICALCAPABILITIES(用于基于门户设备的图形能力来将所请求的数据转换为字节码格式的门户系统)的美国专利第6,721,804号中描述,该专利被转让给本申请的受让人并通过引用结合于此。
根据图1所示的实施例,向用户提供服务100上的内部电子邮件帐户102(例如,在一个或多个电子邮件服务器上维护)。如此处所使用的,“内部”指的是电子邮件帐户由服务100来维护和控制的事实。用户可访问内部电子邮件帐户102以通过无线网络120从用户的无线设备101和/或从客户计算机110(例如,通信地耦合到因特网的个人计算机)收发电子邮件消息。可采用各种网络类型,包括例如,支持蜂窝数字分组数据(“CDPD”)和通用分组无线电业务(“GPRS”)的网络。然而,应当注意,本发明的基本原理不限于任何特定类型的无线网络120。
除了内部电子邮件帐户102之外,用户还可具有各种“外部”电子邮件帐户130和131,即,“外部”表现在这些电子邮件帐户并非由服务100来维护或控制。如上所述,在现有系统中,用户通常将被要求分别登录到各个电子邮件帐户102、130和131中的每一个。相反,在本发明的一个实施例中,服务100自动从用户的外部帐户130和131中取得消息并将这些消息存储在该用户的内部电子邮件帐户102中。由此,该用户可从单个帐户102并使用单个用户代理程序来访问他/她的所有消息。
在图1所示的实施例中,被配置在服务100上的接口104周期性地查询外部电子邮件帐户130和131以检查新消息。另选地或另外地,接口104可以只在接收到来自用户的命令后,或者在每一次用户登录到内部电子邮件帐户102时才从外部帐户130和131中取得消息。在一个实施例中,用户可将外部电子邮件帐户130、131配置成在其接收到新电子邮件消息时自动将这些消息传送到接口104。
在接口104可从外部电子邮件帐户130、131中取得消息之前,接口104最初必须用每一个帐户的服务器的网络地址(例如,mail.pacbell.net)和有效用户认证数据来编程。例如,外部电子邮件帐户130、131通常将在向接口104提供电子邮件消息之前需要有效用户名和口令。因此,如图1所示,用户最初可能被要求向该接口提供外部电子邮件帐户数据107。
一旦来自外部电子邮件帐户130、131的电子邮件消息已被存储在内部电子邮件帐户102中,用户就可如同这些消息最初被定址到内部帐户102那样对这些消息执行各种电子邮件操作(例如,回复、删除、移至已保存邮件文件夹……等等)。另外,在一个实施例中,接口104将向外部电子邮件帐户130、131传送邮件帐户更新。例如,当用户删除一特定消息时,该消息已被删除的指示将被传送到外部帐户130、131,由此维护各个电子邮件帐户之间的消息一致性。在一个实施例中,关于是否应将内部帐户上的操作反映在外部帐户130、131上的选择可由用户在逐个帐户的基础上作出。
用于在采用IMAP协议(例如,IMAP4)的内部电子邮件帐户和采用POP3协议的外部帐户之间协调电子邮件消息的一个特定实施例在图2中示出。尽管该实施例将参考这两个特定协议来描述,但应当注意,本发明的基本原理可使用各种替换消息收发协议(例如,分布式邮件系统协议(“DMSP”)、X.400等)来实现。
在该实施例中,POP读取/更新接口206被配置在服务100上以便从一个或多个外部POP服务器214中读取电子邮件消息。如上所述,POP读取/更新接口206可被编程为周期性地(例如,每隔15分钟)检查外部POP帐户214上的新电子邮件消息230。另外,用户可从无线设备101或客户计算机110命令POP读取/更新接口206在任何给定时刻检查新消息。
不论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上设置两个独立文件夹(例如,分别是“Yahoo邮件”和“Worldnet邮件”)以存储来自两个帐户的新电子邮件消息(如上所述,IMAP提供对电子邮件消息文件夹的支持)。
如果外部POP帐户214被配置成甚至在电子邮件消息已被取出后存储这些消息,则在取出后将存在每一个消息的两个副本:外部帐户214上的一个副本以及内部电子邮件数据库211上的一个副本。由此,为了在这两个帐户之间提供更大的协调,在一个实施例中,电子邮件消息映射逻辑212生成存储在内部帐户210和外部帐户214上的消息之间的链路。例如,诸如图3所示的表可由电子邮件消息映射逻辑212生成,该表将内部电子邮件消息标识码301映射到外部电子邮件消息标识码302。在操作中,每一次用户对特定内部电子邮件消息执行操作时,电子邮件消息映射逻辑202将确定是否存在对应的外部电子邮件消息。如果是,则该逻辑将通知POP读取/更新接口206,该接口随后将相应地更新外部POP帐户214。
例如,再次参考图3,如果用户删除具有内部消息标识码“文件夹=已保存邮件,uid=3361”的消息,则电子邮件消息映射逻辑212将向POP读取/更新接口206指示具有外部消息标识码“B881431776693cca7e41 ceded 0f56613”的4号外部消息应从外部POP服务器214中删除。POP读取/更新接口206然后将向外部POP帐户214传送使用消息编号来标识该消息的POP3“删除”命令(例如,“DELE(删除)4”)以此方式,用户能够从单个帐户有效地管理若干不同的邮件帐户。
用户可从他/她的无线设备101访问内部电子邮件帐户210,在一个实施例中,该无线设备101经由电子邮件代理204连接到该帐户。如网络门户应用中所描述的,在一个实施例中,电子邮件代理204基于特定无线设备101的能力来独特地格式化电子邮件消息和其他内容(例如,网页、图形图像等)。用户还可直接或者通过web接口202(例如,诸如由Yahoo邮件和Hotmail提供的web接口),经由客户台式计算机或笔记本计算机110来访问内部电子邮件帐户210。
图4示出了其中内部电子邮件帐户410和外部电子邮件帐户414两者都是IMAP帐户的一实施例。因为外部IMAP帐户414将支持电子邮件文件夹,所以各种电子邮件协调级别都是可能的。例如,用户可将IMAP读取/更新接口406配置成取得只在外部电子邮件帐户414上的指定文件夹中发现(例如,仅来自“收件箱”文件夹)的消息。一旦用户已标识特定文件夹,内部帐户410就可以按如上所述的类似方式从外部帐户414中取得消息。例如,一旦消息从外部帐户414中取出,在内部帐户410中执行的电子邮件消息映射逻辑412就将每一个外部消息标识码与内部消息标识码相关联(例如,如图3所概括地示出的)。该关联然后可用于向远程帐户414传送消息更新。例如,当用户删除消息时,电子邮件消息映射逻辑412将确定是否存在对应的外部消息(例如,通过使用内部消息标识码来执行表查找)。如果是,则电子邮件消息映射逻辑412将向IMAP读取/更新接口406传送该外部标识码,该接口随后将向外部IMAP帐户414传送“删除”命令(即,通过该外部标识码来标识要删除的消息)。
在与内部和/或外部IMAP帐户一起工作时的另外一个问题是电子邮件消息标识码仅在每一个单独的IMAP文件夹中是唯一的。例如,“收件箱”文件夹和“已保存邮件”文件夹可包含具有范围从1到20的标识码的电子邮件消息(即,对于不同的电子邮件消息使用相同的标识码)。另外,当电子邮件消息从源文件夹移至目的地文件夹时,向该消息提供新标识码(即,基于对已经存储在该文件夹中的消息所使用的标识码)。结果,必须提供某种机制以便维护存储在内部电子邮件帐户210、410和外部电子邮件帐户214、414上的消息之间的准确映射。
在本发明的一个实施例中,为了准确地跨IMAP文件夹跟踪消息,为IMAP帐户210、410上的所有消息生成唯一的全局标识码(“GID”)。不同于标准IMAP标识码,消息的GID唯一地在帐户210、410上标识该消息,并且不会随着该消息从一个文件夹移至下一个文件夹而改变。图5中的表阐述了GID到标准IMAP标识码的示例性λ映射。在一个实施例中,电子邮件消息映射逻辑212、412将每一个电子邮件消息的GID映射到远程帐户上的对应标识码。结果,当用户在内部帐户210、410处将文件从一个文件夹移至另一个文件夹时,仍然可标识外部帐户214、414上的对应消息。
GID可以按若干种不同的方式来生成和维护。在一个实施例中,只要作出对特定消息的更新,GID映射就被更新。例如,如果GID=20对应于收件箱:25并且用户从收件箱:25移至垃圾邮件:12,则映射被相应地更新。该技术的一个优点是它使得能够通过GID来快速查找消息。
在另一实施例中,诸如X-GID:20等X首部被插入到邮件消息的实际首部中。如果移动该消息,则首部与该消息一起移动。该技术的一个优点是需要较少的工作来从一个文件夹到下一个文件夹地跟踪消息。
在一个实施例中,当用户响应来自内部帐户210、410的电子邮件消息时,首部中的“来自:”字段将指示向其传送该消息的原始帐户。例如,如果消息最初被发送到外部帐户214、414,则该“来自:”字段将包括外部帐户地址,尽管回复在内部帐户处生成是事实。
另外,消息传送自内部帐户的指示也可被包括在该消息中。例如,当消息从无线设备传送时,该消息发自“无线”设备的指示可被追加到发件人的姓名(例如,“Scott Kister(无线)”scott.kister@danger.com),由此标识该消息的真正源,同时维护原始电子邮件收件人地址。在一个实施例中,该指示可由最终用户在内部帐户210、410处启用或禁用。
图6示出了用于向无线数据处理设备101分发电子消息的电子邮件系统的另一实施例。该实施例一般包括用户数据库625、用于访问该用户数据库625的数据库代理服务器620、电子邮件代理服务器610、分派器服务器615以及在邮件服务器605(或另选地,在单独服务器上)执行的邮件代理程序606。
图7所示的用户数据库625的示例性部分包含用户标识码701到数据处理设备标识码702的映射。该用户ID/设备ID映射由服务100用来标识对于给定用户应向其传送电子邮件消息和其他数据的特定无线设备101。另外,用户数据库625包含用户的帐户名、用户的在线状态,包括无线设备101用于进行通信的特定分派器615、以及与该用户相关联的用户标识模块(“SIM”)标识码(用户可维护多于一个SIM)。
分派器615形成对于在无线设备101和服务100之间传输的数据的通信中心点。在一个实施例中,分派器615维护无线设备101和在服务100上维护的各种代理服务器之间的套接字连接(例如,TCP套接字)。例如,对于电子邮件会话,分派器615打开并维护无线设备101和电子邮件代理服务器610之间的套接字连接。类似地,对于其他无线应用(例如,即时消息收发、web浏览等),分派器615在无线设备101和适当的代理服务器621(例如,即时消息收发代理服务器、web代理服务器等)之间建立套接字连接并维护该连接。每一次用户登录服务100或从中注销时,分派器615都通知数据库(DB)代理620相应地更新用户数据库625中的该用户的在线状态。另外,给定无线网络120和服务100在其上操作的本地网络之间的显著的带宽差异,分派器615通过每一个单独的套接字连接来临时缓冲发往和发自无线设备101的数据。
在邮件服务器605上(或在单独服务器上)执行的邮件代理程序606持续跟踪对用户的电子邮件帐户的变更。在一个实施例中,代理程序606周期性地检查用户的收件箱以确定该用户是否接收到任何新电子邮件消息。当定址到用户的新电子邮件消息到达时,邮件代理程序606向电子邮件代理服务器610传送“新电子邮件消息”警告。电子邮件代理服务器610将该新电子邮件消息警告转发给DB代理服务器620。电子邮件代理服务器可将该新电子邮件消息警告的格式从标准格式(例如,IMAP)转换为服务100所采用的专用消息收发格式。
DB代理服务器620查询用户数据库625以确定用户是在线还是离线,并且如果在线,则确定无线数据处理设备101通过哪一个分派器615连接。DB代理服务器620然后经由该分派器615来自动将该新电子邮件消息警告传送到用户的无线设备101。由此,如果用户在线,则他/她在任何新电子邮件消息到达他/她的电子邮件帐户时接收到自动指示。
然而,如果该用户离线,则DB代理620将新电子邮件消息警告存储在诸如图8所示的待决消息表800中。该待决消息表包括消息类型指示801和消息对象802,前者指示存储在该表中的数据的类型,而后者包含底层消息数据。图8示出了三种类型的消息类型:新电子邮件消息警告801、新电子邮件消息811以及新即时消息812。当然,实际上无限数量的消息类型可在用户数据库625中临时排队,同时仍旧遵循本发明的基本原理。
在一个实施例中,一旦新电子邮件消息警告被存储在对于特定邮件文件夹(例如,特定邮件服务器上的用户的收件箱)的用户的待决消息表800中,就不将其他警告或电子邮件消息存储在对于该邮件文件夹的表中,由此节省了网络带宽和用户数据库625上的存储空间。然而,如果接收到对于不同文件夹的新电子邮件消息,则将该新电子邮件警告存储在待决消息表800中。
只要用户通过分派器615重新连接到服务100,分派器615最初就检查DB代理620以确定是否有对于无线设备101的任何电子邮件消息警告、电子邮件消息或其他类型的数据待决。如果是,则分派器615经由DB代理620来取得该数据并将其传送到无线设备101。
在一个实施例中,一旦无线设备101接收到新电子邮件消息警告810(立刻或者在该警告在用户数据库中排队后),无线设备101就传送对指定全局ID值之上的所有新电子邮件消息的请求。该请求可响应于用户命令而由设备101自动生成或手动生成。如图5所示,新全局ID按服务100接收到新电子邮件消息的顺序来分配。因此,无线设备101可查询其本地电子邮件存储以标识对应于先前下载的电子邮件消息的最大GID值,并且然后请求具有高于所标识的GID值的GID值的所有电子邮件消息。以此方式传送对所有新电子邮件消息的批量请求与单独请求每一个新电子邮件消息的技术相比节省了大量网络带宽。
分派器615将该批量请求标识为电子邮件请求(例如,通过读取与该请求相关联的数据对象的首部)并且作为响应将该请求转发给电子邮件代理610。如上所述,如果该请求已经是网页请求或即时消息收发事务,则分派器将会将该请求分别转发给web代理服务器或即时消息收发代理服务器。
电子邮件代理610解码该请求并作为响应将该请求转换为IMAP协议(或邮件服务器605所采用的其他协议)。例如,响应于对“所有新电子邮件消息”的单个请求,代理服务器610可单独请求每一个新电子邮件消息并且然后将这些消息捆绑成对数据处理设备101的单个、批量电子邮件消息响应,从而同样节省了网络带宽。
在一个实施例中,代理服务器610最初请求所有新电子邮件消息首部的列表而不是每一个电子邮件消息的全部内容(即,电子邮件首部+正文)。一旦在数据处理设备101处接收到消息首部,用户就可审阅来自该消息首部的每一个消息的主题行并且只下载他/她希望阅读的电子邮件消息。
无线网络120通常并非如有线网络那样可靠。由此,无线设备101可能在与服务100的数据事务期间偶尔变得与无线网络120断开连接。例如,无线设备101可能在电子邮件代理610已代表用户从电子邮件服务器605中取得一个或多个电子邮件消息之后但在所请求的电子邮件消息已由分派器615成功地传递给无线设备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经由对用户数据库625的查询来确定无线设备101当前是否在线。如果否,则将新电子邮件通知在用户数据库中排队906并且随后在无线设备101下一次连接到服务100时将该新电子邮件消息传送到该无线设备101。
如果无线设备101在线,则在908,分派器将新电子邮件通知传送到该无线设备101。在909,电子邮件代理610从无线设备101接收对所有新电子邮件消息的请求(例如,某一指定GID值之上)。在910,电子邮件代理取得、重新格式化新电子邮件消息并将其传送到分派器(例如,通过将这些电子邮件消息捆绑成单个响应),并且在912,分派器615尝试将电子邮件消息传送到无线设备。
如果在914处确定传输成功,则该过程结束。然而,如果传输不成功,则在920,分派器615将继续尝试传送其本地消息队列中的电子邮件消息,只要在918处确定尚未达到重传阈值条件(例如,未超过时间阈值或重传尝试阈值)。如果已达到重传阈值,则在922,将电子邮件消息从分派器队列传送到用户数据库625中的长期待决消息队列(例如,待决消息表800)。
用于电子邮件协调和同步的系统的新实施例
图10示出了采用用于管理来自内部和外部电子邮件邮件服务器的电子邮件消息的另一种技术的体系结构。在该实施例中,电子邮件消息的同步、分发和调度经由若干新组件来实现,这些新组件包括异步新邮件通知接收器1005、任务队列1006、同步器1007、邮件高速缓存1008和调度器1009。除非另外指明,否则图10所示的组件以与上述对应组件(例如,DB代理1014、分配器1012、邮件代理1010等)相同或相似的方式操作。
在本发明的一个实施例中,任务队列1014是其中任务由诸如异步新邮件通知接收器1005、调度器1009、邮件队列1010和同步器1007等其他系统组件来放置的队列(或一系列队列)。任务队列1014严格意义上不是线性队列;它是关系型数据库,可根据包括例如,项目已经在队列中的时间长度、任务是高优先级还是低优先级以及任务是否可与其他任务接合的复杂试探来向该关系型数据库查询要执行的下一个任务。在一数据库实现中,单独的任务可被存储在数据库中的每一行中。任务队列1006还可包括一个或多个小型服务器应用程序,这些应用程序执行原子锁定操作以防止竞争情况(例如,这种情况可能在两个实体试图同时完成同一任务的情况下发生)。一旦任务被输入到任务队列中,它们随后就由诸如同步器1007(如下所述)等其他组件来处理。
如图11所示,任务队列1006可包括多个单独的队列1101-1103,且每一个队列都包含相似类型和/或优先级的任务1110-1113。例如,每一个任务队列1101-1103都可表示不同的优先级。在该实施例中,在所有其他变量相同(例如,诸如每一个任务已经在队列中的时间长度等)的情况下,队列中具有相对较高优先级的任务一般在具有相对较低优先级的任务之前被服务。另选地或另外地,每一个任务队列1101-1103都可存储不同类型的任务。例如,由异步新邮件通知接收器1005提供的新电子邮件通知可被放置在一个队列中,由调度器1009调度的电子邮件操作可被放置在另一个队列中,而由同步器1007生成的消息正文请求可被放置在第三个队列中。
当然,不同的任务“类型”实际上可表示满足每一种任务类型的不同调度需求的不同优先级。例如,由邮件代理1010生成的用户动作/请求需要快速轮转并因此被添加到“高优先级”队列。同步任务可被放置在准许随机访问的队列中以使相关项目可成批一起处理。诸如由调度器1009生成的任务等其他任务可被放置在普通的中等优先级先进先出(“FIFO”)队列中。可采用用于表征任务并将任务分到各队列的各种替换和/或其他技术,而仍然遵循本发明的基本原理。
本发明的一个实施例还包括邮件高速缓存1008,其中存储表示用户的各个邮件帐户的最后已知状态的消息数据;已被传送到设备的数据;仍然必须传送到设备的数据;仍然必须传送到各个邮件帐户的数据;以及为更好的性能而高速缓存的消息正文的瞬时本地副本。可在邮件高速缓存1008中采用一个或多个关系型数据库以便存储消息数据。
图11示出了在逻辑上被细分成持久结构存储1204和消息正文高速缓存1205的邮件高速缓存1008的一个实施例。
持久结构存储1204反映每一个用户的电子邮件帐户(例如,外部帐户1002和内部帐户1003)的最后已知状态。在一个实施例中,存储在持久结构存储1204中的信息包括除了消息正文之外的所有用户的邮件数据(例如,发件人、主题、消息收件人、消息日期等)。以下是该持久结构存储的一个实施例的架构的概要:
1.与每一个用户相关联的电子邮件帐户的列表
2.对于每一个帐户,访问方法、服务器地址、认证凭证、最后一次同步时间、同步细节历史以及对其执行同步的文件夹的列表
3.对于每一个文件夹,电子邮件消息的列表
4.对于每一个消息,用于创建该消息的概述列表的足够信息,包括但不限于,日期、主题、标志、发件人和收件人。
除了上述基本邮件数据结构之外,持久结构存储1204还可包括虚拟文件夹、消息线程以及用于全文搜索的文字索引。在一个实施例中,持久结构存储1204维护始发服务器(例如,邮件存储1002、1003)上的每一个消息的最后已知状态和当前本地状态之间的差异,其可包括待决身份、未同步的变更。
以下是消息的服务器上的最后已知状态和当前本地状态之间的差异的示例:
1.消息在本地已被删除,但该删除尚未被同步;
2.消息在本地已被“隐藏”,其是不旨在被同步的删除;
3.标志变更尚未被同步(例如,“未读”标记变为“已读”);
4.消息被移至不同的文件夹且尚未被同步。
在一个实施例中,该持久结构存储还存储关于文件夹,而不仅仅是消息的元数据;因此该元数据还可表示文件夹的服务器上的最后已知状态和当前本地状态之间的差异。这些差异可包括文件夹重命名和删除。
在一个实施例中,信息在持久结构存储1204中根据高速缓存管理策略来维护。在最简单的情况下,一旦用户的持久结构存储达到了指定阈值,就移除较老的信息以便为新信息腾出空间。或者,可移除在最长时间段内未被访问过的信息以便为新信息和/或最近已被访问过的信息腾出空间。可实现各种其他高速缓存管理策略而仍然遵循本发明的基本原理。
存储在持久结构存储1204中的反映每一个邮件服务器的状态的元数据易于重新生成(即,通过查询远程服务器),因此它被认为是瞬时的。然而,存在通过在邮件高速缓存中维护该元数据来获得的显著优化,因为将邮件服务器的新状态与存储在邮件高速缓存中的最新版本进行比较并且只将差异发送到数据处理设备因而是可能的。如果没有邮件服务器的现有状态,则将必须向数据处理设备发送多得多的数据,并且该设备将负责找出已经知道什么和不知道什么。
记住这些概念,在本发明的一个实施例中,在服务中实现多个服务器以支持多个邮件高速缓存。当连接到邮件系统时,数据处理设备被“寄宿”在其中存储关于用户的邮件帐户的元数据的特定邮件高速缓存服务器上。另外,出于性能考虑,不将邮件数据复制到共享存储(例如,用户数据库)。如果存储设备的邮件高速缓存的服务器停机(要求用户重新寄宿),则本发明的一个实施例接受执行与邮件存储的无高速缓存同步迭代的性能损失。
在本发明的一个实施例中,某些元数据是只在本地的(即,只存储在邮件高速缓存中)。这包括例如,被标记为“隐藏”的消息。与其他邮件数据(其可始终从邮件存储中取得)相反,该数据需要是可靠地持久的。为了实现这一点,在持久结构存储中实现两层数据,可靠地持久的一层数据(即,通过将该数据存储在共享存储中或跨多个服务器来存储该数据)以及非可靠地持久的一层数据。
消息正文高速缓存1205保存与持久结构存储1204中的消息元数据交叉引用的完整的消息正文。在一个实施例中,消息正文根据通常将不同于持久结构存储的高速缓存管理策略的第二高速缓存管理策略来临时存储在消息正文高速缓存1205中。给定非常多的第三方电子邮件帐户的可能性,该高速缓存管理策略通常将在任一时刻都不高速缓存所有用户的电子邮件数据。相反,实现智能策略以便基于诸如消息已经在高速缓存中的时间长度、消息被访问的最后时间、用户的帐户中的总体活跃水平以及已经存储在高速缓存中的数据量等变量来移除消息。例如,如果用户频繁(即,在指定阈值之上)访问特定消息,则消息正文高速缓存1205可保留该消息的副本,尽管该消息在高速缓存中已经达相对较长的时间是事实。相反,如果消息已经长时间(例如,第一指定时间段)在高速缓存中并且最近(例如,第二指定时间段)未被用户访问,则可从消息正文高速缓存中删除消息正文。可实现各种其他高速缓存管理变量以确定是应保留还是移除消息。
在一个实施例中,为了优化性能,消息正文读取器只要检测到可获得新正文就以投机性的方式(即,没有来自数据处理设备的显式指示)从邮件服务器中取得消息正文。在一个实施例中,直到设备请求才将投机性地读取的正文传送到该设备。
在一个实施例中,在数据处理设备101上实现第二层消息高速缓存。具体而言,在该实施例中,只要接收到新电子邮件消息,就将关于该消息的元数据连同“新消息”通知一起发送到数据处理设备。在一个实施例中,该元数据是存储在持久结构存储1204中的相同数据。或者,该元数据可以是存储在持久结构存储1204中的数据的有限子集(例如,消息主题、发件人和收件人)。只在最终用户请求时才将消息正文传送到数据处理设备。
在一个实施例中,在数据处理设备上实现不同的高速缓存管理策略以便高速缓存元数据和/或消息正文(即,与在系统邮件高速缓存1008上实现的高速缓存管理策略不同)。例如,一旦消息正文被下载到设备,就没有理由将该消息正文保留在消息正文高速缓存中。由此,在该实施例中,所下载的消息正文自动从消息正文高速缓存中删除。一旦被下载到设备,消息正文就在该设备上根据不同的高速缓存管理策略来高速缓存。例如,在一个实施例中,在预定时间段内未被访问的消息正文直到最终用户请求才可从高速缓存中移除。
在一个实施例中,使用两个准则来管理设备侧高速缓存:消息大小以及消息有多新近。在一个实施例中,从高速缓存中移除非常大的消息(即,超过阈值)以便以最少数量的从高速缓存中移除的(decached)消息回收大多数存储器。这受到非常新近(即,在指定时间段内接收到)的、非常大的消息如果可能就*不*应从高速缓存中移除的限制。
在一个实施例中,同步器1007是端口监控程序(即,在连续循环中运行的软件组件),其持续更新用户的邮件帐户1002、1003的高速缓存视图;用用户所作出的变更来更新邮件帐户;以及协调这两者之间的冲突。同步器1007还经由邮件代理1010来异步地将数据发送到设备101。
如图12所示,同步器1007的一个实施例包括消息正文读取器组件1202和同步逻辑1201。顾名思义,消息正文读取器1202负责取得新消息正文和取得已在最终用户请求时从高速缓存中移除的消息正文(例如,仍然在持久结构存储1204中但已从消息正文高速缓存中转储清除的消息的正文)。该消息正文读取器与外部邮件存储1002和内部邮件存储1003进行通信以取得所请求的消息正文。
同步逻辑1201更新用户的邮件帐户的邮件高速缓存视图,用用户所作出的变更来更新邮件帐户,并协调这两者之间的冲突。换言之,同步逻辑1201是负责确保用户的电子邮件帐户的内部表示匹配其授权服务器上的实际状态,该相同状态也翔实地反映在无线设备101上并且对任一端的变更被适当地传播的组件。同步器1007还经由邮件代理1010来异步地将数据发送到该设备。在一个实施例中,为了节省带宽,同步逻辑1201在适当时组合多个邮件操作。例如,如果特定消息已被读取、修改、移至一文件夹并且然后被最终用户删除,则只需同步删除操作。
在操作中,同步器持续向任务队列1006查询需要同步的帐户。用户帐户的条目在以下情况下被放置在任务队列中:
1.当异步新邮件通知接收器从外部邮件存储1002接收到对于该帐户的新邮件通知(通过SMTP接收器1004)时;
2.当用户在无线设备101上或经由基于web的接口来对消息数据作出需要向原始帐户反映的变更时;
3.当调度器1009确定是时候同步用户的帐户时;
4.当用户动作导致高速缓存未中,从而需要(重新)下载消息数据。注意,这是特殊情况,因为用户动作一般将实时待决。由此,对于该操作,可使用“高优先级”任务队列(例如,图11中的队列1101)。在这种情况下,所需内容是同步请求的参数,并且正在等待的客户机必须接收及时的完成通知(即,对服务的请求包括用户正等待阅读的消息的身份)。
在一个实施例中,在从任务队列1006中标识要对其操作帐户后,同步器执行如图13所示的以下动作:
1301.连接到原始服务器
同步器首先连接到帐户的原始服务器(例如,外部邮件存储1002或本地邮件存储1003)。为此,同步器从DB代理1014获取必需的帐户类型/位置信息加上认证凭证并且然后使用该信息来建立与帐户的原始服务器的连接。
1302.确定自从上一次同步以来的变更
同步器1007然后确定自从上一次同步以来在该帐户中什么已变更。为此,同步器1007从原始服务器中读取远程文件夹的列表以及这些远程文件夹所包含的消息的概要数据。在一个实施例中,采用“快速扫描”同步模式,其中只查询比给定的高水位标记更新的消息概要。该模式会漏看较老的消息中的标志变更但将发现新消息。一旦从原始服务器中收集到该数据,就将该数据与持久结构存储中的帐户的表示进行比较。所发现的任何差异构成远程变更集。
1303.解决冲突
同步器然后尝试解决可能存在于原始服务器的变更集和用户的本地变更集之间的任何冲突。在将对用户帐户的邮件数据的待决本地变更的列表与远程变更集进行比较时,如果同一数据项在这两个地方都发生了变更,则存在冲突并且必须解决冲突(除非该变更在两端相同)。在一个实施例中,按照服务器是有权威性的原理,同步器中的冲突检测和相关逻辑优选原始服务器版本而非本地版本。或者,在一个实施例中,冲突检测和相关逻辑将选择变更的本地版本。在另一实施例中,同步器询问用户并允许该用户选择变更的正确版本。
1304.上传本地变更
尚未由冲突解决消除的本地变更经由外部邮件服务器1002所需的协议序列(例如,IMAP STORE(存储)命令、POP DELE(删除)命令等)来上传到服务器。
1305.下载远程变更
连同所发现的任何新消息的正文一起下载尚未通过先前的步骤来获取的任何相关结构数据。结果被放置在持久结构存储1204和消息正文高速缓存1205中。在一个实施例中,新添加的消息正文在高速缓存中保留特定最少时间量以准许设备响应其异步邮件变更通知并请求正文。
1306.将适当的通知排队
一旦已下载远程变更,就将适当的通知(例如,新邮件通知、消息删除通知等)排队以便经由邮件代理1010和分派器1012(如上所述)来异步传递给设备。在一个实施例中,持久结构存储中从远程变更中得到的新信息自动使得将异步通知传递给设备,该设备进而可请求其他数据。在诸如标志打开和关闭等简单变更的情况下,数据本身可被包含在通知中。
在一个实施例中,调度器1009是端口监控程序,其通过将对于用户帐户的任务放置在任务队列1006中来指示同步器对哪一个帐户操作以及何时操作。调度器1009可基于诸如帐户活跃度和用户偏好等变量来针对每一个帐户采用不同的同步频率试探。例如,如果用户活跃地对他/她的帐户进行操作(例如,活跃地收发电子邮件信息),则调度器1009可临时增加同步频率。类似地,如果用户的外部邮件帐户1002是非常活跃的,则调度器1009可增加同步频率(相对于较不活跃的帐户)。在一个实施例中,调度器1009检查DB代理1014以确定帐户活跃度。如果DB代理1014指示用户的帐户是“活跃的”(例如,因为存在新消息),则调度器1009增加同步频率。相反,如果DB代理1014指示用户的帐户是“不活跃的”(例如,因为该用户离线和/或不存在新消息),则调度器1009降低同步频率。类似地,如果在上一次同步期间发生瞬时错误(例如,由于过期或不正确的口令或其他认证数据),则调度器1009可使同步频率降低更大的量,或者可禁用调度的同步直到该错误被修复(例如,直到正确的用户名和口令被提供给系统)。一般而言,调度器所采用的试探包括但不限于以下变量:上一次同步的时间;同步时的错误频率;该帐户中的已读邮件的数量;外部电子邮件提供者要求/偏好;以及要反向同步的待决变更的数量。
如上所述,在一个实施例中,邮件代理1010对无线设备101执行排队功能并通过分派器1012来与该设备进行通信。例如,响应于同步器1007的同步和/或由异步新邮件通知接收器1005接收到的新邮件通知,邮件代理1010将新消息通知推送到无线设备101。在一个实施例中,该新消息通知包括关于每一个消息的元数据(例如,存储在持久结构存储1204中的相同信息或其子集,诸如发件人ID、主题、日期和时间等)。使用该元数据,用户然后可向消息正文高速缓存1205请求完整的消息正文。
在一个实施例中,SMTP接收器1004处理来自外部SMTP服务器1001的入站SMTP请求(例如,诸如新消息等电子邮件帐户更新)。该接收器还可在将新消息放置在本地邮件存储1003中之前执行垃圾邮件过滤和附件剥离。一旦入站消息被放置在本地邮件存储1003中,就向异步新邮件通知接收器1005警告该新消息的到达。
在一个实施例中,本地邮件存储1003是存储属于内部用户帐户的消息以及从外部SMTP服务器1001接收到的外部消息的地方。该存储可以是如外部邮件帐户1002那样的IMAP服务器,在这种情况下,本地邮件存储1003和外部帐户1002之间的唯一区别(从诸如同步器1007和邮件高速缓存1008等其他系统组件的观点来看)是本地邮件存储1003由服务100主存。
如以上所提到的,异步新邮件通知接收器1005处理关于用户的各个电子邮件帐户(例如,外部帐户1002和本地邮件帐户1003)中的新邮件的到达的异步通知。特定外部帐户1002可将新邮件通知推送到异步新邮件通知接收器1004,由此缓解了持续向外部帐户轮询变更的需求。
图14示出了用于使用同步器模块1407和邮件高速缓存1408来在一个或多个电子邮件存储1401-1403和无线数据处理设备101之间同步电子邮件的系统的另一实施例。值得注意的是,该实施例不包括上述实施例所包括的调度器或任务队列。同步基于诸如对数据处理设备101上的邮件数据的状态的修改等设备驱动事件来执行。
由图14所示的服务来实现的与邮件存储同步的方法的一个实施例在图15中示出。在1501,用户在数据处理设备上执行邮件操作。例如,用户可删除一个或多个电子邮件消息。
在1502,向同步器模块1407报告对电子邮件消息的操作和该消息的身份(经由邮件队列1010)。在1503,同步器1407尝试对邮件存储1401-1403中的一个(即,包含对其执行操作的电子邮件消息的邮件存储)执行该操作。在1504,邮件存储在需要时对该操作执行冲突解决。如果同步器所请求的操作与前一操作冲突,则邮件服务器可拒绝该同步器的请求。作为示例,如果用户通过桌面接口(例如,web浏览器)连接到邮件存储并且在将一电子邮件消息从数据处理设备中删除之前将同一电子邮件消息移至新文件夹,则该删除尝试将失败。可在邮件存储上实现各种其他已知的冲突解决技术。
在1505,同步器1407从对其请求操作的邮件存储中取得已更新的状态信息。返回到上述示例,如果删除操作由于电子邮件消息被移至新文件夹而失败,则该信息将被发送到同步器1407。
在1506,同步器1407更新邮件高速缓存1408中的状态信息。在一个实施例中,邮件高速缓存1408采用与如上所述的邮件存储1008相同的体系结构。例如,该邮件存储包括持久结构存储1204和消息正文高速缓存1205,前者用于存储关于每一个用户的邮件存储的状态的元数据,而后者用于高速缓存消息正文。由此,已更新的状态信息被反映在持久结构存储1204和/或消息正文高速缓存1205中。
在1507,邮件高速缓存1408将已更新的变更传送到无线数据处理设备101。
在一个实施例中,诸如以上所描述的多个同步器和邮件高速缓存跨多个物理服务器来实现。当用户连接到服务时,该用户的邮件高速缓存在特定服务器上维护,即,该用户被“寄宿”在该服务中的特定邮件高速缓存服务器和/或同步器上。当服务想要代表用户连接到特定邮件存储时,该服务首先检查以确定该用户是否被寄宿在特定邮件服务器高速缓存和同步器上。该信息可在用户数据库中维护。如果是,则将邮件请求定向到那里,其中可能已经建立到该远程邮件服务器的实况连接并且可重用该连接。
关于用户的远程邮件服务器会话的大量状态在该用户/帐户被寄宿在其中的邮件高速缓存中本地地维护。该数据出于服务器和网络性能的目的是本地的。为了方便将该用户/帐户重新寄宿到不同的节点(例如,如果服务器停机或者在期望重新平衡一组不同的服务器上的负载的情况下),本发明的一个实施例将本地状态移至诸如用户数据库等共享存储(即,经由DB代理)。
本发明的实施例可以包括以上阐明的各个步骤。这些步骤可被具体化在使通用或专用处理器执行特定步骤的机器可执行指令中。另选地,这些步骤可由包含用于执行这些步骤的硬连线逻辑的专用硬件组件来执行,或由编程的计算机组件和自定义的硬件组件的任何组合来执行。
本发明的元素还可以作为用于存储机器可执行指令的机器可读介质来提供。该机器可读介质可以包括,但不限于,软盘、光盘、CD-ROM、以及磁光盘、ROM、RAM、EPROM、EEPROM、磁卡或光卡、传播介质或适于存储电子指令的其它类型的介质/机器可读介质。例如,本发明可以作为计算机程序来下载,其可用具体化在载波或其它传播介质中的数据信号的方式经由通信链路(例如,调制解调器或网络连接)从远程计算机(例如,服务器)传输到请求计算机(例如,客户机)。
贯穿以上描述,为解释起见,阐明了众多具体细节以提供对本发明的全面理解。然而,对本领域技术人员将显而易见的是,没有这些具体细节也可实践本发明。例如,图10所示的功能模块各自可被实现为单独的物理服务器机器或者可以分布在多个物理机器上。此外,某些模块可在单个机器上被分组在一起。另外,虽然本发明的各实施例在上文中在IMAP和POP的上下文中描述,但本发明的基本原理不限于任何特定类型的协议。因此,本发明的范围和精神应根据所附权利要求书来判断。
Claims (21)
1.一种计算机实现的方法,包括:
代表无线数据处理设备从第一电子邮件服务器中取得第一组电子邮件消息;
从所述第一组电子邮件消息中提取元数据;
将所述元数据存储在第一高速缓存中,所述第一高速缓存根据第一高速缓存管理策略来管理;
至少将所述电子邮件消息的消息正文存储在第二高速缓存中,所述第二高速缓存根据第二高速缓存管理策略来管理。
2.如权利要求1所述的方法,其特征在于,还包括:
自动将所述元数据的各部分从所述第一高速缓存传送到所述无线数据处理设备;以及
仅在从所述数据处理设备接收到对消息正文的请求时将该消息正文传送到所述无线数据处理设备。
3.如权利要求2所述的方法,其特征在于,还包括:
根据第三高速缓存管理策略来管理所述无线数据处理设备上的消息正文和元数据。
4.如权利要求1所述的方法,其特征在于,所述第一高速缓存管理策略将元数据保留比所述第二高速缓存管理策略保留与元数据相关联的消息正文相对更长的时间。
5.如权利要求1所述的方法,其特征在于,所述元数据至少包括消息标识码、消息发件人和消息主题。
6.如权利要求1所述的方法,其特征在于,还包括:
从所述无线设备接收对电子邮件消息的请求;
确定所述电子邮件消息的正文是否被存储在所述第二高速缓存中;
如果所述消息正文未被存储在所述第二高速缓存中,则从所述第一电子邮件服务器中取得所述电子邮件消息正文;以及
将所述电子邮件消息正文传送到所述无线设备。
7.如权利要求1所述的方法,其特征在于,还包括:
代表所述无线数据处理设备从第二电子邮件服务器中取得第二组电子邮件消息;
从所述第二组电子邮件消息中提取元数据;
将来自所述第二组电子邮件消息的元数据连同来自所述第一组电子邮件消息的元数据一起存储在所述第一高速缓存中;
至少将所述第二组电子邮件消息的消息正文连同所述第一组电子邮件消息的消息正文一起存储在所述第二高速缓存中。
8.一种电子邮件消息高速缓存系统,所述系统具有用于存储程序代码的至少一个存储器以及用于处理所述程序代码以执行以下操作的至少一个处理器:
代表无线数据处理设备从第一电子邮件服务器中取得第一组电子邮件消息;
从所述第一组电子邮件消息中提取元数据;
将所述元数据存储在第一高速缓存中,所述第一高速缓存根据第一高速缓存管理策略来管理;
至少将所述电子邮件消息的消息正文存储在第二高速缓存中,所述第二高速缓存根据第二高速缓存管理策略来管理。
9.如权利要求8所述的系统,其特征在于,包括使得所述处理器执行以下操作的附加程序代码:
自动将所述元数据的各部分从所述第一高速缓存传送到所述无线数据处理设备;以及
仅在从所述数据处理设备接收到对消息正文的请求时将该消息正文传送到所述无线数据处理设备。
10.如权利要求9所述的方法,其特征在于,包括使得所述处理器执行以下操作的附加程序代码:
根据第三高速缓存管理策略来管理所述无线数据处理设备上的消息正文和元数据。
11.如权利要求8所述的方法,其特征在于,所述第一高速缓存管理策略将元数据保留比所述第二高速缓存管理策略保留与元数据相关联的消息正文相对更长的时间。
12.如权利要求8所述的方法,其特征在于,所述元数据至少包括消息标识码、消息发件人和消息主题。
13.如权利要求8所述的方法,其特征在于,包括使得所述处理器执行以下操作的附加程序代码:
从所述无线设备接收对电子邮件消息的请求;
确定所述电子邮件消息的正文是否被存储在所述第二高速缓存中;
如果所述消息正文未被存储在所述第二高速缓存中,则从所述第一电子邮件服务器中取得所述电子邮件消息正文;以及
将所述电子邮件消息正文传送到所述无线设备。
14.如权利要求8所述的方法,其特征在于,包括使得所述处理器执行以下操作的附加程序代码:
代表所述无线数据处理设备从第二电子邮件服务器中取得第二组电子邮件消息;
从所述第二组电子邮件消息中提取元数据;
将来自所述第二组电子邮件消息的元数据连同来自所述第一组电子邮件消息的元数据一起存储在所述第一高速缓存中;
至少将所述第二组电子邮件消息的消息正文连同所述第一组电子邮件消息的消息正文一起存储在所述第二高速缓存中。
15.一种其上存储有程序代码的机器可读介质,所述程序代码在被机器执行时使得所述机器执行以下操作:
代表无线数据处理设备从第一电子邮件服务器中取得第一组电子邮件消息;
从所述第一组电子邮件消息中提取元数据;
将所述元数据存储在第一高速缓存中,所述第一高速缓存根据第一高速缓存管理策略来管理;
至少将所述电子邮件消息的消息正文存储在第二高速缓存中,所述第二高速缓存根据第二高速缓存管理策略来管理。
16.如权利要求15所述的系统,其特征在于,包括使得所述机器执行以下操作的附加程序代码:
自动将所述元数据的各部分从所述第一高速缓存传送到所述无线数据处理设备;以及
仅在从所述数据处理设备接收到对消息正文的请求时将该消息正文传送到所述无线数据处理设备。
17.如权利要求16所述的方法,其特征在于,包括使得所述机器执行以下操作的附加程序代码:
根据第三高速缓存管理策略来管理所述无线数据处理设备上的消息正文和元数据。
18.如权利要求15所述的方法,其特征在于,所述第一高速缓存管理策略将元数据保留比所述第二高速缓存管理策略保留与元数据相关联的消息正文相对更长的时间。
19.如权利要求15所述的方法,其特征在于,所述元数据至少包括消息标识码、消息发件人和消息主题。
20.如权利要求15所述的方法,其特征在于,包括使得所述机器执行以下操作的附加程序代码:
从所述无线设备接收对电子邮件消息的请求;
确定所述电子邮件消息的正文是否被存储在所述第二高速缓存中;
如果所述消息正文未被存储在所述第二高速缓存中,则从所述第一电子邮件服务器中取得所述电子邮件消息正文;以及
将所述电子邮件消息正文传送到所述无线设备。
21.如权利要求15所述的方法,其特征在于,包括使得所述机器执行以下操作的附加程序代码:
代表所述无线数据处理设备从第二电子邮件服务器中取得第二组电子邮件消息;
从所述第二组电子邮件消息中提取元数据;
将来自所述第二组电子邮件消息的元数据连同来自所述第一组电子邮件消息的元数据一起存储在所述第一高速缓存中;
至少将所述第二组电子邮件消息的消息正文连同所述第一组电子邮件消息的消息正文一起存储在所述第二高速缓存中。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/789,536 | 2007-04-24 | ||
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 (1)
Publication Number | Publication Date |
---|---|
CN101702943A true CN101702943A (zh) | 2010-05-05 |
Family
ID=39888302
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200880013196A Pending CN101702943A (zh) | 2007-04-24 | 2008-04-15 | 用于高速缓存无线数据服务中的电子邮件消息的装置和方法 |
Country Status (6)
Country | Link |
---|---|
US (1) | US20080270548A1 (zh) |
EP (1) | EP2149091A4 (zh) |
JP (1) | JP2010525740A (zh) |
KR (1) | KR20100015641A (zh) |
CN (1) | CN101702943A (zh) |
WO (1) | WO2008133820A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201756A (zh) * | 2010-11-01 | 2013-07-10 | 国际商业机器公司 | 利用元数据优化归档电子邮件的效率 |
CN111108485A (zh) * | 2017-08-08 | 2020-05-05 | 大陆汽车有限责任公司 | 操作高速缓存的方法 |
Families Citing this family (25)
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 |
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 |
EP2543175B1 (en) | 2010-03-01 | 2018-05-02 | InterDigital Patent Holdings, Inc. | Machine-to-machine gateway architecture and functionality |
JP2012093826A (ja) * | 2010-10-25 | 2012-05-17 | Panasonic Corp | 通信システム |
JP5698011B2 (ja) * | 2011-01-25 | 2015-04-08 | Necソリューションイノベータ株式会社 | データ共有化装置、プログラム及び方法 |
CN102867001B (zh) * | 2011-07-05 | 2019-12-24 | 腾讯科技(北京)有限公司 | 获取信息的方法和装置 |
EP2772073B1 (en) * | 2011-10-24 | 2019-01-09 | Iot Holdings, Inc. | Methods, systems and apparatuses for application service layer (asl) inter-networking |
KR20130097600A (ko) * | 2012-02-24 | 2013-09-03 | 삼성전자주식회사 | 휴대 단말기에서 이메일을 표시하는 장치 및 방법 |
CN103684812B (zh) * | 2012-08-31 | 2017-07-07 | 国际商业机器公司 | 用于管理远程设备的方法和装置 |
US9729695B2 (en) | 2012-11-20 | 2017-08-08 | Dropbox Inc. | Messaging client application interface |
US9935907B2 (en) | 2012-11-20 | 2018-04-03 | Dropbox, Inc. | System and method for serving a message client |
US9755995B2 (en) | 2012-11-20 | 2017-09-05 | Dropbox, Inc. | System and method for applying gesture input to digital content |
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 |
JP7001105B2 (ja) * | 2018-01-18 | 2022-01-19 | 日本電気株式会社 | メッセージ配信装置、方法およびプログラム |
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 |
EP1683314A1 (en) * | 2003-10-31 | 2006-07-26 | Bluespace Group Ltd | 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 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
- 2008-04-15 EP EP08742930.4A patent/EP2149091A4/en not_active Withdrawn
- 2008-04-15 JP JP2010506209A patent/JP2010525740A/ja not_active Withdrawn
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103201756A (zh) * | 2010-11-01 | 2013-07-10 | 国际商业机器公司 | 利用元数据优化归档电子邮件的效率 |
CN103201756B (zh) * | 2010-11-01 | 2016-08-17 | 国际商业机器公司 | 一种在电子邮件系统中归档电子邮件的方法及系统 |
CN111108485A (zh) * | 2017-08-08 | 2020-05-05 | 大陆汽车有限责任公司 | 操作高速缓存的方法 |
CN111108485B (zh) * | 2017-08-08 | 2023-11-24 | 大陆汽车科技有限公司 | 操作高速缓存的方法 |
Also Published As
Publication number | Publication date |
---|---|
WO2008133820A1 (en) | 2008-11-06 |
EP2149091A1 (en) | 2010-02-03 |
EP2149091A4 (en) | 2013-06-19 |
US20080270548A1 (en) | 2008-10-30 |
JP2010525740A (ja) | 2010-07-22 |
KR20100015641A (ko) | 2010-02-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101711386B (zh) | 在外部和/或本地电子邮件服务器和/或无线设备之间同步电子邮件消息 | |
CN101702943A (zh) | 用于高速缓存无线数据服务中的电子邮件消息的装置和方法 | |
US7668535B2 (en) | Notification infrastructure for sending device-specific wireless notifications | |
US5930471A (en) | Communications system and method of operation for electronic messaging using structured response objects and virtual mailboxes | |
US8166112B2 (en) | Virtual mail storage for mail distributed using corporate distribution lists | |
US20090094332A1 (en) | System and method for enabling offline use of email through a browser interface | |
CN1217514C (zh) | 统一信息中的联机集聚方法和装置 | |
US20050038863A1 (en) | Device message management system | |
WO2004114120A1 (en) | Method and system for data collection for alert delivery | |
US20130304826A1 (en) | Scheduled messages in a scalable messaging system | |
JP2009141969A (ja) | 無線データ処理機器に電子メッセージを配信する装置及び方法 | |
CN102164097A (zh) | 邮件系统中的数据存储服务器的数据存储方法及邮件中继方法 | |
US20060086798A1 (en) | Deferred email message system and service | |
CN103297316A (zh) | 用于处理电子邮件的方法和系统 | |
KR100570504B1 (ko) | 개인 컨텐츠 원격 관리 시스템 및 방법 | |
CN100558188C (zh) | 消息处理设备、系统及方法 | |
EP0454608B1 (en) | Method for automated process delay within a data processing system | |
US20030126220A1 (en) | Quick reply codes for communication of information between electronic devices | |
KR102471562B1 (ko) | Rpa를 활용한 웹메일의 내부망 전달방법 | |
KR100438545B1 (ko) | 무선 단말기에서의 메일 수신 방법 | |
CN100524299C (zh) | 用于配置访问电子邮箱的系统和方法 | |
JPH088967A (ja) | 回覧メール管理方法 | |
CA2549250A1 (en) | System and method for integrating electronic mail services |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Application publication date: 20100505 |