CN1522013A - 用于服务器和客户机间改进的同步的系统和方法 - Google Patents

用于服务器和客户机间改进的同步的系统和方法 Download PDF

Info

Publication number
CN1522013A
CN1522013A CNA2003101239257A CN200310123925A CN1522013A CN 1522013 A CN1522013 A CN 1522013A CN A2003101239257 A CNA2003101239257 A CN A2003101239257A CN 200310123925 A CN200310123925 A CN 200310123925A CN 1522013 A CN1522013 A CN 1522013A
Authority
CN
China
Prior art keywords
mail
thermomechanical components
request
client
information
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
CNA2003101239257A
Other languages
English (en)
Other versions
CN100481821C (zh
Inventor
Jr
J·R·沃伦
K·弗罗里奇
�����������Ǯ��������
R·A·莱马钱德
R·E·格雷
ά
A·哈特维尔
B·鲍尔
B·柯蒂斯
N·A·鲍尼拉
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 Technology Licensing LLC
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 CN1522013A publication Critical patent/CN1522013A/zh
Application granted granted Critical
Publication of CN100481821C publication Critical patent/CN100481821C/zh
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

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

Abstract

用于改进的客户机和服务器通信的系统和方法,更具体地说,是可用于如邮件环境中在客户机和服务器间通信的改进的协议。为改进的通信提供了许多特征。邮件服务器可以提供邮件信息可用的最佳信息正文;如果数据对象内未很好地定义所请求的属性就能传送整个数据对象;可以提供进度数据用于跟踪下载进度;并且为有错误的数据对象发送错误信息。可以在邮件服务器组件处优化邮件变化,即使邮件变化发生在另一邮件服务器组件处。邮件服务器可以维护一变化的表格,变化发生在相关数据存储的文件夹处,并且可以把发生在表格内的变化通知到预订的邮件客户机组件。

Description

用于服务器和客户机间改进的同步的系统和方法
相关申请的参考
本申请要求以下申请的优先权:美国申请号为60/437869、代理人记事号220635、于2003年1月3日提交、题为“改进的客户机服务器通信的系统和方法”(SYSTEM AND METHOD FOR IMPROVED CLIENT SERVER COMMUNICATIONS),该申请通过引用被结合于此。
(1)技术领域
本发明一般涉及计算机网络,尤其涉及用于在客户机和服务器之间通信的方法,譬如邮件(email)应用程序。
(2)背景技术
邮件已经成为通信的重要方法。邮件系统一般包括服务器组件(如,MicrosoftExchange Server,微软Exchange服务器)和客户机组件(如,Microsoft Outlook或Microsoft Outlook Express)。这些组件一般是在计算设备(如,服务器、PC、便携式电脑和PDA)上执行的软件应用程序。
通常,为了便于通信,客户机和服务器,譬如邮件系统的客户机组件和服务器组件,对一通信协议达成一致。协议提出了定义通信期间各方的预期行为的规则,例如,请求和应答的预期顺序。复杂的协议具有处理未曾预期行为的规则。
由于客户机和服务器得以改进,因此改进的版本分布至终端用户。为了利用新的组件特征和网络特征,通常发明了新的通信协议。在服务器组件所安装的基础重大时,客户机组件也许能通过一组协议与服务器组件的所选在前版本进行通信。
有时后面的协议建立于早期协议之上,而非大规模地替代它们。在这种情况下,后面的协议可以由协议元件构成,可以启用或仅有协议元件来模拟早期协议。同样,在客户机组件所安装的基础重大时,服务器组件也能通过一协议与客户机组件的所选在前版本进行通信。
本发明提供了这样的系统和方法。从下面本发明的描述中,本发明发明的这些及其它优点、以及附加的发明特征会变得更为明显。
(3)发明内容
本发明提供了用于改进的客户机和服务器通信的系统和方法。更具体地说,本发明针对可能用于在客户机和服务器之间通信的改进的协议。本发明特别与邮件服务器环境有关,但是这里所述的特征也可以用于其它客户机和服务器网络。
按照本发明一方面,即使在另一邮件服务器组件处发生邮件变化,也可以优化这一邮件服务器组件处的邮件变化。第一邮件服务器组件间断与邮件客户机组件所见的邮件信息变化有关的第一数据。第二邮件服务器组件维持与邮件客户机组件所见的邮件信息变化有关的第二数据。第二邮件服务器组件接着优化间断的第一数据。
按照本发明另一方面,邮件服务器组件可能维持发生在相关数据存储处的变化列表,并且可能把发生在列表内的变化通知给预订的邮件客户机组件。维持一列表,该表关于对包含邮件数据对象的多个文件夹作出的变化。邮件客户机组件预订该表,并且根据表内的变化而向邮件客户机组件发出通知。
按照本发明还有一方面,邮件服务器组件可能取消已对表格造成变化的到邮件客户机组件的通知。邮件服务器组件可能接收一指示,请求根据该变化而不向第一邮件客户机组件发出通知,根据该变化和指示,把与该变化有关的通知发送给表格的所有订户,而非第一邮件客户机组件。
(4)附图说明
图1是网络所连接的计算机示意图。
图2是说明可用于实现本发明实施例的示例性计算机系统的示意图。
图3是描述具有邮件客户机组件和邮件服务器组件两者多个版本的环境示意图。
图4是示出邮件客户机组件和邮件服务器组件间协议协商过程示例的协议图。
图5是示出一示例邮件网络的示意图,其中邮件客户机组件和邮件服务器组件具有固定大小的通信缓冲区。
图6A是示出要求两个请求-应答周期来完成一个快速传送操作的示例协议的协议图。
图6B是示出要求单个请求-应答周期来完成一个快速传送操作的示例协议的协议图。
图7A是描述把邮件信息正文发送到邮件客户机组件的示例过程的流程图。
图7B是描述按照本发明一方面、把邮件信息正文发送到邮件客户机组件的过程流程图。
图8A是说明完整条目传送模式的顺序图。
图8B是说明头部优先传送模式的顺序图。
图8C是说明仅有头部的传送模式的顺序图。
图8D是说明头部优先和仅有头部一特例的传送模式顺序图。
图9是示出邮件客户机组件其随时间变化的本地(home)邮件服务器组件的示意图。
图10是示出用于在邮件客户机组件和邮件服务器组件间同步邮件文件夹的示例协议的协议图。
图11A是描述用于优化部分状态块(stateblob)的示例过程流程图。
图11B是描述按照本发明实施例用于优化部分状态块的过程流程图。
图12是说明邮件文件夹层次的示意图。
图13是示出按照本发明一方面用于邮件信息存储的同步和同步维持的示例协议的协议图。
图14A是示出用于在ROP级传送错误信息的示例协议的协议图。
图14B是示出按照本发明一方面用于以每个信息为基础传送错误信息的示例协议的协议图。
图15A是描述在ROP级生成错误信息的过程流程图。
图15B是描述按照本发明一方面以每个信息为基础生成错误信息的过程流程图。
图16A是示出用于实现快速传送操作的示例协议的协议图。
图16B是示出按照本发明一方面、在实现快速传送操作的同时提供进度信息的示例协议的协议图。
图17A是描述用于流出一组信息的过程流程图。
图17B是描述按照本发明一方面用于连同进度信息一起流出一组信息的过程流程图。
图18是由于对邮件服务器组件处同一数据对象的变化而被通知的多个邮件客户机组件的示意图。
图19A是描述用于通知多个订户的过程流程图。
图19B是描述按照本发明一方面用于通知多个订户的过程流程图。
图20是描述按照本发明一方面、用于使用期望编码页提供邮件信息的过程流程图。
(5)具体实施方式
在继续描述本发明各实施例之前,现在将提供对其中可实践本发明各实施例的计算机和网络环境的描述。尽管不需要,本发明可以用计算机所执行的程序来实现。一般而言,所述程序包括能执行特定任务或实现特定抽象数据类型的例程、对象、组件、数据结构等等。这里所使用的术语“程序”意味着单个程序模块或共同作用的多个程序模块。这里所使用的术语“计算机”包括电子地执行一或多个程序的任何设备,譬如个人电脑(PC)、手提设备、多处理器系统、基于微处理器的可编程用户电子设备、网络PC、微型计算机、平板PC、大型计算机、具有微处理器或微控制器的用户设备、路由器、网关、集线器、等等。本发明也可以用于分布式计算环境中,其中由通过通信网连接的远程处理设备来执行任务。在分布式计算环境中,程序既可位于本地存储设备中,又可位于远程存储设备中。
现在将参考图1描述其中可使用本发明的网络环境的示例。示例网络包括在云所表示的网络11上互相通信的几台计算机10。网络11可以包括许多公知组件,譬如路由器、网关、集线器等,并且允许计算机10通过有线和/或无线媒介进行通信。当在网络11上彼此作用时,一台或多台计算机可能充当客户机、服务器、或与其它计算机的对等方。因而,本发明的各个实施例可以在客户机、服务器、或它们的组合上实践,即使这里所包含的特定示例不是指所有这些类型的计算机。
参考图2,它示出计算机的基本配置示例,该计算机上可实现本发明的全部或一部分。在最基本的配置中,计算机10一般至少包括一个处理单元14和存储器16。处理单元14按照本发明各实施例执行指令来实现任务。在实现这些任务时,处理单元14可以把电信号发送到计算机10的其它部分,并且发送到计算机10外部的设备以引起某些结果。根据计算机10的实际配置和类型,存储器16可以是易失性的(譬如RAM)、非易失性的(譬如ROM或闪存)、或者两者的某些组合。图2中用虚线说明了最基本的配置。另外,计算机可能还有附加的特征/功能。例如,计算机10可能还包括附加的存储器(可移动存储器201和/或不可移动存储器202),包括、但不限于磁盘或光盘或磁带。计算机存储媒介包括以用于存储信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动的媒介,信息包括计算机可执行指令、数据结构、程序模块或其它数据。计算机存储媒介包括、但不限于:RAM、ROM、EEPROM、闪存、CD-ROM、数字化视频光盘(DVD)或其它光学存储器、磁盘卡带、磁带、磁盘存储器、或其它磁性存储设备、或者可用于存储理想信息并可被计算机10存取的任何其它媒介。任何这类计算机存储媒介都可以是计算机10的一部分。
计算机10最好还包括允许设备与其它设备通信的通信连接205。通信连接是通信媒介的示例。通信媒介一般把计算机可读指令、数据结构、程序模块或其它数据包含在已调数据信号中,譬如载波或其它传送机制,并且包括任何信息传送媒介。例如、但不限于,术语“通信媒介”包括像有线网络或直线连接这样的有线媒介,以及像声学、RF、红外这样的无线媒介及其它无线媒介。这里所使用的术语“计算机可读媒介”既包括计算机存储媒介,又包括通信媒介。
计算机10可能还包括诸如键盘、鼠标、输入笔、语音输入设备、触摸输入设备等等这样的设备204。也可以包括输出设备203,譬如显示器20、扬声器、打印机、等等。所有这些设备都是本领域公知的,并且无须在此讨论。
本发明针对用于改进的客户机和服务器通信的系统和方法,尤其针对可用于在客户机和服务器间通信的改进的协议。本发明尤其关于邮件服务器环境,但是这里所描述的特征也可以用于其它客户机和服务器网络。然而为了描述的简便,参考客户机/服务器邮件环境而描述本发明。
本发明可以在客户机/服务器环境中实现,该环境具有两种或多个版本的客户机应用程序或组件,以及/或者两者或多个版本的服务器应用程序或组件。为此,图3说明了一框图,示出网络邮件环境中客户机和服务器组件的多个版本。通常,配置客户机和服务器组件,使它们向后兼容。也就是,客户机组件能够与最新和传统版本的服务器组件通信,反之亦然。建立了一组协议在多个版本间通信。这组协议可以组成几个不同协议,每个都是自包含的。或者,一组协议组件可用,而特定的组件用于配置协议组内的特定协议。
任何情况下,在图3所示的网络邮件环境中,最新版本的邮件客户机组件303能用协议307最佳地与最新版本的邮件服务器组件306通信。然而,最新的邮件服务器组件306也能用协议组内的其它协议(如,图3内的协议308和309)与所选择的在前版本的邮件客户机组件通信,例如,邮件客户机组件302和邮件客户机组件301。邮件客户机组件303也能用诸如协议310和311这样的协议与所选择的在前版本的邮件服务器组件通信,例如,邮件服务器组件305和邮件服务器组件304。
一般而言,如这里所使用的,为了描述本发明的协议,“最新的”邮件(服务器或客户机)组件,即最新版本的邮件(服务器或客户机)组件,是知道新的特征和所述特征的服务器或客户机组件,并且可以使用、实现和/或作用于那些特征。尽管本文档中通篇使用了这些术语来描述知道本发明协议各方面的客户机和服务器组件,然而这些术语也包括仅知道所述特定方面、或不止所述一方面的组件。同样,“在前”邮件组件(即在前版本的邮件组件)是不知道、并且不能作用于本发明协议各方面的组件。
通常使用协议协商过程来建立客户机和服务器(如,最新版本的邮件服务器组件306和最新版本的邮件客户机组件303)之间的协议。尽管这种协议协商是已知的,然而仍为读者提供了对邮件客户机组件401(图4)和邮件服务器组件402间协议协商过程的简要描述。起初在邮件客户机组件401和邮件服务器组件402间的通信会话中,邮件客户机组件401向邮件服务器组件402发送一包括客户机版本信息的信息403,例如,以客户机组件版本标志(stamp)的形式。邮件服务器组件402用包括客户机版本信息的信息404对信息403应答,例如,信息404是以服务器组件版本标志的形式。
为了试图在邮件客户机组件401和邮件服务器组件402间建立通信,可以以多种方式使用客户机和服务器版本信息。例如,可以用版本信息来为继续通信选择适当的协议,或者来确定进一步的通信是否可行。例如,在建立协议时,可以用版本信息来启用和/或禁用特定可用的协议方面或组件。
邮件服务器组件可能并行地接收并处理来自多个邮件客户机组件的请求。在示出单个客户机之处,除非特别指出,这仅仅为了简化附图和所附说明。
本发明的邮件网络使用请求和应答交换在网络内的客户机和服务器组件间传送查询和数据。实践中,协议性能可能受到基本(underlying)通信网络传送机制的影响,该机制用于在邮件网络内实现客户机和服务器之间的通信。例如,在使用远程过程调用(RPC)作为基本通信网络传送机制的邮件网络内,使用较大尺寸(如,32KB)的单个远程过程调用可能远比使用几个较小尺寸(如,2KB)的远程过程调用效率更高。在这类邮件网络内改进性能的一种已知方式是缓冲多个请求和/或应答,用于在单个远程过程调用内传输。
例如,图5示出邮件客户机组件501和邮件服务器组件502之间请求和应答的交换。邮件客户机组件501和邮件服务器组件502各具有固定尺寸的通信缓冲区503、504、505和506。缓冲区503、504、505和506是临时保持数据的存储保留区域。邮件客户机组件501通过在把缓冲区503的内容发送到缓冲区504之前用一个或多个子请求或远程操作(ROP)来填充缓冲区503,从而开始请求-应答周期。
在ROP被缓冲区504接收之后,处理各ROP,以便通过邮件服务器组件502把相应的结果写入缓冲区505。各ROP确实产生某些结果。结果可能包括邮件客户机组件501所请求的数据,例如,一组特定的邮件信息。邮件服务器组件502监控缓冲区505,当它近乎满(如,剩余部分小于8KB)时,邮件服务器组件502就把任何未经处理的ROP写入缓冲区505末端,并且把缓冲区505发送至缓冲区506。然后,当缓冲区503再次变满时,邮件客户机组件501通过把未经处理的ROP写入缓冲区503用于再次提交给邮件服务器组件502,从而开始新的请求-应答周期。
应答的尺寸一般平均比请求的尺寸大。为此,应答缓冲区505和506的尺寸一般被配置成比请求缓冲区503和504的尺寸大。在本发明一实施例中,对于尺寸为32KB的请求缓冲区503和504,应答缓冲区505和506的最佳尺寸被确定为96KB,比率为1比3。在一实施例中,邮件客户机组件能够配置任一缓冲区503、504、505和506的尺寸。
使用缓冲区的某些邮件网络,例如图5所示的邮件网络,可以采用邮件客户机组件和邮件服务器组件之间的快速传送模式。快速传送模式包括客户机的请求,譬如ROP,它们被分成至少两种:导致服务器处快速传送数据源的初始化的请求,以及导致数据从快速传送数据源到客户机的有效传输的请求。例如,快速传送数据源可以是数据库表格。快速传送数据源充当数据的就绪临时存储,它能用较低延时来服务稍后对数据的请求。有时,第二种快速传送模式请求设法通过显式地指定应答尺寸而实现有效的数据传送,例如,可以把应答尺寸设为整个客户机接收缓冲区减去应答开销的尺寸。
图6A示出具有至少两个请求-应答周期的快速传送操作。在第一请求601中,ROP(如,FXPrepare)初始化服务器502上的快速传送数据源。在服务器处,仅处理FXPrepare(即,初始化快速传送数据源),并且在第一应答602内返回其结果。在第二请求603中,ROP(如,FXGetBuffer)请求服务器从快速数据源填充缓冲区505。服务器把快速数据源排空至缓冲区,并且在第二应答604内返回结果。如果邮件服务器组件的输出缓冲区505在排空快速数据源之前填满,则可能需要附加的FXGetBuffer ROP。
图6B示出仅有单个请求-应答周期的快速传送操作。在第一请求605中,邮件服务器组件502处理FXPrepare和FXGetBuffer两者,两个操作的结果都在第一应答606内返回。由于每个缓冲区503、504、505和506的一部分显式地被定义为共享数据表,因此FXPrepare的结果可用于邮件服务器组件502处的FXGetBuffer。希望减少请求-应答周期数,因为这会导致更有效的数据传送。当缓冲区505太满而不能保持FXGetBuffer ROP的结果时,可能出现具有不止单个请求-应答周期的快速传送操作。
可以理解,图6A和6B及本申请中类似附图的ROP都是示意性的,因为它们在实践中可以用一连串ROP来实现,除非特别指出。
一般而言,ROP结果的尺寸不同于ROP请求的尺寸。并不总是能预测ROP结果的尺寸。当数据压缩技术用于减少ROP结果的尺寸时,更难预测ROP结果的尺寸。不能预测ROP结果的尺寸会防止手工调谐协议而使为完成特定客户机操作所需的请求-应答周期数最小,例如,为了确保所有新的信息都在单个请求-应答周期内被下载至客户机。手工调谐协议包括手工配置协议请求、应答和/或ROP的顺序和/或尺寸。
按照本发明一方面,通过指明不需要关键ROP(如,FXGetBuffer)来预测它们结果的尺寸,从而自动地使请求-应答周期数最小。然而,这类ROP被邮件服务器组件502处理,直到达到缓冲区505(与缓冲区506相同)的界限为止。
例如,在包括多个版本邮件服务器组件的环境中,可以为在前版本的服务器组件和最新版本的服务器组件定义分开的ROP。不需要最新版本来预测它们结果的尺寸。这些ROP的特性在下表中列出:
可由协议用来与在前版本服务器通信的ROP 可由协议用来与最新版本服务器通信的ROP
 ROP ID FXGetBuffer FXGetBuffer
多种模式中所用的参数 所需尺寸:服务器必需保留在其输出缓冲区内的尺寸 所需尺寸:被设为在前版本预期的最大值之上,例如,被设为大于32KB的值。这通知服务器查找新的尺寸界限参数
新参数 n/a 尺寸界限:通知服务器把界限提高到服务器可填充其输出缓冲区的界限。
在前版本服务器组件的ROP在结构上与现有技术ROP相似。也就是,ROP预测并规定输出缓冲区(如,发送缓冲区505)内必需保留用于保持应答的尺寸。相反,最新版本服务器的输出缓冲区所规定的尺寸不被预测,而是被设为在前版本服务器组件所预期的最大值之上,例如,被设为大于32KB的值。输出缓冲区的尺寸被定义为高于服务器组件所预期的值会使服务器组件查找新的尺寸界限参数,该参数可以是如服务器组件输出缓冲区的填充。这些特性自动地使请求-应答周期数最小,并且仅仅略微增加了处理ROP的邮件服务器组件的复杂度。
注意到上表及本申请中类似表格中示出的参数顺序不必要与参数在网络上发送的顺序或者被邮件客户机组件或邮件服务器组件存储在内存中的顺序相关,除非特别指出。此外,为了简洁可以省略未变化的参数。
在邮件网络中,协议的一般目的之一是实现数据对象的传输,例如,邮件客户机组件和邮件服务器组件之间的邮件信息。这类数据对象的进一步示例包括可能包含邮件信息和其它数据对象的邮件文件夹,以及文件夹相关信息(FAI)数据对象,例如,后者可能包含用于处理邮件信息的规则,或者定义将怎样显示文件夹所包含的数据对象。数据对象对于邮件客户机组件可能是不透明的;即,邮件客户机组件可能无法解释数据对象的内容。或者,数据对象可能由命名的(named)属性组成,例如,邮件信息可能包括被命名为“到(to)”、“自(from)”、“主题(subject)”、“重要性(importance)”、“正文(body)1”、“正文2”、“正文3”、“附件(attachment)1”、“附件2”等等的属性。
邮件网络的一个好处在于能潜在地改进协议性能,这是因为协议能仅传送部分数据对象,其中邮件网络中,数据对象可能包括数据对象不透明处的邮件网络上的命名属性。具有命名属性允许发送数据对象的特定属性,而不发送整个数据对象。
例如,邮件信息可能包括一组头部属性和一组正文属性。邮件客户机组件的需求可以是协议首先传送头部属性,然而传送正文属性或者根本不传送。该特性允许用户在完全下载所有信息前查看几个信息的头部信息。通过使用该特性,客户机组件可以获得对带宽利用率更精细的控制,这会正面影响协议性能。此外,客户机可以用该特性来导致较低的带宽利用率(例如,可能仅为所选头部下载正文),这尤其在低带宽环境中是理想的。
如果服务器组件被配置成在两个分开的请求-应答周期(即,头部和正文各用一个周期)中发送正文和头部属性,则不必要增加协议的性能。例如,如果邮件客户机组件的需求是同时要求头部和正文属性,则在单个请求-应答周期可检取头部和正文的情况下,协议性能可能下降。因此,简单地使数据对象包括命名属性不足以自动地导致改进的协议性能。达到改进的协议性能取决于组成数据对象的属性的选择,以及它们怎样被协议所使用。该选择可能取决于许多因素,包括对最新和在前版本邮件客户机组件的需求、以及对最新和在前版本邮件服务器组件的需求。邮件客户机组件需求的示例包括满足用于显示不同信息的不同紧急级别、以及符合邮件客户机组件用户所设定的首选项。邮件服务器组件需求的示例包括数据的有效存储和检取、以及协议请求的有效处理。
常规的现有技术邮件环境使用可由命名属性组成的数据对象,例如,可能包括命名属性的头部组和正文组的邮件信息,从而可以分开地请求并/或处理这两个组。另一现有技术示例是一邮件信息,其中正文命名属性组包括多个版本的邮件信息正文,例如,以像纯文本、超文本链接标识语言(HTML)、多信息文本格式(RTF)等多种邮件信息格式。在这种情况下,现有技术邮件服务器组件可能以多种方式对邮件信息正文的协议请求进行应答。最低复杂度的应答可能是发送所有版本的邮件信息正文,但该应答可能导致增加的带宽使用率。
图7A描述了在前(现有技术)版本邮件服务器组件用于在该情况下应答的部分过程。步骤701中,邮件服务器组件检查每个邮件信息正文的格式。如果这些格式之一是预定的标准格式(如,RTF),则过程移至步骤703,并且把标准格式邮件信息正文发送到正在请求的邮件客户机组件。如果没有任何格式是预定的标准格式,则步骤701分支到步骤702,其中邮件信息正文版本之一被转化成标准格式。当仅有单个邮件消息正文版本、但该邮件信息正文不是协议所要求的标准格式时,也可以使用图7A所述的子过程。
图7B描述了按照本发明由最新版本邮件服务器组件所使用的部分过程。步骤704中,检查导致该子过程被邮件服务器组件所使用的协议请求是否有BEST_BODY标志。该例中的标志及这里所用的其它标志用于邮件服务器组件,使邮件客户机组件是最新版本,并且期望实现与标志相关的功能。也可以使用其它指示。例如,如果检测到最新邮件客户机组件,则可以缺省地实现该功能。
任何情况下,如果未找到BEST_BODY标志,则步骤704分支到步骤701,并且参照图7A所述继续。
如果找到标志,过程移动到步骤705,其中选择最佳邮件信息正文,用于发送至正在请求的邮件客户机组件。如果仅有单个邮件信息正文与所请求的邮件信息相关,则是最佳的。如果有几个邮件信息正文可用,例如,有不同格式,则邮件服务器组件按照如邮件信息正文格式(如,RTF、HTML、纯文本)的预定排列而从中选择最佳的。然后,过程进行到步骤703,其中把所选的邮件信息正文发送到邮件客户机组件。在该实施例中,邮件客户机组件也许能够显示多种邮件信息正文格式,从而使邮件服务器组件无须把邮件信息正文转化成标准格式。此外,邮件客户机组件可以根据需要把最佳的邮件信息正文转化成不同的格式。
由于减轻了邮件服务器组件转化信息正文的任务,因此本发明提供了改进的性能。此外,最新版本邮件服务器组件可能对来自在前版本邮件客户机组件的协议请求进行应答,而仅适度地增加复杂度。
ROP可能用于实现邮件服务器组件和邮件客户机组件间邮件文件夹的复制。例如,SynchFolder Rop可能作出同步文件夹的请求。在邮件客户机组件能够显示非标准邮件信息正文格式之处,它可以在SynchFolder ROP内设置BEST_BODY标志来指名邮件服务器组件可以从可用的邮件信息正文中选择最佳格式,而不是要求服务器返回标准格式的邮件信息正文。邮件服务器组件可以适当地处理具有或者没有BEST_BODY标志的ROP,而仅适度地增加复杂度。用来与在前版本和最新版本服务器进行通信的ROP可能包括,例如,下表中提出的特性:
由协议用来与在前版本服务器通信的ROP 由协议用来与最新版本服务器进行通信的ROP
ROP ID SynchFolder SynchFolder
新参数 n/a BEST BODY标志:如果被设定,邮件服务器组件就选择最佳邮件信息正文发送到邮件客户机组件。邮件信息正文到预定标准格式的转化是不必要的。
图8A-8C示出用于在邮件服务器组件和邮件客户机组件间传递一组邮件信息的几种不同的现有模式。对于每个模式而言,每个邮件信息都有包括头部组和正文组在内的命名属性,且几个邮件信息被包含在一文件夹中。图8A说明了完整条目传送模式。该说明示出被传送的第一邮件信息头部801,然后是第二邮件信息头部803前的第一邮件信息正文802,然后是第二邮件信息正文804,依此类推,直到已经传送了该组邮件信息为止。图8B说明了一头部优先传送模式。该模式中,先传送第一邮件信息头部805,然后是第二邮件信息头部806,依此类推,直到传送了所有邮件信息头部为止,只有这时才传送第一邮件信息正文807,然后是第二邮件信息正文808,依此类推,直到传送了该组邮件信息为止。图8C说明了仅有头部的传送模式。如名字里所指明的,响应对传送一组邮件信息的请求,仅传送邮件信息头部809。邮件信息正文810仅响应附加的显式请求而被传送。在任一这些模式中,传送顺序可能被较高优先级的邮件客户机组件请求所临时打断,例如,为了特定的邮件信息正文。
邮件文件夹是请求传送一组邮件信息的目标的示例。然而,邮件文件夹可能包含除邮件信息之外的数据对象。如上所述,通常参照邮件信息头部和邮件信息正文而定义传送模式,譬如头部优先和仅有头部的传送模式。在这些模式中,如果没有为数据对象很好地定义命名属性的头部组和/或命名属性的正文组,则传输这些数据对象的企图可能导致协议故障。本发明一方面通过总之总体而非部分地传输未很好定义命名属性的头部和/或正文组的数据对象而避免了该情况。该实施例可以用图8D的示例来说明。该例中,邮件服务器组件和邮件客户机组件间的传送可能发生在仅有头部的模式。因而,传送第一邮件信息头部811,然后数据对象812成为下一候选传送物。没有为数据对象812很好地定义命名属性的头部组,譬如为FAI,因此传送整个数据对象。下一候选传送物具有很好定义的命名属性的头部组(即,候选数据对象确实处理被邮件客户机组件显式定义为属于命名属性头部组的所有命名属性),因此仅传送邮件信息头部813。
实现本发明这方面的一种示例方式是通过使用一标志,譬如IGNORE_MDE_ON_FAI,它可以包括在同步ROP内,譬如上述SynchFolder ROP。邮件服务器组件可以适当地处理有或没有IGNORE_MODE_ON_FAI标志的ROP,而仅适度地增加复杂度。ROP可能包括下表内提出的特性,用于实现邮件服务器组件和邮件客户机组件间邮件文件夹的复制:
由协议用来与在前版本服务器通信的ROP 由协议用来与最新版本服务器进行通信的ROP
ROP ID SynchFolder SynchFolder
新参数 n/a IGNORE MODE ON FAI标志:如果被设定,则对于不具有很好定义的命名属性的头部组和/或正文组的数据对象而言,譬如FAI,邮件服务器组件可能用整个数据对象对传送请求应答,而不考虑主要传送模式。
邮件信息一般被定址到一个或多个邮件网络用户。如果邮件信息被邮件服务器组件接收到用于存储,则它被视作已传递。邮件网络可能有几个邮件服务器组件。一般而言,邮件网络协议具有限制邮件服务器组件数目使邮件网络用户必需检查新信息的某些策略。通常示例是本地服务器策略,它使定址到特定邮件网络用户的邮件信息仅被一个特定邮件服务器组件所接受,该组件称为用户的本地服务器。这种情况下,邮件客户机组件可被配置成当周期性检查新的邮件信息或者为注册新到邮件通知时,仅考虑本地服务器。
图9示出即使简单的本地服务器策略示例也可能有其复杂性。在图9所述的示例中,首先把特定的邮件服务器组件901指定为特定邮件网络用户的本地服务器。随着时间的推移,为用户指定的本地服务器变成不同的邮件服务器组件903和905,一般为了管理原因。例如,邮件服务器组件901、903和905可以是物理上不同的、或逻辑上不同的、或者为不同版本。邮件客户机组件902在时刻T0到时刻T1可能仅与邮件服务器组件901通信,接着邮件客户机组件904在时刻T2前可能仅与邮件服务器组件903通信,然后邮件客户机组件906可能仅与邮件服务器组件905通信。邮件客户机组件902、904和906可以相同或不同。邮件服务器组件901和903在时刻T2后可能存在或可能不存在。这些复杂性尤其与下面讨论的邮件信息存储复制有关。
邮件信息可以被显式邮件信息存储内的邮件服务器组件所存储,后者可以用如公知的数据库技术来实现。邮件服务器组件可能有一个或多个这样的信息存储。邮件网络用户可能有一本地信息存储。改变本地信息存储会有与改变本地服务器一样的效应。
某些邮件网络协议能够把邮件信息存储的一部分复制到邮件客户机组件本地的存储设备中。把部分远程邮件信息存储复制到本地邮件存储设备可以通过在显式邮件网络用户请求观察新邮件前把所有新邮件信息复制到本地邮件存储设备,从而改进协议性能和/或所观察的协议性能。这种复制还能提供附加的邮件客户机组件功能,例如,使邮件网络用户能在网络连接中断期间查阅邮件信息。
在邮件网络环境中,简单的复制可能迅速变得效率低下。例如,如果邮件服务器组件具有与特定邮件网络用户相关的一邮件信息,且该信息已经在网络用户的客户机组件处被复制,而且新的邮件信息抵达该邮件网络用户,那么仍旧要求响应简单复制请求而发送两个邮件信息。如果另一新邮件信息在复制了两个邮件信息后抵达,那么仍旧要求响应简单复制请求发送三个邮件信息,依此类推。为了减轻这个问题,某些邮件网络协议已经提供了对邮件信息存储的增量复制。在增量复制中,响应复制请求仅发出在前成功增量复制后发生的邮件信息存储的变化,例如,当自上一次成功增量复制以来的仅有变化是新邮件信息的抵达时,响应增量复制请求仅需发出该新邮件信息。
图10示出提供了增量复制的协议的更详细的示例。邮件信息存储可以再被分成邮件文件夹。每个邮件文件夹都可以独立于其它而被复制,提供对复制进程的更精确的控制。该例中,由于增量复制进程包括把变化从邮件客户机组件501传播至邮件服务器组件502,以及从邮件服务器组件502传播至邮件客户机组件501,因此增量复制进程被称为同步。同步请求1001之后,邮件服务器组件502处理SynchFolder ROP。所述ROP包括folderID参数(未示出)和stateblob0参数。FolderID参数标识了作为同步请求1001的目标的邮件文件夹。Stateblob0参数包含允许邮件服务器组件502确定自邮件文件夹上一次同步以来对其发生的变化的信息。如果请求1001用邮件客户机组件501代表目标文件夹的第一同步请求,则邮件服务器组件502确定与空文件夹相比,邮件信息存储内的目标邮件文件夹是否已变化。在对请求1001的应答1002中,邮件服务器组件502发出对邮件客户机组件501的任何变化,包括已经被添加到目标文件夹的任何邮件信息和/或其它数据对象、以及已经从目标文件夹删除的任何邮件信息和/或其它数据对象列表。邮件服务器组件502还创建了新的stateblob1,表示同步后立即在邮件客户机组件501上的目标文件夹的状态,并且还在应答1002内发送该stateblob1。当邮件客户机组件501对与请求1001内相同文件夹的下一同步请求1003时,请求1003会包括与应答1002所返回的相同stateblob1参数。像以前一样,邮件服务器组件502会用包含在stateblob1内的信息来确定目标文件夹内是否发生任何变化,并且在应答1004内把那些变化与新创建的stateblob2一起发回邮件客户机组件501。
如果状态块数据对象的尺寸很大,它就会有害地影响协议性能,这是因为它根据每个邮件文件夹同步请求被发送到邮件服务器组件或从中被发回。在提供邮件文件夹同步的某些邮件网络协议中,状态块很大部分由一组信息changeID(变化标识)数据对象组成,它们表示邮件客户机组件所见的对邮件信息的变化。邮件信息变化可以在改变后的邮件信息被传送至邮件客户机和/或服务器组件时而被该组件所见。
信息changeID数据对象的一个目标是在整个邮件网络环境中唯一地标识对邮件信息的变化。在采用本地服务器策略的邮件网络中,用户的本地服务器可能负责把信息changeID数据对象与在前未见到的邮件信息变化相关联。例如,本地服务器可以采用由serverID(服务器标识)数据对象和序列号组成的信息changeID数据对象。ServerID数据对象可以用像全局唯一标识符这样的公知技术在整个邮件网络环境中唯一地标识邮件服务器组件。在这种标识符自身尺寸很大时,serverID数据对象反而可以是由邮件服务器组件所维护的标识符查找表内的索引。序列号可以由邮件服务器组件本地的计数器来提供,例如,宽度为六字节的计数器,计数器在邮件服务器组件接受在前未见到的邮件信息用于存储时递增。
为了讨论目的,信息changeID数据对象可以用“S1:1”表示,其中“S1”表示第一邮件服务器组件的serverID数据对象,而“1”表示序列号。一组信息changeID数据对象可以用“S1:1,S1:2,S1:3”表示,其中“S1:1”、“S1:2”和“S1:3”是由具有serverID S1的邮件服务器组件所采用的连续信息changeID数据对象。
当状态块很大部分由一组信息changeID数据对象组成时,其中这组数据对象表示邮件客户机组件所见的邮件信息变化(“信息变化已见(Message ChangesSeen)”组),那么为了降低其尺寸而开发了某些技术来对该组编码,例如,组“S1:1,S1:2,S1:3,S1:4”可以被编码为“S1:1-4”。此外,邮件服务器组件可以确保它使用的序列号总是在递增。在该情况下,像“S1:1,S1:3,S1:5,S1:7”这样不连续的信息变化已见组可以被编码为“S1:1-7”,也就是,被编码为包括最小和最大序列号的范围,而不丧失功能。
在图9所示的场景中,信息变化已见组可以包括由除当前本地服务器(如,S3)之外的邮件服务器组件(如,S1,S2)所创建的信息changeID数据对象。由当前本地服务器所创建的信息changeID数据对象可以被称为本地(native)信息changeID,由其它邮件服务器组件所创建的信息changeID数据对象可以被称为外来信息changeID。与在前版本邮件服务器组件通信的邮件网络协议没有按每个邮件服务器组件逐一地把不连续的外来信息changeID序列优化成包括最小和最大序列号的范围。下表说明了把这种优化包括在本发明实施例中的好处:
由在前版本服务器所使用的优化(当前本地服务器S3) 由最新版本服务器所使用的优化(当前本地服务器S3)
优化前的信息变化已见组  S1:1,S1:3,S1:5,S1:7S2:1,S2:3,S2:5,S2:7S3:1,S3:3,S3:5,S3:7
由在前版本服务器所使用的优化(当前本地服务器S3) 由最新版本服务器所使用的优化(当前本地服务器S3)
优化后的信息变化已见组  S1:1,S1:3,S1:5,S1:7S2:1,S2:3,S2:5,S2:7S3:1-7  S1:1-7S2:1-7S3:1-7
本发明一实施例使用包括下表所列特性的ROP来实现邮件服务器组件和邮件客户机组件间邮件文件夹的同步。邮件服务器组件可以实现改进的状态块编码技术,而仅适度地增加复杂度。
与在前版本服务器通信时由协议所使用的ROP结果 与最新版本服务器通信时由协议所使用的ROP结果
ROP ID SynchFolder SynchFolder
新模式内使用的未变化的参数 状态块:不包括外来信息changeID数据对象的不连续组的优化 状态块:包括外来信息changeID数据对象的不连续组的改进了的优化
图11A和图11B描述了分别由在前版本服务器和最新版本服务器用来应答SynchFolder ROP的子过程之间的差异。图11A示出步骤1101、1102和1103。步骤1101中,构建初始信息变化已见组。步骤1102中,优化信息是本地信息changeID数据对象的信息变化已见组的成员。步骤1103中,经优化的信息变化已见组被添加到状态块数据对象,后者与应答一起发送到请求同步的邮件客户机组件。图11B包括附加步骤1104,其中示出的是外来信息changeID数据对象的信息变化已见组的成员,它们在信息变化已见组在步骤1103中被添加到状态块数据对象之前也被优化,现在具有改进的优化。
尽管把邮件信息存储再分成邮件文件夹确实提供了对同步进程更精确的控制,然而它不能自动改进协议性能,并且可能导致协议性能的降级。例如,某些协议要求分开地同步每个信息存储文件夹。每个同步操作一般有某些开销,该开销可能是巨大的。使用状态块数据对象的同步操作是具有显著开销的操作示例。在同步整个信息存储的情况下,相比要求较少同步操作的协议而言,要求分开同步每个信息存储文件夹的协议可能是不利的。
同步整个信息存储并且维持同步是邮件客户机组件的期望目标。常规的现有技术邮件客户机组件即使在它导致对协议性能的显著负面影响时,也设法实现该目标。本发明一方面是它能使有害协议影响最小的同时,通过使用深层次表来实现该目标。常规的现有技术邮件服务器组件尚不能提供深层次表。
当邮件信息存储再被分成邮件文件夹时,那些邮件文件夹可以被组织成层次。图12示出邮件文件夹层次的示例。图12中,文件夹1204是文件夹1203的子文件夹。文件夹1203又是文件夹1202的子文件夹。文件夹1201是根文件夹。根文件夹不是任何其它文件夹的子文件夹。所有其它文件夹都是以文件夹1201为根的文件夹层次的成员。一般而言,文件夹层次中的每个文件夹都不直接引用各个其它文件夹。文件夹可能仅能直接引用其子文件夹。文件夹还能直接引用以它为子文件夹的任何文件夹。在许多情况下,每个文件夹能直接引用的可能仅是层次的根文件夹。
深层次表可能包含关于文件夹层次中每个文件夹的信息。每个文件夹在深层次表中可能有一行。深层次表中的信息使它能用来确定邮件文件夹的内容在特定时间段内是否变化。可以用时间段开始处文件夹行的拷贝与时间段结束处文件夹行的拷贝的简单比较,来确定特定时间段内对邮件文件夹的变化。一实施例中,深层次表的每行都包括下列属性:
属性名 属性类型 注解
Folder ID  FID FID类型包括一全局唯一标识符(GUID)和一六字节序列号。该值可以用于在邮件网络环境中唯一地标识邮件文件夹。
PR_LOCAL_COMMITT_IME_MAX  Timestamp(时标) 该时标在修改文件夹内容之时被更新
PR_DELETED_COUNT_TOTAL  QWORD 该值是从文件夹被删除的条目总数的计数
深层次表内邮件文件夹行的属性可以在对文件夹内容作出变化时被更新。为了有效地实现深层次表更新,申请人发现,快速并直接引用深层次表是有帮助的。至少,申请人发现,在试图访问深层次表时,应该有小并且可预测的间接层数。例如,把深层次表定位在文件夹层次中的任意层次不会提供可预测的间接层数。为此,在本发明一实施例中,深层次表可能与邮件网络用户的邮件信息存储文件夹层次的根文件夹相关联。
邮件客户机组件和邮件服务器组件间的通信可被分成多个通信会话。会话间可能发生邮件信息存储同步的丢失,例如,在网络连接中断期间。为了在通信会话开始处重建邮件信息存储同步,用于与在前版本邮件服务器组件通信的某些协议为文件夹层次中的每个文件夹采用了SynchFolder ROP。一般而言,某些文件夹的内容不会在会话间发生变化。用未变化的文件夹作为其目标的SynchFolder ROP导致“零同步”(null synch)。尽管“零同步”不导致任何文件夹变化被传送到邮件客户机组件,然而它仍有与其相关的开销,例如,状态块数据对象,它可能是显著的。
图13说明了通过使用深层次表来避免这种“零同步”结果的本发明一实施例。在第一请求1301中,邮件客户机组件501把请求深层次表的ROP(如,GetHierarchyTable)发送至邮件服务器组件502。在第一应答1302中,向邮件客户机组件501提供深层次表的拷贝。一般而言,邮件客户机组件501会有深层次表的在前拷贝。邮件客户机组件501可以通过使用两个拷贝的逐行比较,从而迅速确定邮件服务器组件502上用户的邮件信息存储内的哪些文件夹已变化。接着,采用ROP(如,SynchFolder)来仅仅同步那些发生变化的文件夹。根据需要可以重复请求1303和应答1304来同步经变化的文件夹。成功同步之后,可以更新深层次表的邮件客户机组件的拷贝,使之与应答1302中发送的最近的拷贝相匹配。如果邮件客户机组件501没有深层次表的在前拷贝,那么可能同步具有最新拷贝内一行的所有文件夹。
一旦已经建立了用户邮件信息存储的同步,则可以通过周期性地重复上述会话起始步骤(即,轮询邮件服务器组件)而维持同步,但该方案是不利的。例如,轮询周期可能大大短于用户邮件信息存储发生变化之间的时间段。这样,相对而言许多深层次表比较会表明没有文件夹发生变化。这种比较实际上是浪费的,因此能避免它们的协议会更有效。
某些邮件网络包括使得邮件客户机组件预订在特定邮件文件夹的内容发生变化时被邮件服务器组件通知到的设备。某些在前版本邮件客户机组件通过为与用户文件夹层次内每个相关的变化通知创建分开的预订,而确实使用了这种设备来维持用户邮件信息存储的同步。在本发明一实施例中,邮件客户机组件可以为与深层次表相关的变化通知仅创建单个预订。单个预订更有效,因为需要较少的ROP来建立它,并且消耗较少的服务器端资源。
进一步参照图13,按照本发明一方面,当最新版本的邮件客户机组件501在与邮件服务器组件502的通信会话开始处在第一请求1301内采用GetHierarchyTable ROP时,邮件客户机组件501自动预订与深层次表相关的变化通知,它在应答1302中返回。当邮件客户机组件处的用户邮件信息存储内的邮件文件夹发生变化时,例如,向文件夹添加一邮件信息,则如前所述地更新深层次表。对深层次表的变化触发一通知报警1305到邮件客户机组件501。虽然通知报警响应了请求1301所做的预订,然而它不是显式请求-应答周期的一部分。因此,本发明所提供的通知系统的使用大大减少了邮件网络的开销。
单个预订可能导致许多通知。一实施例中,使用无连接(connectionless)网络传送机制来传递报警,例如,使用用户数据报协议/因特网协议(UDP/IP),但是也可以使用任何适当的网络传送机制。响应报警,邮件客户机组件501把包含ROP(如,GetNotification)的请求1306发送到邮件服务器组件502。在应答1307中,把深层次表的任何变化了的行(即,与触发通知的已变化文件夹相对应的行)发送到邮件客户机组件501。然后,邮件客户机组件501采用ROP(如,SynchFolder)来仅仅同步已变化的文件夹。
可以为与同一数据对象(如,同一邮件文件夹)相关的变化通知预订多个邮件客户机组件,例如,以提供合作功能。如图18所示,为了与邮件服务器组件1804上的同一数据对象(未示出)相关的变化通知预订了邮件客户机组件1801、1802和1803。邮件客户机组件1803把ROP 1805发送到邮件服务器组件1804,导致数据对象变化。变化结果是,邮件服务器组件1804发出变化通知1806、1807和1808到邮件客户机组件1801、1802和1803。变化通知可能携带不能标识已变化的数据对象的极少信息,使得邮件客户机组件也许不能确定它是变化的缘由。如果数据对象是邮件文件夹,则变化通知1806、1807和1808可能导致各邮件客户机组件1801、1802和1803为已变化的文件夹开始同步。由于该例中邮件客户机组件1803对变化负责,因此结果会是“零同步”。
为了前面所讨论的原因,可能希望消除导致“零同步”的同步。然而,所述通知行为不总是不理想的,某些邮件客户机组件可能依赖于它。本发明一方面是使邮件客户机组件能配置最新版本邮件服务器组件的通知行为,以便改进协议性能,与此同时向在前版本邮件客户机组件提供未变化的通知行为。
图19A描述了可能由在前版本邮件服务器组件所提供的通知行为。图19B描述了按照本发明一方面的可配置通知行为。根据需要,最新邮件客户机组件可能表示能进行图19B的通知行为的邮件服务器组件,例如,通过与请求一起提供一标志,在图19B所示的示例中是IGNORE_OWN标志。
步骤1901中,选择要被通知的订户组中的下一候选者。步骤1904中,检查预订是否有IGNORE_OWN标志。如果标志不存在,则步骤1904分支到步骤1902,其中把通知发送到候选订户。如果找到标志,则步骤1904分支到步骤1905,其中再次检查预订以确定订户是否曾触发该通知。该确定可以通过检查用于放置预订的会话的通信会话标识符(“会话ID”)来作出。例如,会话ID可以包括一全局唯一标识符和一六字节序列号。也为与其缘由相关的会话ID检查是否有通知。如果两者匹配,则消除通知。结果是引起通知的邮件客户机组件也不会接收该通知。然后,子过程进行到步骤1903,如下所述。
如果订户未触发通知,则与预订相关的会话ID不会和与通知缘由相关的会话ID相同,步骤1905分支到步骤1902,其中发送通知。然后,过程进行到步骤1903,其中确定是否要通知更多订户。如果是,则子过程返回到步骤1901,否则该子过程结束。
如上所述,使用邮件信息的高速缓存的邮件客户机组件可能通过如ROP来请求本地客户机数据存储和邮件服务器处可用的数据存储之间、信息或其它数据对象的同步。邮件客户机组件可能类似地请求从服务器存储把信息拷贝到客户机存储。在任一情况下,可以用快速传送模式作出请求。
一般而言,当为同步或拷贝而请求信息或像文件这样的其它数据时,请求(如,ROP)包括对希望同步的所有信息的指示。该列表可以由邮件服务器组件自动构建,例如,通过使用上述状态块特征。对于在前版本(现有技术)的邮件服务器组件而言,ROP请求中的一个信息或数据对象内的错误会导致请求内所有条目的故障。该过程在图14A示出,其中在步骤1401发送包含ROP的请求(如,FXPrepare),而为拷贝或同步指定messageID(信息标识)组。在邮件服务器组件502处建立快速传送机制,并且在步骤1402把快速传送ID发送至邮件客户机组件501。然后,邮件客户机组件501通过包含如FXGetBuffer ROP的请求来请求数据对象的拷贝或同步(步骤1403)。当邮件服务器组件502试图打开所请求的信息时,一个或多个信息或其它数据对象发生错误。错误的示例包括:被破坏的信息或数据对象、服务器故障、邮件服务器组件502存储溢出、或者为数据对象检测到的病毒。
在错误之后,在步骤1404中,邮件服务器组件502在到邮件客户机组件501的数据流中发送一致命的ROP错误。这样,同步失败,messageID组内的信息未被同步或拷贝,状态块或类似更新信息未被邮件客户机组件501所接收。然后,邮件客户机组件501需要在另一时刻请求数据对象的同步或拷贝。可能的是,如果错误并不固定在邮件服务器组件502处,错误信息可能继续被发送,且messageID组内的信息永远不被同步或拷贝。
按照本发明一方面,取代致命ROP错误的是,最新邮件服务器组件可能发送与特定数据对象(如,邮件信息)有关的错误信息,使仅仅该数据对象的同步失败。该特性允许即使应答内包括带有错误的信息或其它数据对象,也能发送并同步或者拷贝ROP内的信息或其它数据对象、或者其它请求。
作为怎样处理对象特定错误的一例,最新邮件服务器组件可能在具有对象错误的数据对象的数据流中发送错误信息。该例中,为了引用的方便,错误被称为FXErrorInfo。如下进一步所述,根据需要,FXErrorInfo可能包括如下信息:具有错误的数据对象的信息ID、以及关于信息为何失败的附加信息。
图14B示出一同步,其中错误发生在信息M3内。该错误导致FXGetBuffer应答1405包括信息M1和信息M2、其后是FXErrorInfo、然后是M4。FXErrorInfo信息允许邮件客户机组件501得知哪个信息带有错误,并且同步应答内所有其它的信息。如果错误信息FXErrorInfo包括与错误原因有关的信息,则可由客户机组件对该信息相应地起作用,例如,通过向用户显示一错误信息。
下表示出FXErrorInfo可能采用的格式的一例:
FXErrorInfo
属性名 属性类型 注解
版本 WORD 该结构的版本
错误代码 DWORD
信息ID MID MID类型包括一全局唯一标识符(GUID)和一六字节序列号。这是引起错误的信息的信息ID。
... ... 这里可以添加零或更多属性。
辅助字段大小 ULONG 遵照的数组大小
辅助字段 BYTE array(字节数组) 用于传递错误细节的无结构数组
如上所示,示例格式包括版本属性、错误代码和信息ID。此外,根据需要,可以添加一个或多个属性。而且,如上所述,可以为传送错误细节而定义一辅助字段。这样,可以为了规定错误细节的字段大小而定义一属性(如,数组),并且可以提供一字段,它可以是如用于传送错误细节的无结构数组。如上所述,可以根据需要由邮件客户机组件501来处理错误细节。
FXErrorInfo能够完成第一应答的同步,例如,导致向邮件客户机组件501提供状态块或其它信息。由于现在通过信息M4同步邮件客户机组件,因此下一对同步的请求1406可能导致应答1407在M4之后具有信息(如,M5和M6)。
为了指示邮件客户机组件501是最新版本,并且因此能处理FXErroInfo信息,可以定义一标志,例如,FXRecoverMode,它可以与请求同步或拷贝的ROP一起被发送。可以为邮件客户机组件501使用其它指示来告知邮件服务器组件502它能处理该FXErroInfo信息。
当邮件服务器组件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]
          [如表中的内容所描述]
     ptagMessageStart
          …
     ptagMessageEnd
