包括提供增强操作协议选择特征的协议接口设备的通信系统及相关方法转让专利

申请号 : CN200480029246.6

文献号 : CN1823508B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 沙伊巴·罗伊达伦·L·加德纳

申请人 : 蒂蒙系统公司

摘要 :

提供了一种通信系统,可以包括每一个使用多个不同操作协议中的至少一个的多个数据存储设备。此外,数据存储设备的至少一个可以使用多个操作协议来操作。系统还可以包括用于访问所述至少一个数据存储设备的移动无线通信设备,并且每一个移动无线通信设备可以使用多个操作协议中的至少一个。此外,系统还可以包括协议接口设备。协议接口设备可以包括用于使用相应的操作协议来与多个移动无线通信设备进行通信的前端代理模块。协议接口还可以包括用于使用相应的操作协议来与数据存储设备进行通信的协议引擎模块。协议引擎模块还可以从多个操作协议中选择用于与所述至少一个数据存储设备进行通信所需的操作协议。

权利要求 :

1.一种通信系统,包括:

多个数据存储设备,每个数据存储设备使用多个操作协议中的至少一个,至少一个数据存储设备使用多个操作协议来进行通信;

多个移动无线通信设备,用于访问所述至少一个数据存储设备,以及每个移动无线通信设备使用所述多个操作协议中的至少一个进行通信;以及协议接口设备,包括:

前端代理模块,用于使用相应的操作协议,与所述多个移动无线通信设备进行通信,以及协议引擎模块,用于使用相应的操作协议,与所述多个数据存储设备进行通信,并且从多个操作协议中选择用于与所述至少一个数据存储设备进行通信所需的操作协议。

2.根据权利要求1所述的通信系统,其中,所述协议引擎模块根据多个操作协议的排序来选择所需的操作协议。

3.根据权利要求2所述的通信系统,其中,排序是基于协议支持元素的。

4.根据权利要求1所述的通信系统,其中,所述协议接口设备还包括与所述协议引擎模块相连的存储器,用于存储与每一个移动无线通信设备相关联的每个帐户信息;以及,所述协议引擎模块还根据给定无线通信设备的每个帐户信息,选择所需的操作协议。

5.根据权利要求1所述的通信系统,其中,所述前端代理模块和所述协议引擎模块使用通用接口协议来进行通信,所述通用接口协议能够为所需操作协议表示所需数量的协议支持元素。

6.根据权利要求1所述的通信系统,其中,所述多个数据存储设备、所述多个移动无线通信设备以及所述协议接口设备处理电子邮件消息。

7.根据权利要求1所述的通信系统,其中,所述移动无线通信设备发送访问请求;以及,响应于访问请求,所述数据存储设备发送数据。

8.根据权利要求7所述的通信系统,其中,所述数据存储设备中的至少一个是针对电子邮件消息的;并且,所述至少一个数据存储设备利用根文件夹和目标电子邮箱容量,来响应访问请求。

9.根据权利要求1所述的通信系统,其中,响应于至少一个非支持操作协议,所述协议接口设备产生错误。

10.一种协议接口设备,用于将多个移动无线通信设备与多个数据存储设备进行接口,所述移动无线通信设备和所述数据存储设备中的每一个使用多个不同操作协议中的至少一个来进行通信,并且至少一个数据存储设备使用多个操作协议来进行通信,所述协议接口设备包括:前端代理模块,用于使用相应的操作协议,与所述多个移动无线通信设备进行通信;

协议引擎模块,用于使用相应的操作协议,与所述多个数据存储设备进行通信,并且从多个操作协议中选择用于与所述至少一个数据存储设备进行通信所需的操作协议。 

11.根据权利要求10所述的协议接口设备,其中,所述协议引擎模块根据所述多个操作协议的排序,选择所需的操作协议,并且,排序是基于协议支持元素的。

12.根据权利要求10所述的协议接口设备,还包括与所述协议引擎模块相连的存储器,用于存储与每一个移动无线通信设备相关联的每个帐户信息;并且,所述协议引擎模块还根据给定移动无线通信设备的每个帐户信息,选择所需的操作协议。

13.根据权利要求10所述的协议接口设备,其中,所述前端代理模块和所述协议引擎模块使用通用接口协议来进行通信,所述通用接口协议能够为所需操作协议表示所需数量的协议支持元素。

14.根据权利要求13所述的协议接口设备,其中,所述通用接口协议能够为最有能力的操作协议表示所有的协议支持元素。

15.根据权利要求10所述的协议接口设备,其中,所述多个数据存储设备、所述多个移动无线通信设备、前端代理模块以及协议引擎模块处理电子邮件消息。

16.一种用于将多个移动无线通信设备与多个数据存储设备进行接口的方法,所述移动无线通信设备和所述数据存储设备中的每一个使用多个不同操作协议中的至少一个来进行通信,并且至少一个数据存储设备使用多个操作协议来进行通信,所述方法包括:设置前端代理模块,所述前端代理模块用于使用相应的操作协议,与所述多个移动无线通信设备进行通信;

设置协议引擎模块,所述协议引擎模块用于使用相应的操作协议,与所述多个数据存储设备进行通信,并且与所述前端代理模块进行通信;以及使所述协议引擎模块从所述多个操作协议中选择用于与所述至少一个数据存储设备进行通信所需的操作协议。

17.根据权利要求16所述的方法,其中,协议引擎模块根据所述多个操作协议的排序,选择所需的操作协议,并且排序是基于协议支持元素的。

18.根据权利要求16所述的方法,其中,协议引擎模块还根据与移动无线通信设备中选定的一个移动无线通信设备相关联的每个帐户信息,选择所需的操作协议。

19.根据权利要求16所述的方法,其中,所述多个数据存储设备、所述多个移动无线通信设备、前端代理模块以及协议引擎模块处理电子邮件消息。

说明书 :

技术领域

本发明涉及通信系统领域,更具体地,涉及使用多个操作协议进行数据访问操作的通信系统及相关方法。

背景技术

在计算机系统上或与计算机系统联合操作的软件客户端通常被用于访问存储在服务器上的数据,计算机系统可以通过例如局域网(LAN)与服务器建立通信。典型地,配置客户端,使得使用由客户端所支持的特定协议来访问数据系统上的数据。然而,同样可以通过其它协议访问一些数据存储设备,每一个协议可以支持不同的特征。
例如,在电子邮件(e-mail)系统中,用户在邮件服务器上具有相应的邮箱,可以使用Outlook网络访问(OWA)、因特网邮件访问协议(IMAP)或邮局协议(POP)来访问邮箱。尽管用户也许已经配置了电子邮件客户端,以使用POP来访问他或她的邮箱,例如,当使用另一个客户端时,或者当要访问支持不同协议的多个邮箱时,希望使用比POP提供更先进特征的更有能力的OWA和IMAP来进行邮箱访问。
开发了多种现有技术来提供使用不同的操作协议的系统和设备之间的通信。在授予Dutta等人的美国专利No.6,615,212中描述了一种这样的解决方案,其中代码转换代理服务器接收来自客户机的对内容的请求。代码转换代理服务器从始发服务器中检索该内容。以第一格式类型提供检索到的内容。响应于通过在将内容代码转换为第二格式类型之前,允许客户端处理第一格式类型的内容,将获得效率的增加的确定,代码转换代理服务器以第一格式类型向客户端发送该内容。
此外,响应于客户端不具有用于处理第一格式的内容的内容处理软件的确定,代码转换代理服务器将针对第一格式类型的内容处理软件与第一格式类型的内容一起发送给客户端。然后,代码转换代理服务器将内容从第一格式类型代码转换为第二格式类型,并将第二格式的内容发送给客户端。
除了这些现有技术方案以外,在特定的应用中,需要另外的协议翻译和/或转换功能。

发明内容

