用于生成请求数据并在联网应用程序之间传递该数据的系统和方法

文档序号:6566795阅读:662来源:国知局

专利名称::用于生成请求数据并在联网应用程序之间传递该数据的系统和方法
技术领域
:本发明各实施例涉及计算机通信领域,尤其涉及以带有名空间、名空间内的事件、以及这些事件的参数的模式为形式的数据请求。
背景技术
:一些服务器部署的、基于web的邮件应用程序允许用户访问它们的集中放置的邮箱。这些应用程序也提供了从诸如因特网等网络发送和接收电子邮件(email)、安排预约以及执行其他个人信息管理(PIM)任务的能力。这些应用程序中的一些在浏览器中执行,并且伴随着其他PIM应用程序。这种客户机web应用程序要求大量的客户机-服务器通信能够实现PIM功能。例如,当用户刷新收件箱中的email列表以检査新邮件时,web请求被发送给服务器以检索收件箱内新的email列表。对于一些客户机应用程序,客户机-服务器通信是对超文本传输协议(HTTP)的网络发布认证及版本控制(WebDAV)扩展和其他各种模式(例如,基于HTTPPOST请求中的简单化名称-值对)的混合。在这些先前的系统中使用多个协议进行数据访问增加了实现的复杂性,并且导致了较差的可维护性。这些先前的系统也对请求使用不一致和不充分的模式。诸如在一些先前的系统中使用的名称-值格式是非常有限的,并且不能容易地支持强类型数据或更复杂的结构或数组。此外,由于名称-值格式要求将分行符作为名称-值对的分隔符,因此特定名称-值对的所有数据在传输之前必须不带分行符地进行编码,然后在接收时解码。在某些现有系统中,这些额外的步骤减慢了处理并增加了复杂性。然而,一些现有web客户机应用程序的另一问题是向客户机应用程序提供各种功能的服务器侧代码是无序的和混乱的。向现有系统的服务器侧代码添加新的请求处理器是困难的。相应地,期望一种用于客户机-服务器通信的经改进系统,以解决这些和其他缺点中的一个或多个
发明内容本发明各实施例包括用于生成请求数据,并在联网的应用程序之间传递它们的协议和模式。在一个实施例中,本发明还包括对生成请求数据的请求处理器的开发者可用的一种体系结构和一组应用编程接口(API)。API使得开发者能够创建定制请求处理器。在本发明的一个客户机-服务器实施例中,根据本发明的客户机根据本发明明确定义的模式将数据请求发送给服务器。该请求标识了请求处理器名空间、请求处理器名空间内的事件处理器、以及该事件处理器的一个或多个参数。本发明包括分组到服务器中的请求处理器名空间中的事件处理器的体系结构,该服务器如每个客户机所要求地以多种格式向客户机传送响应。服务器体系结构解析请求以标识特定名空间中的特定事件处理器,并根据请求参数执行与已标识的事件处理器相关联的处理器代码。本发明是功能强大但轻便且可升级的。对请求使用一致的模式简化了应用程序之间的交互,并有利于请求处理器的可维护性的改进。本发明的模式支持复杂的数据结构。本发明支持请求处理器的添加,而无需改变用于生成和传送请求数据的体系结构。根据本发明的一个方面,系统包括用于存储多个事件处理器的一个或多个计算机可读介质,这些事件处理器各自具有与之相关联的名空间。多个事件处理器的每一个还具有与之相关联的一个或多个参数。计算机可读介质存储表示格式化数据请求的数据结构。该数据结构包括存储表示名空间的名空间值的名空间字段、存储对应于多个事件处理器之一的事件处理器字段。多个事件处理器之一与名空间字段中的名空间值所表示的名空间相关联。数据结构也包括存储对应于参数之一的参数值的参数字段。参数之一与由事件处理器字段中的事件处理器值表示的事件处理器相关联。系统还包括由第二进程使用的第一进程。第一进程被配置成执行计算机可执行指令,用于从用户或进程接收数据请求、标识与接收到的请求相关联的名空间值、根据接收到的请求和所标识的名空间值选择事件处理器值、以及根据接收到的请求和选定的事件处理器值确定参数值。第一进程还通过将经标识的名空间值存储在名空间字段中、将选定的事件处理器值存储到事件处理器字段中、以及将确定的参数值存储到参数字段中来填充数据结构。第一进程还将填充后的数据结构发送给第二进程。第二进程被配置成执行计算机可执行指令,用于从第一进程接收填充后的数据结构;根据接收到的数据结构从存储在计算机可读介质中的多个事件处理器中选择一个事件处理器;执行选定的事件处理器以生成结果数据;并且将所生成的结果数据发送给第一进程。根据本发明的另一方面,计算机实现方法生成数据,并将数据从一个进程传送到另一进程。该计算机实现方法包括由第一进程从用户处接收数据请求、并标识与接收到的请求相关联的名空间。该方法也包括由第一进程根据接收到的请求确定与所标识的名空间相关联的事件处理器。该方法还包括由第一进程根据接收到的请求填充与所确定的事件处理器相关联的参数,并且用所标识的名空间、所确定的事件处理器以及填充后的参数创建格式化的请求。该方法还包括从第一进程将所创建的格式化请求发送到第二进程。该方法还包括由第二进程从第一进程接收格式化的请求,并根据接收到的格式化请求从存储在存储区域中的多个事件处理器选择一个事件处理器。该计算机实现方法也包括由第二进程执行选定的事件处理器以生成结果数据,并将生成的结果数据从第二进程发送到第一进程。根据本发明的又一方面,一个或多个计算机可读介质具有用于在联网环境中生成和传递所请求数据的计算机可执行组件。这些组件包括服务器部署的客户机组件,用于从用户处接收数据请求;标识与接收到的请求相关联的名空间;根据接收到的请求确定与所标识的名空间相关联的事件处理器;根据接收到的请求填充与所确定的事件处理器相关联的参数;用所标识的名空间、所确定的事件处理器以及填充后的参数创建格式化的请求;并且将所创建的格式化请求发送给服务器组件。这些组件还包括服务器组件,用于从服务器部署的客户机组件接收所发送的请求;根据接收到的请求从存储在存储区域中的多个事件处理器中选择一个事件处理器;执'行选定的事件处理器以生成结果数据;并且将生成的结果数据发送给服务器部署的客户机组件。可替换地,本发明可包括各种其他的方法和装置。其他特征部分地是显而易见的,部分地将在下文中指出。图1是示出经由网络与一个或多个客户机组件通信的服务器组件的示例性框图。图2是示出用于传递所请求数据的客户机和服务器进程的操作的示例性流程图。图3是示出服务器组件中的模块的示例性框图。图4是示出一组示例性事件处理器类的示例性框图。图5是可在其中实现本发明的合适计算系统环境的一个示例的框图。附录A描述了本发明的电子邮件名空间中的示例性事件和参数。在所有的附图中,相应的参考标号指示相应的部分。具体实施例方式在一个实施例中,本发明包括响应于来自客户机应用程序的数据请求将数据传送给服务器部署的客户机应用程序、组件、进程等的服务器应用程序、组件、进程等,诸如图1所示。在服务器组件102上,用于响应数据请求(诸如数据请求103)的代码或例程被分成事件处理器(例如多个事件处理器104)等。在一个实施例中,事件处理器104被逻辑地组织到名空间中。特别地,本发明包括构建包含有关名空间和要执行的事件处理器、以及对该处理器的参数的信息的诸如数据请求103的请求。本发明还包括服务器102中的体系结构,该体系结构使得开发者能够实现将传送对数据请求的响应的请求处理器。.本发明的一个示例涉及分布式个人信息管理应用程序中的日历视图。日历视图示出了给定日期的预约列表。服务器102通过查询数据库以检索给定时间范围内的预约来刷新日历中的该视图。接着取决于每个预约的开始时间和持续时间于正确位置在客户机(例如客户机组件108)中画出检索到的预约。在先前的系统中,这样的刷新操作是由客户机组件108实现的,该客户机组件108查询数据以便使用对超文本传输协议(HTTP)的网络发布认证及版本控制(WebDAV)扩展以可扩展标记语言(XML)格式返回、使用可扩展模式定义(XSD)转换以从XML数据生成HTML、并将HTML呈现给用户。这种系统是复杂且难以维护的。然而,在本发明中,日历刷新是通过客户机组件108发送格式化的数据请求(例如数据请求103)并接收定义日历数据的代码流(例如JavaScript)来实现的。日历数据部分地在服务器102中呈现。客户机组件108执行代码并使用脚本生成HTML标记。由于多数的日历数据和显示信息在服务器102上预先计算,因此降低了客户机组件108的负担。在本发明的另一示例中,服务器102通过返回已在服务器102中呈现的HTML来刷新PIM应用程序的邮件视图。本发明不限于以任何特定的格式返回数据。相反,本发明以客户机组件108指示的任何形式返回数据,这些形式诸如HTML、XML、文本、JavaScript有效载荷等。再参考图1,示例性框图示出了服务器组件、进程等,诸如经由网络(例如因特网)与一个或多个客户机组件108、进程通信的服务器组件102,这些客户机组件诸如客户机组件#1到客户机组件^N。图1的系统包括一个或多个计算机可读介质,诸如存储区域106。存储区域106存储多个事件处理器104,它们各自具有与之相关联的名空间。多个事件处理器104的每一个还具有与之相关联的一个或多个参数。表示格式化数据请求103的数据结构也被存储在计算机可读介质中。在图1中,示出数据请求是从客户机组件108发送给服务器组件102的。表示数据请求103的数据结构包括存储表示名空间的名空间值的名空间字段。该数据结构还包括存储与存储在存储区域106中的多个事件处理器104之一相对应的事件处理器值的事件处理器字段,该存储区域106与名空间字段中的名空间值所表示的名空间相关联。数据结构还包括存储对应于与事件处理器相关联的参数的至少一个参数值的参数字段,所述事件处理器由事件处理器字段中的事件处理器值表示。在图1的示例中,客户机组件108是第一进程,且服务器组件102是第二进程。第一进程是分布式客户机应用程序、或者是由第二进程用来提供服务器组件102的部分或所有功能的。例如,第一进程可以是服务器部署的客户机应用程序,诸如服务器部署的个人信息管理客户机,而服务器组件102可以是个人信息管理服务器。然而,本发明不限于第一进程和第二进程之间的客户机-服务器管理。例如,第一进程和第二进程之间的关系可以是对等关系。在一个实施例中,第一进程被配置成用于从第二进程请求数据的计算机可执行指令。特别地,第一进程从用户或进程接收数据请求。例如,请求可包括检查最近接收的电子邮件的请求、更新日历显示的请求、或者任何其它数据请求。第一进程标识与接收到的请求相关联的名空间值,并根据接收到的请求和所标识的名空间值选择事件处理器值。选定的事件处理器对于来自用户的特定请求是特定的,并且是与所标识的名空间值相关联的多个事件处理器104中的一个。选定的事件处理器具有一个或多个参数。第一进程对选定的事件处理器的一个或多个参数确定参数值。使用来自所接收到的请求的数据来确定参数值。该参数值可以包括任何类型的数据,并且可以用第二进程可识别的任何格式表达(例如可扩展标记语言)。第一进程通过将所标识的名空间值存储在名空间字段中,将选定的事件处理器值存储到事件处理器字段中,并将所确定的参数值存储到参数字段中来填充表示数据请求103的数据结构。第一进程将填充后的数据结构(例如数据请求103)发送给第二进程。在一个实施例中,填充后的数据结构包括一系列数据-值对。例如,名空间字段和名空间值是一名称-值对,事件处理器字段和事件处理器值是一名称-值对,参数字段和参数值是一名称-值对。第二进程被配置成执行用于生成请求的数据并将其传送给第一进程的计算机可执行指令。在一个实施例中,第二进程从第一进程接收填充后的数据结构(例如数据请求103),并从存储在存储区域106中的多个事件处理器104选择一个事件处理器。选定的事件处理器对应于在接收到的数据请求103中指定的事件处理器。第二进程使用来自接收自第一进程的数据请求103的参数来执行选定的事件处理器,以生成结果数据。第二进程将生成的结果数据发送给第一进程。在一个实施例中,第二进程通过査阅载有有关可用名空间、事件处理器(例如多个事件处理器104)和参数的信息的配置数据库来选择适当的事件处理器。例如,第二进程包括用于在从第一进程接收数据请求103之前构建配置数据库的注册组件。例如,多个事件处理器104可按照名空间在配置数据库中组织起来。本发明包括用于存储多个事件处理器104的装置、用于执行第一进程的装置以及用于执行第二进程的装置。诸如数据结构、用户界面、应用程序、应用编程接口(API)、计算机可执行指令、固件等(诸如附图中所示)等硬件和软件构成了用于存储多个事件处理器104的装置,用于执行第一进程的装置以及用于执行第二进程的装置。在一个实施例中,本发明使用带有POST(发送)或GET(取得)动词的HTTP请求来实现。请求包括如下信息名空间(例如,URL査询串中示为参数"ns")、事件名称(例如,URL查询串中示为参数"ev")以及一个或多个请求参数。这些参数或者在POST请求的XML中,或者作为GET请求的名称-值对。本发明的一示例性GET请求(例如数据请求103)如下。URL:/mail/ev.owans=CalendarView&ev=Refresh&d=11142004T00:00:00Z在该示例中,客户机(例如客户机组件108)请求服务器(例如服务器组件102)执行"CalendarView"(日历视图)名空间中的"Refresh"(刷新)处理器。客户机组件108传递名称为"d"并带有值11/14/200412am的类型为日期的参数。服务器组件102取决于实现返回该视图的标记或JavaScript有效载荷。本发明的一示例性POST请求(例如数据请求103)如下。URL:/mdlserver/ev,owans-Messaging&ev-SaveMessage主体〈params〉<subject>Testemail</subject><to><item>userA@pageA.net</item><item>userB@pageA.net</item><to><body>Testsomething</body></params>在该示例中,客户机组件108请求服务器组件102执行(Messaging'(消息传送)名空间中的'SaveMessage'(保存消息)事件处理器。事件参数是主题(字符串)、至(字符串数组)以及主体(字符串)。对该事件的响应是指示成功或出错的HTTP结果。在该情况下,无需返回标记。参数可以是XML形式,或者是服务器可理解的任何其他语言格式。接着参考图2,示例性流程图示出了用于传递所请求数据的客户机和服务器进程的操作。图2的流程图反映了一种用于生成数据并将其从一个进程发送到另一进程的计算机实现方法。该方法包括在202由诸如图1中的客户机组件108等第一进程从用户处接收数据请求,在204标识与接收到的请求相关联的名空间。该方法还包括在206根据接收到的请求确定与所标识的名空间相关联的事件处理器,并且在208根据接收到的请求填充与所确定的事件处理器相关联的参数。该方法还包括在210使用所标识的名空间、确定的事件处理器以及填充后的参数创建格式化请求(例如图1中的数据请求103)。该方法在212将多创建的格式化请求从第一进程发送到第二进程(例如服务器组件102)。本发明的方法包括在214由第二进程从第一进程接收格式化请求。该方法在215基于接收到的请求选择名空间。该方法还包括在216由第二进程根据接收到的格式化请求从存储在一个或多个计算机可读介质(例如图1中的存储区域106)中的多个事件处理器(例如图1中的多个事件处理器104)中选择一个事件处理器,。该方法在217解析和验证接收到的请求中的参数。该方法还包括在218执行选定的事件处理器以生成结果数据,并在220将生成的结果数据从第二进程发送到第一进程。在一个示例中,第一进程接收结果数据并将该数据显示给用户。开发者或其他用户可以创建用户定义的名空间、事件处理器和/或参数。本发明的方法还包括由第一进程从用户处接收用户定义的名空间、与用户定义的名空间相关联的用户定义的事件处理器、和/或用户定义的事件处理器的用户定义参数。第一进程向第二进程注册接收到的用户定义名空间、用户定义事件处理器和/或用户定义参数。第二进程注册接收到的用户定义名空间、用户定义事件处理器以及用户定义参数,而无需改变第二进程的体系结构。即,实现第二进程的代码(例如服务器组件)无需因注册而改变。第二进程的体系结构以与第二进程访问其它名空间、事件处理器和参数值相同的方式来访问所注册的用户定义名空间、事件处理器或参数。在一个实施例中,一个或多个计算机可读介质具有用于执行如图2所示的计算机实现方法的计算机可执行指令。接着参考图3,示例性框图示出了服务器组件中的模块。这些模块在由服务器组件产生的请求线程302中调用。在一个实施例中,事件处理器是实现IHttpHandler接口的HTTP处理器。本发明调用该接口中的ProcessR叫uest方法,该方法使得处理器类能够运行处理请求的代码。HTTP处理器工厂是实现IhttpHandlerFactory接口的类。这种对象用于创建用于处理请求的HTTP处理器对象的实例。在图3的示例中,示出了称为EventHandlerFactory(事件处理器工厂)304的HTTP处理器工厂类。本发明(例如HTTP应用程序306)例示了该类的对象(例如EventHandlerBase(事件处理器基础)实例308)并调用IHttpHandlerFactory接口的"GetHandler"方法,该方法基于请求的名空间创建了合适的HTTP处理器类的实例(例如EventHandlerBase子类)。HTTP应用程序306和EventHandlerBase实例308访问HTTP环境314。EventContext(事件环境)312对象是包含有关请求的信息(例如请求的名空间、事件名称以及参数)的数据结构。EventHandlerRegistry(事件处理器登记表)310是用作有关名空间和由应用程序实现的它们的事件处理器,以及所支持的定制数据结构以及枚举的信息的储存库的类。在应用程序启动时,应用程序使用该储存库310来注册EventHandlerBase。本发明扫描该类(例如使用反射)来确定名空间、名空间中的事件以及事件的参数。该信息被存储,并在以后处理请求和解析参数期间使用。图3示出了根据本发明的执行请求的示例性流程。本发明接收根据本发明的数据请求,创建EventHandlerFactory类的实例,并在所创建的实例上调用GetHandler。EventHandlerFactory的GetHandler实现査看査询串以找出名空间和事件名称,并且对EventHandlerRegistry310搜索对应于查询串中名空间和事件名称的处理器类。如果本发明找到所请求的事件处理器,则本发明创建该事件处理器的实例。还创建EventContext312。本发明调用事件处理器上的ProcessRequest。ProcessR叫uest使用对请求本身特定的解析器类来解析请求的参数(例如请求是GET动词还是POST动词)。解析类解析请求中的参数,并使用EventHandlerRegistry310来做任何类型的转换,并确保模式是正确的(例如确保设置了该处理器要求的所有参数)。此时,参数可以存储在环境的一集合中。本发明执行与事件处理器相关联的事件处理器代码(例如执行处理器类中的方法)。该代码访问环境中的参数,执行处理,并以请求实体指定的任何形式将响应写入到请求实体中。接着参考图4,示例性框图示出了继承自EventHandlerBase(事件处理器基础)402的一组样本事件处理器类。EventHandlerBase402实现IhttpHandler(Ihttp处理器)接口404。CalendarEventHandler(日历事件处理器)406、MessagingEventHandler(消息传送事件处理器)408以及MessageViewEventHandler(消息查看事件处理器)410继承自EventHandlerBase402。开发者或者其它用户可通过创建名空间、标识名空间中的事件以及定义事件的参数来创建定制事件处理器,诸如图4所示。用户定义的名空间、事件处理器和/或参数可以是用户选定的(例如现有名空间内的新事件处理器),或者是用户创建的(例如新名空间)。在一个实施例中,用户定义的事件处理器被实现为动态链接库。开发者或其他用户可使用属性来定义名空间的模式,如下所示。internalc〗assTesffiventHandler:Ev您tHandterBase[Event(,'Eventl")〗publicvoidEventl()stringparaml=(string)Conte3CtGetParaiiiValue(Taramr');int|)aram2=(int)ContextGetPararaVahie("Par咖2");Writer.Write("{0}+{1}-{2},,,paraml,para加2,paraml+param2),)在该示例中,EventNamespace属性定义线缆上(overthewire)名空间的名称,Event属性定义线缆上事件的名称,EventParameter属性定义参数的名称、类型以及参数是否是可选的。为了使用处理器,处理器开发者编写继承自EventHandlerBase402的类、将事件写为没有任何参数和返回空的方法、使用上述适当的属性定义模式、并且向服务器组件注册类。本发明的数据结构使得开发者能够定义可作为参数使用的复杂类型。一示例性数据结构如下所示publicstringDisplayName;publicintType;internalRecipientWd江tem()DisplayName="";Email="";Type=0;}上述示例性数据结构被如下所示地编码。<rdn="dispkyname"em="emanaddress"杵,TV^当本发明的服务器组件接收到符合特定数据结构的请求时,本发明创建特定数据结构类的实例并用来自请求的数据填充它。示例性操作环境图5示出了计算机130形式的通用计算设备的一个示例。在本发明的一个实施例中,诸如计算机130等计算机适用于在本文中所示和所述的其他附图。计算机130具有一个或多个处理器或处理单元132以及系统存储器134。在所示实施例中,系统总线136将包括系统存储器134的各种系统组件耦合到处理器132。总线136代表几种总线结构类型中任一种的一个或多个,包括存储总线或存储控制器、外围总线、加速图形端口以及处理器或使用各种总线体系结构的任一种的局域总线。作为示例而非限制,这类体系结构包括工业标准体系架构(ISA)总线、微信道体系架构(MCA)总线、增强ISA(EISA)总线、视频电子标准协会(VESA)局域总线以及也称为Mezzanine总线的外围部件互连(PCI)总线。计算机130通常至少包括某种形式的计算机可读介质。计算机可读介质可以是可由计算机130访问的任一可用介质,包括易失性和非易失性介质、可移动和不可移动介质。作为示例而非限制,计算机可读介质包括计算机存储介质和通信介质。计算机存储介质包括以用于储存诸如计算机可读指令、数据结构、程序模块或其它数据等信息的任一方法或技术实现的易失性和非易失性、可移动和不可移动介质。例如,计算机存储介质包括RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储或其它磁性存储设备、或可以用来储存所需信息并可由计算机130访问的任一其它介质。通信介质通常具体化为诸如载波或其它传输机制的已调制数据信号中的计算机可读指令、数据结构、程序模块或其它数据,并包括任一信息传送介质。本领域技术人员熟悉已调制数据信号,即以对信号中的信息进行编码的方式设置或改变其一个或多个特征的信号。诸如有线网络或直接接线连接的有线介质以及诸如声学、RF、红外的无线介质和其它无线介质是通信介质的示例。上述任何介质的组合也应当包括在计算机可读介质的范围之内。系统存储器134包括以可移动和/或不可移动、易失性和/或非易失性存储器形式的计算机存储介质。在所示实施例中,系统存储器134包括只读存储器(ROM)138和随机存取存储器(RAM)140。包含如在启动时有助于在计算机130内的元件之间传输信息的基本例程的基本输入/输出系统142(BIOS)通常储存在ROM138中。RAM140通常包含处理单元1320立即可访问禾口/或者当前正在操作的数据禾口/或程序模块。作为示例而非限制,图5示出了操作系统144、应用程序146、其它程序模块148和程序数据150。计算机130也可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。例如,图5示出了对不可移动、非易失性磁性介质进行读写的硬盘驱动器154。图5也示出了对可移动、非易失性磁盘158进行读写的磁盘驱动器156以及对可移动、非易失性光盘162,如CD-ROM或其它光学介质进行读写的光盘驱动器160。可在示例性操作环境中使用的其它可移动/不可移动、易失性/非易失性计算机存储介质包括但不限于,磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器154、磁盘驱动器156和光盘驱动器160通常通过诸如接口166等非易失性存储接口连接到系统总线136。以上讨论的并在图5中示出的驱动器或其他大容量存储设备及其相关联的计算机存储介质向计算机130提供了计算机可读指令、数据结构、程序模块和其它数据的存储。例如,在图5中,硬盘驱动器154被视为储存操作系统170、应用程序172、其它程序模块174和程序数据176。注意,这些组件可以与操作系统144、应用程序146、其它程序模块148和程序数据150相同,也可以与它们不同。这里对操作系统170、应用程序172、其它程序模块174和程序数据176给予不同的标号是为了说明至少它们是不同的副本。用户可通过输入设备或用户接口选择设备,诸如键盘180和定位设备182(通常指鼠标、跟踪球或触摸板)向计算机130输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏垫、圆盘式卫星天线、扫描仪等等。这些和其它输入设备通过耦合至系统总线136的用户输入接口184连接至处理单元132,但是也可以通过其它接口和总线结构连接,如并行端口、游戏端口或通用串行总线(USB)。监视器188或其它类型的显示设备也通过接口,诸如视频接口190连接至系统总线136。除监视器188之外,计算机通常包括其它外围输出设备(未示出),诸如打印机和扬声器,它们可通过输出外围接口(未示出)连接。计算机130可使用到一个或多个远程计算机,诸如远程计算机194的逻辑连接在网络化环境中操作。远程计算机194可以是个人计算机、服务器、路由器、网络PC、对等设备或其它公共网络节点,并通常包括许多或所有相关于计算机130所描述的元件。图5描述的逻辑连接包括局域网(LAN)196和广域网(WAN)198,但也可包括其它网络。LAN136和/或WAN138可以是有线网络、无线网络及其组合等。这类网络化环境常见于办公室、企业范围计算机网络、内联网以及全球计算机网络(诸如因特网)。当在局域网络化环境中使用时,计算机130通过网络接口或适配器186连接至LAN196。当在广域网络化环境中使用时,计算机130通常包括调制解调器178或用于通过诸如因特网的WAN198建立通信的其它装置。可以是内置或外置的调制解调器178通过用户输入接口184或其他适当的机制连接至系统总线136。在网络化环境中,相关于计算机130所描述的程序模块或其部分可储存在远程存储器存储设备中(未示出)。作为示例而非限制,图5将远程应用程序192示为驻留在存储器设备上。所示出的网络连接是示例性的,也可以使用在计算机之间建立通信链路的其它手一般而言,计算机130的数据处理器是通过在不同时间存储在计算机的各种计算机可读存储介质中的指令进行编程的。程序和操作系统通常分布在例如软盘或CD-ROM上。从那里它们被安装或载入到计算机的辅助存储器。在执行时,它们至少部分地被载入到计算机的主电子存储器中。当这种介质包含用于实现以下结合微处理器或其他数据处理器描述的步骤的指令或程序时,本文中所描述的本发明包括这些和其他各种类型的计算机可读存储介质。当根据本文所描述的方法和技术编程时,本发明还包括计算机本身。为了说明起见,本文将诸如操作系统等程序和其他可执行程序组件示为分立的块。然而应该认识到这些程序和组件在不同时间驻留在计算机的不同存储组件中,并且由计算机的数据处理器执行。尽管结合了包括计算机130的示例性计算系统环境进行描述,但是本发明可使用各种其他通用或专用计算系统环境或配置操作。计算系统环境并非旨在提出对本发明的使用范围或功能的任何限制。此外,计算系统环境不应被解释为对示例性操作环境中所示组件中的任一个或其组合具有任何依赖或要求。适用于本发明的公知的计算系统、环境和/或配置的示例包括但不限于个人计算机、服务器计算机、手持或膝上型设备、多处理器系统、基于微处理器的系统、机顶盒、可编程消费电子产品、移动电话、网络PC、微型计算机、大型计算机以及包括任何以上系统或类似设备的分布式计算环境。本发明可在计算机可执行指令的一般环境中描述,这些计算机可执行指令诸如由一个或多个计算机或其他设备执行的程序模块。通常,程序模块包括但不限于执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等。本发明还可在分布式计算环境中实践,其中在分布式计算环境中任务由通过一通信网络链接的远程处理设备执行。在分布式计算环境中,程序模块可位于包含存储器设备的本地和远程计算机存储介质中。软件体系结构环境中的接口包括软件模块、组件、代码部分或其他计算机可执行指令序列。接口包括例如第一模块访问第二模块以代表第一模块执行计算任务。在一个示例中,第一和第二模块包括诸如由操作系统所提供的应用编程接口(API)、组件对象模型(COM)接口(例如用于端对端应用程序通信)、以及可扩展标记语言元数据交换格式(XMI)接口(例如用于web服务之间的通信)。接口可以是牢固耦合的同步实现,诸如在Java2平台企业版(J2EE)、COM或分布式COM(DCOM)示例中。或者或此外,接口可以是松散耦合的异步实现,诸如在web服务中(例如使用简单对象访问协议)。一般而言,接口包括以下特征的任一组合牢固耦合、松散耦合、同步和异步。此外,接口可以符合标准协议、专用协议、或标准和专用协议的任意组合。本文中所描述的接口可以全部都是单个接口的部分,或可以实现为独立的接口或者其中的任意组合。接口可本地或远程地执行以提供功能。此外,接口可包括比本文中所示或描述的更多或更少的功能。在操作中,计算机130执行诸如图2所示的计算机可执行指令,以生成所请求的数据,并在联网的应用程序之间传递它们。附录A列出了根据本发明的示例性名空间、事件处理器以及参数。在附录A中,DatePickerEventHandler处理器类型包括日期挑选器的事件。日期挑选器是允许用户在应用程序中的若干个环境中选择日期的用户界面组件。RenderMonth事件呈现对应于月份的HTML片段。当用户点击以导航到2005年1月时,本发明的客户机组件将RenderMonth事件发送给服务器,该服务器获取输入参数(例如fm,表示月份,为日期2005年1月)并呈现该月的HTML片段。所呈现的HTML片段被发回到客户机。MessageListViewEventHandler处理器类型包括用于例如在收件箱中示出消息的消息列表视图的事件。当用户选择一些消息要删除时运行Delete事件。文件夹标识符由属性'fld'表示。要删除的消息标识符数组由属性'id,表示。RecipientWellEventHandler是收件井的事件处理器。该处理器类型中的事件的一个示例是'resolve'。'Resolve'将电子邮件消息中的to、cc和bcc字段取作参数,它们是字符串数组。Resolve事件解析并分析这些字符串。例如如果用户键入"BobS",则对于数组中对应于'to'参数的单个项目"BobS"的数据请求被发送给服务器。该响应是HTML中带有"BobSmith"的HTML片段,其中带有BobSmith的电子邮件地址,并可能带有附属于它的其他数据。接着描述日历视图事件处理器中方法GetViewPayload的详细解释。该方法的参数包括属性'nvs,、'fld,、'days'、Vt,禾卩'dir,。当日历视图需要被刷新时从客户机调用该事件处理器。日历视图在显示器的左侧显示时间条,其中以半个小时为增量,在一列中显示每一天。当需要刷新日历视图时,就开始GetViewPayload事件。该事件从后端载入数据(例如在邮件箱中的用户日历中査询),并呈现描述该数据的代码(例如JavaScript)。所呈现的代码被称为有效载荷。该有效载荷被发送给客户机,客户机使用有效载荷数据来刷新视图。一示例性有效载荷包括每个预约的开始/结束时间、主题、地点、空闲/忙碌状态等。同样地,每个矩形的坐标在服务器中计算,并作为该有效载荷的一部分发送,以简化客户机侧的脚本。GetViewPayload方法的参数包括属性'nvs'、'fld,、'days,、'vt,和'dir,。'nvs'属性是"noviewstate(没有视图状态)"属性,如果为真则指示无需保持视图状态。视图状态是一组定义视图的参数(例如,查看的日期数目和视图类型)。视图类型可以是每周或每天。如果'nvs'参数是假,那么就保存视图状态直至用户下次登陆。'fld'属性是"folderidentifier(文件夹标识符)"属性,对应于要査看的日历文件夹的标识符。'days'属性包括要查看日期的数组。'vt'属性对应于每天或每周的"viewtype(视图类型)"。'dir'属性是可任选指定的导航箭头"direction(方向)"。设置这个属性意味着用户点击导航箭头,服务器应该基于Mays'属性计算要查看的下一组日期。例如,如果'days,属性是3月的2号、3号和4号且'dir'属性被设置成+1,那么服务器会对这些的每一个增加7天(例如以7天为增量推进的多天视图)。如果'days'属性仅是3月2日(例如单日视图),则点击向右箭头导航到3月3日,因此服务器仅增加1天。对GetViewPayload方法的示例性请求如下所示。POST/mailclient/ev.owaoeh=l&ns=CalendarView&ev=GetViewPayloadHTTP/UBody:<paramsXfld>LgAAAABjczgvWhhRQKW70M201c4Gr>AQD4If+;nc6V9Saz9+rfNa9e8AAAAABedAAAB</fld><days><item:>2004-12-15T00:00:00</itein><iteni>2004-12-16T00:00:00</itemxitem>2004-l2-17T00:00:00</item></daysXvt>l</vt><nvs>l</nvs></params>对于以上请求的示例性响应的一部分如下所示。a—cERow=l;a—sFTtI="Calendar:December2004";a—iNRP=I;a_rgCal=newA呵(nc("RgAAAABjctheWhhRQKW70M20k4(3DBwD4If+Jk6V9Saz9+rfNa9e8AAAAABedAAD4If+Jk6V9Saz9+rfNa9e8AAAAADTfAAAT,"12-15-200417:30:00U","!2-15-200418:00:00U","StrategyMeeting","ConfRooml",2,l,"BobS加池",0,lA0,""),加("CAjGsFAnk8AARgAAAABjczgthehRQKW7OM2Ok4GDBwD4I録6V9Saz9+rfNa9e8AAAAABedAAD4If+Xk6V9Saz9+rfNa9e8AAAAACNqAAAJ","12-I5-200421:00:00U","12-15-200421:30:00U","OutofOffice","",2,0,"",l,3,l,0,""),nc("RgAAAABjczgvWhhKQKW7OM2Ofc4GDBwD4If+Jk6V9Sa29+rfNa9e8AAAAABedAAD4If+Jk6V9Saz9+rfNa9e8AAAAAPThAAArV'I2-I』200400:00:0017","12-16-200401:00:00U","PortfoIioDevetopraentMeeting","ConfRoom2",2,l,"JoeA,",1,iA0,""));a—rgDay^newArray();vart;t=newCalDay("15'V,We(taesday",15,12,2(K)4);av(t,(U9,l,l,0);av(t,0,24,0.5,4,!);av(t,0,5,26,0.5,l,2);av(t,0,32,I,2,3);av《,0,34,!,2,4);a一rgDay-t;t=newCalDay("16","Thursday",16,12,2004);av(t,0,20,l,l,5);av(l;A21,l,2,6);av(tA23,1,2,7);av(t,0,25,I,l,8);av(M),2S,O,5,6,10);av(t,O.5,28,0.5,4,9);av(tA5,33,0.5,3,ll);a一rgDay[i;H;^newCalDay("17","Friday",17,12,2004);av妙,20,0.5,4,13);av(t,0.5,20,0.5,2,12);av(tA5,23,0.5,3,l4);av(tA25,0.5,l,15);av(tA28,0.5,2,17);av(t,0,5,29j0,5,3,iS);avf(t,26,22,3);a—rgDay[2=t;a_i^vt=newAiray(加(2,0山16,2,0))这里所示出和描述的方法的执行或履行顺序并非必需如此,除非另有指定。即,方法的要素可用任何顺序执行,除非另有指定,且方法可以包括比这里所揭示的要素更多或更少的要素。例如,期望在另一要素之前、同时或之后执行或履行特定的要素是在本发明的范围之内的。当引入本发明或其实施例的要素时,冠词"一"、"一个"、"该"和"所述"旨在表示有一个或多个要素。术语"包括"、"包含"和"具有"旨在意为包括的,并表示可能除了所列示的要素外有其他要素。根据以上内容,可以看出实现了本发明的若干个目的,并获得了其他有利结果。由于可对上述结构、产品和系统作出各种改变而不背离本发明的范围,上述描述中包含的和附图中所示的所有事物旨在被解释为是示例性的而非限制性的。附录A以下表格示出了服务器部署的电子邮件应用程序的电子邮件名空间(例如<table>tableseeoriginaldocumentpage22</column></row><table><table>tableseeoriginaldocumentpage23</column></row><table><table>tableseeoriginaldocumentpage24</column></row><table><table>tableseeoriginaldocumentpage25</column></row><table><table>tableseeoriginaldocumentpage26</column></row><table>参数名称'fld',类型《Mail.Objects.IUniqueltemld,,isArray:£False',isOptional:<False',isStruct:fFalse,参数名称(days,,类型<System.DateTime,,isArray:(True,,isOptional:^True',isStruct:'False'表A4.日历视图事件处理器的示例性事件处理器和参数权利要求1.一种用于通信的系统,包括一个或多个计算机可读介质,用于存储多个事件处理器,其中每一个具有与之相关联的名空间,所述多个事件处理器的每一个还具有与之相关联的一个或多个参数;以及表示格式化的数据请求的数据结构,所述数据结构包括存储表示所述名空间的名空间值的名空间字段、存储对应于所述多个事件处理器之一的事件处理器值的事件处理器字段、以及存储对应于所述参数之一的参数值的参数字段,所述多个事件处理器之一与所述名空间字段中名空间值所表示的名空间相关联,所述参数之一与所述事件处理器字段中的事件处理器值表示的事件处理器相关联;以及由第二进程部署的第一进程,所述第一进程被配置成执行计算机可执行指令,用于从用户或进程处接收数据请求;标识与所述接收到的请求相关联的名空间值;根据所述接收到的请求和所述标识的名空间值选择事件处理器值;根据所述接收到的请求和所述标识的名空间值确定参数值;通过将所述标识的名空间值存储到所述名空间字段中、将所述选定的事件处理器值存储到所述事件处理器字段中、以及将所述确定的参数值存储到所述参数字段中来填充所述数据结构;以及将所述填充后的数据结构发送给第二进程;以及所述第二进程被配置成执行计算机可执行指令,用于从所述第一进程接收所述填充后的数据结构;根据所述接收到的数据结构从存储在所述计算机可读介质上的所述多个事件处理器中选择一个事件处理器;执行所述选定的事件处理器以生成结果数据;以及将所述生成的结果数据发送给所述第一进程。2.如权利要求1所述的系统,其特征在于,所述格式化的数据请求包括作为名称-值对的所述名空间字段和所述名空间值、作为名称-值对的所述事件处理器字段和所述事件处理器值、以及作为名称-值对的所述参数字段和所述参数值。3.如权利要求l所述的系统,其特征在于,所述计算机可读介质和所述第一进程与服务器部署的个人信息管理客户机相关联。4.如权利要求l所述的系统,其特征在于,所述计算机可读介质和所述第二进程与个人信息管理服务器相关联。5.如权利要求l所述的系统,其特征在于,所述参数值包括根据可扩展标记语言格式化的数据。6.如权利要求l所述的系统,其特征在于,分布式客户机应用程序执行所述第一进程,而服务器应用程序执行所述第二进程,其中所述分布式客户机应用程序提供所述服务器应用程序的功能的至少一部分。7.如权利要求l所述的系统,其特征在于,所述第二进程还被配置成执行计算机可执行指令,用于构建具有存储在所述计算机可读介质上的所述多个事件处理器的配置数据库。8.如权利要求1所述的系统,其特征在于,还包括用于存储所述多个事件处理器的装置。9.如权利要求l所述的系统,其特征在于,还包括执行所述第一进程的装置和执行所述第二进程的装置。10.如权利要求1所述的系统,其特征在于,所述第二迸程还被配置成执行计算机可执行指令,用于验证所述参数值;以及将所述参数值转换成与之相关联的数据类型。11.一种计算机实现方法,用于生成数据并将其从一个进程传送到另一进程,所述计算机实现方法包括由第一进程从用户处接收数据请求;由所述第一进程标识与所述接收到的请求相关联的名空间;由所述第一进程根据所述接收到的请求确定与所述标识的名空间相关联的事件处理器;由所述第一进程根据所述接收到的请求填充与所述确定的事件处理器相关联的参数;由所述第一进程使用所述标识的名空间、所述确定的事件处理器和所述填充后的参数创建格式化的请求;从所述第一进程将所创建的格式化请求发送给第二进程;由所述第二进程接收来自所述第一进程的所述格式化的请求;由所述第二进程根据接收到的格式化请求从存储在存储区域中的多个事件处理器选择一个事件处理器;由所述第二进程执行所述选定的事件处理器,以生成结果数据;以及从所述第二进程将所述生成的结果数据发送给所述第一进程。12.如权利要求11所述的计算机实现方法,其特征在于,还包括由所述第一进程接收所发送的结果数据。13.如权利要求ll所述的计算机实现方法,其特征在于,还包括由所述第一进程从所述用户处接收用户定义名空间、与所述用户定义的名空间相关联的用户定义事件处理器,以及所述用户定义的事件处理器的用户定义参数;以及由所述第一进程向所述第二进程注册所述接收到的用户定义名空间、用户定义事件处理器以及用户定义参数。14.如权利要求13所述的计算机实现方法,其特征在于,所述第二进程注册所述接收到的用户定义名空间、用户定义事件处理器以及用户定义参数,而无需改变第二进程的体系结构。15.如权利要求ll所述的计算机实现方法,其特征在于,所述一个或多个计算机可读介质具有用于执行如权利要求11所述的计算机实现方法的计算机可执行指令。16.—个或多种计算机可读介质,具有用于生成请求数据并在联网环境中传递所述数据的计算机可执行组件,所述组件包括服务器部署的客户机组件,用于从用户处接收数据请求;标识与所述接收到的请求相关联的名空间;根据所述接收到的请求使用所述标识的名空间确定事件处理器;根据所述接收到的请求填充与所述确定的事件处理器相关联的参数;使用所述标识的名空间、所述确定的事件处理器以及所述填充后的参数创建格式化请求;以及将所述创建的格式化请求发送给服务器组件;以及所述服务器组件用于从所述服务器部署的客户机组件处接收所发送的请求;根据所述接收到的请求从存储在存储区域中的多个事件处理器选择一个事件处理器;执行所述选定的事件处理器以生成结果数据;以及将所述生成的结果数据发送给所述服务器部署的客户机组件。17.如权利要求16所述的计算机可读介质,其特征在于,还包括注册组件,用于使用存储在所述存储区域中的所述多个事件处理器构建配置数据库。18.如权利要求17所述的计算机可读介质,其特征在于,所述服务器组件根据所述接收到的请求从所述配置数据库选择一个事件处理器。19.如权利要求16所述的计算机可读介质,其特征在于,所述服务器部署的客户机组件包括在网络上与所述服务器组件通信的个人信息管理客户机。20.如权利要求16所述的计算机可读介质,其特征在于,所述服务器组件包括个人信息管理服务器。全文摘要将文件片段从web服务器发送给服务器部署的客户机应用程序。本发明包括数据请求的数据结构,包括名空间字段、事件处理器字段以及参数字段。第一进程将填充后的数据结构发送给第二进程。第二进程执行由第二进程维护的且在填充后的数据结构中标识的逻辑,以生成结果数据。第二进程将结果数据发送给第一进程以供向用户显示或者由第一进程进行其他处理。文档编号G06F3/00GK101548256SQ200680007681公开日2009年9月30日申请日期2006年3月9日优先权日2005年4月8日发明者J·佩瑞拉申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1