ptagMessageListEnd
图15A示出邮件服务器组件502用来把信息传送到在前版本邮件客户机组件501的步骤。从步骤1501开始,例如,通过把信息组放在快速传送数据存储中而准备信息组。步骤1502中,信息开始流出,例如在被放置在邮件服务器组件502的发送缓冲区内后立即开始。如果当流出信息时出错,则步骤1504中,致命的ROP错误流出到邮件客户机组件501。于是子过程结束。如果,当流出信息时未出错,则在步骤1503中,确定是否有更多信息在组中。如果是,则过程循环回到步骤1502,其中流出下一信息。如果否,则子过程结束。
图15B示出最新版本的邮件服务器组件502处理信息组的过程。所采取的步骤根据邮件客户机组件是最新版本或是在前版本而不同。步骤1501-1504是在前版本邮件客户机组件所采用的步骤,它们与前面段落中具有相同标号的步骤相同。
如果步骤1502中在流出信息时出错,则在步骤1505确定请求是否包括一标志,譬如FXRecoverMode。如果请求包含该标志,则邮件客户机组件501是最新版本,且步骤1505分支到步骤1506,其中FXErrorInfo流出到邮件客户机组件501。然后,进程继续到步骤1503。如果请求不包括该标志,则步骤1505分支到步骤1504,其中流出致命的ROP错误。于是子过程结束。
如图所示,请求内存在的标志通过允许流出FXErroInfo而非失败并发送指名ROP错误,从而允许流出进程继续。标志被最新版本的邮件客户机组件501发出。在前版本的邮件客户机组件不包括该标志,从而如上所述,错误导致流出致命的ROP错误。
根据需要,在另一实施例中,可以为了信息或其它数据对象的特定属性、而非为了整个信息发出错误信息(如,FXErrorInfo)。例如,可以为信息正文发出FXErrorInfo,或者为信息的附件发出FXErrorInfo。然后,邮件客户机组件501可以同步或拷贝被无错地成功发出的属性,只有有错的属性才不被同步或拷贝。
有时,信息或其它数据对象可能有足够大小从而能跨越多个FXGetBuffer应答。为了处理这类信息,邮件客户机组件501可能包括重新运行逻辑,使得它能处理任何部分接收到的信息,然后在接收错误信息后继续适当地接收进一步信息。
时常可能希望向邮件客户机组件提供与数据对象(如,邮件信息)的拷贝或同步进度有关的反馈。按照本发明一方面,最新版本的邮件客户机组件501可能指示它能处理进度模式,例如,通过在请求数据对象的同步或拷贝时,把像PROGRESS_MODE这样的标志发送到邮件服务器组件502。作为应答,最新版本的邮件服务器组件502可能与信息一起发出多种信息,譬如所有信息的总大小、信息总数、以及每个信息的总大小、或者它们的任意组合。
例如,如图16A所示,对于在前版本的邮件客户机组件501而言,邮件客户机组件501响应对一组信息的快速传送请求(1601和1603)而接收这些信息。图16A中,在两个应答1604和1606内接收信息。在使用快速传送机制的在前版本邮件客户机组件501中,不提供对流出到客户机的信息的进度指示。
然而,如图16B所示,响应对邮件客户机组件的信息组的应答1607,邮件服务器组件502可能提供要被传送的数据对象总数、以及要被传送的所有数据对象的总大小。该信息在图16B中用“Pall”表示。最新版本的邮件服务器组件502也可能提供每个信息的大小,在图16B中用“P1、P2、P3、...”表示。此外,根据需要,与每个信息相关以及与整组信息相关的信息可能包括与每个信息是FAI还是实际邮件信息有关的附加信息。一实施例中,图16B中用“Pall”表示的信息总是响应快速传送请求而被发送,即使传送零数据对象时,这是为了简化数据流的处理。
下表示出被传送的所有数据对象的大小和数目的格式示例。
IncrSyncProgressMode
属性名  属性类型 注解
版本  WORD(如,16位整数) 该结构的版本。
cAssocMsgs  DWORD(如,32位整数) 要传送的FAI数据对象数目
llTotalAssocMsgSize  QWORD(如,64位整数) 要传送的所有FAI数据对象的总大小
cNormalMsgs  DWORD 要传送的邮件信息数目
llTotalNormalMsgSize  QWORD 要传送的所有邮件信息的总大小
如上所示,可以为FAI数据对象数目、所有FAI数据对象的总大小、要传送的邮件信息数目、以及要传送的所有邮件信息的总大小而定义分开的属性。根据需要也可以向格式添加其它组合和附加的属性。
下表示出可以向每个信息提供的大小及其它信息的格式。
IncreSyncProgressModePerMsg
属性名 属性类型 注解
信息大小 LONG(长型) 下一信息的大小
FAI标志 BOOL(布尔型) 指示下一信息是否是FAI
如上所示,格式包括下一信息的大小以及下一信息是否为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)以外,该ptag可以是如二进制属性。此外,对于每个信息而言,提供了每信息的进度数据,例如,ptagIncrSyncProgressModePerMsg。
PtagIncrSyncProgressMode [PT_BINARY]
    [如表中的内容所描述]