因此,考虑到前述背景技术,本发明的目的是提供一种通信系统,用于提供增强的操作协议转换特征,及相关方法。
通过一种通信系统来提供根据本发明的这一和其他目的、特征和优点,所述通信系统可以包括:多个数据存储器设备,每一个数据存储器设备使用多个操作协议中的至少一个。此外,数据存储设备中的至少一个可以使用多个操作协议来操作。系统还可以包括多个移动无线通信设备,用于访问所述至少一个数据存储设备,并且每一个移动无线通信设备可以使用多个操作协议中的至少一个。
此外,系统还可以包括协议接口设备。协议接口设备可以包括前端代理模块,用于使用相应的操作协议,与多个移动无线通信设备进行通信。协议接口还可以包括协议引擎模块,用于使用相应的操作协议,与多个数据存储设备进行通信。协议引擎模块还可以从多个操作协议中选择用于与所述至少一个数据存储设备进行通信所需的操作协议。
更具体地,协议引擎模块可以根据多个操作协议的排序,来选择希望的操作协议。此外,排列可以基于与各种协议相关的协议支持元素。作为示例,操作协议可以是例如Outlook网络访问(OWA)、因特网邮件访问协议(IMAP)或邮局协议(POP)的电子邮件(e-mail)协议。同样地,可以根据其相应的协议支持元素或特征,来排序协议。因此,典型地,根据每一个所支持的元素或特征的数目,OWA排序高于POP,并且当在两者之间选择时协议引擎模块将使用该排序。
此外,协议接口设备还包括与协议引擎模块相连的存储器,用于存储与每一个移动无线通信设备相关的每个帐户信息。例如,每个帐户信息可以与每一个移动无线通信设备所支持的各种协议相关联。因此,协议引擎模块可以不仅仅基于协议排序来选择所需协议,它还可以根据给定的移动无线通信设备的容量来选择。
此外,前端代理模块和协议引擎模块可以使用能够表现出针对所需操作协议的、所需数量的协议支持元素的共用接口协议来有利地进行通信。更具体地,共用接口协议可以能够表现出针对最有能力的操作协议的所有的协议支持元素。因此,使用其中OWA是最有能力协议的上述示例,共用接口协议可以支持OWA的所有元素或特征,尽管它还可以支持其它特征。作为示例,公用接口协议可以根据基于网络的分布式著作和版本(WebDAV)协议。
例如,所述多个数据存储设备、所述多个移动无线通信设备和协议接口设备可以处理电子邮件(e-mail)消息。此外,移动无线通信设备可以发送访问请求,并且响应于访问请求,数据存储设备可以发送数据(例如电子邮件数据)。此外,数据存储设备的一个或多个可以利用根文件夹和目标电子邮箱容量来响应访问请求。
响应于至少一个非支持操作协议,协议接口可以产生错误。此外,通信系统还可以包括广域网(WAN)(例如因特网),使移动无线通信设备中的至少一个与协议接口设备相连。还可以使用这种广域网(WAN)使数据存储设备中的至少一个与协议接口设备相连。
本发明的方法方案是用于使多个移动无线通信设备与多个数据存储设备相接口。移动无线通信设备和数据存储设备中的每一个可以使用多个操作协议中的至少一个,并且至少一个数据存储设备可以使用多个操作协议来操作。该方法还可以包括设置前端代理模块,用于使用相应的操作系统来与多个移动无线通信设备进行通信。方法还可以包括设置协议引擎模块,用于使用相应的操作协议来与多个数据存储设备进行通信并且与前端代理模块进行通信。该方法还包括使协议引擎模块从多个操作协议中选择用于与所述至少一个数据存储设备进行通信所需的操作协议。
根据本发明的协议接口设备可以包括前端代理模块和协议引擎模块,例如上面简单描述了的模块。此外,类似地,根据本发明的计算机可读介质可以包括前端代理模块和协议引擎模块。

附图说明

图1是根据本发明的通信系统的示意方框图。
图2是更为详细地示出了图1所示的通信系统中的协议接口设备的示意方框图。
图3是更为详细地示出了图2所示的协议接口设备中的可扩展前端代理模块的示意方框图。
图4和5是示出了实现了类似于图3的可扩展代理体系结构的、根据本发明的通信系统的可选实施例的示意方框图。
图6是图2所示的协议接口设备的可选实施例的示意方框图。
图7是示出了图3所示的协议接口设备中的协议引擎模块及其接口连接器模块的示意方框图。
图8是图7所示的协议引擎模块和接口连接器模块的可选实施例的示意方框图。
图9是图2所示的协议接口设备的另一可选实施例的示意方框图。
图10是图2所示的协议接口设备的另一可选实施例的示意方框图。
图11是示出了图2所示的协议接口设备的操作的流程图。
图12是示出了图3所示的前端代理模块的操作的流程图。
图13是示出了图5所示的通信系统的操作的流程图。
图14是示出了图6所示的协议接口模块的操作的流程图。
图15是示出了图7所示的协议引擎和接口连接器模块的操作的流程图。
图16是示出了图9所示的协议接口设备的操作的流程图。
图17是示出了图10所示的协议接口设备的操作的流程图。
图18是与本发明一起使用的典型移动无线通信设备的示意方框图。

具体实施方式

现在,将参照附图,对本发明进行更为全面的描述,在附图中,示出了本发明的优选实施例。但是,本发明可以按照多种不同的形式来具体实现,而不应当理解为局限于这里所描述的实施例。而是,提供这些实施例,从而使本公开更加彻底和完整,并将本发明的范围完全传递给本领域的普通技术人员。在全文中,类似的数字表示类似的元件,初级标号和多重初级标号用于表示可选实施例中的类似元件。
现在转向图1,通信系统10包括提供了对多个数据存储设备或系统16、18、20的访问的协议接口设备14。通信系统10示意性地包括多个通信设备,即移动无线通信设备11和通过有线连接与所述系统相连的通信设备12。作为示例,根据本发明可以使用多种移动无线通信设备,如个人数据助理(PDA)、蜂窝电话等。在以下参照图18提供的示例中,描述了适合于与本发明一起使用的典型移动无线通信设备11。此外,有线通信设备的示例包括个人计算机、电话、传真机等。当然,可以使用多个有线和无线设备,尽管在典型实施例中为了图示清楚只示出了两个。
通信设备11、12典型地包括软件客户端,软件客户端是在相应的通信设备上或与相应的通信设备结合进行操作的软件模块或应用程序,用于通过协议接口设备14、提供对存储在数据存储设备16、18和20中的至少一个或多个处的数据的访问。本领域普通技术人员应当意识到这种通信设备还包括其他组件和/或软件模块,为了图示清楚,并未在图1中详细示出。对于移动无线通信设备11,其软件客户端通过无线通信网络13(以及可能的其他网络(例如,公共交换电话网(PSTN)或因特网))与协议接口设备14进行通信,如本领域普通技术人员所公知。
优选地,以在其上或与之结合进行操作的软件来实现协议接口设备14的多种功能和操作。协议接口设备14图示性地桥接通信设备11、12的软件客户端与数据存储设备16、18、20。协议接口设备14、通信设备11、12以及数据存储设备16、18、20之间的通信优选地通过如因特网等广域网(WAN)。即,通信设备11、12可以通过因特网与协议接口设备14进行通信,如上所述,协议接口设备也可以与数据存储设备16、18、20进行通信。
当然,也可以设想其他的实施方式。例如,可以在同样包括数据存储设备16、18、20、通信设备11、12或数据存储设备和通信设备的专用网络中(例如,在WAN中)实现协议接口设备14。应当注意,本发明并不局限于任何特定的连接或通信方案。
数据存储设备16、18、20存储要由通信设备11、12的软件客户端访问的数据。尽管可以将一些软件客户端配置为直接访问特定类型的数据存储设备,其通常是数据系统专用的或协议专用的,如以上简要描述的那样。更具体地,例如,在如移动无线通信设备11等约束电子设备上,处理器能力、存储器资源和通信信道特性将妨碍具有与通常用在桌面和膝上型计算机系统上的软件客户端相同能力的软件客户端的安装和操作。此外,尽管安装多个用于访问与不同协议相关联的数据存储设备的软件客户端对于桌面和膝上型计算机系统而言是容易的,在这种约束设备上提供多协议支持将是不可能的。
可以使用不同的操作协议或访问方案来访问数据存储设备16、18、20。这样,协议接口设备14通过由各个数据存储设备支持的操作协议来访问数据存储设备16、18、20,并通过相应的客户端支持的操作协议,将数据提供给通信设备11、12。协议接口设备14的协议转换功能提供了支持对多种类型的数据系统进行访问的统一方案。如稍后详细描述的那样,协议接口设备14提供不同协议或访问方案之间的“任意到任意”桥(“any-to-any”bridge)。
在图2中详细地示出了协议接口设备14。如上所述,协议接口设备14桥接不同类型的通信设备与不同类型的数据存储设备。在所示实施例中,数据存储设备24、26、28是用于存储电子邮件(e-mail)的系统/服务器。但是,应当注意的是,本发明并不局限于邮件系统访问。邮件系统24、26、28中的每一个支持不同的操作协议或访问方案。更具体地,邮件系统24支持Outlook网络访问(OWA),邮件系统26支持微软消息收发应用编程接口(MAPI),以及邮件系统28支持私有协议,例如,由美国在线(AOL)使用的协议等。
协议接口系统14示意性地包括前端代理模块30。前端代理模块示意性地包括代理模块34、36、38、40,分别支持无线应用协议(WAP)、邮局协议(POP)、因特网消息访问协议(IMAP)和超文本传送协议(HTTP),以便与客户端进行通信。
前端代理30还与协议引擎模块32进行通信。协议引擎模块32将OWA、MAPI、邮件系统28的私有协议(以及其他协议,如果需要的话)翻译为与前端代理模块30兼容的格式。为此,针对由邮件系统24、26、28使用的每种操作协议,可以将相应的接口连接器模块70-77(图7)与协议引擎模块32相连,稍后将进一步讨论。在优选实施例中,前端代理模块30和协议引擎模块32是可扩展的,以便在额外的操作协议变得可用时,容纳这些额外的操作协议,稍后将进一步讨论。
在操作中,用户通过其通信设备上的客户端软件访问邮件系统24、26、28之一上的邮箱。例如,移动无线通信设备上的WAP浏览器与WAP代理模块34进行通信,以访问邮件系统24。将由WAP代理34接收到的访问命令或指令转换为与协议引擎模块32相兼容的格式。优选地,通过公用接口协议(可以是私有协议或已建立的共用协议),实现前端代理模块30与协议引擎模块32之间的通信。
然后,协议引擎模块32将从前端代理模块30接收到的访问命令或指令翻译为与要访问的邮件系统相关联的协议(例如,针对邮件系统24的OWA)。将从邮件系统接收到的数据(例如,电子邮件消息、新消息列表、日历约会、任务等,依赖于特定的邮件系统)、其访问协议支持的特征、和访问命令的特性翻译为公用接口协议,并传送给前端代理。
然后,有效的代理模块(即,本示例中的WAP代理模块34)针对请求客户端,对接收到的数据或至少一部分进行格式化。协议接口设备14还翻译来自客户端的其他命令。类似地处理来自其他类型客户端的访问命令。应当注意,在用户已经启用了通过协议接口设备14的多个邮箱访问的情况下,可以响应于单一的访问命令来访问几个邮件系统。
因此,协议接口设备14允许使用不同操作协议的客户端访问同样使用不同操作协议的邮件系统24、26、28。如移动、删除、创建、发送、获取和查看等在客户端处产生的访问命令影响存储在邮件系统24、26、28处的数据而不是该数据的副本。通过协议接口设备14,向与代理模块34、36、38、40中的任何一个相兼容的客户端提供对邮件系统24、26、28中的一个或多个的访问。客户端本身有利地不需要支持与要访问的邮件系统相关联的访问协议或方案。
由于邮件系统协议和客户端协议不需要相互兼容,协议之间所支持的特征也可以不同。例如,POP客户端不支持与OWA相同的特征。优选地,设计在协议引擎模块32和前端代理模块30之间使用的接口协议,使其能够表现出针对所需的操作协议的、所需数量的协议支持元素或特征。更具体地,公用接口协议最好能够表现出针对最有“能力”的协议(本示例中的OWA)的所有协议支持元素,以提供最为广泛的可能特征支持。此外,如果需要,公用接口协议可以支持跨越所有支持协议的完整特征集合。
作为示例,公用接口协议可以是基于网络的分布式著作和版本(WebDAV:Web-based Distributed Authoring and Versioning)协议的私有协议。以下,将使用这种公用接口协议的认证请求的示例表示为程序列表#1。这种典型的认证请求例程允许邮件系统使用由用户提供的用户标识符和口令来认证协议接口设备14,而且检索邮件系统上目标邮箱的根文件夹和基本容量。
下面,作为程序列表#2描述了根据基于WebDAV的公用接口协议的典型收件箱请求。根据此例程,响应于收件箱请求,查询目标邮箱中收件箱的容量,然后查询其内容。以下,作为程序列表#3提供了另一示例,针对根据上述基于WebDAV的公用接口协议的文件夹搜索请求。这里,响应于此请求,返回给定文件夹的子文件夹列表。本领域普通技术人员应当清楚的是,也可以使用多种其他的请求和操作。
应当注意,软件客户端不必在所有的实施例中发起数据访问请求。例如,在一些实施例中,协议接口设备14可以包括轮询或聚集引擎模块(未示出)(或与之进行通信),所述轮询或聚集引擎模块提示协议引擎模块32以预定的间隔从邮件系统24、26、28聚集针对各个用户的消息,正如本领域普通技术人员所公知的那样。然后,协议接口设备14将与前端代理模块30合作,以便将聚集的消息提供给相应的软件客户端,如上所述。此外,前端代理模块30不必在所有的实施例中直接与通信设备11、12进行通信,而是也可以通过居间邮件系统或服务器与之进行通信。因此,在使用聚集引擎模块的情况下,可以首先由前端代理模块30将聚集的消息传送给居间邮件服务器,并由居间邮件服务器将消息提供给适当的通信设备,这也是本领域普通技术人员所公知的。同样,前端代理模块30将使用由这种居间邮件服务器支持的适当协议与之进行通信。
在图11中示出了使用协议接口设备14、提供对如邮件系统24、26、28等多个数据存储设备的访问的方法。在方框110处开始,首先在方框111处,接收访问命令或数据。在方框112,将访问命令或数据翻译为公用接口协议。然后,将访问命令翻译为(方框113)与要访问的数据系统相关联的数据系统协议,如针对邮件系统24的OWA。
另一方面,在方框113处,将数据翻译为客户端协议。根据客户端协议所支持的特定特征,在此步骤期间,只翻译与由客户端协议支持的接口协议的元素相对应的那部分数据。协议接口设备14可以响应于不支持的操作协议,产生错误。更具体地,优选地,根据缺省或错误处理方案,忽略或处理不支持的接口协议元素。然后,在方框114处,将翻译后的访问命令或数据传送给数据系统或客户端,从而结束所示出的方法(方框115)。
现在转向图3,对前端代理模块30的典型实施例进行描述。前端代理模块30示意性地包括代理模块34、36、38、40;再现器模块44;可扩展样式表语言转换(XSLT)引擎模块46、存储器或模板存储器48、流控制器模块50和处理器52a-52n。
如上所述,每个代理模块34、36、38、40有效地“应对(front)”协议引擎模块32,并针对不同的客户端类型,翻译相应的操作协议。例如,WAP代理模块以如蜂窝电话或PDA等设备上的显示器为目标的XML文档的形式,提供从处理器52a-52n中的一个或多个检索到的信息。POP代理可以使用至少一些相同的代理组件,包括流控制器模块50和再现器模块44,以便按照POP协议所需的形式再现数据。
所示前端代理模块30的一个特别有利的益处在于每个代理模块34、36、38、40使用相同的核心服务来路由业务、访问数据和再现数据。换句话说,再现器模块44、XSLT引擎模块46、模板存储器48、流控制器模块50和处理器52a-52n提供了针对代理模块34、36、38、40的公用核心服务模块。不同代理模块34、36、38、40的翻译之间的唯一差别在于流控制器50、处理器52a-52n的配置、和用于将数据翻译为其最终形式的XSL模板。在多种情况下,相同的处理器52a-52n将重新用在多种代理模块34、36、38、40之间,正如本领域普通技术人员所公知。
在操作期间,使用针对客户端协议的标准机制,将来自客户端的数据访问请求传递给适当的代理模块34、36、38、40。例如,针对WAP客户端,通过查询串和/或表变量来传递参数。WAP代理模块34根据请求中的数据,确定组件标识符(识别如邮件文件夹等目标项目)、动作标识符(识别要执行的动作)、和任何参数。在WAP的情况下,在查询串或表中传递组件和动作标识符。将查询串或表中的其他参数打包成参数列表。
然后,有效代理模块调用流控制器50,传递标识符和参数列表。流控制器通过组件和动作标识符,查找适当的处理器,并构建处理器,传递所述参数,作为构建器(未示出)的自变量(argument)。使用处理器52a作为示例,此处理器将使用数据层(图5)来处理请求,以收集响应所需的信息。
例如,对于邮件系统访问,数据层针对与用户的邮箱、日历或地址簿等内容有关的信息,与协议引擎模块32进行通信。可以针对不同类型的信息,如与认证服务和用户的电子邮件帐户有关的信息,建立与其他组件之间的通信。然后,处理器52决定是否将此请求转发给另一处理器,或者是否应当再现其结果。
优选地,由处理器52a-52n传递回的所有信息均为公用格式,如org.xml.sax.InputSource,可扩展标示语言(XML)数据的提供商。然后,有效代理模块调用再现器模块44,传递InputSource、位置信息、要再现的模板名称和OutputStream。再现器模块44利用XSLT引擎46,将页面再现为OutputStream。然后,由有效代理模块利用客户端协议,将OutputStream提供给客户端。
上述系统提供了遵循实现了大多数应用程序基础结构的经典模型/查看/控制器(MVC)体系结构的一般应用程序框架。一个重要的特征是可以针对相似的服务,定义基础功能集合,然后进行扩展,以提供完全实现给定服务所需的服务特有功能。在所给出的实施方式中,流控制器50、处理器52a-52n和/或数据访问层是完全可扩展的或可更换的。
考虑到此,支持全新服务仅涉及定义和实现数据层、定义系统内的控制流和离散动作(即流控制器模块50)、以及定义和实现与服务之间的接口(即再现器模块44)。另一方面,利用现有服务来支持新型客户端涉及对流控制器模块50和处理器52a-52n进行微小的改变,并扩展其中的动作,以支持额外的客户端所需功能,以及定义和实现客户端和系统之间的接口(即再现器模块44)。
将参照图12的方框图,对执行协议翻译的前端代理模块30的操作进行进一步的描述。上面已经对一些图示操作进行了详细描述,因此以下将对其进行简单描述,以避免不必要的重复。在方框120处开始,在方框121处,代理模块34、36、38、40接收访问请求或命令。在方框122处,由处理器52a-52n中的一个或多个将访问请求翻译为公用接口协议。
在方框123处,响应于所述请求,从给定的邮件系统24、26、28接收数据。再现已经被协议引擎模块32翻译为公用接口协议的数据(方框124),并在方框125处,返回给客户端,从而结束所示出的方法(方框126)。根据由客户端协议支持的特定特征,只再现或翻译与由客户端协议支持的公用接口协议的元素相对应的部分数据。如上所述,可以根据缺省或错误处理方案,忽略或处理不支持的接口协议元素。
应当注意,前端代理模块30的可扩展、公用核心服务体系结构也可以用于多种应用。一种这样的应用用于解决网络应用响应HTTP请求所使用的全异方法的多种缺点。现在参照图4和5,对根据本发明的、具有可扩展体系结构的网络数据访问系统100进行描述。网络数据访问系统100的组件进行双向通信,其示意性地包括用户请求101、网络服务器102、代理服务器104、和可扩展控制器系统106。
更具体地,用户请求101表示使用网络浏览器或网络应用程序请求网页的用户(例如通过PDA或个人计算机)。一旦做出请求,网络服务器102将处理该请求。在处理请求的过程中,代理服务器104辅助网络服务器102。为了比较的目的,这里的代理服务器104的功能类似于上述协议接口设备14,并且将可扩展控制器系统106实现为运行在代理服务器上或与之结合运行的软件模块,如本领域普通技术人员所公知的那样。当然,在一些实施例中,例如,可以在不同的物理设备或服务器中实现代理服务器104和可扩展控制器系统106。
代理服务器104提供以下处理:提供在访问较慢或对访问更为资源集约的其他服务器上可用的高速缓存或存储项目。代理服务器104接受具有特定前缀的URL。当接收到针对这种URL的请求时,其剥离所述前缀,并在其本地高速缓存器中查找所得到的URL。如果找到,其立即返回该文档,否则其从远程服务器获取文档,在高速缓存器中保存副本,并将其返回给请求方。由代理服务器104返回的页面本质上可以是静态的或动态的。代理服务器104可以与应用服务器或数据服务器(在此特定实施例中为可扩展控制器系统106)进行通信。
更具体地,代理服务器104的组件示意性地包括聚集服务器202、再现器模块212、XSLT引擎模块214和用于存储一系列模板的存储器216,类似于上述那些模块。可扩展控制器系统106的组件包括动作映射204和一系列处理器206,同样类似于上述那些模块。
聚集服务器202执行输入信息的处理,并为了辅助,将其传递给其他组件。再现器模块212将所得到的数据再现为可视格式。再现器模块212使用XSLT引擎模块214和来自存储器216的任何所需模板来再现页面。
聚集服务器202将数据发送给动作映射204,动作映射204保持有控制流,并处理系统中的业务逻辑。动作映射204与一系列处理器206进行交互。处理器206利用数据层208从其他数据源210检索信息。例如,其他数据源210可以包括针对网络数据的XML、针对与用户应用程序的内容(例如电子邮件、日历或联系方式)相关的任何信息的通用代理、或针对与用户帐户相关的认证服务和数据的规定API。
所述系统的作用在于使用户提交URL作为用户请求101。在网络服务器102处接收此请求,并将其传递给代理服务器104,以便利用针对协议的标准机制来进行处理。例如,WML请求将传递WAP参数查询串和/或表变量。代理服务器104的聚集服务器202组件根据请求中的数据,确定组件ID、动作ID和任何参数。使用相同的WAP示例,在查询串或表中传递组件和动作ID。将查询串或表中的所有其他参数打包为参数列表。
然后,聚集服务器202调用可扩展控制器系统106的动作映射204,并传递ID和参数列表。动作映射204通过组件和动作ID,查找适当的处理器206,并构建处理器,传递所述参数,作为构建器的自变量。处理器206处理所述请求,使用数据层208来收集响应所需的信息。数据层208将从位于网络内或网络外部的其他数据源210中检索信息。然后,处理器206决定是否应当将所述请求转发给另一处理器206,或者是否应当再现其结果。
如果该系统决定再现数据,则将数据从处理器206传递回动作映射204,并传递回代理服务器104的聚集服务器202。然后,聚集服务器202调用再现器模块212,再现器模块212调用XSLT引擎模块214和将数据再现为可视输出所需的任何模板。然后,将此输出返回给网络服务器102,作为用户请求101的结果,将此数据用作可视网页。
现在,将参照图13,对使用可扩展控制器系统106处理网络数据中所涉及的多个步骤进行进一步的描述。更具体地,此示意图更为详细地示出了代理服务器104和可扩展控制器系统106的处理和交互动作。此系统流程以用户请求101开始。将此请求发送到网络服务器102,网络服务器102将此信息传递给代理服务器104进行处理。代理服务器104调用聚集服务器202进行处理。
在方框302,聚集服务器202确定上下文是否可用。如果可用,系统将移动到下一步骤以挖掘ID(方框306)。如果不可用,系统将首先在方框304,创建上下文,然后继续进行到方框306处、挖掘ID的步骤。同样,从系统中挖掘出动作ID和组件ID。在方框308,将这些ID与请求参数和任何表数据一起打包成包封,并收集在一起。
调用调用程序,将数据从聚集服务器202传递给可扩展控制器系统106的动作映射204。此调用程序将与包封、动作代码、组件ID和上下文有关的信息传递给动作映射204。在方框310处,动作映射204查找该动作,并在方框312处,确定该动作是否存在。如果存在,则移向下一步骤,以便在方框316处,确定该动作是否需要认证。如果该动作不存在,则系统在方框314处检索缺省动作,然后在方框316处,确定该动作是否需要认证。
在这一点,如果动作不需要认证,则系统在方框320处确定是否存在任何悬而未决的请求。如果该动作不需要认证,则系统在方框318处确定上下文是否处于已认证状态。如果上下文处于已认证状态,则系统在方框320处确定是否存在悬而未决的请求。但是,如果上下文并未处于已认证状态,则系统在方框314处返回请求以检索缺省动作,直到接受认证。
在方框320处,系统确定是否存在悬而未决的请求。如果存在悬而未决的请求,则系统执行悬而未决的请求,并跳转到下一阶段,在方框346处,确定在队列中是否存在处理。如果不存在悬而未决的请求,则系统在方框322处执行动作,并证实包封数据,以及在方框324处,传递对处理器206的控制以创建动作处理器。一旦动作处理器被创建,则在方框326处对其进行初始化。
然后,系统在方框328处确定是否允许后台处理。如果允许,则在方框344处创建后台处理器,并且在方框346处,系统确定在队列中是否存在处理。但是,如果不允许后台处理,则系统在方框330处处理动作处理器,然后在方框332处返回结果。重新回到系统,在方框346处,所述系统确定在队列中是否存在处理。如果在队列中存在处理,则在方框350处,确定该动作是否完成。如果在队列中不存在处理,则在方框348处,将其提交给队列,然后在方框350处,确定动作处理器是否完成。
如果动作处理器已完成,则系统在方框352处返回动作处理器结果。如果动作处理器未完成,则系统在方框354处返回悬而未决的再现结果。将方框352和354所示步骤的输出(返回动作处理器结果或悬而未决的再现器结果)用于在方框334处确定是否再现该结果。
更具体地,将方框332(返回结果)、352(返回动作处理器结果)和354(返回悬而未决的再现结果)所示步骤的结果用于确定是否再现该结果(方框334)。如果系统决定再现该结果,则系统将数据从可扩展控制器系统106发送给代理服务器404,并在方框340,在再现器模块212处再现该数据。然后,将此数据传递到网络服务器102上,以便在方框342处显示该结果,作为对用户请求101的响应。但是,如果系统决定不再现该结果,而是决定将该请求转发给另一动作处理器进行处理,则系统在方框336处检索ID密钥,在方框338处检索包封数据,然后在方框310处查找适当的动作。系统将在这一点循环,直到在方框334处,决定最终接受再现结果。
上述方法涉及使用单一资源来定义系统内的组件。在此特定实施例中,所述源是XML文件,但也可以使用其他格式,正如本领域普通技术人员所公知的那样。此源将定义处理请求、URL语法和参数的代码、用于产生对请求的响应的模板或代码、以及请求的路由信息等。
系统使用处理请求的代码以及参数定义来创建动作处理器,传递正确类型的参数,并传递对其的控制,以进行处理。所述参数包括允许强类型数据(strongly typed data)的类型信息。也可以将参数定义为可选的或必需的。模板用于产生对请求的响应。如果尝试产生除了所定义的之外的其他响应,则产生错误。
所述源还定义请求的路由信息。通常,需要处理器在其范围内执行工作,然后将控制传递给另一处理器,以允许其执行其工作。但是,如果处理器示出将控制传递给源中未定义的其他事物,则产生错误。
其他变体也是可能的。例如,可以在产生用在该系统内的URL时,使用所述源。此外,可以将请求路由与这些请求的实际处理相分离。于是,由系统中的一个组件处理控制流,而不是每个处理器。于是,处理器将简单地要求控制器将请求转发给另一处理器。因此,可以在特定的请求生命周期内,将输入数据保持在已知状态。
另一解决方案涉及加强通过系统的控制流,在这种情况下,一个处理器并不直接调用另一处理器来执行其工作。另一解决方案涉及保持处理器相对较小且简单。即,这将处理器的目的和范围限制于接收请求,并调用适当的业务逻辑来收集所需的结果。另一变体涉及保持每一个处理器集中于一个任务,以及在完成该任务时允许再现结果或者将结果转发给下一处理器。
另一变体涉及提供用于处理能够处理即时需求的请求的可扩展机制,以及其随着时间而增长,但不会变得过度复杂。当加载系统时,用户可以规定初级和二级动作映射。按照这种方式,以初级动作映射规定了一般业务逻辑和控制流,同时向用户提供了用于添加或修改功能的方法。另一解决方案是向开发商提供用于快速响应长期运行的请求的机制,以避免产生超时。这使得开发商能够在处理器级或整个系统,规定后台处理。
上述可扩展控制器尤其有利于解决基于网络或HTTP的应用的缺点。当然,本领域普通技术人员应当清楚的是,可以扩展此相同的体系结构,以支持其他类型的、基于非HTTP的应用。
现在转向图6,对协议接口设备14’的可选实施例进行描述。在所示实施例中,在存储在配置文件储存器或存储器31’中的配置文件中,定义了对如邮件系统24’、26’、28’等数据存储设备的所有请求。按照这种方式,对于给定的客户端类别,应用程序开发商可以容易地只请求支持针对其所写入的客户端所需的那些属性。
可以作为前端代理模块30’的一部分或协议接口设备14’的分离组件的资源管理器有利地允许用户规定初级和二级配置文件组。如果规定了二级配置文件,其中所定义的任何资源将覆盖初级配置文件中所规定的那些。这允许用户规定核心资源集合,并使之适合于特定的实施方式。
此外,可以存储配置文件,以便处理不同网络层的操作。例如,可以将针对用于接口前端代理模块30’和协议引擎模块32’的数据层操作的配置文件存储在存储器31’中,以及针对由流控制器模块50执行的上层网络层操作的配置文件等。也可以使用其他类型的配置文件,正如本领域普通技术人员所公知的那样。
优选地,配置文件还规定了创建用于处理针对给定请求的响应的实施类。这使得稍微改变数据模型中的对象的行为(甚或是完全替代)变得简单。在配置文件中也规定了针对每个请求的高速缓存行为和强度。利用这两个属性的组合,开发商可以更多地控制存储器消耗和响应/请求性能。
此外,配置文件还允许用户规定对给定资源的多种请求。这使其能够支持具有不同请求/响应格式的数据系统。以下,将典型的配置文件提供为程序列表#4。此配置文件适合于支持WebDAV接口的数据存储器,如上所述,或者在协议接口设备14’的情况下,支持WebDAV接口的协议引擎。但是,也可以用于其他类型的接口/数据存储器。
同样应当注意,除了针对资源规定的内容类,用户还可以规定进一步识别给定资源的命令。这允许用户对给定的资源类型执行多种不同的操作,正如本领域普通技术人员所公知的那样。
现在,将参照图14,对使用配置文件的协议接口设备14’的操作进行进一步的描述。在方框140处开始,在方框141处,在代理模块处接收访问请求或命令。在方框142处,处理器52a-52n参照一个或多个配置文件,将访问请求翻译为公用接口协议。在方框144处,将响应于请求从数据系统接收到的(方框143)、并且已经被协议引擎模块32’翻译成公用接口协议的数据格式化为响应,并再现。同样,参照一个或多个配置文件完成。然后,将再现响应返回给客户端(方框145),从而在方框146处,结束所示出的方法。
现在,将参照图7,对协议引擎模块32进行更为详细的描述。协议引擎模块32提供了合并与使用不同协议的多种邮件系统进行通信的多个接口连接器模块70-77的框架。协议引擎模块32还提供了公用接口XML和WebDAV,例如,客户端通过前端代理模块30使用其来访问多个邮件帐户。类似于只检索新邮件的基本报头并确定附件的存在及其大小而不需要进行下载的普通操作是高度有效的。直接对源执行所有操作,并且只检索基本数据。
协议引擎模块32使用多个接口连接器模块70-77中适当的一个来访问邮件帐户。所有连接器模块70-77优选地支持公共应用编程接口(API),从而通过简单地添加新接口连接器模块,使协议引擎模块32支持新的协议量。例如,连接器模块70-77可以用Java来编写,尽管也可以使用其他合适的语言或协议。例如,可以通过提供多个动态负载平衡的协议引擎机来改善整个系统的性能和可用性。
类似地,将协议引擎模块32从邮件系统24、26、28接收到的结果翻译为公用接口协议,以便在需要时,翻译为客户端支持的协议,并传输给客户端。优选地,通信回客户端的结果只包括客户端所请求的数据。可以将与邮件系统协议支持但客户端协议不支持的特征相对应的数据翻译为公用接口协议,但也可以根据缺省或错误处理方案,忽略或处理它,如上所述。
现在,将参照图15,对使用协议引擎模块32和接口连接器模块71-77的协议翻译方法进行描述。在方框150处开始,在方框151处接收访问请求或命令。在方框152,将访问请求翻译为目标数据系统所支持的协议。在方框153,响应于所述请求,从数据系统接收数据,并在方框154,将其翻译为公用接口协议。如果需要,可以在方框155,执行将数据翻译为客户端协议的进一步翻译,并在方框156,将数据传输给客户端,从而在方框157处,结束所示出的方法。
同样,依赖于客户端协议所支持的特定特征,只翻译与客户端协议所支持的公用接口协议的元素相对应的部分数据。如上所述,可以根据缺省或错误处理方案,忽略或处理不支持的接口协议元素。
现在转向图8,对上述协议转换模块体系结构的可选实施例进行描述。这里,协议引擎模块32采用通用代理(UP)小服务程序(servlet)模块80的形式,每个接口连接器模块81、82、83和相应的供应商模块84、85、86与不同的操作协议相关联。在所示示例中,不同的协议是OWA、IMAP和POP。其他或不同的协议可以由相应的供应商/连接对支持,正如本领域普通技术人员所公知的那样。
对于公用接口协议,如上述私有接口协议,UP小服务程序模块80接收输入公用格式请求,并利用所定义的接口,将其翻译为对接口连接器模块81-83的调用。UP小服务程序模块80还接收这些调用的结果,并将其格式化为公用格式请求。每个公用格式请求包括方法请求和URL形式的路径。也可以包括提供了针对请求的额外参数的XML文档。
概念上,在UP小服务程序模块80以下,存在针对每个所支持的邮件系统协议的供应商模块84-86。供应商处理由UP小服务程序模块80做出的调用。如图所示,每个供应商具有用于与目标邮件系统上的源邮箱/帐户进行通信的连接。最初,所述连接也是供应商。
由UP小服务程序80使用、并由供应商模块84-86实现的接口定义了松散的文件夹层次。事实上,可以概念化为一组项目集合。例如,项目可以是消息、文件夹或联系方式或要表示的任何其他数据项。每个项目具有所定义的类型(如邮件、联系方式、约会等)。针对每种项目的接口定义了可用于该类项目的属性和动作。文件夹项目包括一组项目,并提供了列举文件夹内的项目的方法。
连接器接口模块81-83为UP小服务程序模块80提供了与不同供应商模块/接口连接器模块进行通信的公用方式。一些连接器模块可以只实现协议的子集和/或可以只支持项目的单一文件夹(集合),如在POP的情况下。
针对典型公用格式请求的基本流程如下进行。UP小服务程序模块80接收请求,其检索或创建适当的供应商/连接。然后,UP小服务程序模块80调用与接口连接器模块相关联的适当的“获取文件夹”或类似的函数,传递目标邮件系统标识符,如包括在公用格式请求中的URL等。接口连接模块返回对实现了文件夹接口并表示所请求的文件夹的一些对象的引用。在其最简单的实施方式中(例如POP),单一的对象可以作为接口连接器模块并且也表示邮箱文件夹。
UP小服务程序模块80使用返回的文件夹引用,并进行额外的调用,以满足公用格式请求。例如,如果UP小服务程序模块80需要检索指定的项目,可以首先调用“获取文件夹”函数,传递所请求的URL,在其得到文件夹之后,将调用“获取项目”函数,并再次传递URL。然后,将这些调用的结果格式化为适当的格式,如XML等,并在HTTP响应中返回。
将由供应商模块/接口连接模块进行输入URL的解译,并返回适当的引用。这并不复杂,因为供应商模块/接口连接模块首先提供URL。任何接口连接模块均需要知道的唯一URL是“\”。所有其他的URL由供应商/连接产生。只要层级结构/集合中的URL是唯一的,供应商就能在调用“获取”函数时解析出正确的项目。
供应商模块84-86和接口连接模块81-83优选地支持根文件夹。如果只支持根文件夹,如果能够通过协议引擎进行访问,则收件箱、日历和联系项目(适当的)应当是该文件夹内的项目。
根据本发明的一个方案,提供了访问多种协议的单一、有利机制。这种机制针对类似能力的客户端协议,支持每种数据系统协议的完全功能,并且在客户端协议不支持特定的数据系统协议特征时退化。在将请求转发给目的地服务器之前,将以公用格式接收到的请求翻译为供应商/协议专用格式。将来自目的地服务器的、供应商/协议专用格式的响应翻译回公用格式。
还为客户端提供了查询特定供应商模块的支持功能的机制,为客户端提供了对如何产生针对供应商的请求的更大控制。被编写为支持公用协议格式(直接或通过代理)的任何客户端可以容易地提供对任何邮件存储器的访问,而无需考虑其自身是否具有邮件存储器供应商模块/协议的细节。
现在,将参照图9,对协议接口设备14”的另一实施例进行描述。这里,将与要通过协议接口设备14”访问的电子邮件帐户相关联的用户电子邮件帐户信息存储在数据存储器90”中。每个帐户的信息优选地包括每个电子邮件帐户所支持的访问协议的指示。
数据存储器90”中的记录可以按照帐户标识符来排列,如电子邮件地址等,或者按照与协议接口设备14”相关联的用户名称来排列,从而在数据存储器90”中将针对特定用户的所有电子邮件帐户信息分组在一起。在访问协议支持对于每个邮件系统24”、26”上的所有电子邮件帐户均相同的情况下,每个帐户的信息可以包括指示每个邮件系统支持的操作协议的邮件系统信息。
数据存储器91”存储协议引擎模块32”支持的全部操作协议的列表、以及表示协议偏好程度的相应量度(即,排序)。根据容量标准来计算这些量度,如每个邮件系统24”、26”的特征中被协议支持的程度和协议的安全等级等。也可以使用其他标准,正如本领域普通技术人员所公知的那样。在数据存储器91”中,OWA将典型地具有比MAPI更高的量度或排序,以及IMAP将通常比POP的排序更高。例如,可以在协议接口设备14”处的本地硬盘或其他存储器上的数据库中、或者可以在协议接口设备与之通信的文件服务器上,实现数据存储器90”、91”中的每一个。
协议引擎模块32”确定命令或指令与哪个(哪些)邮箱或帐户相关,然后访问数据存储器90”中的每个帐户的信息,以确定针对要访问的每个帐户,是否支持一个以上的访问协议。如果只支持一个访问协议,则选择该协议。在针对该帐户,支持多于一个访问协议的情况下,协议引擎模块32”访问数据存储器91”以确定哪个所支持的协议是优选的或所需的,并选择具有最高量度或排序的所支持的协议。针对邮件系统24”,OWA优先于MAPI被选择,以及针对邮件系统26”,IMAP优先于POP被选择。
因此,协议接口设备14”允许使用最有能力的所支持协议,来访问邮件系统24”、26”。通过协议接口设备14”,向与代理模块34”、36”、38”、40”中的任何一个相兼容的客户端提供对一个或多个邮件系统24”、26”的访问。此客户端本身不需要支持与要访问的邮件系统相关联的访问协议或方案。
现在,将参照图9,对使用协议接口设备14”的数据系统访问协议选择方法进行描述。在方框160处开始,在方框161处,从客户端接收访问命令。确定(方框162)要响应于所述命令访问的每个数据系统是否支持多于一个访问协议。如果是,则在方框164处选择最有能力的所支持协议。否则,在方框163处,选择唯一的所支持协议。在方框165处,使用所选择的协议,访问每个数据系统,从而在方框166处,结束所示出的方法。在要访问多于一个数据系统的情况下,优选地,针对每个数据系统,重复在方框162-164处示出的协议选择步骤。
应当注意,协议和量度数据存储器91”只是可以根据本发明使用的协议偏好排序技术中的一个典型示例。例如,协议偏好可以是所支持协议的列表的排序所固有的。
在选择协议时,也可以考虑除量度或整体偏好以外的其他标准。从其接收到访问命令的客户端的类型也可以影响协议选择。例如,在从POP客户端接收到访问命令的情况下,OWA所支持的多种增强特征不能在用于向设备进行传送的POP中表现出来。如果用户只具有一种客户端用于访问协议接口设备14”,则可以调整每个帐户的信息以反映客户端的类型或者根据客户端的类型来限制所支持协议的列表。否则,协议选择中的另一步骤可以是确定从其接收到访问请求的客户端的类型。
可选地,总是选择由要访问的数据系统支持的最有能力协议,并在将数据翻译为客户端协议期间,处理所选访问协议与客户端所支持的协议之间的任何不兼容性。翻译与客户端协议所支持的接口协议元素相对应的部分数据,而根据缺省或错误处理方案忽略或处理不支持的接口协议元素。
一般说来,客户端通常通过代理访问服务器。而且,反应时间通常与要访问的集合的基数(例如,要访问的邮箱中的电子邮件消息的数量)正相关。由以下描述可知,本发明提供了可以由代理用来向客户端提供要访问的集合比其实际上小的错觉(illusion)的设备和技术。例如,代理可以只显示邮箱中最近的100个消息,虽然邮箱本身具有2000+个消息。本发明有利地允许此代理选择可以显示给客户端的较小子集来代替整个集合,而无需对用户的体验造成较大的冲击。
更具体地,现在转向图10,对协议接口设备14的另一有利实施例进行描述。一般说来,当从客户端接收到数据访问请求时,协议接口设备14访问一个或多个数据系统24、26。但是,在一些情况下,访问数据系统并给客户端提供响应可能会引起特定客户端协议的超时,并且比客户端的用户发出请求之后所预期的等待时间长。根据本发明的这一方案,可以将特定的数据存储在协议接口设备14处,可以用于减少响应时间。
更具体地,协议引擎模块32对数据系统24、26进行轮询,以确定其目前是否存储有与已经被配置为对其进行访问的用户相关联的数据项。例如,通过建立与之相关联的用户帐户,在协议接口设备14中配置用户。优选地,按照轮询间隔来执行轮询。轮询间隔可以是静态的预定轮询间隔或者是能够根据操作条件或特定事件的发生而进行调整的自适应轮询间隔,正如本领域普通技术人员所公知的那样。
响应于来自协议引擎模块32的轮询,给定的数据系统24、26将数据项(或者至少能够用于检索数据项的数据项标识符)返回给协议接口设备14。然后,协议引擎模块32将这些数据项或标识符存储在数据储存器或存储器92中。
具体地,协议引擎模块32可以确定在任何数据系统24、26中是否存储有针对用户的新数据。例如,在数据系统24、26是电子邮件系统的情况下,协议引擎模块32通过协议接口设备14查询针对电子邮件访问而配置的与每个用户相关联的邮箱。对于每个邮箱查询,邮件系统至少返回与存储在邮箱中的电子邮件消息相关联的唯一标识符(UID)列表。
然后,将当前的UID列表与UID存储器92中针对该邮箱的在先UID列表进行比较,以确定新消息是否已经被存储到邮件系统的邮箱中。如果检测到新消息,优选地,由协议引擎模块32与前端代理模块30(或协议接口设备14的另一组件)合作,向用户的客户端发送警告,并将包括新消息的当前UID列表存储在UID存储器92中。
最普通的数据访问操作之一是查看当前存储在数据系统处的数据项的列表,尤其是在数据项是存储在邮件系统上的消息的情况下。如上所述,协议引擎模块32轮询数据系统24、26中的一个或多个,以根据存储在UID存储器92中的UID列表来检测新数据项。因此,协议接口设备14具有上次轮询数据系统时、存储在数据系统24、26处的数据项的本地UID列表。
根据本发明的本方案,协议引擎模块32在接收到“查看项目”或类似的访问请求时从UID存储器92中检索所存储的UID列表。然后,将在当前轮询间隔内精确的已存储UID列表返回给请求客户端。这提供了比接收到请求时访问数据系统24、26更快的响应时间,正如本领域普通技术人员所公知的那样。
例如,在POP客户端的情况下,如果在30秒内未接收到对请求的响应,则客户端超时。在POP客户端运行在移动无线通信设备上的情况下,无线通信网络内的反应时间可能会引起与此限制响应时间极为相关的延迟。在这种情况下,与响应于数据访问请求提供已存储UID列表相关联的较快响应时间是尤为有利的。即使在缺少这种时间约束的情况下,较快的响应时间也将通过减少发送数据访问请求与接收响应之间的等待时间来改善客户端处的用户体验。
如上所述,已存储UID列表在轮询间隔内是精确的。当响应于数据访问请求,将已存储UID列表提供给客户端时,协议引擎模块32优选地轮询数据系统24、26以确定已存储UID列表是否仍然精确。如果自上次轮询以来已经在数据系统24、26处存储了新项目,则将新UID列表发送给客户端。可以根据轮询间隔来执行或由数据访问请求发起此对于数据系统24、26的进一步轮询。
应当清楚以上描述涉及“查看项目”或类似的数据访问请求。可以由协议接口设备14的其他组件或模块处理其他类型的数据访问请求。例如,如上所述,如果需要,由前端代理模块30翻译这些数据访问请求。
由此,协议接口设备14允许对数据系统24、26的访问,并提供针对多种数据访问请求的减少的响应时间。通过协议接口设备14,向与由前端代理模块30处理的任何协议相兼容的客户端提供对数据系统24、26中的一个或多个的访问。客户端本身不需要支持与要访问的数据系统24、26相关联的访问协议或方案,如上所述。
现在,参照图17,对使用协议接口设备14来减少对数据系统访问请求的响应时间的方法进行描述。在方框170处开始,在方框171处接收数据访问请求。然后,在方框172处,确定是否本地存储了与数据访问请求有关的数据(即UID列表)。在这种数据位于本地存储器92中的情况下,在方框173处,将已存储数据提供给请求客户端。在已经将已存储数据传输给客户端之后,或者如果未存储这些数据,在方框174处,轮询数据访问请求所涉及的数据系统24、26。
然后,可以在方框175处,执行确定响应于轮询而接收到的轮询数据是否与已存储数据不同的可选步骤。如果不同,这意味着有新数据存储在数据系统24、26上,并在方框176处,将响应于轮询而接收到的数据提供给客户端。在方框177处,将其也本地地存储在数据存储器92中,从而结束所示出的方法(方框178)。
作为示例,根据本发明各个方案的数据访问系统和方法可以应用于除邮件系统以外的其他类型的数据存储设备、以及除以上具体描述和在附图中示出的协议和访问方案以外的其他协议和访问方案。
本发明的额外特征可以在以下未授权的申请中找到:COMMUNICATIONS SYSTEM PROVIDING REDUCED ACCESS LATENCY ANDREALTED METHODS,代理卷号ID-494;COMMUNICATIONS SYSTEMINCLUDING PROTOCOL INTERFACE FOR MULTIPLE OPERATING PROTOCOLSAND RELATED METHODS,代理卷号ID-493;COMMUNICATIONS SYSTEMPROVIDING MULTI-LAYERED EXTENSIBLE PROTOCOL INTERFACE ANDRELATED METHODS,代理卷号ID-503;COMMUNICATIONS SYSTEMPROVIDING EXTENSIBLE PROTOCOL TRANSLATION FEATURES AND RELATEDMETHODS,代理卷号ID-507;COMMUNICATIONS SYSTEM WITH DATASTORAGE DEVICE  INTERFACE PROTOCOL CONNECTORS AND RELATEDMETHODS,代理卷号ID-506;和COMMUNICATIONS SYSTEM PROVIDINGEXTENS IBLE PROTOCOL INTERFACE TRANSLATION AND CONFIGURATIONFEATURES AND RELATED METHODS,代理卷号ID-502,其全部公开一并在此作为参考。
示例
在以下参照图18的示例中,进一步描述能够用在本发明中的典型手持移动无线通信设备1000。设备1000包括外壳1200、键盘1400和输出设备1600。所示输出设备是显示器1600,优选地是全图形LCD。也可以采用其他类型的输出设备。外壳1200内包含处理设备1800,其连接在键盘1400和显示器1600之间。处理设备1800响应于用户对键盘1400上的按键的触动,控制显示器1600的操作,以及移动设备1000的整体操作。
外壳1200可以是纵向延长的或者可以采用其他尺寸和形状(包括蚌式外壳结构)。键盘可以包括模式选择键、或用于在文本输入和电话输入之间进行切换的其他硬件或软件。
除了处理设备1800,在图18中示意性地示出了移动设备1000的其他部件。包括通信子系统1001;短距离通信子系统1020;键盘1400和显示器1600,以及其他输入/输出设备1060、1080、1100和1120;以及存储设备1160、1180和多种其他设备子系统1201。优选地,移动设备1000是双向RF通信设备,具有语音和数据通信能力。此外,优选地,移动设备1000具有通过因特网与其他计算机系统进行通信的能力。
优选地,将由处理设备1800执行的操作系统软件存储在永久存储器中,如闪速存储器1160等,但也可以存储在其他类型的存储设备中,如只读存储器(ROM)或类似的存储元件。此外,可以将系统软件、专用设备应用程序或其中的一部分临时加载到易失性存储器中,如随机存取存储器(RAM)1180等。将移动设备接收到的通信信号也存储在RAM1180中。
除了其操作系统功能以外,处理设备1800还能够在设备1000上执行软件应用程序1300A-1300N。可以在制造期间,将控制基本设备操作的预定应用程序集(如数据和语音通信1300A和1300B)安装到设备1000上。此外,可以在制造期间,安装个人信息管理器(PIM)应用程序。优选地,PIM能够组织和管理如电子邮件、日历事件、语音邮件、约会和任务项等数据项。优选地,PIM应用程序还能够通过无线网络1401发送和接收数据项。优选地,PIM数据项通过无线网络1401与存储或与主机系统相关联的设备用户的对应数据项进行无缝地整合、同步和更新。
通过通信子系统1001以及可能会通过短距离通信子系统,执行包括数据和语音通信的通信功能。通信子系统1001包括接收机1500、发射机1520以及一个或多个天线1540和1560。此外,通信子系统1001也包括处理模块(如数字信号处理器(DSP)1580等)以及本地振荡器(LO)1601。通信子系统1001的具体设计和实施方式依赖于移动设备1000将要在其中进行操作的通信网络。例如,移动设备100可以包括设计用于与MobitexTM、Data TACTM或通用分组无线服务(GPRS)移动数据通信网络进行操作的通信子系统1001,以及可以设计用于与多种语音通信网络中的任意网络进行操作,如AMPS、TDMA、CDMA、PCS、GSM等。其他类型的数据和语音网络(分离的和集成的)也可以与移动设备1000一起使用。
网络访问要求根据通信系统的类型而变化。例如,在Mobitex和DataTAC网络中,移动设备使用与每个设备相关联的唯一个人标识号或PIN登记在网络上。但是,在GPRS网络中,网络访问与设备的订户或用户相关联。因此,GPRS设备需要订户身份模块,通常称为SIM卡,以便在GPRS网络上进行操作。
当已经完成所需的网络登记或激活程序时,移动设备1000可以在通信网络1401上发送和接收通信信号。将通过天线1540从通信网络1401接收到的信号路由到接收机1500,接收机1500提供信号放大、频率下转换、滤波、信道选择等,并且也可以提供模拟数字转换。接收信号的模拟数字转换允许DSP1580执行更为复杂的通信功能,如解调和解码等。按照类似的方式,DSP 1580对要传输到网络1401的信号进行处理(如调制和编码等),然后将其提供给发射机1520,进行数字模拟转换、频率上转换、滤波、放大,并通过天线1560传输到通信网络1401(或网络)。
除了处理通信信号以外,DSP 1580提供对接收机1500和发射机1520的控制。例如,可以通过在DSP 1580中实现的自动增益控制算法自适应地控制接收机1500和发射机1520中应用于通信信号的增益。
在数据通信模式下,由通信子系统1001处理接收到的信号(如文本消息或网页下载等),并输入处理设备1800。然后,由处理设备1800对接收到的信号进行进一步的处理,以便输出到显示器1600,或者代替地输出到一些其他的辅助I/O设备1060。设备用户也可以利用键盘1400和/或一些其他的辅助I/O设备1060(如触摸板、摇臂开关、拇指轮或一些其他类型的输入设备)来编写数据项,如电子邮件消息等。然后,可以通过通信子系统1001,在通信网络1401上传输所编写的数据项。
在语音通信模式下,设备的整体操作实质上类似于数据通信模式,除了将接收到的信号输出到扬声器1100,以及要传输的信号由麦克风1120产生以外。可以在设备1000上实现可选语音或音频I/O子系统,如语音消息记录子系统等。此外,在语音通信模式下也可以使用显示器1600,例如,用于显示呼叫方的身份、语音呼叫的持续时间、或其他语音呼叫相关信息。短距离通信子系统实现了移动设备100与其他附近系统或设备(不必是类似的设备)之间的通信。例如,短距离通信子系统可以包括红外设备和相关电路和组件、或蓝牙TM通信模块,以便提供与类似启用系统和设备之间的通信。
根据以上描述和相关附图,本领域普通技术人员将意识到本发明的多种修改和其他实施例。因此,应当理解本发明并不局限于这里所公开的具体实施例,而是倾向于将修改和实施例包括在所附权利要求的范围内。
计算机程序列表
程序列表#1-典型认证请求
         PROPFIND/ups HTTP/1.1
         Depth:0
         Brief:t
         Pragma:no-cache
         Content-Type:text/xml
         X_UP_LOGIN:
svr=login.oscar.aol.com&prt=5190&ssi=0&pcol=aol&uid=******&pwd=******&pwp=
         X_UP_SYNC:false
         X_UP_REFRESH_CACHE:force
         X_UP_NEWCON:1
         User-Agent:Mozilla/4.0(compatible;MSIE 5.5;Windows NT5.0)
         Connection:Keep-Alive
         Host:localhost:9080
         Content-Length:664
         <?xml version=″1.0″?>
         xmlns:hm=″urn:schemas:httpmail:″xmlns:up=″ urn:schemas:corp:universalproxy″>
          
            
            
            
            
            
            
            
            
            
            
            
            
            
            
         

      
      HTTP/1.1 207 Multi-Status
      Set-Cookie:JSESSIONID=C70CD1AED7D2BE210B34D93F7ACD6935:Path=/ups
      Content-Type:text/xml
      Transfer-Encoding:chunked
      Date.Wed,06 Aug 2003 18:20:28GMT
      Server.Apache Coyote/1.0
    <?xml version=″1.0″encoding=″UTF-8″?>
        xmlns:c=″u:schemas:calendar:″xmlns:a=″urn:schemas:contacts:″
    xmlns:hm=″urn:schemas:httpmail:″xmlns:m=″urn:schemas:mailheader.″>
     
       http://localhost9080/ups/
       
         HTTP/1.1 200 OK
         
          http://localhost9080/ups/INBOX/
    http://localhost9080/ups/AOL_MAIL_SUBMISSION_URL/
          http://localhost:9080/ups/Sent ltems/
          http://localhost:9080/ups/
        

       

      

    
