CN101952800B - 经由公共数据结构访问不同的类型结构 - Google Patents
经由公共数据结构访问不同的类型结构 Download PDFInfo
- Publication number
- CN101952800B CN101952800B CN200980106917.7A CN200980106917A CN101952800B CN 101952800 B CN101952800 B CN 101952800B CN 200980106917 A CN200980106917 A CN 200980106917A CN 101952800 B CN101952800 B CN 101952800B
- Authority
- CN
- China
- Prior art keywords
- data
- application program
- asked
- type
- shape
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Stored Programmes (AREA)
- Storage Device Security (AREA)
- Communication Control (AREA)
Abstract
可以使用一种公共数据类型结构来对根据不同类型或类型结构来实现数据的应用程序之间的访问请求进行相关。在一个实现中,一种公共数据结构包括操作、序列、记录以及原子(即,未定义)的模式。然后,系统可以将任何类型结构映射到公共数据结构的模式。在操作中,应用程序对数据的请求可以涉及标识应用程序用来将数据映射到公共数据结构的一个或多个代理。这些代理基于数据的形状(到可以标识该数据的程度)来将数据映射到公共数据结构。然后,这些代理可以返回包括所标识的映射信息的一个或多个数据结构。然后,应用程序可以直接对接收到的数据结构执行操作。
Description
背景
随着计算机化系统的日益普及,在这些计算机化系统上使用的各种应用程序和文档也日益增加。具体而言,现在存在出于任何数量的目的配置的各种各样的应用程序,无论是用作复杂的操作系统、数据库等,还是用作被配置成专用的更简单的应用程序。在许多情况下,软件开发者将使用任何数量的适当的编程语言在脑海中了解特定操作系统/框架的情况下编写新的应用程序。一旦软件完成,开发者就将该应用程序编译成机器可执行代码,其然后可被安装在具有适当的操作系统的计算机系统上。在许多情况下,操作新应用程序将涉及与系统/框架中的若干其他组件或应用程序互操作。
因此,可以理解,存在操作系统或通用框架的开发者以及在该框架中操作的各个应用程序的开发者通常必须考虑的多个考虑事项。这些关注事项中的许多甚至可能是竞争的。例如,许多应用程序开发者所关注的可能是快速且可定制的操作,而许多操作系统/框架开发者所关注的可能是安全性和稳定性。在某些情况下,安全性和稳定性要求可限制某些应用程序操作的方式的速度和可定制性。
这种紧张会变得显而易见的一个领域具有特定种类的“类型框架”。在类型框架中,函数、自变量,甚至数据值都可以与特定“类型”相关,类型一般定义了在另一个应用程序或组件可以访问/处理对应的数据之前各种数据(即,函数、自变量或值)需要如何表现。在使用强类型框架的系统中,框架可以被配置成使得使用一种类型的应用程序或组件被禁止执行或访问对应于其他类型的函数和数据。某些示例框架包括标称(或标称的)和结构类型框架,虽然有许多不同种类的类型框架。
一般而言,标称(或标称的)类型框架被配置成使得一个标称类型的数据只能访问使用完全相同的类型名称(是相同的标称类型)的其他数据(或被这些数据访问)。如此,使用被称为“客户记录”的类型名的一个应用程序可能被禁止访问由按照被称为“成员记录”的类型名的另一个应用程序来管理的类似的数据,即使类型结构(例如,记录字段的数量和名称)可能是相同的。例如,结构身份可能在客户记录和成员记录的标称类型两者都包括相等数量和类型的字段的情况下(例如,一个集合包括:第一名称=“字符串”,而第二名称=“字符串”等等)出现。相反,结构类型框架依赖于结构之间的匹配,而不是名称之间的匹配。虽然结构类型不限于非确切类型名,但当一个类型比另一个类型包括更多种类的结构或包括与另一个类型不同的结构时(例如,成员记录包括第一名称=“字符串”,第二名称=“字符串”,以及电话号码=值),会出现结构不匹配。
对于包括标称和结构类型的各种不同类型之间的不匹配,常常有各种解决方法,以使得应用程序可以互操作。例如,在标称类型框架内,开发者可以为每一个感兴趣的应用程序编写新代码,该新代码将一种标称类型中的类型结构映射到或转换成另一种标称类型中的相同类型结构。尽管不匹配的类型结构之间的类似解决方法也是可能的,但结构类型的这一转换往往更复杂。例如,Lisp编程语言实现了一种公共,常规结构类型框架,其中基本结构是数据对。因此,为了使用另一应用程序的数据,基于Lisp的应用程序通常需要将该另一应用程序中的数据结构转换为数据对结构,但这是困难的。
类似地,可能难以从Lisp数据对结构转换到另一应用程序中的另一类型结构。这不仅对于数据在Lisp中是如何安排的差异是正确的,而且还因为在没有对数据对进行计算上昂贵的、完整的遍历的情况下Lisp数据对的值通常难以查明。这部分地因为Lisp数据对往往不经由基本查询提供非常多的信息,除非数据对是“序列”。然而,Lisp编程框架不是可造成不同类型结构问题的唯一语言。各自使用它们自己的不同结构类型框架的其他常见语言包括XML、SQL、.NET,以及JAVA,而互操作常常意味着某种类型结构转换。
因此,确保应用程序之间的互操作性的一种方式是使得在类似平台上工作的应用程序开发者能够在适当时预先就标称和/或类型结构的细节达成一致。当然,这样的严格且精确的一致并不总是可能的,并为可以创建以后将用于相同系统中的组件的其他开发者提供极少的灵活性。如此,开发者通常最后尝试(如前所述)编写一个或多个接口,这些接口将较新的应用程序类型的数据转换成或以其他方式映射到另一个应用程序类型的数据。例如,编写用一种结构类型框架编写的应用程序的开发者可能需要为用Lisp编程语言编写的其他应用程序编写一个适配器,和/或可能还为用XML、SQL、.NET,以及JAVA编程语言中的每一个编写的应用程序编写单独的适配器。
可以理解,这意味着,新应用程序的开发者将需要知道(或了解)其他程序中所使用的类型。要考虑的应用程序越少,此问题就可能显得不那么不方便。然而,更为普遍的是,对于许多开发者而言,这种情形呈指数地变成有问题的,特别是当在系统上使用相似或相同种类的数据(例如,成员资格记录、函数等等)的应用程序的数量会增长时。此问题会进一步恶化,因为各应用程序中的每一个都会变化或进行各种升级,这可能会导致类型名和/或结构的更进一步的变化。
因此,对于基于类型的框架,有许多可以解决的困难。
简要概述
本发明的实现提供被配置成提供一个应用程序或组件通过公共/通用数据结构对几乎任何其他应用程序的任何数据的访问的系统、方法,以及计算机程序产品。例如,在一个实现中,一个应用程序对数据的请求涉及启动一个或多个代理,这些代理可以将另一个应用程序的数据映射到公共数据结构中的一个或多个模式。然后,发出请求的应用程序可以通过由代理创建的返回的数据结构(具有映射信息)来与所请求的数据进行交互。结果,系统中的每一应用程序都可以进行互操作,而不管它们是否一定预先知道公共数据结构,并因此它们是否已经根据其他应用程序所使用的特定类型结构来配置它们的数据。
因此,从整个系统的观点来看,一种方法可以涉及从应用程序接收对由一个或多个不同的应用程序维护的数据的一个或多个访问请求。在此情况下,所请求的数据对应于一个或多个不同的类型结构。该方法还可以涉及标识对应于一个或多个不同的应用程序的一个或多个代理。此外,该方法还可以涉及使用所标识的一个或多个代理来将所请求的数据映射到公共数据结构。所标识的一个或多个代理创建将所请求的数据映射到公共数据结构的映射数据结构。所标识的代理中的至少一个是由所述一个或多个不同的应用程序中的一个提供的。此外,该方法可以涉及将映射数据结构提供给到作出请求的应用程序。
此外,从应用程序的观点来看,一种方法可以涉及发送对对应于一个或多个不同的类型结构的数据的一个或多个访问请求。该方法还可以涉及接收一个或多个映射数据结构,这些映射数据结构包括所请求的数据和公共数据结构的一个或多个结构类型之间的映射信息。此外,方法还可以涉及请求对一个或多个映射数据结构的一个或多个动作。在此情况下,所请求的一个或多个动作被转换为一个或多个不同的类型结构的数据。所述一个或多个映射数据结构指示所请求的数据中的至少某一些包括一个或多个值的集合,其中所述集合被分配到记录结构类型。此外,该方法可以涉及接收对对应于一个或多个不同的类型结构的所请求的数据的所请求的一个或多个动作已经完成的一个或多个确认。
提供本概述是为了以简化的形式介绍将在以下详细描述中进一步描述的一些概念。本概述不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于帮助确定所要求保护的主题的范围。
本发明的附加特征和优点将在以下描述中叙述,且其一部分根据本描述将是显而易见的,或可通过对本发明的实践来获知。本发明的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本发明的这些和其他特征将通过以下描述和所附权利要求书变得更加显而易见,或可通过对下文中所述的本发明的实践来领会。
附图简述
为了描述可获得本发明的上述和其它优点和特征的方式,将通过参考附图中示出的本发明的具体实施例来呈现以上简要描述的本发明的更具体描述。可以理解,这些附图仅描述本发明的典型实施例,从而不被认为是对其范围的限制,本发明将通过使用附图用附加特征和细节来描述和说明,在附图中:
图1A示出了根据本发明的一实现的概略示意图,其中实现一个或多个不同的类型结构的一个或多个应用程序通过公共数据结构进行互操作;
图1B示出了其中启动代理以将数据映射到公共数据结构的图1A的示意图;
图2示出了其中一应用程序通过映射数据结构与另一应用程序中的数据进行互操作的图1A-1B的示意图;以及
图3示出了从应用程序和整个系统的观点来看的、用于使用公共数据结构来访问不同结构类型的数据或以其他方式提供对这些数据的访问的方法的流程图。
详细描述
本发明的各个实现涉及被配置成提供一个应用程序或组件通过公共/通用数据结构对几乎任何其他应用程序的任何数据的访问的系统、方法,以及计算机程序产品。例如,在一个实现中,一个应用程序对数据的请求涉及启动一个或多个代理,这些代理可以将另一个应用程序的数据映射到公共数据结构中的一个或多个模式。然后,作出请求的应用程序可以通过由代理所创建的返回的数据结构(具有映射信息)来与所请求的数据进行交互。结果,系统中的每一个应用程序都可以进行互操作,而不管它们是否一定预先知道公共数据结构,并因此它们是否已经根据其他应用程序所使用的特定类型结构来配置它们的数据。
因此,并且如将在此处更加全面地理解的,本发明的至少一个实现涉及提供公共数据结构(或“通用数据模型”)。该公共数据结构/通用数据模型进而按照“原子”、“序列”、“记录”或“操作”通过数据形状来定义系统中的任何应用程序中的数据或以其他方式这些数据进行分类。该分类系统不仅可以在开发者正在开发应用程序时使用,而且甚至可以在运行时使用,即使给定应用程序的数据没有严格地根据公共数据结构或另一个应用程序所使用的类型结构来分类或配置。
可以理解,因此,该系统可以广泛地扩展,并且可以存在于多个不同的框架内或以其他方式在其中使用。例如,本发明的各个实现可以被容易地配置成或以其他方式扩展成在公共语言运行时(“CLR”)环境内使用,和/或相对于任何特定语言框架来使用。例如,本发明的至少一个实现还特别适用于基于XML的应用程序。实际上,可以使用几乎任何语言或运行时环境,只要可以在某一时刻确定底层数据的形状。
图1A示出了根据本发明的一实现的概略示意图,其中系统100中的一个或多个不同的应用程序或组件通过公共数据结构彼此进行交互。例如,图1A示出了系统100,该系统100包括一个或多个处理模块105,这些处理模块105进一步包括对公共数据结构(或“通用数据模型”)110的一个或多个引用。在至少一个实现中,系统100包括被配置在标称类型环境的子空间内的通用结构类型系统。例如,系统100可以包括在基于CLR的标称类型环境内实现的公共结构类型系统。
此外,图1A还示出公共数据结构110包括定义某些结构类型的一个或多个模式以及与特定数据“形状”相关的模式。还如此处更全面地理解的,数据“形状”是指数据元素的可以用来按照公共数据结构110来广泛地对数据元素进行分类的基本、可标识特征。例如,图1A示出公共数据结构110包括具有数据形状135的对于操作的结构类型模式,具有数据形状140的对于序列的结构类型模式,以及具有数据形状145的对于记录的结构类型模式。图1A还示出公共数据结构110将结构类型模式进一步分类成“原子”,该模式基本上是具有未定义数据形状的任何事物(即,“---”)。
一般而言,“操作”是指具有将数据标识为函数或自变量的数据形状的一个或多个数据元素的任何集合,该函数或自变量在被执行或处理时返回结果,无论是单独地还是作为其他函数的任何集合的一部分。例如,在至少一个实现中,操作在本质上可被解释为核心,即能够调用的数据片段。对于CLR,当将CLR实例映射到公共数据结构110时,“方法”和“委托”可以被解释为操作。由此,CLR环境中的操作可以被解释为取未指定数量的“结构化值”参数,并返回“结构化值”的委托。在至少一个实现中,结构化值是作为对代码中的对结构化值进行操作的实例进行分类的帮手来提供的特定标称类型。另外,还可以将类型“结构化值”用作API(应用程序编程接口)上的标记类型,该标记类型特别期望对已经被引入到结构化值空间中的值进行操作。
此外,“序列”此处是指具有一个或多个(无序的)值集合的任何集合的数据形状的数据。例如,对于CLR环境,序列可以被解释为“结构化值”的无序集合。一般而言,序列包括没有被单独地标记的值,或者对于其标签或名称或者不是每一个值唯一的,或者由于某种原因从系统100的观点来看不足以对集合中的值进行区分的值。
相反,“记录”包括具有值集合的形状的数据,这非常像序列,不同之处在于记录中的值具有与一个或多个唯一标签相关联的另一形状特性,诸如一个或多个唯一字段名。例如,在CLR环境的至少一个实现中,记录可以被解释为一组已命名的成员(这些成本本身各自具有作为某种“结构化值”的值),以及指示记录是否是只读的标志。因此,在这样的环境中,可以理解,记录和序列可以被解释为用于表达数据形状的主要机制。
当然,尽管前面的描述,但可以理解,此处对可能表现为在一个特定操作系统或应用程序中具有某种特定用途的任何特定组件、函数、或操作环境的任何引用只是为了描述方便。具体而言,可以从此处的说明书和的权利要求书中理解,本发明的各个实现可以在各种各样的的操作环境和操作系统和/或框架/环境中实施。由此,不应该理解为被限于任何特定的操作系统或应用程序。
在任何情况下,图1A还示出系统100包括一个或多个应用程序或组件120、125以及135,由此处更加全面地讨论的,这些应用程序或组件最终受益于公共数据结构110。例如,图1A示出应用程序120、125以及130中的每一个都分别包括一个或多个数据集123、127以及133,这些数据集可以对应于或不对应于公共数据结构110的模式之一。具体而言,图1A示出应用程序120包括数据集123,该数据集123包括数据元素A、B以及C。在此情况下,数据元素A、B以及C至少部分地分别基于对应的数据形状135、140以及145来分别对应于操作、序列或记录的结构类型。
相反,图1A还示出应用程序125和130也包括数据集,但类型结构和数据形状没有按照公共数据结构110来清楚地定义。例如,图1A示出应用程序135包括具有数据元素D、E和F构成的数据集127。在这些数据元素中,只知道数据元素D基于数据形状135来与“操作”结构类型相对应。具体而言,图1A示出数据元素E具有数据形状145,而E还没有与特定结构类型相关联。类似地,数据元素F既不与结构类型相关联,也不包括已知数据形状。
此外,图1A还示出应用程序130包括数据集133,该数据集133包括数据元素G、H、I和J。在这些数据元素中,数据元素G、H和I分别具有可标识数据形状140,135,以及145。然而,如图所示,只有数据元素I被标识为对应于记录结构类型。此外,图1A还示出数据元素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)来确定。例如,图1A示出系统100包括代理的注册表115,在此情况下,该注册表115至少包括基于应用程序120的代理165。图1A还示出注册表115包括基于应用程序125的代理170,以及基于应用程序130的代理175。
作为解释,“代理”是指在系统100中调用并用来与特定的应用程序接口的一个或多个计算机可执行指令的集合。在一个实现中,这些代理可以作为可以在几乎任何时刻被调用的已经编译的可执行指令来存在。然而,在附加或替换实现中,这些代理可以包括由系统100提供并在被调用时首先编译并且然后执行的一种形式的中间语言代码。在任一种情况下,可以理解,代理可以是相当应用程序专用的,诸如用适于给定应用程序的特定程序语言来编写。例如,给定代理可以针对用XML、SQL、Lisp等编写的程序来专门配置。例如,在基于CLR的至少一个实现中,被称为“Clr结构服务”的代理可以被配置成表示“结构化值”的CLR实例。
这些代理可以由应用程序开发者创建,或简单地由系统100来提供。例如,(应用程序120,125,130等的)应用程序开发者可以准备该给定应用程序专用的一个或多个代理,并在安装应用程序时注册该代理。在某些情况下,对于某些开发者这可能是优选的,因为应用程序开发者可能处于较佳的位置以确保代理避免将数据元素过度分类为未定义的“原子”,如果有的话。然而,在其他情况下,应用程序开发者可以至少部分地根据在公共数据结构110的结构类型内定义的形状来准备他们的数据,由此开发者可以优选使用默认代理的便利。
一般而言,每一代理都被配置成在被执行时,给定代理遍历由应用程序(120、125、130等)维护的一个或多个数据结构或元素。在遍历时,代理至少被配置成标识各种数据元素的“形状”。如从前面的内容可以理解,这意味着代理代码通常将被配置成标识由应用程序维护的数据元素是否是符合特定最小属性(例如,返回结果)的函数或自变量。同一个代理通常还将被配置成标识特定数据元素是否形成值的集合,和/或那些值是否包括可以将数据元素分类为诸如此处对于公共数据结构110模式所描述的序列或记录的任何附加标记。
图1B示出了其中系统100借助于一个或多个代理向应用程序120提供对一个或多个应用程序125和130中的数据的访问的概略示意图。例如,图1B示出应用程序120发送一个或多个数据访问请求180,以请求访问由应用程序125维护的数据。此请求由系统100诸如经由处理模块105来进行处理。由于该请求涉及对应于完全不同的/不兼容的类型结构的数据(与应用程序120相比),因此图1B于是示出处理模块105咨询代理注册表115以标识应该使用什么代理来将应用程序125类型结构映射回到公共数据结构110。因此,图1B示出处理模块105标识代理170与应用程序125相关,并经由请求185启动代理170(即,在运行期间)。
此外,图1B还示出初始化对应于应用程序125的代理170。在至少一个实现中,代理170然后开始遍历不同的数据元素D、E、F等中的每一个,以便将任何结构类型身份标识为可用,和/或标识每一个数据元素的数据形状。例如,在至少一个实现中,代理170标识数据元素D包括操作,如在公共数据结构110的结构类型框架内所理解的。此外,代理170还可以确定数据元素E具有与公共数据结构105中的记录的结构类型中所使用的形状一致的数据形状145。此外,代理170可能无法标识对于数据元素F的数据形状的任何结构类型,并由此将数据元素F指定为原子。
在完成对数据元素的这一遍历和映射时,代理170然后返回将所遍历的(或所请求的)数据元素映射回到公共数据结构的一个或多个数据结构。例如,图1B示出代理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中所示出的动作在下文中参考图1A到2的组件和图示来描述。
例如,图3示出从应用程序120的观点来看的方法可以包括发送数据访问请求的动作300。动作300包括发送对对应于一个或多个不同类型结构的数据的一个或多个访问请求。例如,如图1B所示,应用程序120向处理模块105发送访问请求180。请求180进而涉及访问或以其他方式操纵由使用另一种类型结构(或未明确定义的类型结构)的另一个应用程序(例如,125)所维护的某些数据。
图3还示出从应用程序120的观点来看的方法可以包括接收将数据映射到公共数据结构的数据结构的动作310。动作310包括接收包括所请求的数据和公共数据结构之间的映射信息的一个或多个数据结构。例如,如图1B所示,在接收到访问请求180时,处理模块105发送一个或多个消息185以启动代理170。然后,代理170遍历应用程序125中的数据结构以将各种数据形状标识到可标识这些数据形状的程度,并返回将所请求的数据与公共数据结构110相关的映射数据结构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包括从应用程序接收对由一个或多个不同应用程序维护的数据的一个或多个访问请求,其中所请求的数据对应于一个或多个不同的类型结构。例如,图1B示出系统100经由处理模块105从应用程序120接收访问应用程序125中的数据的请求180。在此特定的情况下,虽然为应用程序125定义了至少一个数据元素,但某些其他数据元素不具有特定结构类型,并且只具有数据形状(例如,数据元素E)。
图3还示出从系统100的观点来看的方法可以包括为不同的类型结构标识对应的代理的动作350。动作350包括标识对应于一个或多个不同应用程序的一个或多个代理。例如,图1B示出处理模块105在接收到请求180时在注册表115中标识代理170与应用程序125相关,并发送一个或多个请求185以启动代理170。
此外,图3还示出从系统100的观点来看的方法可以包括将所请求的数据映射到公共数据结构的动作360。动作360包括使用所标识的一个或多个代理来将所请求的数据映射到公共数据结构,其中所述所标识的一个或多个代理创建映射数据结构。例如,代理170遍历数据元素,并且例如标识哪些数据形状对应于公共数据结构110中的哪些结构类型。然后,代理170创建包括映射信息的数据结构195,该映射信息将所请求的数据元素相关(或分配)到公共数据结构中的结构类型。
此外,图3还示出从系统100的观点来看的方法包括将包括映射信息的数据结构发送到公共数据结构的动作370。动作370包括将映射数据结构提供给作出请求的应用程序。例如,如图1B所示,处理模块105将映射数据结构195发送到应用程序120。如前面所讨论的,应用程序120然后可以操纵应用程序125中的在映射数据结构195中被适当地映射的任何数据。
因此,图1-3和对应的文本提供了用于确保各种各样的应用程序即使在彼此的数据可能被构建在不同的类型框架上的情况下也可以访问这些数据的多个组件和机制。如上文所提及的,本发明的至少一个优点是开发者可以主要依靠数据形状考虑事项,而不是特定类型约定。这种对数据形状的专注,而不是有时改变类型约定,使得构建在较旧或较新的类型框架上的应用程序仍然能够享受相当多的操作。
本发明的实施例可以包括含有各种计算机硬件的专用或通用计算机,这将在以下更详细地讨论。本发明的范围内的实施例还包括用于携带或其上储存有计算机可执行指令或数据结构的计算机可读介质。这样的计算机可读介质可以是可由通用或专用计算机访问的任何可用介质。
作为示例而非限制,这样的计算机可读介质可包括RAM、ROM、EEPROM、CD-ROM或其他光盘存储、磁盘存储或其他磁存储设备、或可用于携带或存储计算机可执行指令或数据结构形式的所需程序代码装置且可由通用或专用计算机访问的任何其他介质。当信息通过网络或另一通信连接(硬连线、无线或硬连线或无线的组合)传输或提供给计算机时,计算机将该连接完全视为计算机可读介质。因此,任何这样的连接被适当地称为计算机可读介质。上述的组合也应被包括在计算机可读介质的范围内。
计算机可执行指令例如包括,使通用计算机、专用计算机、或专用处理设备执行某一功能或某组功能的指令和数据。尽管用结构特征和/或方法动作专用的语言描述了本主题,但可以理解,所附权利要求书中定义的主题不必限于上述具体特征或动作。相反,上述具体特征和动作是作为实现权利要求的示例形式公开的。
本发明可具体化为其它具体形式而不背离其精神或本质特征。所描述的实施例在所有方面都应被认为仅是说明性而非限制性的。从而,本发明的范围由所附权利要求书而非前述描述指示。落入权利要求书的等效方案的含义和范围内的所有改变应被权利要求书的范围所涵盖。
Claims (18)
1.一种在计算机化环境的面向对象的系统(100)中的方法,所述系统(100)包括使用对应于基于不同数据形状(135、140、145)的不同类型结构的一个或多个数据元素的一个或多个应用程序(120、125、130),所述方法使用公共数据结构(110)来自动向应用程序提供对不同结构类型的数据的访问,以使得使用不同结构类型的应用程序可以互操作,所述方法包括以下动作:
从应用程序(120)接收(340)对由一个或多个不同的应用程序(125、130)维护的数据(127、133)的一个或多个访问请求(180),其中所请求的数据对应于一个或多个不同的类型结构;
标识(350)对应于所述一个或多个不同的应用程序的一个或多个代理(165、170、175);
所标识的一个或多个代理遍历由所述不同的应用程序维护的一个或多个数据元素;
所标识的一个或多个代理标识所述一个或多个数据元素中每一个的数据形状,并且标识公共数据结构中与每一个所标识的数据形状对应的结构类型;
所标识的一个或多个代理使用所标识的数据形状以及对应的结构类型,返回将所请求的数据(127、133)与所述公共数据结构相关的映射数据结构(195);
使用所标识的一个或多个代理来将所请求的数据映射(360)到公共数据结构(110);以及
将所述映射数据结构(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.如权利要求14所述的方法,其特征在于,所述请求(320)一个或多个动作还包括:
请求对应于所述一个或多个值中的一个的记录的改变;
其中所述一个或多个确认标识所述改变是在所述记录中完成的。
16.如权利要求13所述的方法,其特征在于,所述一个或多个映射数据结构(195)指示所请求的数据(127、133)中的至少某一些包括被分配到操作结构类型的一个或多个函数。
17.如权利要求16所述的方法,其特征在于,所述请求(320)一个或多个动作还包括:
请求对应于所述操作结构类型的一个或多个函数由维护所请求的数据(127、133)的不同应用程序(125、130)执行;
其中所述一个或多个确认指示所述一个或多个函数已被执行。
18.一种在计算机化环境的面向对象的系统(100)中的系统,所述面向对象的系统(100)包括使用对应于基于不同数据形状(135、140、145)的不同类型结构的一个或多个数据元素的一个或多个应用程序(120、125、130),所述系统使用公共数据结构(110)来自动向应用程序提供对不同结构类型的数据的访问,以使得使用不同结构类型的应用程序可以互操作,所述系统包括:
用于从应用程序(120)接收(340)对由一个或多个不同的应用程序(125、130)维护的数据(127、133)的一个或多个访问请求(180)的装置,其中所请求的数据对应于一个或多个不同的类型结构;
用于标识(350)对应于所述一个或多个不同的应用程序的一个或多个代理(165、170、175)的装置;
用于所标识的一个或多个代理遍历由所述不同的应用程序维护的一个或多个数据元素的装置;
用于所标识的一个或多个代理标识所述一个或多个数据元素中每一个的数据形状,并且标识公共数据结构中与每一个所标识的数据形状对应的结构类型的装置;
用于所标识的一个或多个代理使用所标识的数据形状以及对应的结构类型,返回将所请求的数据与所述公共数据结构相关的映射数据结构的装置;
用于使用所标识的一个或多个代理来将所请求的数据映射(360)到公共数据结构(110)的装置;以及
用于将所述映射数据结构(195)提供给作出请求的应用程序的装置。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US12/036,433 | 2008-02-25 | ||
US12/036,433 US8307016B2 (en) | 2008-02-25 | 2008-02-25 | Accessing different application data via a common data structure |
PCT/US2009/031888 WO2009108426A2 (en) | 2008-02-25 | 2009-01-23 | Accessing different type structures via a common data structure |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101952800A CN101952800A (zh) | 2011-01-19 |
CN101952800B true CN101952800B (zh) | 2015-01-14 |
Family
ID=40999324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN200980106917.7A Active CN101952800B (zh) | 2008-02-25 | 2009-01-23 | 经由公共数据结构访问不同的类型结构 |
Country Status (5)
Country | Link |
---|---|
US (2) | US8307016B2 (zh) |
EP (1) | EP2260377B1 (zh) |
JP (1) | JP5400068B2 (zh) |
CN (1) | CN101952800B (zh) |
WO (1) | WO2009108426A2 (zh) |
Families Citing this family (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8307016B2 (en) * | 2008-02-25 | 2012-11-06 | Microsoft Corporation | Accessing different application data via a common data structure |
JP5719139B2 (ja) * | 2009-10-09 | 2015-05-13 | 株式会社Nttドコモ | モバイル装置上のアプリケーション間でコンテキストデータを交換するシステム及び方法 |
CN101840230B (zh) * | 2010-06-04 | 2012-02-01 | 浙江中控技术股份有限公司 | 一种监控和管理数据的方法及系统 |
US9672022B2 (en) * | 2010-06-23 | 2017-06-06 | Microsoft Technology Licensing, Llc | Applications including multiple experience modules |
US9766718B2 (en) * | 2011-02-28 | 2017-09-19 | Blackberry Limited | Electronic device and method of displaying information in response to input |
US8612405B1 (en) | 2011-09-30 | 2013-12-17 | Emc Corporation | System and method of dynamic data object upgrades |
US9164751B2 (en) * | 2011-09-30 | 2015-10-20 | Emc Corporation | System and method of rolling upgrades of data traits |
US8700673B2 (en) | 2012-02-16 | 2014-04-15 | Oracle International Corporation | Mechanisms for metadata search in enterprise applications |
US8484208B1 (en) * | 2012-02-16 | 2013-07-09 | Oracle International Corporation | Displaying results of keyword search over enterprise data |
US8682932B2 (en) | 2012-02-16 | 2014-03-25 | Oracle International Corporation | Mechanisms for searching enterprise data graphs |
US9646092B2 (en) | 2014-10-10 | 2017-05-09 | Adp, Llc | Centralized application programming interface monitoring tool |
US10447676B2 (en) | 2014-10-10 | 2019-10-15 | Adp, Llc | Securing application programming interfaces (APIS) through infrastructure virtualization |
US9658893B2 (en) * | 2015-05-06 | 2017-05-23 | Runtime Design Automation | Multilayered resource scheduling |
US9819732B2 (en) * | 2015-07-31 | 2017-11-14 | Netapp, Inc. | Methods for centralized management API service across disparate storage platforms and devices thereof |
EP3136371B1 (en) | 2015-08-31 | 2024-04-17 | The Boeing Company | Air vehicle navigation method via a common runtime aircraft intent data structure |
US9854060B2 (en) | 2015-09-29 | 2017-12-26 | Netapp, Inc. | Methods and systems for monitoring network storage system resources by an API server |
US9798891B2 (en) | 2015-10-13 | 2017-10-24 | Netapp, Inc. | Methods and systems for service level objective API for storage management |
US10188169B2 (en) | 2016-03-15 | 2019-01-29 | Nike, Inc. | Sensor for an article of footwear |
WO2017188928A1 (en) * | 2016-04-25 | 2017-11-02 | Hewlett Packard Enterprise Development Lp | Persona object to access data |
CN106528874B (zh) * | 2016-12-08 | 2019-07-19 | 重庆邮电大学 | 基于Spark内存计算大数据平台的CLR多标签数据分类方法 |
KR20200084695A (ko) | 2019-01-03 | 2020-07-13 | 삼성전자주식회사 | 응용프로그램의 관리 장치 및 방법 |
CN112732468B (zh) * | 2021-04-01 | 2021-07-16 | 统信软件技术有限公司 | 数据处理方法、数据交互系统及计算设备 |
Family Cites Families (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6208345B1 (en) | 1998-04-15 | 2001-03-27 | Adc Telecommunications, Inc. | Visual data integration system and method |
US6694357B1 (en) * | 1998-07-02 | 2004-02-17 | Copernican Technologies, Inc. | Accessing, viewing and manipulation of references to non-modifiable data objects |
US7233952B1 (en) * | 1999-01-15 | 2007-06-19 | Hon Hai Precision Industry, Ltd. | Apparatus for visualizing information in a data warehousing environment |
HK1020419A2 (en) * | 1999-03-16 | 2000-03-17 | Shi Piu Joseph Fong | Frame model for universal database in database reengineering and integration |
JP2001060157A (ja) * | 1999-08-23 | 2001-03-06 | Nec Corp | アプリケーション間メッセージ交換方式 |
US7099855B1 (en) * | 2000-01-13 | 2006-08-29 | International Business Machines Corporation | System and method for electronic communication management |
FI20002720A (fi) * | 2000-12-12 | 2002-06-13 | Nokia Corp | Menetelmä konversioiden suorittamiseksi |
US7536697B2 (en) * | 2001-06-19 | 2009-05-19 | Accenture Global Services Gmbh | Integrating enterprise support systems |
JP2003067356A (ja) * | 2001-08-28 | 2003-03-07 | Fujitsu Ltd | アプリケーション間連携システム及びアプリケーション間連携方法 |
US20030140058A1 (en) * | 2002-01-18 | 2003-07-24 | Vitria Technology, Inc. | Method and apparatus for sharing information between applications using common objects |
EP1606740A4 (en) * | 2003-03-24 | 2007-10-03 | Siebel Systems Inc | COMMON OBJECT |
US7296022B2 (en) * | 2003-07-14 | 2007-11-13 | Microsoft Corporation | Method and system for accessing a network database as a web service |
US7774486B2 (en) * | 2003-08-11 | 2010-08-10 | Teamon Systems, Inc. | Communications system providing multi-layered extensible protocol interface and related methods |
US7263717B1 (en) * | 2003-12-17 | 2007-08-28 | Sprint Communications Company L.P. | Integrated security framework and privacy database scheme |
US7660805B2 (en) * | 2003-12-23 | 2010-02-09 | Canon Kabushiki Kaisha | Method of generating data servers for heterogeneous data sources |
US20050187980A1 (en) * | 2004-02-10 | 2005-08-25 | Microsoft Corporation | Systems and methods for hosting the common language runtime in a database management system |
JP4624044B2 (ja) * | 2004-09-16 | 2011-02-02 | 日本電気株式会社 | プログラム間通信システム、プログラム間通信方法、データ構造生成システムおよびプログラム |
US20070050206A1 (en) | 2004-10-26 | 2007-03-01 | Marathon Petroleum Company Llc | Method and apparatus for operating data management and control |
US8145653B2 (en) * | 2005-04-08 | 2012-03-27 | International Business Machines Corporation | Using schemas to generate application specific business objects for use in an integration broker |
US20070156737A1 (en) * | 2005-12-15 | 2007-07-05 | First Data Corporation | Application integration systems and methods |
US7720806B2 (en) * | 2006-05-15 | 2010-05-18 | Algebraix Data Corporation | Systems and methods for data manipulation using multiple storage formats |
US8307016B2 (en) * | 2008-02-25 | 2012-11-06 | Microsoft Corporation | Accessing different application data via a common data structure |
-
2008
- 2008-02-25 US US12/036,433 patent/US8307016B2/en active Active
-
2009
- 2009-01-23 JP JP2010548761A patent/JP5400068B2/ja active Active
- 2009-01-23 CN CN200980106917.7A patent/CN101952800B/zh active Active
- 2009-01-23 EP EP09715347.2A patent/EP2260377B1/en active Active
- 2009-01-23 WO PCT/US2009/031888 patent/WO2009108426A2/en active Application Filing
-
2012
- 2012-11-06 US US13/669,775 patent/US8756257B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
JP5400068B2 (ja) | 2014-01-29 |
WO2009108426A3 (en) | 2009-10-29 |
US20090216778A1 (en) | 2009-08-27 |
EP2260377B1 (en) | 2019-02-27 |
EP2260377A2 (en) | 2010-12-15 |
US8307016B2 (en) | 2012-11-06 |
CN101952800A (zh) | 2011-01-19 |
EP2260377A4 (en) | 2012-12-12 |
US20130066925A1 (en) | 2013-03-14 |
JP2011515734A (ja) | 2011-05-19 |
WO2009108426A2 (en) | 2009-09-03 |
US8756257B2 (en) | 2014-06-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101952800B (zh) | 经由公共数据结构访问不同的类型结构 | |
US10324690B2 (en) | Automated enterprise software development | |
US5758351A (en) | System and method for the creation and use of surrogate information system objects | |
US7831655B2 (en) | System and method for implementing a service adapter | |
CN101821711B (zh) | 二进制库 | |
US20230247090A1 (en) | Dynamic execution resource selection for customized workflow tasks | |
US8234620B1 (en) | Method and system for software development using distributed computing resources | |
US20030093404A1 (en) | Dynamic interface adapter for integration of source and target applications | |
US20090064196A1 (en) | Model based device driver code generation | |
JP2004272908A (ja) | システムの設計、展開、管理のフェーズを統合する方法 | |
US7055134B2 (en) | Service provider integration framework in object oriented programming environment | |
JP2004280821A (ja) | ソフトウェアビジネスプロセスモデル | |
WO2002073404A1 (en) | Application development method | |
US7950024B2 (en) | Mechanism for transparently interfacing with a third party version control system | |
JP2004280820A (ja) | ビジネスソフトウェアアプリケーションをサポートするフレームワーク | |
CN101137959A (zh) | 用于跨越远程边界传送计算机可读对象的系统和方法 | |
CN101952805B (zh) | 有效地关联名义上不兼容的类型 | |
CN114416202B (zh) | 一种移动端sdk调用方法及系统 | |
CA2928316A1 (en) | Facilitating communication between software components that use middleware | |
AU2014338988A1 (en) | Facilitating communication between software components that use middleware | |
US10768912B1 (en) | Platform class creation | |
Bialy et al. | Dynamic process fragment injection in a service orchestration engine | |
Abd-Ali et al. | Horizontal transformation of PSMs | |
Dorda et al. | Theory and Practice of Enterprise JavaBean Portability | |
Estévez et al. | Systems integration methodology based on MDA |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150504 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TR01 | Transfer of patent right |
Effective date of registration: 20150504 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |