专利名称:用于解析资源的系统和方法
技术领域:
本发明总体上涉及计算机编程,并且具体而言,涉及资源解析。
背景技术:
必须把资源(诸如,文件)作为其功能的一部分来定位的许多软件工具必须执行一种资源解析策略,借此,可以把所述资源的寻址信息解析为实际的物理存储位置。目前,每个工具(当可利用时,其包括在单个软件产品内提供的多个工具)必须独立地执行所述策略。这样做需要开发人员付出大量重复性的努力,并且需要一番努力来保持解析策略在不同工具(可能是由不同组织开发的)当中是同步的。
作为一个例子,软件组件经常需要对统一资源标识符(“URI”)引用所涉及的资源集合进行操作。例如,web浏览器对超文本标记语言(“HTML”)资源进行操作,其中所述超文本标记语言资源可以包含对其它HTML资源的引用。读取URI引用并且计算可获得资源的实际位置的处理过程,通常可以被称为“URI解析”。在现代的软件应用中,解析URI引用的处理过程已经变得更加复杂,并且不同的软件组件利用专用于其问题领域的专门解析策略。当多个软件组件需要合作时,对多个解析策略进行处理使得软件开发更加困难。通常,为了解析URI,软件开发人员需要知道多个解析策略并且了解何时启用(invoke)适当的一个策略。一旦确定出适当的策略,启用此策略的任务就不会是琐碎的。执行每个解析器(resolver)策略的方法之间往往存在很大差异,因此迫使开发人员要去熟悉领域特定的特性。
发明内容
在一个方面中,本发明提供了一种资源解析器系统。这种资源解析器系统最好是包括可扩展资源解析框架,所述框架适合于使用至少一个资源解析器来扩展,每个资源解析器适合于解析资源,所述框架还适合于当接收到对解析资源的请求时,动态地选择并且启用所述至少一个资源解析器中的至少一个,其中,所述至少一个所启用的资源解析器响应于其的启用来作用于解析结果,并且所述框架把解析结果返回作为对所述解析请求的响应。
所述资源解析器最好是适合于用作所述框架的插件。优选的是,所述至少一个资源解析器中的每一个均向解析器扩展注册表(registry)进行注册,并且所述框架搜索解析器扩展注册表以便从已注册的资源解析器当中执行动态选择。
优选的是,所述至少一个动态选择的资源解析器中的每一个均是基于当前的执行上下文被选择的,每一个所选的资源解析器均适合于和这种当前执行上下文一起使用。
在另一个方面中,本发明提供了一种用于解析资源的技术,包括在资源解析接口组件处接收对解析资源的请求;响应于对所述请求的接收,通过所述资源解析接口组件来选择至少一个用于解析所述资源的资源解析器;通过所述资源解析接口组件来启用所选择的资源解析器中的至少一个来解析所述资源,以便获得解析结果;以及,通过所述资源解析接口组件把解析结果返回作为对所述请求的响应。
优选的是,所述请求标识该资源并且传送在进行选择时可利用的信息。所传送的信息可以包括至少一个参数,所述参数用于指定从中接收到所述请求的执行上下文的执行上下文信息。在此情况下,所述执行上下文信息可以包括对待解析资源进行引用的资源位置。作为一种替代方式,所述执行上下文信息可以包括其中遇到对资源的引用的项目,并且所述请求可以响应于遇到所述引用而生成。
所述资源的标识可以包括资源的文件类型。所述执行上下文信息可以包括对待解析资源进行引用的资源文件类型。
在此方面中,所述请求可以标识资源,并且传送用于指定对待解析资源进行引用的资源位置的至少一个参数。其中出现引用的项目的标识可以使用所指定的位置来确定,在这种情况下,项目标识可以由选择步骤使用。
在解析器扩展注册表中可以标识多个资源解析器,其每一个均具有与之相关联的至少一个标准,所述标准可用来确定何时选择相关联的资源解析器。在此情况下,所述选择步骤最好是还包括评估所述至少一个标准,以便从解析器扩展注册表中标识出的多个资源解析器当中进行选择。
可选地,可以通过选择步骤选择多个资源解析器。在此情况下,所述启用步骤最好是使用与每个资源解析器相关联的优先级值来确定启用每个所选资源解析器的顺序。可以从每个已启用的资源解析器中获得对解析结果的贡献,并且将其作为输入传递至接下来启用的一个资源解析器。在另一种方法中,所述启用步骤在所启用的资源解析器之一成功地解析所请求的资源时停止所述启用,以便创建解析结果。
在此方面中,每个资源解析器可以使用解析器规范向解析器扩展注册表进行注册,所述解析器规范用于标识解析器的实现位置,然后所述启用步骤可以使用所标识的位置。所述解析器规范还可以指定文件类型值,在这种情况下,所述选择步骤最好是把文件类型值与来自所述请求的文件类型进行比较,以便确定是否选择此资源解析器。另外或者作为替代,所述解析器规范还可以指定项目标识符值,在这种情况下,所述选择步骤最好是把所述项目标识符值与来自请求的项目标识符进行比较,以便确定是否选择此资源解析器。
以上是概述并且由此根据需要只包含简化的、概括的并且有所删减的内容;因此,本领域技术人员将会理解的是,所述概述只是例证性的,而不意味着以任何方式来限制。在下面提出的非限制性的详细说明中,由所附权利要求书定义的本发明的其它方面、发明的特征和优点将变得更加明显。
将参考下列附图来描述本发明,其中相同的附图标记始终表示相同的元素。
图1举例说明了用于优选实施例中的通用资源解析策略框架;图2举例说明了资源解析器的示例接口;图3举例说明了可以与此处公开的资源解析器框架一起使用的扩展结构;图4举例说明了用于说明解析器扩展如何起作用的插件文件;图5提供了描述优选实施例的组件当中的逻辑流程的流程图;图6提供了描述使用可以被调用(call)以便解析资源的一个或多个解析器的流程图;图7描述了适合于存储和/或执行程序代码的数据处理系统;并且图8描述了可以使用本发明一个或多个实施例的有代表性的联网环境。
具体实施例方式
优选实施例的目的在于简化涉及多个解析策略的软件开发的任务。公开了一种解析器框架,并且此框架可以根据需要被扩展以便提供领域特定的解析器策略。优选实施例的框架向软件开发人员提供了单个解析器组件的相对简单的外观。在内部,在首先确定哪个策略适于给定上下文之后,所述框架处理启用各种解析器策略的复杂性。
优选实施例的资源解析器框架所基于的概念包括(1)如果为给定上下文选择适当策略所需要的逻辑由该策略自身提供,那么可以简化涉及多个解析策略的软件。通过使所述策略是“自我选择的”,可以对解析器的客户端隐瞒选择确定的细节(即,需要资源解析的代码)。
(2)选择适当解析策略所需的逻辑可以取决于几个相对简单的值,这些值可以从出现解析请求的上下文中推导出。通过形式化这些值并且使它们可用于所述解析策略,变得易于控制应用特殊策略所依据的条件。正如此处将更加详细描述的那样,优选的实施例平衡(leverage)了如下的一个或多个值所引用的文件类型;引用者(referencee)文件类型;引用者文件系统位置;以及引用者项目结构元数据。(“引用者(referencee)”在这种意义上总体上涉及从中请求资源解析的环境。)(3)实际上,解析器策略经常被组成或者“链接在一起”。也就是说,对于特殊的资源解析可以启用解析器序列。在某些方案中,例如,依照连续的方式来使用路径说明,以便尝试把资源定位在多个可能的位置处。令人遗憾的是,这种链接仍需要硬编码的依赖性,以便明确地引用策略实现。如此处所公开的那样,如果所述框架支持多个可利用的解析器策略的概念,那么这些依赖性可以被消除。如果多个策略被认为是可应用于给定的上下文,那么可以重复地应用每个策略以便计算最终的解析结果。(当将要使用此处公开的解析框架来应用多个策略时,可以依照各种方式来致力于解决与不同策略当中的排序和优先级有关的问题,所述各种方式包括使用由所述框架或者由解析策略处理的优先级描述。)使用此处公开的技术为处于不同角色中的人员提供了益处。软件开发人员因消除了对理解各种上下文特定的解析策略(并且与之交互)的要求、并且通过产品资源解析策略的更加简单的集成而受益。随着组件开发所需的依赖性被降低,开发的复杂性也随即降低。此外,特定的开发人员可以被分配负责特定的解析策略,并且必要时,可以通过在一个位置中进行改变来跨越产品进行改变。
诸如工具包供应商之类的第三方贡献者也会因使用此处公开的可扩展技术而受益。例如,特定的资源解析策略目前可以跨越产品由第三方贡献者规定,然而这种选择因缺乏必要的访问而在先前无法用于修改现有的产品工具。第三方贡献者还可以更加容易地集成工具,所述工具遵循其代码目前正起作用的产品的产品解析策略。
最终用户的受益包括对产品内所包括的工具具有更加一致的“感观”,这是由于所有的工具目前具有相同的资源解析策略。此外,可以避免使用现有技术会出现的不一致结果和解析失败。
现在转向图1,如图所示,现在将描述用于优选实施例中的通用资源解析策略框架100。优选实施例的框架具有一个或多个扩展点,其中实现特定解析策略的外部解析器可以插入到所述解析框架中。例如参见附图标记121-123,其举例说明了3个插入到框架100中的示例扩展。采用这种框架,无法逐一实现解析策略的特定工具(通过附图标记111-113所描述的工具来图示)目前可被称为解析策略框架;所述框架判定哪个解析策略用于给定情形,并且代表所述工具启用所述解析策略。(在不偏离本发明的范围的情况下,把特殊情形映射到解析策略以便由所述框架选择的方式可以改变,并且可以考虑各种标准。作为一个例子,可以使用引用者项目类型。下面比较详细地描述策略选择和映射。)依照优选的实施例,此处公开的资源解析器框架(通常也被称为“资源解析器”)由用于处理文档(诸如HTML或者可扩展标记语言或者“XML”文档)的工具启用,以便解析对其它文档的引用。所述资源解析器可以由用于提供单个可启用方法的接口来表示。在图2中的附图标记200处描述了其示例。如图所示,输入参数值可以包括“baseLocation”210、“publicID”220和“systemID”230。现在将比较详细地描述这些参数。
所述“baseLocation”参数210被显示为一个字符串(仅仅是举例说明),并且指定目前正被处理并且正引用待解析资源的资源的基础位置。所述基础位置(此处也可被称为“引用者文件系统位置”)可用来推断保持这种当前资源的项目。(例如,“baseLocation”参数的值可以被传递给这样一种方法,所述方法通过查阅配置文件或者映射,在给定此输入的情况下来确定项目。)已知当前项目在资源解析中可能是有用的,这是因为它可以表示(例如)将在解析资源时使用的路径说明;并且一般说来,已知所述当前项目使得能够获得先前引用的“引用者项目结构元数据”,该元数据随后可以为资源解析提供附加的有用信息。例如,如果特殊项目使用专有的工具,那么当在此项目内解析资源引用时,项目特定的解析器可以被标识和使用,而不需要使这些解析器可在项目外部应用。
所述“publicID”参数220也被显示为一个字符串(仅仅是举例说明),并且在优选实施例中是可选的。此字符串值最好是域名空间或者“DOCTYPE”标识符。例如,此参数可用来指定XML模式文件的域名空间值。此参数可用来指定(或者推断)上述的“引用者文件类型”。
所述“systemID”参数230也被显示为一个字符串(仅仅是举例说明),并且引用待解析的资源。例如,此参数值可以是必须被解析为完全合格的文件系统位置的文件名。可选地,所述参数值可以表明将要获得本地还是远程资源,和/或所述引用是绝对的还是相对的。所述“systemID”参数可以被分析以便获得上述的“所引用的文件类型”参数。
考虑到用于特殊启用的输入值,优选实施例中的解析器执行任何所需要的正规化、映射和项目特定的解析,以便计算用于指定所引用资源的位置的绝对URI。优选实施例中的资源解析器接口200被设计成易于在不同的标记语言处理器当中重新使用。
依照优选的实施例,小的轻型插件包含资源解析器接口(即,资源解析接口组件)的实现和用于支持扩展的基础设施。图3使用众所周知的统一建模语言(“UML”)举例说明了此处公开的资源解析器框架的扩展结构以及多个示例扩展361-363。所述URIResolverPlugin组件320可用来获得URIResolver 310。所获得的解析器最好是使用一个或多个URIResolverExtension 350(通过扩展361-363举例说明),以便应用各种解析行为。这些解析器可以按需加载,并且向其传递一个或多个输入值。优选的是,待传递至特殊解析器的输入值是使用扩展特定的映射来确定的,诸如使用与所述扩展相关联的“plugin.xml”文件(或者在其它方法中,诸如通过不同的映射或者配置文件)来确定。举例来讲,传递至解析器的输入值可以包括 projectNature、fileType、resolutionStage等的值(如附图标记351所表明的那样)。
现在将描述用于提供扩展以供此处公开的可扩展的解析器框架使用的优选方法。在优选的实施例中,URIResolver 310是作为内部类ExtensibleURIResolver 330来实现的。必要时,ExtensibleURIResolver最好是执行标准的URI正规化,并且当可应用于待解析的特殊引用时,主要用于选择并且启用一个或多个资源解析器。如早先参考图1所述那样,工具可以作用于解析器以便用在解析处理过程中,并且在优选的实施例中,使用插件扩展点来实现。作为一个例子,web工具插件可以作用于扩展(如图3中的示例“WebProjectExtension”362所示),以便处理对于web项目而言特定的解析细节,诸如解析上下文根并且应用任何与所述web项目相关的映射。作为另一例子,XML目录插件可以作用于扩展(如图3中的示例“XMLCatalogExtension”361所示),以便执行基于目录的URI映射。作为又一个例子,可以提供web服务启用框架(Web Services Invocation Framework,“WSIF”)扩展(如图3中的附图标记363所示),以便和与WSIF文档(即,用于描述待经由网站发布的web服务的文档)进行交互的工具一起使用;因此,在这种文档中引用的资源可以使用解析器扩展363来定位。在不偏离本发明的范围的情况下,扩展的内容可以改变,并且可以包括(作为举例说明)面向对象的代码、标记语言规范、脚本语言规范等。
每个起作用的解析器最好是具有与之相关联的一个或多个标准,所述标准表明此解析器应当被启用所依据的上下文标准。这种上下文标准值可以在标准至扩展的映射(例如)、诸如与所述扩展相关联的“plugin.xml”文件(或者在其它方法中,诸如通过不同的映射或者配置文件)中被指定。作为一个例子,映射可以指定当用户目前正与XML目录交互时、将要启用的示例“XMLCatalogExtension”361扩展。此映射还可以指定这种当前环境的上下文值将如何被映射到解析器的输入参数上,如上面就参考标记351示出的参数所描述的那样。
对于每个解析器扩展,可以把此类型的映射信息注册在注册表中。此注册表在图3中被称为“URIResolverExtensionRegistry”340。在运行时,此注册表可以由解析器框架查阅,以便选择应当被启用以便解析特殊资源的一个或多个解析器扩展。(也参见图5。)现在参考图4,所提供的示例示出了plugin.xml文件的部分400,其举例说明了如何指定与起作用的 URIResolverExtension 有关的信息。提供了用于所述扩展点的标识符;参见附图标记410处的属性。在此例子中,指定了5个描述所述扩展的属性。(另外,在不偏离本发明的范围的情况下,也可使用更少或不同的属性。)“类”属性411指定实现“URIResolverExtension”350的类,以标识当启用此扩展时将会执行资源解析的代码(在可应用时)。当此扩展仅仅可在特定项目特性(nature)或者类型的上下文中应用时,可以使用“projectNature”属性412。(如先前所述,可以使用诸如从中进行待解析的引用的资源位置的信息来推断项目特性。作为选择,所述项目特性可以依照其它方式来确定。)在优选的实施例中,如果没有为“projectNature”属性指定值,那么假设此扩展可应用于全部项目。当此解析器应当仅被应用于特殊文件类型时,可以使用“fileType”属性413。在图4的示例中,用于“fileType”属性的值“*.wsdl”表明在400处描述的扩展适用于解析从web服务描述语言(Web ServicesDescription Language,“WSDL”)文件中引用的所有资源。最后,“resolutionStage”属性414和“priority”属性415可用来指定所述扩展在解析处理过程内何时应当被启用。在所述示例中,为“resolutionStage”属性指定的值“prenormalization”表明此扩展将在URI的正规化之前被应用,并且“priority”属性值“3”(当容许值的范围在1和5之间时)表明此扩展属于中等优先级。如果把优先级值“1”定义为具有最高优先级,那么图4中描述的示例扩展将在具有优先级值“1”和“2”的任何扩展之后(并且在正规化之前)被处理。
在不偏离本发明的范围的情况下,图4中举例说明的所述类型的信息也可以依照其它方式被指定。示例包括提供用于指定这种信息的明文文件,使用命令行输入信息等。
依照优选的实施例,在选择一个或多个资源解析器用以启用的处理过程期间,可以使用规则或者协定集合。当使用图2中举例说明的方法时,这种规则最好是包括(1)确保“baseLocation”参数的值是完全合格的、良好形成的URI;(2)确保“publicID”和“systemID”中的至少一个是非空的(否则,返回零值);(3)确保解析器启用的任何非空结果是完全合格的、良好形成的URI;并且(4)确保提供确定的解析结果(也就是,确保在同一输入的的情况下多次启用解析器提供同一结果)。扩展供应商应该确保其扩展实现不违反任何规则。
现在参考图5,所提供的流程图示出了优选实施例的组件当中的逻辑流程。从执行代码模块(其在图5中也被称为解析器客户端)提出用于解析资源的请求(块500)。在资源解析器框架处接收此请求(块510),然后资源解析器框架动态地选择解析策略(块520)。值得注意的是,此选择过程最好是依照对启用代码而言透明的方式来进行操作。
标识将和此策略一起使用的一个或多个资源解析器扩展(块530)。优选的是,块520和/或530的处理包括使用诸如当前执行上下文(例如,其可以使用在块500处在解析请求上传递的参数来确定)的值来查阅扩展注册表540,其中这些值被映射到表明每个解析器何时应当被选择的标准上,并且可以定位一个或多个注册表条目,其指定适合于给定情形的一个或多个解析器。在某些情况下,还可能会发生的是,不为待解析的特殊资源定位资源解析器(不过这在图5中没有示出)。当解析器不可用时,解析结果可以作为解析请求中传递的URI或者关键字被提供给启用代码(例如,绕过块550-570的处理)。作为选择,可以返回空结果;或者,所述框架可以表明存在异常。
再次参考块520,作为选择用于给定情形的解析策略的一个例子,假定工具目前正在处理名为“doc.a”的资源,该资源引用名为“doc.a1”的资源。当解析(即,确定在哪里查找)此资源“doc.a1”时,可以提供信息,以便不仅获知目标或者“所引用的”资源的名称(即,“doc.a1”),而且获知源或者“引用者”资源的名称(在此例子中,即为“doc.a”)。在URI解析器扩展注册表540中可以指定一个条目,以表明无论什么时侯类型“a1”的文件从类型“a”的文件中被引用时,然后都应该使用解析器“A_t0_A1”。或者,可以指定一个条目,其用于检查正从中引用资源的当前项目类型(诸如“web项目”或者“Java项目”),并且标识待用于该项目类型的解析器。对于本领域普通技术人员来说将会显而易见的是,也可以使用多个其它类型的值来确定要选择哪一个或哪些解析器。(“Java”是SunMicrosystems公司的注册商标。)如果不是早已可用的话,那么加载被标识为适合于此策略的一个或多个解析器(块550)。然后依照适当的顺序调用所述解析器(块560);参见图6,该图比较详细地描述了此内容。
一旦完成了对一个或多个解析器的启用,就可获得对资源的解析(块570),并且将其返回给启用客户端代码(块580)。所述启用代码接收此结果(块590),并且使用它来获得所述资源(块599)。一旦解析可用,那么获得资源的方式不会形成为本发明的一部分。(如果在块570中接收到空结果,那么可以生成错误消息,不过图5中未示出此内容。)图6提供了举例说明依照优选实施例、使用一个或多个解析器来解析资源的流程图。可以把多个解析器认为是“链接”在一起的,如先前所述的那样。在一种方法中,把每次启用的结果作为输入传递到下一解析器,以便使每次启用均对总体解析结果做出贡献,然后,来自最后启用的结果被返回。或者,在另一方法中,可以返回成功定位资源的某些版本的第一解析器的结果。如前所述,优选的实施例可以指定优先级顺序以便确定当解析所述资源时多个解析器应当被启用的顺序。
因此,在块600,测试所述资源是否已经被解析。倘若如此,那么将所获得的结果返回到启用代码(块610)。否则,块620获得下一适当解析器的标识。其最好是包括使用从URIResolverExtensionRegistry中获得的信息,如上面参考图5的块520和530所述的那样。然后此解析器被执行以便解析所述资源(块630)。然后,控制返回到块600,以便确定是否需要进一步的解析。
作为当多个解析器可能适合于按照顺序被启用时的一个例子,假定所期望的资源是使用统一资源定位符(“URL”)来标识的。作为一种选择,可以把资源存储在web(例如,在web服务器)上。作为另一选择,用户也可以把资源存储在其本地机器上,并且在XML目录中注册其位置。或者,可以把所述资源存储在用户机器的本地高速缓存中。
此外,假定使用了编辑器工具,并且在编辑处理过程期间需要获得资源。当使用现有技术时,如果已经使用XML目录注册了资源位置,那么所述编辑器(以及可能引用存储在已注册位置的资源的所有其它工具)必须被明确地编程为调用此目录来检查所述资源;如果在其中没有找到该资源,那么所述编辑器(或者其它工具)必须知道它应当立即检查另一位置,诸如检查本地高速缓存。如果任何工具错误地省略了对特殊位置的检查,那么资源可能会被忽略。还可能发生的是,工具之间搜索顺序的差异导致获得不同版本的资源,由此导致混淆并且可能出现不一致的结果。例如,如果一个工具首先检查web,并且只有当没有找到资源的可web访问的版本时,才检查本地高速缓存,而第二工具首先检查高速缓存然后检查web,那么这些工具可能会返回不同版本的资源。对比起来,当本发明的优选实施例使用多个资源解析器扩展来解析特殊资源时,最好是使用为所选解析策略指定的启用顺序(例如,使用优先级属性值)。
作为另一现有技术方案,用于提供各种类型的编辑器(诸如WSDL编辑器、XML编辑器、图表编辑器等)、分析器、代码生成器、验证器等的工作台产品可能遇到许多资源解析请求。这些工具可能会不适当地彼此交互,由此可能会(例如)使文件路径值被破坏。这可能会(例如)导致编辑器能够定位特殊资源,而验证器工具(也许已忽略文件路径,或者也许已接收到被破坏的文件路径)找不到此资源。允许用户编辑因此类型的错误而无法完成验证过程的文件,会导致效率低和用户失败。优选实施例的资源解析框架通过允许所有工具使用用于资源解析的框架接口,避免了这种不期望的结果,而不是要求每个工具逐个地执行适当的资源解析策略并且希望已经正确执行了。
特殊资源解析器在启用时进行操作的方式不形成为本发明的一部分。从编写用于获取资源所需的代码的软件开发人员的角度来看,当给定一个资源标识符时,所述解析器框架最好是作为黑匣子来操作,并返回资源的位置。
早先讨论过的URI正规化总体上包括从URI中去除某些嵌入的字符。例如,可以在正规化期间从URI中去除“.”、“\”和空格字符。正规化可以被认为是一种类型的资源解析策略,并且优先级顺序属性可以控制就总体资源解析过程而言何时进行此正规化。例如,正规化可以在启用一个或多个解析器扩展之前被启用。或者,合乎需要的是,最后(或者在某些其它点上)执行正规化。向解析器框架注册的解析器扩展还可以指定将在正规化之前还是在正规化之后启用它们。当把优先级值指定为已注册的扩展的属性时,这些优先级值可以与“resolutionStage”属性相一致地被解释(如上所述;参见图4的附图标记414),以便独立地将预正规化(prenormalization)解析器和后正规化(postnormalization)解析器区分优先次序。
已经参考URI的解析描述了优选实施例的技术。然而,这只是例证说明而非限制。在替代性的实施例中,可以使用此处公开的技术来解析其它类型的标识符,包括Java类路径(由此例如定位类库),或者用来解析对存储在通用描述、发现和整合(Universal Description,Discovery,and Integration,“UDDI”)注册表中的资源的引用。例如在Java类路径方法中,类路径解析器可以被提供作为对解析器框架的扩展。此处公开的技术可以由软件工具使用,所述软件工具利用通过URI引用关联的链接资源,诸如HTML和XML文档、JavaServerPages等。(“Java”和“JavaServer Pages”是Sun Microsystems公司的注册商标。)作为其它示例性(但非限制性)的可替代实施例,此处公开的技术可以用于逻辑解析(例如,把一个URI映射至另一URI),或者用于其它目的,诸如在数据库中查找表格或者在地址簿中查找名称。在给定完全合格的电话号码(即,包括国家、地区和本地代码的号码)或者部分合格的电话号码(即,未全部包括国家、地区和本地代码号码的电话号码)的情况下,此处公开的解析器框架可以用在诸如在电话网络上定位正确的电话之类的方案中。
正如本领域技术人员将会理解的那样,本发明的实施例可以被提供为方法、系统和/或包括计算机可读程序代码的计算机程序产品。因此,本发明可以采取完全是软件的实施例、完全是硬件的实施例或软件和硬件组合的实施例的形式。在优选的实施例中,本发明是用软件实现的,其中包括(但不局限于)固件、常驻软件、微代码等。
此外,本发明的实施例可以采取计算机程序产品的形式,可从计算机可用或者计算机可读介质访问所述计算机程序产品,用于提供程序代码以供计算机或者任何指令执行系统来使用或者与其结合使用。出于描述的目的,计算机可用或者计算机可读介质可以是能够包含、存储、传送、传播或者传输程序的任何设备,其中所述程序供指令执行系统、设备和装置使用或者与其结合使用。
所述介质可以是电子的、磁性的、光学的、电磁的、红外的或者半导体系统(或者设备或装置)或者是传播介质。计算机可读介质的例子包括半导体或者固态存储器、磁带、可移除的计算机盘、随机存取存储器(“RAM”)、只读存储器(“ROM”)、硬磁盘和光盘。光盘的当前示例包括具有只读存储器的紧致盘(“CD-ROM”)、可读/写的紧致盘(“CD-R/W”)和DVD。
现在参考图7,适合于存储和/或执行程序代码的数据处理系统700包括至少一个处理器712,所述处理器经由系统总线714直接或者间接地耦合到存储器元件。所述存储器元件可以包括在程序代码的实际执行期间所采用的本地存储器728,大容量存储设备730和高速缓冲存储器(未示出),其中该高速缓冲存储器用于提供至少某些程序代码的临时存储,以便减少执行期间必须从大容量存储设备中检取代码的次数。
输入/输出(“I/O”)装置(包括但不限于键盘718、显示器724、指示装置720、其它接口装置722等)可以直接或者经由插入其间的I/O控制器或适配器(716,726)耦合至所述系统。
网络适配器也可以耦合至所述系统,以便使数据处理系统能够通过插入其间的专用或公共网络耦合至其它数据处理系统或者远程打印机或者存储设备(总体上如732所示)。调制解调器、电缆调制解调器附件、无线适配器和以太网卡只是目前可用的网络适配器类型的一小部分。
图8举例说明了可以实施本发明的数据处理网络环境800。数据处理网络800可以包括多个单个网络,诸如无线网络842和网络844。多个无线装置810可以在无线网络842上进行通信,而在附图中被显示为工作站811(作为举例说明)的多个有线装置可以在网络844上进行通信。另外,本领域技术人员将会意识到的是,可以包括一个或多个局域网(“LAN”)(未示出),其中LAN可以包括耦合至主处理器的多个装置。
仍参考图8,网络842和844还可以包括大型计算机或者服务器,诸如网关计算机846或者应用服务器847(其可以访问数据存储库848)。网关计算机846充当进入每个网络的入口点,所述网络诸如是网络844。网关846最好是借助于通信链路850a耦合至另一网络842。网关846还可以使用通信链路850b、850c直接耦合至一个或多个工作站811,和/或可以间接地耦合至这种装置。所述网关计算机846可以利用可从国际商用机器公司(“IBM”)获得的Enterprise SystemsArchitecture/370、Enterprise Systems Architecture/390计算机等来实现。取决于应用,可以采用诸如Application System/400(亦称为AS/400)的中程计算机。(“Enterprise Systems Architecture/370”是IBM公司的注册商标;“IBM”、“Enterprise Systems Architecture/390”、“Application System/400”和“AS/400”是IBM公司的注册商标。)
网关计算机846还可以被耦合(849)至存储设备(诸如数据存储库848)。
本领域技术人员将会理解的是,网关计算机846可以位于地理上距离网络842很远的地方,并且同样地,无线装置810和/或工作站811可以分别位于距离网络842和844某一距离的地方。例如,网络842可以位于加利福尼亚,而网关846可以位于得克萨斯,并且一个或多个工作站811可以位于佛罗里达。无线装置810可以使用联网协议在多个可替代的连接介质上与无线网络842连接,所述联网协议诸如是传输控制协议/网际协议(“TCP/IP”),所述连接介质诸如是便携式电话、射频网络、卫星网络等。所述无线网络842最好是使用网络连接850a与网关846连接,所述网络连接850a诸如是TCP或者IP上的用户数据报协议(“UDP”)、X.25、帧中继、综合服务数字网(“ISDN”)、公共交换电话网(“PSTN”)等。工作站811可以使用拨号连接850b或者850c直接连接至网关846。此外,无线网络842和网络844可以依照类似于图8中所描述的方式与一个或多个其它网络(未示出)相连。
虽然已经描述了本发明的优选实施例,但是只要本领域技术人员获知了基本的发明构思,他们就能够想到那些实施例中的附加的变化和修改。因此,所附权利要求书应被解释为包括优选的实施例以及落入本发明的精神和范围内的所有这种变化和修改。此外,应该理解的是,在权利要求书中使用“一”或“一个”不意味着把本发明的实施例限制为单个由此引入的任何元件。
权利要求
1.一种资源解析器系统,包括可扩展资源解析框架,所述框架适合于使用至少一个资源解析器来扩展,每个资源解析器适合于解析资源,所述框架还适合于当接收到对解析资源的请求时,动态地选择并且启用所述至少一个资源解析器中的至少一个,其中所述至少一个启用的资源解析器响应于其的启用来作用于解析结果,并且所述框架把解析结果返回作为对所述解析请求的响应。
2.如权利要求1所述的系统,其中,所述资源解析器适合于用作所述框架的插件。
3.如权利要求1所述的系统,其中所述至少一个资源解析器中的每一个均向解析器扩展注册表进行注册;并且所述框架搜索所述解析器扩展注册表,以便从已注册的资源解析器当中进行动态选择。
4.如权利要求1所述的系统,其中,至少一个动态选择的资源解析器中的每一个均是基于当前的执行上下文被选择的,每一个所选的资源解析器均适合于和该当前执行上下文一起使用。
5.一种用于解析资源的方法,包括如下步骤在资源解析接口组件处接收对解析资源的请求;响应于对所述请求的接收,通过所述资源解析接口组件来选择至少一个用于解析所述资源的资源解析器;通过所述资源解析接口组件来启用所选的资源解析器中的至少一个,以便解析所述资源,从而获得解析结果;并且通过资源解析接口组件把所述解析结果返回作为对所述请求的响应。
6.如权利要求5所述的方法,其中,所述请求标识所述资源并且传送可由选择步骤使用的信息。
7.如权利要求6所述的方法,其中,所传送的信息包括至少一个参数,所述参数用于指定从中接收到所述请求的执行上下文的执行上下文信息。
8.如权利要求7所述的方法,其中,所述执行上下文信息包括引用待解析资源的资源的位置。
9.如权利要求7所述的方法,其中,所述执行上下文信息包括其中遇到对资源的引用的项目,并且其中所述请求是响应于遇到所述引用而生成的。
10.如权利要求6所述的方法,其中,所述资源的标识还包括资源的文件类型。
11.如权利要求7所述的方法,其中,所述执行上下文信息包括引用待解析资源的资源的文件类型。
12.如权利要求5所述的方法,其中所述请求标识所述资源,并且传送用于指定引用待解析资源的资源位置的至少一个参数;其中出现所述引用的项目的标识是使用所指定的位置确定的;并且所述项目标识由所述选择步骤使用。
13.如权利要求5所述的方法,其中在解析器扩展注册表中标识多个资源解析器,每个资源解析器均具有与之相关联的至少一个标准,所述标准可用来确定何时选择相关联的资源解析器;并且所述选择步骤还包括评估所述至少一个标准,以便从解析器扩展注册表中标识出的多个资源解析器当中进行选择。
14.如权利要求5所述的方法,其中通过所述选择步骤选择多个资源解析器;并且所述启用步骤使用与每个资源解析器相关联的优先级值来确定启用每个所选资源解析器的顺序。
15.如权利要求14所述的方法,其中,从每个启用的资源解析器中获得对解析结果的贡献,并且将其作为输入传递至接下来启用的一个资源解析器。
16.如权利要求14所述的方法,其中,所述启用步骤在已启用的资源解析器之一成功地解析所请求的资源时停止所述启用,以便创建所述解析结果。
17.如权利要求13所述的方法,其中每个资源解析器均使用解析器规范来向解析器扩展注册表进行注册,所述解析器规范用于标识解析器的实现位置;并且所述启用步骤使用所标识的位置。
18.如权利要求17所述的方法,其中所述解析器规范还指定文件类型值;并且所述选择步骤把所述文件类型值与来自所述请求的文件类型进行比较,以便确定是否选择此资源解析器。
19.如权利要求17所述的方法,其中所述解析器规范还指定项目标识符值;并且所述选择步骤把所述项目标识符值与来自所述请求的项目标识符进行比较,以便确定是否选择此资源解析器。
20.一种用于解析资源的系统,包括用于在资源解析接口组件处接收对解析资源的请求的装置;用于响应于对所述请求的接收,通过所述资源解析接口组件来选择至少一个用于解析所述资源的资源解析器的装置;用于通过所述资源解析接口组件来启用所选的资源解析器中的至少一个以便解析所述资源,从而获得解析结果的装置;以及用于通过资源解析接口组件把所述解析结果返回作为对所述请求的响应的装置。
21.一种计算机程序产品,包括至少一个用于存储计算机可读程序代码的计算机可用介质,其中当在计算机上执行所述计算机可读程序代码时,使计算机执行如下步骤在资源解析接口组件处接收对解析资源的请求;响应于对所述请求的接收,通过所述资源解析接口组件来选择至少一个用于解析所述资源的资源解析器;通过所述资源解析接口组件来启用所选的资源解析器中的至少一个,以便解析所述资源,从而获得解析结果;并且通过资源解析接口组件把所述解析结果返回作为对所述请求的响应。
全文摘要
公开了一种可扩展的资源解析框架。引用资源的执行代码启用一个可扩展的资源解析框架的接口。可以在启用时提供参数以便指定与当前执行上下文有关的信息。以对启用代码而言透明的并且对给定情形(例如,包括所述执行上下文)而言适当的方式,选择一个或多个资源解析器。所述资源解析器最好是用作所述解析框架的插件。可以为每个解析器指定标准,以表明解析器应该何时被选择。可以指定每一解析器的优先级顺序,以便当选择一个以上的解析器时来控制启用顺序。
文档编号G06F17/30GK1955924SQ20061014299
公开日2007年5月2日 申请日期2006年10月26日 优先权日2005年10月27日
发明者克莱格·萨尔特, 尼丁·S.·达亚布海, 劳伦斯·曼德尔 申请人:国际商业机器公司