程序列表#2-典型收件箱请求
     Query Folder Capabilities
     REQUEST:
     OPTIONS/ups/INBOX/HTTP/1.1
     User-Agent: Mozilla/4.0(compatible;MSIE 5.5;Windows NT5.0)
     Connection: Keep-Alive
     Host localhost9080
     Cookie:JSESSIONID=C70CD1AED7D2BE210B34D93F7ACD6935
     Content-Length:0
     RESPONSE:
     HTTP/1.1 200 OK
     allow: OPTIONS,PROPFIND,MOVE,DELETE,BDELETE,BMOVE,SEARCH
     dasl: 
     Content-Type: text/plain
     Content-Length:0
     Date: Wed,06 Aug 2003 18:20:28GMT
     Server:Apache Coyote/1.0
     List messages in INBOX:
     REQUEST:
     PROPFIND/ups/INBOX/HTTP/1.1
     Range:rows=0-24
     Depth:1,noroot
     Brief:t
     Pragma:no-cache
     Content-Type:text/xml
     X_UP_REFRESH_CACHE:force
     User-Agent: Mozilla/4.0(compatible;MSIE 5.5;Windows NT5.0)
     Connection: Keep-Alive
     Host localhost:9080
     Cookie:JSESSIONID=C70CD1AED7D2BE210B34D93F7ACD6935
     Content-Length:586
     <?xml version=″1.0″?>
     xmlns:up=″urn :schemas:corp:universalprroxy″>
      
       
       
       
       
       
       
       
       
       
       
       
       
      

    
         RESPONSE:
         HTTP/1.1207 Multi-Status
         Content-Range:rows 0-8:total=9
         Content-Type:text/xml
         Transfer-Encoding:chunked
         Date:Wed,06 Aug 2003 18:20:28GMT
         Server:Apache Coyote/1.0
         <?xml version=″1.0″encoding=″UTF-8″?>
         xmlns:c=″urn:schemas:calendar.″xmlns:a=″urn:schemas:contacts:″xmlns:hm=″urn:schemas:httpmail:″
xmlns:m=″urn:schemas:mailheader″.>
         0-8
         
          http://localhost:9080/ups/INBOX/6623963:1
          
           HTTP/1.1 200 OK
           
            3ac59b38c08ad3356435efea144660e3
            0
            0
            0
            0
            1
            Mail Delivery Subsystem<.MAILER-DAEMON@aol.com>
            Retumed mail: User unknown
            2003-08-05T23:12:48Z
            0
            3247
            urn:content-classes:message
           

         

       

       
         http://localhost:9080/ups/INBOX/6623954:1
         
          HTTP/1.1 200 OK
          
           51073b22a28c2820115bc80d42e8c6ec
           0
           0
           1
           0
           1
           johnsmith@demo.com
           Re:Test#1-All-French template
           2003-08-05T2310:30Z
           0
           1577
           urn:content-classes:message
         

        
      

      
        http://localhost:9080/ups/INBOX/6623926;1
        
          HTTP/1.1 200 OK
          
            b072c3748ceff1320f9fa746f797e64b
            0
            0
            1
            0
            1
            johnsmith@demo.com
            Re:xxxFWD:Re:Test#1
            2003-08-05T23:07:18Z
            0
            1927
            urn:content-classes:message
          

        

      

      
        http://localhost9080/ups/INBOX/6623922:1
        
         HTTP/1.1 200 OK
         
          11f1c8e69555d33971aea12c09be5021
          0
          0
          1
          0
          1
          johnsmith@demo.com
          Re:xxxFWD:Re:Test#1
          2003-08-05T23:06:45Z
          0
          1930
          urn:content-classes:message
       

     

   

   
     http://localhost:9080/ups/INBOX/6623915;1
     
      HTTP/1.1 200 OK
      
       55bc30adfb4fb66f3d 11 b04 16c82b701
       0
       0
       1
       1
       1
       johnsmlth@demo.com
       xxxFWD:Re:Test#1
       2003-08-05T23:05:27Z
       0
       3254
       urn:content-classes:message
     

  



  http://localhost:9080/ups/INBOX/6623910:1
  
   HTTP/1.1 200 OK
   
     07cdf24a06f8e849754f90fe6dc8bf4f
     0
     0
     1
     0
     1
     johnsmith@demo.com
     Re:Test#1-All
     2003-08-05T23:04:31Z
     0
     1258
     urn:content-classes:message
   

  



  http://localhost9080/ups/INBOX/6623909;1
  
    HTTP/1.1 200 OK
    
      0e79a3593253ffb9596bf9d86873f498
      0
      0
      1
      0
      1
      johnsmith@demo.com
      Re:Test#1
      2003-08-05T23:04:13Z
      0
      1241
      urn:content-classes:message
    

  



  http://localhost:9080/ups/INBOX/6605332;1
  
    HTTP/1.1 200 OK
    
      6060b944e60256c814498af29e5fOe47
      0
      0
      0
      0
      1
      aolmbrsecurity@aol.com
      Security Notice to AOL Members
      2003-08-01T23:00:58Z
      0
      5137
      urn:content-classes:message
    

  



  http://localhost:9080/ups/INBOX/6567082;1
  
    HTTP/1.1 200 OK
     
      f47b72c8c1aa91458f40f8 1fce3b5e05
        0
        0
        0
        0
        1
        aolmemberinfo@aol.com
        Corning Soon-AOL 9.0 Optimized
        2003-07-25T21:15:22Z
        0
        10012
        urn:content-classes:message
      

    

  


程序列表#3-典型文件夹搜索请求
    Capabilities of folder:
    REQUEST:
    OPTIONS/ups HTTP/1.1
    User-Agent:Mozilla/4.0(compatible;MSIE 5.5;Windows NT5.0)
    Connection:Keep-Alive
    Host:localhost:9080
    Cookie:JSESSIONID=C70CD1AED7D2BE210B34D93F7ACD6935
    Content-Length:0
    RESPONSE:
    HTTP/1.1200 OK
    allow:OPTIONS,PROPFIND,MOVE,DELETE,BDELETE,BMOVE,SEARCH
    dasl:
    Content-Type:text/plain
    Content-Length:0
    Date:Wed,06 Aug 2003 18:20:28 GMT
    Server:Apache Coyote/1.0
    Search for folders:
    REQUEST:
    SEARCH/ups HTTP/1.1
    Depth:1,noroot
    Brief.t
    Pragma:no-cache
    Content-Type:text/xml
    User-Agent:Mozilla/4.0(compatible;MSIE 5.5;Windows NT5.0)
    Connection:Keep-Alive
    Host localhost:9080
    Cookie:JSESSIONID=C70CD1AED7D2BE210B34D93F7ACD6935
    Content-Length:922
    <?xml version=″1.0″?>
    
      
       
       
       
       
      

      
       
        url
        1
      

    

        
         
           
          urn:content-classes:mailifolder
         

        

      

     
     RESPONSE:
     HTTP/1.1 207 Multi-Status
     Content-Type:text/xml
     Transfer-Encoding:chunked
     Date:Wed,06 Aug 2003 18:20:28 GMT
     Server:Apache Coyote/1.0
     <?xml version=″1.0″encoding=″UTF-8″?>
     xmlns:c=″urn:schemas:calendar.″xmlns:a=″urn:schemas:contacts:″xmlns:hm=″urn:schemas:httpmail:″
xmlns:m=″urn:schemas:mailheader:″>
     
      http://localhost:9080/ups/INBOX/
      
        HTTP/1.1 200 OK
        
          c90d66b2362a1a0bc3df1852021a6f63
          urn:content-classes:mailfolder
          INBOX/
         

       

      
      
       http://localhost:9080/ups/VOICE-MAIL/
       
        HTTP/1.1 200 OK
        
         cabbce34709ab79d2ad2d5334d998272
         urn:content-classss:mailfolder
         VOICE-MAIL
        

       

      

    
程序列表#4-典型配置文件
            contentclass=″urn:content-classes:mailfolder″
        javaclass=″com.teamon.proxy.data.impl.MailFolderdmpl″
        responsecacheduration=″0″
        cachestrength=″0″>
       
        
        
        
        
        
        
                 <?xml version=″1.0″?>
                   xmlns:D=″DAV:″
          xmlns:hm=″urn:schemas:httpmail:″
          xmlns:m=″urn:schemas:mailheader:″
          xmlns:up=″urn:schemas:teamon:universalproxy″>
        
         
         
         
         
         
         
         
         
         
         
         
         
        

       
       ]]>