ptagMessageListStart
     PtagIncrSyncProgressModePerMsg [PT_BINARY]
         [如表中的内容所描述]
     ptagMessageStart
          ptagPropList
               ptagSubject [PT_STRING]
                    ″Re:Your email″
          …
     ptagMessageEnd
     PtagIncrSyncProgressModePerMsg [PT_BINARY]
         [如表中的内容所描述]
     ptagMessageStart
          …
     ptagMessageEnd
     PtagIncrSyncProgressModePerMsg [PT_BINARY]
         [如表中的内容所描述]
     ptagMessageStart
          …
     ptagMessageEnd
ptagMessageListEnd
在所示示例中,ptag包括进度总和数据(ptagIncrSyncProgressMode),且信息进度数据的ptag(ptagIncrSyncProgressModePerMsg)位于信息列表前面,并且分别在每个信息前面。然而,可以修改流出数据对象的结构,使进度数据可以被包括在信息或信息列表内。还可以修改流出数据对象的结构,以便完全消除对信息和/或信息列表定界的ptag。
接收进度数据的邮件客户机组件可以用该数据来确定同步或拷贝来自邮件服务器组件的数据对象的进度,并且用每信息的进度数据来确定每个单独信息的进度。该信息可以是有用的,譬如,在监控与同步进度有关的实时信息时。
为了存储邮件信息或其它数据对象可能使用几种不同的字符集。例如,ASCII是存储英语字符最常使用的。然而,ASCII不足以存储所有语言的字符,由于它是基于8位字符的。因此,ASCII码仅用于256字符,它对英语是足够的,但对于具有更多字符的语言却不够。另一方面,统一字符集(Unicode)是为每个字符使用16位(两个字节)的字符集,因此能包括比ASCII更多的字符。Unicode可以有65536个字符,因此可用于对世界上的几乎所有语言进行编码。Unicode内包含ASCII字符集。
通常,在前版本的邮件客户机组件501具有指定的编码页、或者字符集和/或与之相关的语言。例如,特定版本的邮件客户机组件501可能有德语编码页,而另一版本可能有ANSI编码页。有时希望邮件客户机组件501接收除指定编码页之外的字符集所写的邮件。按照本发明一方面,最新版本的客户机组件可能迫使邮件服务器组件以Unicode提供所有邮件。一旦这些邮件被邮件客户机组件501所接收,则Unicode邮件可能转化成客户机的编码页,或者被保持为Unicode格式。
为了指明邮件客户机组件501要求以Unicode提供邮件,邮件客户机组件501可以把像FORCEUNICODE这样的标志提供给邮件服务器组件502。可以用ROP这样的请求来提供该标志。如果邮件服务器组件502是最新的版本,则邮件服务器组件502可以提供邮件的Unicode版本,如果可用,或者可以把其它字符集编码的邮件信息转化成Unicode。
图20示出按照本发明一方面为信息提供特定字符集的步骤。从步骤2001开始,邮件服务器组件502从其数据存储中检取信息。步骤2002中,确定是否存在FORCEUNICODE标志。如果不存在,则步骤2002分支到步骤2003,其中邮件服务器组件502以邮件客户机组件所指定的编码页来提供邮件信息,根据需要进行转化。
如果存在FORCEUNICODE标志,则步骤2002分支到步骤2004,其中确定信息是否被存储为Unicode。如果是,步骤2004就分支到步骤2005,其中以Unicode字符集把信息提供给邮件客户机组件501。如果信息未以Unicode被存储,则步骤2004分支到步骤2006,其中信息被转化成Unicode,然后进程继续到步骤2005,其中以Unicode把信息提供给邮件客户机组件。
在描述本发明的环境中所使用的不定冠词(a和an)和定冠词(the)以及类似指示物应被理解为既包括单数又包括复数,除非这里特别指明或与上下文明显矛盾。术语“由...组成(comprising)”、“具有(having)”、“包括(including)”和“包含(containing)”应被理解为开口的术语(即,意指“包括、但不限于”),除非特别指明。这里引用的值范围仅仅用作单独指示落在范围内各个独立值的简便方法,除非这里特别指明,且每个独立值都像在此被独立引用那样结合在说明书内。这里所示的所有方法都可以以任何适当顺序执行,除非这里特别指明,或者与上下文明显矛盾。任何或所有示例的使用、或者这里所提高到示例性语言(如,“譬如”)仅仅为了更好地阐明本发明,并且不使对本发明的限制,除非特别要求。说明书中的任何语言都不应被理解为对实践本发明基本的任何未经要求的元素。
这里描述了本发明的优选实施例,包括发明者所知用于实现本发明的最佳模式。在阅读了上述描述之后,那些优选实施例的变化对于本领域的普通技术人员是明显的。发明者希望技术人员能适当地采用这种变化,发明者意图用除这里特别描述的方式来实践本发明。因而,本发明包括对所附权利要求所引用的主要问题的所有修改和等价物,这被可适用的法律依据所允许。此外,除非这里特别指明或者与上下文明显矛盾,本发明包括了上述元件在所有可行变化中的任意组合。

