经由公共数据结构访问不同的类型结构的制作方法

文档序号:6592963阅读:155来源:国知局
专利名称:经由公共数据结构访问不同的类型结构的制作方法
经由公共数据结构访问不同的类型结构背景随着计算机化系统的日益普及,在这些计算机化系统上使用的各种应用程序和文 档也日益增加。具体而言,现在存在出于任何数量的目的配置的各种各样的应用程序,无论 是用作复杂的操作系统、数据库等,还是用作被配置成专用的更简单的应用程序。在许多情 况下,软件开发者将使用任何数量的适当的编程语言在脑海中了解特定操作系统/框架的 情况下编写新的应用程序。一旦软件完成,开发者就将该应用程序编译成机器可执行代码, 其然后可被安装在具有适当的操作系统的计算机系统上。在许多情况下,操作新应用程序 将涉及与系统/框架中的若干其他组件或应用程序互操作。因此,可以理解,存在操作系统或通用框架的开发者以及在该框架中操作的各个 应用程序的开发者通常必须考虑的多个考虑事项。这些关注事项中的许多甚至可能是竞争 的。例如,许多应用程序开发者所关注的可能是快速且可定制的操作,而许多操作系统/框 架开发者所关注的可能是安全性和稳定性。在某些情况下,安全性和稳定性要求可限制某 些应用程序操作的方式的速度和可定制性。这种紧张会变得显而易见的一个领域具有特定种类的“类型框架”。在类型框架 中,函数、自变量,甚至数据值都可以与特定“类型”相关,类型一般定义了在另一个应用程 序或组件可以访问/处理对应的数据之前各种数据(即,函数、自变量或值)需要如何表 现。在使用强类型框架的系统中,框架可以被配置成使得使用一种类型的应用程序或组件 被禁止执行或访问对应于其他类型的函数和数据。某些示例框架包括标称(或标称的)和 结构类型框架,虽然有许多不同种类的类型框架。一般而言,标称(或标称的)类型框架被配置成使得一个标称类型的数据只能访 问使用完全相同的类型名称(是相同的标称类型)的其他数据(或被这些数据访问)。如 此,使用被称为“客户记录”的类型名的一个应用程序可能被禁止访问由按照被称为“成员 记录”的类型名的另一个应用程序来管理的类似的数据,即使类型结构(例如,记录字段的 数量和名称)可能是相同的。例如,结构身份可能在客户记录和成员记录的标称类型两者 都包括相等数量和类型的字段的情况下(例如,一个集合包括第一名称=“字符串”,而第 二名称=“字符串”等等)出现。相反,结构类型框架依赖于结构之间的匹配,而不是名称 之间的匹配。虽然结构类型不限于非确切类型名,但当一个类型比另一个类型包括更多种 类的结构或包括与另一个类型不同的结构时(例如,成员记录包括第一名称=“字符串”, 第二名称=“字符串”,以及电话号码=值),会出现结构不匹配。对于包括标称和结构类型的各种不同类型之间的不匹配,常常有各种解决方法, 以使得应用程序可以互操作。例如,在标称类型框架内,开发者可以为每一个感兴趣的应用 程序编写新代码,该新代码将一种标称类型中的类型结构映射到或转换成另一种标称类型 中的相同类型结构。尽管不匹配的类型结构之间的类似解决方法也是可能的,但结构类型 的这一转换往往更复杂。例如,Lisp编程语言实现了一种公共,常规结构类型框架,其中基 本结构是数据对。因此,为了使用另一应用程序的数据,基于Lisp的应用程序通常需要将 该另一应用程序中的数据结构转换为数据对结构,但这是困难的。
类似地,可能难以从Lisp数据对结构转换到另一应用程序中的另一类型结构。这 不仅对于数据在Lisp中是如何安排的差异是正确的,而且还因为在没有对数据对进行计 算上昂贵的、完整的遍历的情况下Lisp数据对的值通常难以查明。这部分地因为Lisp数 据对往往不经由基本查询提供非常多的信息,除非数据对是“序列”。然而,Lisp编程框架 不是可造成不同类型结构问题的唯一语言。各自使用它们自己的不同结构类型框架的其他 常见语言包括XML、SQL、. NET,以及JAVA,而互操作常常意味着某种类型结构转换。因此,确保应用程序之间的互操作性的一种方式是使得在类似平台上工作的应用 程序开发者能够在适当时预先就标称和/或类型结构的细节达成一致。当然,这样的严格 且精确的一致并不总是可能的,并为可以创建以后将用于相同系统中的组件的其他开发者 提供极少的灵活性。如此,开发者通常最后尝试(如前所述)编写一个或多个接口,这些接 口将较新的应用程序类型的数据转换成或以其他方式映射到另一个应用程序类型的数据。 例如,编写用一种结构类型框架编写的应用程序的开发者可能需要为用Lisp编程语言编 写的其他应用程序编写一个适配器,和/或可能还为用XML、SQL、. NET,以及JAVA编程语言 中的每一个编写的应用程序编写单独的适配器。可以理解,这意味着,新应用程序的开发者将需要知道(或了解)其他程序中所使 用的类型。要考虑的应用程序越少,此问题就可能显得不那么不方便。然而,更为普遍的是, 对于许多开发者而言,这种情形呈指数地变成有问题的,特别是当在系统上使用相似或相 同种类的数据(例如,成员资格记录、函数等等)的应用程序的数量会增长时。此问题会进 一步恶化,因为各应用程序中的每一个都会变化或进行各种升级,这可能会导致类型名和/ 或结构的更进一步的变化。因此,对于基于类型的框架,有许多可以解决的困难。简要概述本发明的实现提供被配置成提供一个应用程序或组件通过公共/通用数据结构 对几乎任何其他应用程序的任何数据的访问的系统、方法,以及计算机程序产品。例如,在 一个实现中,一个应用程序对数据的请求涉及启动一个或多个代理,这些代理可以将另一 个应用程序的数据映射到公共数据结构中的一个或多个模式。然后,发出请求的应用程序 可以通过由代理创建的返回的数据结构(具有映射信息)来与所请求的数据进行交互。结 果,系统中的每一应用程序都可以进行互操作,而不管它们是否一定预先知道公共数据结 构,并因此它们是否已经根据其他应用程序所使用的特定类型结构来配置它们的数据。因此,从整个系统的观点来看,一种方法可以涉及从应用程序接收对由一个或多 个不同的应用程序维护的数据的一个或多个访问请求。在此情况下,所请求的数据对应于 一个或多个不同的类型结构。该方法还可以涉及标识对应于一个或多个不同的应用程序的 一个或多个代理。此外,该方法还可以涉及使用所标识的一个或多个代理来将所请求的数 据映射到公共数据结构。所标识的一个或多个代理创建将所请求的数据映射到公共数据结 构的映射数据结构。此外,该方法可以涉及将映射数据结构提供给到作出请求的应用程序。此外,从应用程序的观点来看,一种方法可以涉及发送对对应于一个或多个不同 的类型结构的数据的一个或多个访问请求。该方法还可以涉及接收一个或多个映射数据结 构,这些映射数据结构包括所请求的数据和公共数据结构的一个或多个结构类型之间的映 射信息。此外,方法还可以涉及请求对一个或多个映射数据结构的一个或多个动作。在此
6情况下,所请求的一个或多个动作被转换为一个或多个不同的类型结构的数据。此外,该方 法可以涉及接收对对应于一个或多个不同的类型结构的所请求的数据的所请求的一个或 多个动作已经完成的一个或多个确认。提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概 念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定 所要求保护的主题的范围。本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而 易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书 中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附 权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。附图简述为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出 的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图 仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用 附加特征和细节来描述和说明,在附图中图IA示出了根据本发明的一实现的概略示意图,其中实现一个或多个不同的类 型结构的一个或多个应用程序通过公共数据结构进行互操作;图IB示出了其中启动代理以将数据映射到公共数据结构的图IA的示意图;图2示出了其中一应用程序通过映射数据结构与另一应用程序中的数据进行互 操作的

