说明性实施例的详细描述
示例性实施例
在本发明的一方面中,公开了一种提供用于将XML模式数据转化成关系型数据库结构的元数据表的改进的高速缓存的方法。在一个SQL实现中,当经由修改方法来修改类型化的XML列时,会发生确认以便确保新的值的符合度。确认是查询执行的一部分,由此其对性能的影响最小是至关重要的。允许修改类型化的XML文档的传统应用程序会在DML(数据修改语言)操作结束时确认整个文档。在某些基于SQL的机器中,这会导致剧烈的性能影响,因为XML文档可以是很大的(大至2GB)。为了减轻性能下降,可以使用在查询执行时将确保XML数据确认检查绝对最小XML子树并且仍保持XML文档整体完整性的算法和算子。
作为一个示例,考虑如下的XML格式的客户列表(listOfCustomers):
<listOfCustomers>
<customer CID=”123>
<billingAddress>
<street>Any Street</street>
<zipCode>98052</zipCode>
</billingAddress>
</customer>
</listOfCustomers>
该数据的格式可以符合定义在列表中使用的数据类型的模式。在模式中使用约束来定义XML数据内容内的每个数据字段。如果要添加附加地址(Address),那么该附加地址数据必须也符合定义XML格式的数据的模式。可以如下用XML来表示添加的地址,例如运送地址(shippingAddress)条目:
<list of customers>
<customer CID=”123>
<billing address>
<street>Billing Street</street>
<zip code>98052</zip code>
</billing address>
<shippingAddress>
<street>Shipping Street</street>
<zip code>98052</zip code>
</shippingAddress>
</customer>
</list of customers>
以上示例XML是用于客户标识符(CID)“123”。但是可以有数千个这种条目。如果置于关系型数据库中,则对于仅一个地址条目所需重新确认会迫使对数据库中所有客户的所有条目的重新确认。一个优点是避免重新确认全部数千个元素。一般地,通过确保该模式允许将运送地址元素添加到其内容中且该运送地址元素是正确的结构应该足以确保特定的添加的新运送地址元素是有效的。
为了确保上述条件,在该示例中考虑“shippingAddress”元素的兄弟元素以及其父元素(“customer”(客户)元素)是足够的。如果查询执行装置可以仅流过表示所插入的元素的父元素及其兄弟元素的记录而无需它们的内容,且确认算子知道正在确认什么,那么一种方法是执行将确保对整个文档的确认而无需重新确认整个文档的最少次数的操作。在该特定情形中,在查询执行期间,确认算子将处理几十行而非可能的数千行(如果它必须确认整个文档)。
在本发明的一个实施例中,XML查询处理会涉及用其自己的格式将XML数据作为BLOB(二进制大对象)存储在图1中所示的关系型数据库中。可以通过按需将数据分散成预定义形状的行集或者访问已经是已预先分散的XML数据的行集的XML索引来将XML数据置于关系形式中。图1描述了具有两个列的表100;主键列110和数据列120。在该示例中,在数据列中表示的用于客户ID 123的BLOB数据仅包含帐单地址(billing address)。然而,用于客户ID 456的数据列BLOB同时包含帐单和运送地址。如果期望客户ID 123的附加信息,诸如新的运送地址数据,那么将必须更新BLOB,但是也需要更新XML文档以使其符合其模式。通常,这会涉及对整个文档的XML数据的确认。但是当文档很大时,这是不期望的。在本发明的一方面,如果仅使用相关XML模式的一部分,则可以避免完整文档确认。
图2是描述使用部分确认执行XML插入或删除数据操作的查询子树的流程图。图2的查询子树描述了向上流动以便将新信息输入到存储在关系型数据库中的XML Blob的操作。
参考图2,获取要输入的新数据(即新的XML实体),诸如客户ID 123的运送地址295,并且作出确认请求215。要确认的数据和插入节点信息210对于执行深确认操作220是必须的。深确认是将确认完整的逻辑XML实体205的递归操作。在该示例中,深确认使用来自适用于<shippingAddress>标签的所选模式约束的信息,将其应用于新的XML实体的特定数据,并且确认该新的XML数据满足模式的深约束。接着可以使用插入算子225来将该新信息预先插入到可由关系型数据库使用的形式。
浅确认操作245需要插入节点信息210以及新XML实体的父节点和模式信息240两者。此处,使用用于确认正在被修改的子树的内容所需的最小XML数据。为了获取该有限的模式信息,需要对相关模式信息的提取。以下进一步解释了该提取。但是,简而言之,查询引擎将仅取出表示被插入或删除的元素的父元素及其兄弟元素的行,并且使其流过对浅确认250的请求。使用XML专用算子来扩充XML处理器的查询执行装置。深确认是由专用确认器来完成的。在一个实施例中,该确认器可以包括不会递归到复杂内容中并忽略所有简单数据类型的单个状态机。一旦在225的输出处执行了深确认并且在250的输出处执行了浅确认,那么可以将新的数据与现有数据合并260。确认算子可以对表示XML数据的关系输入执行XML确认。执行深确认确保对新数据的有效性。对新数据的父元素的确认确保维护文档的完整性。一旦两者都完成了,那么就执行部分确认。部分确认允许输入新的数据而无需执行时间密集型的完整文档确认。
部分XML确认对多数XML模式结构起作用。但是某些XML模式约束,诸如ID/TDREF和键/键引用(key/keyref)将整个XML实例作为它们的范围。这样,对经修改的数据或其父部分的确认是不够的。在经修改的数据中这些XML模式约束的出现会导致要确认整个XML文档。例如,ID是允许将标识符与使用xs:ID类型属性或元素的元素相关联的XML模式特征。IDREF是对一个这种ID的引用。在本发明的一方面,ID在单个XML实例(或文档或BLOB)中是唯一的。因此,如果<shippingAddress>要包含ID属性,那么维护ID值以便使其在XML实例中是唯一的。类似地,如果<shippingAddress>要指定IDREF,那么模式确认必须确保IDREF的目标(ID)存在于同一XML实例中。IDREFS是IDREF序列。IDREF和IDREFS都不应该包含悬挂引用,即对不存在的目标(ID)的引用。“key”定义了键值而“keyref”定义了对键值的引用。这要求确保键值在XML实例中是唯一的,且keyref引用现有的键值。类似地,可以为应该在XML实例中唯一的值定义“unique(唯一)”约束。所有这些都要求在新的XML实体中的唯一性检查和被引用的节点或值的存在。
本发明的一方面是使用用于提取部分确认所需的模式部分的过程。于2005年7月20日提交的,序号为11/185,310,题为Memory Cache Managementin XML/Relational Data(XML/关系型数据的存储器高速缓存管理)的共同拥有的美国专利申请讲授了一种提取模式的相关部分的方法,并且被整体地结合于此。模式的相关部分被存储在高速缓存中。
具体地,用于XML文档的XML输入模式被分散到许多关系表中,并且可以选择性地加载和高速缓存最经常使用的模式片段。此外,由于关系布局包括若干个主要和次要索引,因此加载模式也是较快的。由于XML模式被分散到表中,因此XML实例确认仅加载执行确认所必需的分量。在确认期间,仅加载和高速缓存所使用的模式的部分。模式告诉缓存储存了为XML实例确认优化的XML模式的存储器内表示。XML模式分量作为只读对象从元数据加载到主存储器中,使得多个用户能够使用存储器内对象用于确认。如果在操作期间改变XML模式,则使得该模式高速缓存条目无效。
一旦所需的方案被加载到关系表中,与类型、属性或元素定义相关的部分将被添加到XSD类型高速缓存中,在实现中,使用与模式导入反向的机制:首先创建符号表;接着,导出被高速缓存的确认结构。
图4示出了便于使用高速缓存和存储器管理的转换的系统400及其内部视图。转换组件402通过将模式结构(例如XML模式)分解成元数据表来提供转换能力,该元数据表可被选择性地访问以便于将XML数据接口到一关系型数据结构。用户提供符合XML模式的数据。系统400确认实际上符合XML模式的用户提供的数据。换言之,一数据库引擎查看用户提供的数据和模式,并确定如何有效地确认数据。数据并不是以本机或原始二进制形式来存储的。高速缓冲存储器和存储器管理接口(MMI)组件404便于将元数据表存储在高速缓冲存储器中以供高速存取仅必需的XML分量。确认组件406便于仅加载和高速缓存所使用的模式的部分。视图组件408允许用户查看表格形式的内部元数据表。注意,虽然在图4中关于输入XML模式到关系的映射描述了高速缓存和存储器管理,但是所公开的高速缓存管理体系结构不限于此,而是找出在任何输入模式和一关系结构之间的转换的应用。
由于XML方案被分散到各表中,因此XML实例确认仅加载执行确认所必需的分量。在确认期间,仅加载和告诉缓存所使用的模式部分。模式高存缓存存储为XML实例确认优化的XML模式的存储器内表示。将XML模式分量作为只读对象从元数据加载到主存储器中,使得多个用户可以使用该存储器内对象用于确认。如果在操作期间改变XML模式,则使得该模式高速缓存条目无效。
在持久化数据的最终阶段,新的节点填充描述XML模式类型的结构的元数据表。图5示出了将XML模式数据502分散到其中的表的系统500。在一个实现中,XML模式数据502被持久化为若干个表中的元数据:分量表504、引用表506、放置表508、小平面(facet)表510和限定名表512。ID组件514接口到XML模式数据502,以便将标识符(例如分量ID)分配给其每个分量。高速缓冲存储器516接口到每个表(504、506、508、510和512),使得任何单个表或表的组合的内容可以被访问并持久存储在其中,以便向关系型数据库518提供改进的数据访问。
相应地,图6示出了将XML模式数据处理成表的方法600。在步骤601处,将XML模式数据分解成具有所分配的ID的相关XML模式分量。在步骤602处,将XML模式持久化为各表中的元数据。在步骤604处,确认过程仅加载和高速缓存要使用的必需的模式分量。在步骤606处,使用描述XML模式类型的结构的数据来填充各表。
在本发明的一方面中,在XML文档中标识节点。节点的标识使得可以将对XML文档的查询和数据修改转换成算子树并且允许随后在深和浅确认过程中插入节点专用信息。于2004年3月18日提交的,序号为10/803,283,题为System And Method For Compiling An Extensible Markup Language Based Query(用于编译基于可扩展标记语言的查询的系统和方法)的共同拥有美国专利申请讲授了一种将对XML数据的查询和数据修改转换成算子树以供查询处理器执行的方法,其通过引用被整体结合与此。
本发明的一方面包括将XML文档转换成树结构。这种结构在图3中示出。以下将进一步讨论将XML结构转换成树。树结构反映出XML文档的结构,其中标签、数据和约束在节点结构中反映出来。在图3的结构中,示出了父节点和兄弟节点390。最高节点371具有子节点372,它是节点373、380和374的父节点。节点374是节点376和378的父节点。节点380是节点382和384的父节点。节点384是节点385和386的父节点,而节点385是节点387和388的父节点。在本发明的一方面中,如果在树结构中不存在节点380,但是期望把它加入,则必须观察定义XML文档的XML模式的结构和约束。当编译XML文档时可以为XML文档生成节点结构。
简而言之,用于编译基于XML的查询的方法包括由数据库引擎前端接收XML表达式。该查询由关系型查询解析器来解析,并且所嵌入的XML表达式被转发给XML解析器。XML表达式由XML解析器来解析以便产生一抽象句法树。该抽象句法树接着被转发给XML操作生成器,该XML操作生成器将抽象句法树转换成包括XML代数运算的统一树。该统一树然后被转发给XML代数化器(algebrizer),XML代数化器将该统一树转换成包括增强型关系代数运算的关系树。该关系树被嫁接到为所包含的关系型查询产生的对数运算(log-op)树。该对数运算树得到一查询计划,该查询计划被转发给查询处理器以供在查询处理器处优化和执行查询。
现在参考图7,包括XML表达式715的查询705可以由前端710接收和操纵,以便生成用于执行查询705的查询计划755。除了解析查询705以产生关系型抽象句法树725a之外,关系解析器722还将来自查询705的XML表达式715传递给XML解析器732。XML解析器732接着解析XML表达式715以便生成XML抽象句法树725b。
XML代数化器736将统一树结构735中的XML操作转换成包括增强型关系运算的关系型对数运算树745。XML代数化器736递归地遍历统一树735b。对于统一树735b的每个节点,生成一对应的关系子树。每个这种关系子树包括在其相关联的统一树节点中执行XML代数运算所需的多个增强型关系代数运算。该关系子树接着被插入到关系树745中。XML操作生成器734将XML抽象句法树725b变换成包括XML代数运算的XML统一树结构735b。
XML代数化器736将统一树结构735b内的XML操作转换成关系型对数运算树745。常规的关系代数运算不足以描述访问分层数据的XML操作。因此,依照本发明的XML代数化将XML操作转换成增强型关系代数运算。关系对数运算树745接着可以成为查询计划755的基础。
图8描述了用于具有本发明各方面的示例性方法800的流程图。一开始,包括查询处理器的计算设备接收修改XML文档的请求(步骤810)。对XML文档的修改可以是添加、删除或改变XML文档中的数据。XML文档通常由定义文档中数据的格式和数据内容约束的XML模式来管理。在本发明的一方面中,XML数据以关系格式(即关系型数据库格式)存储,而对XML文档的任何有效改变符合用于该文档的XML模式的约束。
先前或作为方法800的部分,XML文档被转换成一算子树结构(步骤820)。算子树结构的转换涉及将XML文档解析成抽象句法树、将抽象句法树转换成统一树,以及将统一树转换成算子树结构。
可以仅通过将数据及其属性(有时用元数据存储)和与XML文档中的期望位置相关联的模式的特定部分作比较来确认经修改的XML数据。由此,提取XML文档的第一部分(步骤830)。该第一部分与要修改的数据相关联。可以执行深确认(步骤840)。深确认是对所插入数据的确认。深确认对照XML数据的第一部分的格式和约束来检查经修改的部分。深确认涉及递归地确认经修改数据的完整逻辑实体。由此,深确认可以逐个实体地(例如,逐个单词地或逐个数字地)取得经修改的数据,并对照所提取的XML模式的第一部分来确认数据。一旦完成了深确认,就完成了部分确认。部分确认是对照XML模式的第一部分仅对经修改的数据的确认。
但是,父约束也对要修改的数据的有效性施加了限制。这些父约束被包含在与XML模式的第一部分相关联的XML模式的父部分中。由此,提取XML模式的第二部分(步骤850)。该第二部分是XML模式的第一部分的父部分。提取XML文档模式的一部分涉及将XML模式分解成模式分量的表,并且将该表存储在高速缓存中。该表可以使用关系型格式来存储。
执行浅确认(步骤860)。浅确认通过将部分确认结果与模式的第二部分作比较来完成确认过程。模式的第二部分表示该模式对于经修改的数据所施加的父数据约束。虽然部分确认结果可以指示经修改的数据格式和内容对于模式的第一部分是正确的(深确认),但是浅确认检查修改是否与第二、父模式信息的高级约束一致。例如,浅确认可以确认父模式信息允许经修改的数据的发生次数、类型和格式。
如果浅确认与父模式约束不一致(步骤870),则该方法以拒绝经修改的数据终止。如果经修改的数据与第一和第二所提取的XML模式一致,则可以将该文档的经修改部分合并到完整的XML文档中(步骤880)。注意,该合并可以是对用关系型格式存储的XML数据的修改。在一替换实施例中,如果在步骤830处已知XML模式的第二部分的身份的先验知识,那么可以将提取XML模式的第二部分(步骤850)与提取XML模式的第一部分(步骤830)组合。
在某些情况下,方法800可以在步骤880处完成。在其他情况下,诸如存在ID/IDREF或key/keyref的实例,则可能需要更广的确认(步骤890)。如果在经修改的部分中没有其他引用,则该过程停止。如果在经修改的部分中有其他约束,则执行对特殊XSD分量的文档级确认(步骤895)。
示例性计算设备
图9和以下讨论旨在提供一种其中可实现本发明的适当计算环境的简要概括说明。虽然以下描述了通用计算机,但是这仅是一个单处理器的示例,具有多个处理器的本发明的实施例可以使用其他计算设备来实现,诸如具有网络/总线互操作性和交互的客户机。由此,本发明的各实施例可以在其中包含很少或最少的客户机资源的网络化主存服务的环境中实现,例如其中客户机设备仅用作到网络/总线的接口,诸如置于装置中的对象或其他计算设备和对象的网络化环境。实际上,可以存储数据或从中可检索数据的任何地方都是期望的或合适的操作环境。
尽管不是必需的,但本发明的各实施例也可经由操作系统来实现,以供设备或对象的服务的开发者使用和/或包括在应用程序软件中。软件可以在诸如程序模块等由一个或多个计算机(例如客户机工作站、服务器、或其它装置)执行的计算机可执行指令的一般上下文中描述。一般而言,程序模块包括执行特定任务或实现具体抽象数据类型的例程、程序、对象、组件、数据结构等。通常,程序模块的功能可按需在各个实施例中组合或分布。此外,本领域技术人员将理解,本发明的各实施例可在其它计算机配置中实践。适用的其它众所周知的计算系统、环境和/或配置包括,但不限于,个人计算机(PC)、自动取款机(ATM)、服务器计算机、手持式或膝上型装置、多处理器系统、基于微处理器的系统、可编程的电子消费品、网络PC、电器、电灯、环境控制元件、小型计算机、大型计算机等等。本发明的各实施例还可在任务由经通信网络/总线或其它数据传输介质链接的远程处理装置执行的分布式计算环境中实践。在分布式计算环境中,程序模块可置于包括存储器存储装置的本地和远程计算机存储介质中,且客户机节点可以进而用作服务器节点。
参照图9,用于实现本发明的示例系统包括计算机系统910形式的通用计算装置。计算机系统910的组件可包括,但不限于,处理单元920、系统存储器930以及将包括系统存储器在内的各种系统组件耦合到处理单元920的系统总线921。系统总线921可能是若干总线结构类型中的任何一种,包括存储器总线或存储器控制器、外围总线、以及使用多种总线体系结构的任一种的局部总线。作为示例,而非限制,这些体系结构包括工业标准体系结构(ISA)总线、微通道体系结构(MCA)总线、增强型ISA(EISA)总线、视频电子标准协会(VESA)局部总线和外围部件互连(PCI)总线(也称为小背板(Mezzanine)总线)。
计算机910通常包括各种计算机可读介质。计算机可读介质可以是能被计算机系统910访问的任何可用介质,并包括易失性和非易失性介质、可移动和不可移动介质。作为示例,而非限制,计算机可读介质可包括计算机存储介质和通信介质。计算机存储介质包括以任何方法或技术实现、用于存储诸如计算机可读指令、数据结构、程序模块或其它数据等信息的易失性和非易失性介质、可移动和不可移动介质。计算机存储介质包括但不限于随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程ROM(EEPROM)、闪存或其它存储器技术、紧致盘只读存储器(CD ROM)、可重写紧致盘(CD-RW)、数字多功能盘(DVD)或其它光盘存储、磁盒、磁带、磁盘存储器或其它磁性存储设备、或任何其它可用于存储所需信息并可由计算机系统910访问的介质。通信介质通常以诸如载波或其它传输机制等已调制数据信号来体现计算机可读指令、数据结构、程序模块、或其它数据,且包括任何信息输送介质。术语“已调制数据信号”意指以在信号中编码信息的方式设置或改变其一个或多个特征的信号。作为示例,而非限制,通信介质包括诸如有线网络或直线连接的有线介质,和诸如声学、射频(RF)、红外线和其它无线介质的无线介质。以上任何介质的组合也应包括在计算机可读介质的范围中。
系统存储器930包括诸如只读存储器(ROM)931和随机存取存储器(RAM)932等易失性和/或非易失性存储器形式的计算机存储介质。基本输入/输出系统933(BIOS)形式包含有助于如起动时在计算机系统910内元件间传送信息的基本例程,通常存储在ROM 931中。RAM 932通常包含可被处理单元920立即访问和/或当时正被操作的数据和/或程序模块。作为示例,而非限制,图9示出了操作系统934、应用程序935、其它程序模块936、和程序数据937。
计算机系统910还可包括其它可移动/不可移动、易失性/非易失性计算机存储介质。仅作为示例,图9示出了读取和写入不可移动、非易失性磁性介质的硬盘驱动器941,读取和写入可移动、非易失性磁盘952的磁盘驱动器951,读取和写入可移动、非易失性光盘956,诸如CD-ROM、CDRW、DVD或其它光学介质的光盘驱动器955。其它也可在示例性操作环境中使用的可移动/不可移动、易失性/非易失性计算机存储介质包括,但不限于,如磁带盒、闪存卡、数字多功能盘、数字录像带、固态RAM、固态ROM等等。硬盘驱动器941通常通过诸如接口940等不可移动存储器接口与系统总线921连接,而磁盘驱动器951和光盘驱动器955通常通过诸如接口950等可移动存储器接口与系统总线921连接。
如上所述并如图9所示的驱动器及其相关联的计算机存储介质为计算机系统910提供计算机可读指令、数据结构、程序模块、和其它数据的存储。在图9中,例如,硬盘驱动器941被示为存储操作系统944、应用程序945、其它程序模块946、和程序数据947。注意,这些组件可以与操作系统934、应用程序935、其它程序模块936、和程序数据937相同或不同。在此给予操作系统944、应用程序945、其它程序模块946、和程序数据947的不同标号至少说明它们是不同的副本。用户可通过诸如键盘962、以及通常称为鼠标、跟踪球或触摸板等的定位设备961等输入设备向计算机系统910输入命令和信息。其它输入设备(未示出)可包括话筒、操纵杆、游戏手柄、圆盘式卫星天线、扫描仪等等。这些和其它输入设备常常通过与系统总线921耦合的用户输入接口960与处理单元920相连,但也可通过诸如并行端口、游戏端口或通用串行总线(USB)等其它接口和总线结构连接。监视器991或其它类型的显示设备也可通过诸如视频接口990等接口与系统总线921相连,该接口可以进而与视频存储器(未示出)通信。除了监视器991之外,计算机系统也可以包括诸如扬声器997和打印机996等可以通过输出外围接口995连接的其他外围输出设备。
计算机系统910可以使用与一台或多台远程计算机,诸如远程计算机980的逻辑连接在网络化环境中操作。远程计算机980可以是个人计算机、服务器、路由器、网络PC、对等设备或其它常见的网络节点,而且通常包括以上相对于个人计算机系统910所描述的许多或全部元件,尽管在图9中仅图示了存储器存储设备981。图9中所描绘的逻辑连接包括局域网(LAN)971和广域网(WAN)973,但也可包括其它网络/总线。这样的网络化环境在家庭、办公室、企业范围计算机网络、内联网和因特网上是常见的。
当用于LAN网络化环境中时,计算机系统910通过网络接口或适配器970与LAN 971连接。当用于WAN网络化环境中时,计算机系统910通常包括调制解调器972或其它用于通过诸如因特网等广域网973建立通信的装置。可以是内置式或外置式的调制解调器972与系统总线921通过用户输入接口960或其它适当机制连接。在网络化环境中,与计算机系统910相关的程序模块或其一部分可存储在远程存储器存储设备中。作为示例,而非限制,图9示出了驻留于存储器设备981中的远程应用程序98。应当理解,所示网络连接是示例性的,且也可以使用其它用于在计算机间建立通信链路的手段。
鉴于个人计算和因特网的汇聚,已经和正在开发各种分布式计算框架。向个人和企业用户等提供了用于应用程序和计算设备的可无缝地互操作和启用Web的接口,使得计算活动日益面向web浏览器或网络。
例如,可从微软公司获得的
的NET
TM平台包括服务器、诸如基于Web的数据存储等构建块服务以及可下载设备软件。虽然结合驻留在计算设备上的软件描述了此处的示例性实施例,但是本发明的一实施例的一个或多个部分也可以经由操作系统、应用程序编程接口(API)或协处理器、显示设备和请求对象中任一个之间的“中间人”对象来实现,这样使得操作可以由所有.NET
TM的语言和服务以及其他分布式计算框架执行、支持或经由其访问。
如上所述,虽然结合各种计算设备和网络体系结构描述了本发明的示例性实施例,但是基本概念可以应用于其中期望实现XML部分确认方案的任何计算设备或系统。由此,结合本发明的各实施例描述的方法和系统可应用于多种应用程序和设备。虽然此处选择了示例性编程语言、名称和示例作为各种选择的代表,但是这些语言、名称和示例并非旨在是限制性的。本领域的普通技术人员会理解有提供达到本发明的各实施例所达到的相同、相似或等价系统和方法的对象代码的多种方式。
此处所描述的各种技术可以结合硬件、软件或(当合适时)两者的组合来实现。由此,本发明的方法和装置或其部分的某些方面可以采用体现在诸如软盘、CD-ROM、硬盘或任何其他机器可读存储介质等有形介质中的程序代码(即指令)的形式,其中当将程序代码载入到机器(诸如计算机)中或由机器执行程序代码时,该机器成为用于实现本发明的装置。
虽然结合各个附图的优选实施例描述了本发明的各方面,但应该理解,可以使用其他类似的实施例或可以对所描述的实施例作出修改和添加,用于执行本发明相同的功能而不背离本发明。此外,应该强调,构想了包括手持式设备操作系统和其他应用程序专用操作系统的各种计算机平台,尤其是在无线联网设备的数目持续激增的情况下。因此,所要求保护的本发明不应该被限制到任何单个的实施例,而是应该依照所附权利要求书的宽度和范围来解释。