Claims (21)

1.一种具有计算机可执行指令的计算机可读媒介,所述指令包括:
在第一邮件服务器组件处维持与邮件客户机组件所见的邮件信息变化有关的不连续的第一数据;
在第二邮件服务器组件处维持与邮件客户机组件所见的邮件信息变化有关的第二数据;以及
在第二邮件服务器组件处优化不连续的第一数据。
2.如权利要求1所述的计算机可读媒介,其特征在于还包括,把第二数据和经优化的第一数据发送到邮件客户机组件。
3.一种具有计算机可执行指令的计算机可读媒介,所述指令包括:
维持一表格,表格关于对包含邮件数据对象的多个文件夹作出的变化;
预订一邮件客户机组件到表格;以及
根据表格内的变化,向邮件客户机组件发送一通知。
4.如权利要求3所述的计算机可读媒介,其特征在于,作为对多个文件夹内邮件数据对象请求的结果,自动地预订邮件客户机组件。
5.如权利要求4所述的计算机可读媒介,其特征在于,所述请求包括对文件夹同步的请求,所述邮件数据对象位于所述文件夹中。
6.如权利要求4所述的计算机可读媒介,其特征在于,所述请求包括对拷贝邮件信息的请求。
7.一种具有计算机可执行指令的计算机可读媒介,所述指令包括:
预订一表格,表格关于对包含邮件数据对象的多个文件夹作出的变化;
根据表格内的变化,接收到邮件客户机组件的通知,关于与已变化文件夹对应的表格内的行;以及
根据所述通知,发送一请求,仅要求同步已变化的文件夹。
8.如权利要求7所述的计算机可读媒介,其特征在于,作为对多个文件夹内邮件数据对象请求的结果,自动地发生预订。
9.如权利要求8所述的计算机可读媒介,其特征在于,所述请求包括对同步文件夹的请求,其中所述邮件数据对象位于所述文件夹中。
10.如权利要求8所述的计算机可读媒介,其特征在于,所述请求包括对拷贝邮件信息的请求。
11.一种计算机实现的方法,包括:
在邮件客户机组件处,预订一表格,关于对包含邮件数据对象的多个文件夹作出的变化,所述表格由邮件服务器组件所维护;
使至少一个文件夹内的至少一个数据对象发生变化;
向邮件服务器组件发送一指示,请求不向邮件客户机组件发送通知。
12.如权利要求11所述的方法,其特征在于,所述指示包括请求内所包含的标志。
13.如权利要求12所述的方法,其特征在于,所述请求包括对同步文件夹的请求,所述信息位于所述文件夹中。
14.如权利要求12所述的方法,其特征在于,所述请求包括对拷贝邮件信息的请求。
15.一种带有计算机可执行指令的计算机可读媒介,指令用于执行权利要求11所述的方法。
16.一种计算机可读媒介上包含的数据分组,包括:
第一数据字段,包括对邮件客户机组件的标识;
第二数据字段,表示由邮件客户机组件对邮件文件夹内的邮件数据对象作出的变化;以及
一指示,请求不向邮件客户机组件发送关于该变化的通知。
17.如权利要求16所述的数据分组,其特征在于,所述指示包括请求内所包含的标志。
18.一种带有计算机可执行指令的计算机可读媒介,所述指令包括:
维持一表格,关于对包含邮件数据对象的多个文件夹所作出的变化;
预订第一邮件客户机组件到该表格;
接收对至少一个文件夹内的至少一个数据对象的变化,所述变化由第一邮件客户机组件所引起;
接收一指示,请求根据该变化不向第一邮件客户机组件发送通知;以及
根据所述变化和指示,发送一关于变化的通知,所述变化是对除第一邮件客户机组件之外的表格订户作出的。
19.如权利要求18所述的计算机可读媒介,其特征在于,所述指示包括请求内所包含的标志。
20.如权利要求19所述的计算机可读媒介,其特征在于,所述请求包括对同步至少一个文件夹的请求。
21.如权利要求19所述的计算机可读媒介,其特征在于,所述请求包括对拷贝邮件信息的请求。
CNB2003101239257A 2003-01-03 2003-12-18 用于服务器和客户机间改进的同步的系统和方法 Expired - Fee Related CN100481821C (zh)