图1A-1B的示意图;以及图3示出了从应用程序和整个系统的观点来看的、用于使用公共数据结构来访问 不同结构类型的数据或以其他方式提供对这些数据的访问的方法的流程图。详细描述本发明的各个实现涉及被配置成提供一个应用程序或组件通过公共/通用数据 结构对几乎任何其他应用程序的任何数据的访问的系统、方法,以及计算机程序产品。例 如,在一个实现中,一个应用程序对数据的请求涉及启动一个或多个代理,这些代理可以将 另一个应用程序的数据映射到公共数据结构中的一个或多个模式。然后,作出请求的应用 程序可以通过由代理所创建的返回的数据结构(具有映射信息)来与所请求的数据进行交 互。结果,系统中的每一个应用程序都可以进行互操作,而不管它们是否一定预先知道公共 数据结构,并因此它们是否已经根据其他应用程序所使用的特定类型结构来配置它们的数 据。因此,并且如将在此处更加全面地理解的,本发明的至少一个实现涉及提供公共 数据结构(或“通用数据模型”)。该公共数据结构/通用数据模型进而按照“原子”、“序 列”、“记录”或“操作”通过数据形状来定义系统中的任何应用程序中的数据或以其他方式 这些数据进行分类。该分类系统不仅可以在开发者正在开发应用程序时使用,而且甚至可 以在运行时使用,即使给定应用程序的数据没有严格地根据公共数据结构或另一个应用程 序所使用的类型结构来分类或配置。可以理解,因此,该系统可以广泛地扩展,并且可以存在于多个不同的框架内或以 其他方式在其中使用。例如,本发明的各个实现可以被容易地配置成或以其他方式扩展成在公共语言运行时(“CLR”)环境内使用,和/或相对于任何特定语言框架来使用。例如, 本发明的至少一个实现还特别适用于基于XML的应用程序。实际上,可以使用几乎任何语 言或运行时环境,只要可以在某一时刻确定底层数据的形状。图IA示出了根据本发明的一实现的概略示意图,其中系统100中的一个或多个不 同的应用程序或组件通过公共数据结构彼此进行交互。例如,图IA示出了系统100,该系统 100包括一个或多个处理模块105,这些处理模块105进一步包括对公共数据结构(或“通 用数据模型”)110的一个或多个引用。在至少一个实现中,系统100包括被配置在标称类 型环境的子空间内的通用结构类型系统。例如,系统100可以包括在基于CLR的标称类型 环境内实现的公共结构类型系统。此外,图IA还示出公共数据结构110包括定义某些结构类型的一个或多个模式以 及与特定数据“形状”相关的模式。还如此处更全面地理解的,数据“形状”是指数据元素的 可以用来按照公共数据结构110来广泛地对数据元素进行分类的基本、可标识特征。例如, 图IA示出公共数据结构110包括具有数据形状135的对于操作的结构类型模式,具有数据 形状140的对于序列的结构类型模式,以及具有数据形状145的对于记录的结构类型模式。 图IA还示出公共数据结构110将结构类型模式进一步分类成“原子”,该模式基本上是具有 未定义数据形状的任何事物(即,“一-”)。一般而言,“操作”是指具有将数据标识为函数或自变量的数据形状的一个或多个 数据元素的任何集合,该函数或自变量在被执行或处理时返回结果,无论是单独地还是作 为其他函数的任何集合的一部分。例如,在至少一个实现中,操作在本质上可被解释为核 心,即能够调用的数据片段。对于CLR,当将CLR实例映射到公共数据结构110时,“方法” 和“委托”可以被解释为操作。由此,CLR环境中的操作可以被解释为取未指定数量的“结 构化值”参数,并返回“结构化值”的委托。在至少一个实现中,结构化值是作为对代码中的 对结构化值进行操作的实例进行分类的帮手来提供的特定标称类型。另外,还可以将类型 “结构化值”用作API (应用程序编程接口)上的标记类型,该标记类型特别期望对已经被引 入到结构化值空间中的值进行操作。此外,“序列”此处是指具有一个或多个(无序的)值集合的任何集合的数据形状 的数据。例如,对于CLR环境,序列可以被解释为“结构化值”的无序集合。一般而言,序列 包括没有被单独地标记的值,或者对于其标签或名称或者不是每一个值唯一的,或者由于 某种原因从系统100的观点来看不足以对集合中的值进行区分的值。相反,“记录”包括具有值集合的形状的数据,这非常像序列,不同之处在于记录中 的值具有与一个或多个唯一标签相关联的另一形状特性,诸如一个或多个唯一字段名。例 如,在CLR环境的至少一个实现中,记录可以被解释为一组已命名的成员(这些成本本身各 自具有作为某种“结构化值”的值),以及指示记录是否是只读的标志。因此,在这样的环境 中,可以理解,记录和序列可以被解释为用于表达数据形状的主要机制。当然,尽管前面的描述,但可以理解,此处对可能表现为在一个特定操作系统或应 用程序中具有某种特定用途的任何特定组件、函数、或操作环境的任何引用只是为了描述 方便。具体而言,可以从此处的说明书和的权利要求书中理解,本发明的各个实现可以在各 种各样的的操作环境和操作系统和/或框架/环境中实施。由此,不应该理解为被限于任 何特定的操作系统或应用程序。
在任何情况下,图IA还示出系统100包括一个或多个应用程序或组件120、125以 及135,由此处更加全面地讨论的,这些应用程序或组件最终受益于公共数据结构110。例 如,图IA示出应用程序120、125以及130中的每一个都分别包括一个或多个数据集123、 127以及133,这些数据集可以对应于或不对应于公共数据结构110的模式之一。具体而言, 图IA示出应用程序120包括数据集123,该数据集123包括数据元素A、B以及C。在此情 况下,数据元素A、B以及C至少部分地分别基于对应的数据形状135、140以及145来分别 对应于操作、序列或记录的结构类型。相反,图IA还示出应用程序125和130也包括数据集,但类型结构和数据形状没 有按照公共数据结构110来清楚地定义。例如,图IA示出应用程序135包括具有数据元素 D、E和F构成的数据集127。在这些数据元素中,只知道数据元素D基于数据形状135来与 “操作”结构类型相对应。具体而言,图IA示出数据元素E具有数据形状145,而E还没有 与特定结构类型相关联。类似地,数据元素F既不与结构类型相关联,也不包括已知数据形 状。此外,图IA还示出应用程序130包括数据集133,该数据集133包括数据元素G、 H、I和J。在这些数据元素中,数据元素G、H和I分别具有可标识数据形状140,135,以及 145。然而,如图所示,只有数据元素I被标识为对应于记录结构类型。此外,图IA还示出 数据元素J既没有所标识的结构类型,也没有可容易地标识的数据形状。因此,可以理解,从应用程序125和/或135(与应用程序120相比)的各种数据 元素中的结构/类型观点来看,标识什么的差异可以取决于若干因素。例如,对于应用程序 120,开发者可能已经在记住公共数据结构110并知道必需的模式的情况下创建应用程序 120,由此利用适当的结构类型来声明数据元素A、B和C。由此,在安装应用程序120时,处 理模块105可以被配置成立即标识数据元素A、B和C各自对应于公共数据结构110的所示 类型和数据形状。相反,应用程序125和/或130的开发者可能已经在开始时使用某一明确定义的 数据形状来创建应用程序125和/或130,但基于其他不同的类型框架来声明特定结构类 型。由此,在安装时,或在数据被系统100标识的某一其他时刻,应用程序125和130可能 没有专门提供对应于公共数据结构110的类型结构身份(或系统100没有标识类型结构)。 或者,应用程序125和130可能已经在记住公共数据结构110的情况下开发,但出于一个原 因或另一个原因,数据元素D-J尚未由处理模块105标识和/或与特定结构类型相关。一般而言,存在可以将结构类型与特定数据元素相关联的多种方式。例如,应用程 序可以被配置成诸如在安装时向处理模块105发布其相关联的类型结构和数据元素形状。 类似地,应用程序用标识给定应用程序所管理的数据(即,数据集123)符合公共数据结构 110的一个或多个消息来响应处理模块105(例如,在安装期间,或在运行期间)即可。然 而,本发明的各个实现的至少一个优点是这些信息中的大部分或全部可以在运行时使用一 个或多个代理(例如,165、170、175)来确定。例如,图IA示出系统100包括代理的注册表 115,在此情况下,该注册表115至少包括基于应用程序120的代理165。图IA还示出注册 表115包括基于应用程序125的代理170,以及基于应用程序130的代理175。作为解释,“代理”是指在系统100中调用并用来与特定的应用程序接口的一个或 多个计算机可执行指令的集合。在一个实现中,这些代理可以作为可以在几乎任何时刻被
9调用的已经编译的可执行指令来存在。然而,在附加或替换实现中,这些代理可以包括由系 统100提供并在被调用时首先编译并且然后执行的一种形式的中间语言代码。在任一种情 况下,可以理解,代理可以是相当应用程序专用的,诸如用适于给定应用程序的特定程序语 言来编写。例如,给定代理可以针对用XML、SQL、Lisp等编写的程序来专门配置。例如,在 基于CLR的至少一个实现中,被称为“Clr结构服务”的代理可以被配置成表示“结构化值” 的CLR实例。这些代理可以由应用程序开发者创建,或简单地由系统100来提供。例如,(应用 程序120,125,130等的)应用程序开发者可以准备该给定应用程序专用的一个或多个代 理,并在安装应用程序时注册该代理。在某些情况下,对于某些开发者这可能是优选的,因 为应用程序开发者可能处于较佳的位置以确保代理避免将数据元素过度分类为未定义的 “原子”,如果有的话。然而,在其他情况下,应用程序开发者可以至少部分地根据在公共数 据结构110的结构类型内定义的形状来准备他们的数据,由此开发者可以优选使用默认代 理的便利。一般而言,每一代理都被配置成在被执行时,给定代理遍历由应用程序(120、125、 130等)维护的一个或多个数据结构或元素。在遍历时,代理至少被配置成标识各种数据元 素的“形状”。如从前面的内容可以理解,这意味着代理代码通常将被配置成标识由应用程 序维护的数据元素是否是符合特定最小属性(例如,返回结果)的函数或自变量。同一个 代理通常还将被配置成标识特定数据元素是否形成值的集合,和/或那些值是否包括可以 将数据元素分类为诸如此处对于公共数据结构110模式所描述的序列或记录的任何附加 标记。图IB示出了其中系统100借助于一个或多个代理向应用程序120提供对一个或 多个应用程序125和130中的数据的访问的概略示意图。例如,图IB示出应用程序120发 送一个或多个数据访问请求180,以请求访问由应用程序125维护的数据。此请求由系统 100诸如经由处理模块105来进行处理。由于该请求涉及对应于完全不同的/不兼容的类 型结构的数据(与应用程序120相比),因此图IB于是示出处理模块105咨询代理注册表 115以标识应该使用什么代理来将应用程序125类型结构映射回到公共数据结构110。因 此,图IB示出处理模块105标识代理170与应用程序125相关,并经由请求185启动代理 170 (S卩,在运行期间)。此外,图IB还示出初始化对应于应用程序125的代理170。在至少一个实现中,代 理170然后开始遍历不同的数据元素D、E、F等中的每一个,以便将任何结构类型身份标识 为可用,和/或标识每一个数据元素的数据形状。例如,在至少一个实现中,代理170标识 数据元素D包括操作,如在公共数据结构110的结构类型框架内所理解的。此外,代理170 还可以确定数据元素E具有与公共数据结构105中的记录的结构类型中所使用的形状一致 的数据形状145。此外,代理170可能无法标识对于数据元素F的数据形状的任何结构类 型,并由此将数据元素F指定为原子。在完成对数据元素的这一遍历和映射时,代理170然后返回将所遍历的(或所请 求的)数据元素映射回到公共数据结构的一个或多个数据结构。例如,图IB示出代理170 通过处理模块105发送映射数据结构195。然后,处理模块105将映射数据结构195传递 到应用程序120。在附加或替换实现中,处理模块105简单地向应用程序120返回指示已经创建了映射数据结构195的消息,并且还提供应用程序120可以用来访问映射数据结构 195的一个或多个引用。然后,应用程序120使用映射数据结构195中的映射来对应用程序 125中的数据执行一个或多个动作。例如,图2示出了其中应用程序120通过映射数据结构195与应用程序125的数 据进行互操作的至少一个实例。例如,图2示出映射数据结构195包括公共数据结构模式 和应用程序125的数据元素之间的映射或关联信息。具体而言,图2示出映射数据结构195 包括将数据元素D定义为操作或将其与操作相关的映射210。此外,图2还示出该映射数据 结构包括将数据元素E定义为记录或将其与记录相关的映射220,以及将数据元素F定义为 原子或将其与原子相关的映射230。然后,应用程序120可以通过引用这些各种映射来操纵 或使用应用程序125的数据。例如,图2示出应用程序120向处理模块105发送请求200。在此情况下,请求200 包括向记录E写入,将记录E改为“E' ”的请求。为了处理该请求,图2示出处理模块105 经由对映射数据结构195的引用来处理请求200。在一个实现中,这意味着处理模块105将 请求200与映射信息220组合,并向应用程序125发送新请求(或请求200的经修改的形 式)。例如,图2示出处理模块105向应用程序125传递请求240。由于应用程序125理解 请求240中所包括的映射信息220,因此应用程序125可以理解并处理来自应用程序120的 改变数据元素E的请求。由此,应用程序125处理该请求,并且然后通过通信信道发回确认。例如,图2示出 应用程序125准备并发送响应250,该响应250确认数据元素E已经应请求而被改为E'。 在一个实现中,这涉及向处理模块105发送消息250,该处理模块105然后将该消息转发到 应用程序120。结果,应用程序120操纵了由应用程序125管理的一个或多个数据元素,而 不必详细知道应用程序125所使用的类型约定。因此,图1A、1B和2示出了用于处理应用程序之间的数据而几乎不管这些数据中 的特定结构类型分配的多个不同的示意图、组件和图示。相反,需要考虑的所有事项是为了 使应用程序能彼此互操作的最基本的数据形状。可以理解,这可以为开发者提供大得多的 灵活性,诸如通常对于松散类型系统更常见的那种灵活性(即,不必担心特定类型约定), 但维护强类型系统的重要性能和安全优点。除了上述内容之外,本发明的各实现还可以按照包括用于实现特定结果的一个或 多个动作的方法来描述。例如,图3示出了从应用程序120和系统100的观点来看的、用于 使用公共数据结构来访问对应于不同结构类型的数据或以其他方式提供对这些数据的访 问的流程图。图3中所示出的动作在下文中参考图IA到2的组件和图示来描述。例如,图3示出从应用程序120的观点来看的方法可以包括发送数据访问请求的 动作300。动作300包括发送对对应于一个或多个不同类型结构的数据的一个或多个访问 请求。例如,如图IB所示,应用程序120向处理模块105发送访问请求180。请求180进而 涉及访问或以其他方式操纵由使用另一种类型结构(或未明确定义的类型结构)的另一个 应用程序(例如,125)所维护的某些数据。图3还示出从应用程序120的观点来看的方法可以包括接收将数据映射到公共数 据结构的数据结构的动作310。动作310包括接收包括所请求的数据和公共数据结构之间 的映射信息的一个或多个数据结构。例如,如图IB所示,在接收到访问请求180时,处理模块105发送一个或多个消息185以启动代理170。然后,代理170遍历应用程序125中的数 据结构以将各种数据形状标识到可标识这些数据形状的程度,并返回将所请求的数据与公 共数据结构UO相关的映射数据结构195。此外,图3还示出从应用程序120的观点来看的方法可以包括通过接收到的数据 结构来对所请求的数据执行操作的动作320。动作320包括请求对一个或多个数据结构的 一个或多个动作,其中所请求的一个或多个操作被转换为一个或多个不同的类型结构。例 如,如图2所示,应用程序120向处理模块105发送请求200,该请求200包括将数据元素E 改为数据结构195中的E'的请求。然后,该请求通过映射数据结构195和消息240来转 换,并且随后通过应用程序125来处理。此外,图3还示出从应用程序120的观点来看的方法可以包括确认操作已完成的 动作330。动作330包括接收对对应于一个或多个不同的类型结构的所请求的数据的所请 求的一个或多个操作已经完成的一个或多个确认。例如,图2示出应用程序125将一个或 多个确认响应250发回应用程序120以确认对应于数据元素E的记录已改为E'。除前面的内容之外,图3还示出从整个系统100的观点来看的方法可以包括接收 对对应于不同类型结构的数据的访问请求的动作340。动作340包括从应用程序接收对由 一个或多个不同应用程序维护的数据的一个或多个访问请求,其中所请求的数据对应于一 个或多个不同的类型结构。例如,图IB示出系统100经由处理模块105从应用程序120接 收访问应用程序125中的数据的请求180。在此特定的情况下,虽然为应用程序125定义了 至少一个数据元素,但某些其他数据元素不具有特定结构类型,并且只具有数据形状(例 如,数据元素E)。图3还示出从系统100的观点来看的方法可以包括为不同的类型结构标识对应的 代理的动作350。动作350包括标识对应于一个或多个不同应用程序的一个或多个代理。 例如,图IB示出处理模块105在接收到请求180时在注册表115中标识代理170与应用程 序125相关,并发送一个或多个请求185以启动代理170。此外,图3还示出从系统100的观点来看的方法可以包括将所请求的数据映射到 公共数据结构的动作360。动作360包括使用所标识的一个或多个代理来将所请求的数据 映射到公共数据结构,其中所述所标识的一个或多个代理创建映射数据结构。例如,代理 170遍历数据元素,并且例如标识哪些数据形状对应于公共数据结构110中的哪些结构类 型。然后,代理170创建包括映射信息的数据结构195,该映射信息将所请求的数据元素相 关(或分配)到公共数据结构中的结构类型。此外,图3还示出从系统100的观点来看的方法包括将包括映射信息的数据结构 发送到公共数据结构的动作370。动作370包括将映射数据结构提供给作出请求的应用程 序。例如,如图IB所示,处理模块105将映射数据结构195发送到应用程序120。如前面所 讨论的,应用程序120然后可以操纵应用程序125中的在映射数据结构195中被适当地映 射的任何数据。因此,图1-3和对应的文本提供了用于确保各种各样的应用程序即使在彼此的数 据可能被构建在不同的类型框架上的情况下也可以访问这些数据的多个组件和机制。如上 文所提及的,本发明的至少一个优点是开发者可以主要依靠数据形状考虑事项,而不是特 定类型约定。这种对数据形状的专注,而不是有时改变类型约定,使得构建在较旧或较新的
12类型框架上的应用程序仍然能够享受相当多的操作。本发明的实施例可以包括含有各种计算机硬件的专用或通用计算机,这将在以下 更详细地讨论。本发明的范围内的实施例还包括用于携带或其上储存有计算机可执行指令 或数据结构的计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机访问 的任何可用介质。作为示例而非限制,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其 他光盘存储、磁盘存储或其他磁存储设备、或可用于携带或存储计算机可执行指令或数据 结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。当信息通过 网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算 机将该连接完全视为计算机可读介质。因此,任何这样的连接被适当地称为计算机可读介 质。上述的组合也应被包括在计算机可读介质的范围内。计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某 一功能或某组功能的指令和数据。尽管用结构特征和/或方法动作专用的语言描述了本主 题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述 具体特征和动作是作为实现权利要求的示例形式公开的。本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在 所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而 非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书 的范围所涵盖。
权利要求
一种在计算机化环境的面向对象的系统(100)中的方法,所述系统(100)包括使用对应于基于不同数据形状(135、140、145)的不同类型结构的一个或多个数据元素的一个或多个应用程序(120、125、130),所述方法使用公共数据结构(110)来自动向应用程序提供对不同结构类型的数据的访问,以使得使用不同结构类型的应用程序可以互操作,所述方法包括以下动作从应用程序(120)接收(340)对由一个或多个不同的应用程序(125、130)维护的数据(127、133)的一个或多个访问请求(180),其中所请求的数据对应于一个或多个不同的类型结构;标识(350)对应于所述一个或多个不同的应用程序的一个或多个代理(165、170、175);使用所标识的一个或多个代理来将所请求的数据映射(360)到公共数据结构(110),其中所标识的一个或多个代理创建将所请求的数据(127、133)映射到所述公共数据结构(110)的映射数据结构(195);以及将所述映射数据结构(195)提供给作出请求的应用程序。
2.如权利要求1所述的方法,其特征在于,所标识的代理中的至少一个是由所述一个 或多个不同的应用程序中的一个提供的。
3.如权利要求1所述的方法,其特征在于,所标识的代理中的至少一个是由所述系统 (100)提供给所述一个或多个不同的应用程序中的一个的默认代理。
4.如权利要求1所述的方法,其特征在于,还包括将所述公共数据结构(110)中的多个 结构类型中的一个分配给所请求的数据的动作。
5.如权利要求4所述的方法,其特征在于,还包括在所述一个或多个不同的应用程序 (125,130)中的每一个中为所请求的数据标识一个或多个数据形状(135、140、145)的动 作。
6.如权利要求4所述的方法,其特征在于,所述公共数据结构(110)包括对于操作的结 构类型、对于序列的结构类型、对于记录的结构类型、以及对于具有不可识别的数据形状的 数据的结构类型。
7.如权利要求6所述的方法,其特征在于,映射所请求的数据还包括以下动作确定所述一个或多个数据形状(135、140、145)中的一个数据形状对应于返回值的自 变量或函数;以及将对应于所述一个数据形状(135)的所请求的数据分配到操作结构类型。
8.如权利要求6所述的方法,其特征在于,映射所请求的数据还包括以下动作确定所请求的数据中的至少某些数据对应于未定义的数据形状;以及将所述至少某些数据分配到对于未定义的数据形状的结构类型。
9.如权利要求6所述的方法,其特征在于,映射所请求的数据还包括确定所述一个或 多个数据形状(135、140、145)中的一个对应于值的集合的动作。
10.如权利要求9所述的方法,其特征在于,还包括以下动作确定所述值的集合不具有可标识标签;以及将所述数据集合分配到序列结构类型。
11.如权利要求9所述的方法,其特征在于,还包括以下动作确定所述值的集合具有一个或多个可标识标签;以及将所述数据集合分配到记录结构类型。
12.如权利要求1所述的方法,其特征在于,还包括以下动作接收对所请求的数据中的至少某一些执行一个或多个操作的一个或多个请求;以及通过所述映射数据结构(195)来处理所述一个或多个操作。
13.—种在计算机化环境中的应用程序(120)处的方法,所述计算机化环境包括面向 对象的系统(100)以及安装在所述系统中的一个或多个应用程序(120、125、130),所述应 用程序实现具有不同类型结构的一个或多个数据元素,所述方法通过公共数据结构(110) 访问对应于一个或多个不同类型结构的数据,所述方法包括以下动作发送(300)对对应于一个或多个不同类型结构的数据(127、133)的一个或多个访问请求;接收(310) —个或多个映射数据结构(195),所述映射数据结构(195)包括所述所请求 的数据和公共数据结构(110)的一个或多个结构类型之间的映射信息(210、220、230);请求(320)对所述一个或多个映射数据结构(195)的一个或多个操作(200),其中所请 求的一个或多个动作被转换为所述一个或多个不同类型结构的数据(127、133);以及接收(330)对对应于所述一个或多个不同类型结构的所请求的数据(127、133)的所请 求的一个或多个动作已经完成的一个或多个确认。
14.如权利要求13所述的方法,其特征在于,所述一个或多个映射数据结构(195)指示 所请求的数据(127、133)中的至少某一些包括一个或多个值的集合,其中所述集合被分配 到记录结构类型。
15.如权利要求16所述的方法,其特征在于,所述请求一个或多个操作的动作(320)还 包括请求对应于所述一个或多个值中的一个的记录的改变;其中所述一个或多个确认标识所述改变是在所述记录中完成的。
16.如权利要求13所述的方法,其特征在于,所述一个或多个映射数据结构(195)指示 所请求的数据(127、133)中的至少某一些包括被分配到操作结构类型的一个或多个函数。
17.如权利要求16所述的方法,其特征在于,所述请求一个或多个操作的动作(320)还 包括请求对应于所述操作结构类型的一个或多个函数由维护所请求的数据(127、133)的 不同应用程序(125、130)执行;其中所述一个或多个确认指示所述一个或多个函数已被执行。
18.—种在计算机化环境的面向对象的系统(100)中的计算机程序存储产品,所述系 统(100)包括使用对应于基于不同数据形状(135、140、145)的不同类型结构的一个或多个 数据元素的一个或多个应用程序(120、125、130),在所述计算机程序存储产品上存储有计 算机可执行指令,所述指令在被执行时使所述系统中的一个或多个处理器执行包括以下动 作的方法从应用程序(120)接收(340)对由一个或多个不同的应用程序(125、130)维护的数据 (127,133)的一个或多个访问请求(180),其中所请求的数据对应于一个或多个不同的类 型结构;标识(350)对应于所述一个或多个不同的应用程序的一个或多个代理(165、170、 175);使用所标识的一个或多个代理来将所请求的数据映射(360)到公共数据结构(110), 其中所标识的一个或多个代理创建将所请求的数据(127、133)映射到所述公共数据结构 (110)的映射数据结构(195);以及将所述映射数据结构(195)提供给作出请求的应用程序。
全文摘要
可以使用一种公共数据类型结构来对根据不同类型或类型结构来实现数据的应用程序之间的访问请求进行相关。在一个实现中,一种公共数据结构包括操作、序列、记录以及原子(即,未定义)的模式。然后,系统可以将任何类型结构映射到公共数据结构的模式。在操作中,应用程序对数据的请求可以涉及标识应用程序用来将数据映射到公共数据结构的一个或多个代理。这些代理基于数据的形状(到可以标识该数据的程度)来将数据映射到公共数据结构。然后,这些代理可以返回包括所标识的映射信息的一个或多个数据结构。然后,应用程序可以直接对接收到的数据结构执行操作。
文档编号G06F9/06GK101952800SQ200980106917
公开日2011年1月19日 申请日期2009年1月23日 优先权日2008年2月25日
发明者C·A·西泽伯斯基, C·L·安德尔森, D·F·伯克斯, J·R·威廉姆斯, J·S·品克斯顿, M·J·加金, Q·布拉德利 申请人:微软公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1