Applications Claiming Priority (4)

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

Publications (2)

Publication Number Publication Date
CN1522013A true CN1522013A (zh) 2004-08-18
CN100481821C CN100481821C (zh) 2009-04-22

Family

ID=32511094

Family Applications (1)

Application Number Title Priority Date Filing Date
CNB2003101239257A Expired - Fee Related CN100481821C (zh) 2003-01-03 2003-12-18 用于服务器和客户机间改进的同步的系统和方法

Country Status (13)

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

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101167071B (zh) * 2005-05-25 2012-04-04 微软公司 用于与多个客户机同步文档的方法和设备
WO2022042451A1 (zh) * 2020-08-25 2022-03-03 华为技术有限公司 一种电子邮件的同步方法及电子设备

Families Citing this family (58)

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

Family Cites Families (76)

* 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 Филипс Электроникс Н.В. Способ передачи информации с использованием носителя данных, носитель информации и устройство для воспроизведения информации с такого носителя
JP3612652B2 (ja) 1992-06-18 2005-01-19 インターナシヨナル・ビジネス・マシーンズ・コーポレイシヨン ローカル・コンピュータ上で実行されるローカル・タスクによってリモート・コンピュータ上のリモート・タスクを実行する方法
US5537551A (en) 1992-11-18 1996-07-16 Denenberg; Jeffrey N. Data compression method for use in a computerized informational and transactional network
US5325361A (en) 1992-12-01 1994-06-28 Legent Corporation System and method for multiplexing data transmissions
US5694561A (en) 1994-12-12 1997-12-02 Microsoft Corporation Method and system for grouping and manipulating windows
GB2300991B (en) * 1995-05-15 1997-11-05 Andrew Macgregor Ritchie Serving signals to browsing clients
JP3184763B2 (ja) 1995-06-07 2001-07-09 インターナショナル・ビジネス・マシーンズ・コーポレ−ション マルチメディア直接アクセス記憶装置及びフォーマット方法
US5712907A (en) * 1995-09-18 1998-01-27 Open Port Technology, Inc. Pro-active message delivery system and method
US5923846A (en) 1995-11-06 1999-07-13 Microsoft Corporation Method of uploading a message containing a file reference to a server and downloading a file from the server using the file reference
US5923848A (en) 1996-05-31 1999-07-13 Microsoft Corporation System and method for resolving names in an electronic messaging environment
US6151643A (en) * 1996-06-07 2000-11-21 Networks Associates, Inc. Automatic updating of diverse software products on multiple client computer systems by downloading scanning application to client computer and generating software list on client computer
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 情報通信システム、情報通信端末、サーバ装置および情報通信方法
US6138146A (en) 1997-09-29 2000-10-24 Ericsson Inc. Electronic mail forwarding system and method
US6073137A (en) * 1997-10-31 2000-06-06 Microsoft Method for updating and displaying the hierarchy of a data store
CA2309660C (en) 1997-11-13 2010-02-09 Hyperspace Communications, Inc. File transfer system
US6938073B1 (en) * 1997-11-14 2005-08-30 Yahoo! Inc. Method and apparatus for re-formatting web pages
US6324587B1 (en) * 1997-12-23 2001-11-27 Microsoft Corporation Method, computer program product, and data structure for publishing a data object over a store and forward transport
US6233316B1 (en) * 1998-01-27 2001-05-15 Dsc Telecom, L.P. Voice enhanced phone card
US6167402A (en) 1998-04-27 2000-12-26 Sun Microsystems, Inc. High performance message store
FI105971B (fi) 1998-04-30 2000-10-31 Nokia Mobile Phones Ltd Menetelmä ja laitteisto sähköpostin käsittelemiseksi
US6134582A (en) 1998-05-26 2000-10-17 Microsoft Corporation System and method for managing electronic mail messages using a client-based database
US20010054115A1 (en) 1998-05-29 2001-12-20 Tabitha Ferguson System and method for bundling information
US6219694B1 (en) 1998-05-29 2001-04-17 Research In Motion Limited System and method for pushing information from a host system to a mobile data communication device having a shared electronic address
US6438585B2 (en) 1998-05-29 2002-08-20 Research In Motion Limited System and method for redirecting message attachments between a host system and a mobile data communication device
CA2275840A1 (en) 1998-08-18 2000-02-18 Lucent Technologies Inc. Generalized messaging construct
US6886030B1 (en) 1998-08-18 2005-04-26 United Video Properties, Inc. Electronic mail system employing a low bandwidth link for e-mail notifications
US6505255B1 (en) * 1999-04-29 2003-01-07 Mitsubishi Electric Information Technology Center America, Inc. (Ita) Method for formatting and routing data between an external network and an internal network
US6639687B1 (en) 1998-09-08 2003-10-28 International Business Machines Corporation Progress indicator for multiple actions
WO2000016541A1 (en) * 1998-09-15 2000-03-23 Microsoft Corporation Annotation creation and notification via electronic mail
US6324544B1 (en) 1998-10-21 2001-11-27 Microsoft Corporation File object synchronization between a desktop computer and a mobile device
JP3603936B2 (ja) 1999-01-22 2004-12-22 株式会社ソニー・コンピュータエンタテインメント 電子メール広告システム
US6449634B1 (en) 1999-01-29 2002-09-10 Digital Impact, Inc. Method and system for remotely sensing the file formats processed by an E-mail client
WO2000057612A2 (en) 1999-03-22 2000-09-28 Webxi Application layer protocol
US6574657B1 (en) * 1999-05-03 2003-06-03 Symantec Corporation Methods and apparatuses for file synchronization and updating using a signature list
US6442748B1 (en) * 1999-08-31 2002-08-27 Accenture Llp System, method and article of manufacture for a persistent state and persistent object separator in an information services patterns environment
US6304898B1 (en) 1999-10-13 2001-10-16 Datahouse, Inc. Method and system for creating and sending graphical email
US20020055351A1 (en) * 1999-11-12 2002-05-09 Elsey Nicholas J. Technique for providing personalized information and communications services
JP2001197247A (ja) 2000-01-11 2001-07-19 Fuji Xerox Co Ltd 画像データ送受信装置及び通信システム
US6993559B2 (en) 2000-02-14 2006-01-31 Bigbow.Com, Inc. System, method, apparatus and computer program product for operating a web site by electronic mail
US6684088B1 (en) 2000-03-01 2004-01-27 Axi Mobile Ltd. System and method for displaying electronic mail messages on a low bandwidth device
US6438584B1 (en) * 2000-03-07 2002-08-20 Letter Services, Inc. Automatic generation of graphically-composed correspondence via a text email-interface
US6968364B1 (en) * 2000-03-30 2005-11-22 Microsoft Corporation System and method to facilitate selection and programming of an associated audio/visual system
DE60142556D1 (de) 2000-04-10 2010-08-26 Research In Motion Ltd System und verfahren zum bündeln von informationen
JP2001339422A (ja) 2000-05-25 2001-12-07 Mitsubishi Electric Corp メールデータ管理システム
US6732101B1 (en) * 2000-06-15 2004-05-04 Zix Corporation Secure message forwarding system detecting user's preferences including security preferences
US6560883B2 (en) * 2000-06-28 2003-05-13 Snap-On Technologies, Inc. Method and system for conducting wheel alignment
US7397575B2 (en) 2000-08-01 2008-07-08 Canon Kabushiki Kaisha Communication apparatus and method having electronic mail communication function, and program
AU2001287143A1 (en) 2000-09-08 2002-03-22 Plumtree Software Method and system for assembling concurrently-generated content
US20030093315A1 (en) 2000-09-26 2003-05-15 Kenji Sato System and method for using e-mail as advertisement 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 電子メールサーバ装置、電子メール転送制御方法及び記録媒体
CN1304967C (zh) 2001-03-22 2007-03-14 郑明真 一种管理和分类通过电脑网络接收电子邮件的方法
US6973481B2 (en) 2001-03-23 2005-12-06 Emailias Llc System and method for creating and managing forwarding email address
US7224491B2 (en) 2001-03-28 2007-05-29 Minolta Co., Ltd. Data communication apparatus, data communication system, data communication method, control program, and computer readable storage medium stored with control program
AUPR444601A0 (en) 2001-04-17 2001-05-17 Pro-Super Holdings Limited Business tracking system
JP3798263B2 (ja) 2001-06-01 2006-07-19 三菱電機株式会社 電子メールサーバ及び電子メールキャッシュ方法及び電子メールキャッシュプログラム
US20030093565A1 (en) 2001-07-03 2003-05-15 Berger Adam L. System and method for converting an attachment in an e-mail for delivery to a device of limited rendering capability
US7149813B2 (en) 2001-08-14 2006-12-12 Microsoft Corporation Method and system for synchronizing mobile devices
US20030035607A1 (en) * 2001-08-15 2003-02-20 Motorola, Inc. Apparatus for effecting conversion between communication signals in a first signal-form and communication signals in a second signal-form and method of manufacture therefor
US6973384B2 (en) * 2001-12-06 2005-12-06 Bellsouth Intellectual Property Corporation Automated location-intelligent traffic notification service systems and methods
US20030177171A1 (en) * 2002-01-22 2003-09-18 Brown Bruce Loring Electronic mail retrieval
US20030231207A1 (en) 2002-03-25 2003-12-18 Baohua Huang Personal e-mail system and method
US7031973B2 (en) 2002-06-10 2006-04-18 Microsoft Corporation Accounting for references between a client and server that use disparate e-mail storage formats
US6868143B1 (en) 2002-10-01 2005-03-15 Bellsouth Intellectual Property System and method for advanced unified messaging
US20040068544A1 (en) 2002-10-08 2004-04-08 Bellsouth Intellectual Property Corporation Multi-user e-mail client and alert schema
US7620688B2 (en) 2003-01-03 2009-11-17 Microsoft Corporation Progress mode for electronic mail component
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
US9209992B2 (en) 2009-12-28 2015-12-08 International Business Machines Corporation Method, data processing program, and computer program product for handling instant messaging sessions and corresponding instant messaging environment

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101167071B (zh) * 2005-05-25 2012-04-04 微软公司 用于与多个客户机同步文档的方法和设备
WO2022042451A1 (zh) * 2020-08-25 2022-03-03 华为技术有限公司 一种电子邮件的同步方法及电子设备

Also Published As

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

Similar Documents

Publication Publication Date Title
CN1522013A (zh) 用于服务器和客户机间改进的同步的系统和方法
CN1522014A (zh) 关于电子邮件消息的改进的客户服务器通信的系统和方法
CN1518304A (zh) 在服务器和用户之间形成数据流的方法
CN1178436C (zh) 电子消息传递系统
CN1290041C (zh) 用于改进文件管理的方法和装置
CN1134741C (zh) 网络系统和打印机
US7162103B2 (en) Output job request electronic message notification system and method
JP4658950B2 (ja) 電子メッセージのための階層的スキーマ
CN1713177A (zh) 文件共享系统和客户端装置
CN1703048A (zh) 网络服务应用协议和soap处理模型
US9092167B2 (en) Systems and methods for managing a print job
CN1892650A (zh) 文档管理服务器、系统和方法以及该系统的客户机和节点
CN1572098A (zh) 使用发布/预定系统的无线消息传递业务
CN101061688A (zh) 基于简单网络管理协议的网络管理设备和方法
CN1913661A (zh) 消息转换设备与转换方法
CN1224200A (zh) 数据通信设备和方法
CN1504909A (zh) 设备管理方法
CN1747473A (zh) 用于扩展消息模式以表示传真消息的系统和方法
CN1744520A (zh) 网络装置管理系统及控制方法、网络装置、管理装置及方法
CN1802826A (zh) 用于在基于mms的通信系统中传输消息的方法
CN1578219A (zh) 复合内容传递方法和传递系统
US8126910B2 (en) System and method to perform mobile printing from handheld devices
JP2006285986A (ja) 電子文書のスケジュール化印刷を備える手法
CN101040543A (zh) 发送应用特定的登记或撤销登记数据的方法和系统、服务器和通信终端
CN1520040A (zh) 字符串处理装置、字符串处理方法和成像装置

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C14 Grant of patent or utility model
GR01 Patent grant
ASS Succession or assignment of patent right

Owner name: MICROSOFT TECHNOLOGY LICENSING LLC

Free format text: FORMER OWNER: MICROSOFT CORP.

Effective date: 20150421

C41 Transfer of patent application or patent right or utility model
TR01 Transfer of patent right

Effective date of registration: 20150421

Address after: Washington State

Patentee after: Micro soft technique license Co., Ltd

Address before: Washington State

Patentee before: Microsoft Corp.

CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20090422

Termination date: 20191218

CF01 Termination of patent right due to non-payment of annual fee