CN103718155A - 运行时系统 - Google Patents
运行时系统 Download PDFInfo
- Publication number
- CN103718155A CN103718155A CN201180072813.6A CN201180072813A CN103718155A CN 103718155 A CN103718155 A CN 103718155A CN 201180072813 A CN201180072813 A CN 201180072813A CN 103718155 A CN103718155 A CN 103718155A
- Authority
- CN
- China
- Prior art keywords
- interface
- operating system
- type
- language
- computer
- 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.)
- Granted
Links
Images
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
-
- 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
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/51—Source to source
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/76—Adapting program code to run in a different environment; Porting
-
- 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/44—Arrangements for executing specific programs
- G06F9/455—Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/73—Program documentation
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
- Devices For Executing Special Programs (AREA)
Abstract
各种实施例提供了独立于编程语言来描述与操作系统相关联的一个或多个接口的能力。替换地或附加地,与特定编程语言相关联的编译器能够被配置成将(一个或多个)独立接口描述映射到所述特定编程语言。在一些实施例中,应用能够被配置成程序上确定所述操作系统的一个或多个接口。
Description
背景技术
计算机现今经常地包括操作系统以管理对硬件和软件资源的访问。进而,操作系统能够包括各种类型的接口,诸如应用编程接口(API),以使得程序设计者和/或应用能够访问这些资源。在一些情况下,用记住的特定编程语言编程接口。当客户端应用被用特定编程语言编写时,客户端应用能够以本地于特定编程语言的方式来访问接口。然而,被用不同于接口的语言的语言编写的客户端应用有时可以利用附加的代码和/或包装器函数以便调用到接口中。
典型地,接口被记入操作系统外部的文档。为了成功地调用接口以及编写包装器函数,程序设计者查阅外部文档资料以确定什么接口是可用的、什么是所关联的调用参数等。操作系统的新版本能够包括新的接口、对旧接口的修改以及废弃接口的去除。因此,为了维护当前一组API,程序设计者不得不查阅关于操作系统的每个新版本的外部文档资料。这有时能够在当接口在操作系统中被释放时与当接口能够被包括在程序中时之间导致延迟。
发明内容
本发明内容被提供来以简化的形式引入下文在具体实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或基本特征,它也不旨在被用来限制所要求保护的主题的范围。
各种实施例提供了独立于编程语言来描述与操作系统相关联的一个或多个接口的能力。替换地或附加地,与特定编程语言相关联的编译器能够被配置成将(一个或多个)独立接口描述映射到特定编程语言。在一些实施例中,应用能够被配置成程序上确定操作系统的一个或多个接口。
一些实施例提供了利用抽象类型系统以面向对象的方式对操作系统的一个或多个接口建模的能力。在一些实施例中,扩展的接口定义语言(IDL)能够包括用来描述一个或多个接口之间的关系的语法。在一些实施例中,二进制合同能够被配置成暴露关联抽象类型系统的行为。
附图说明
相同的标记在所有附图中被用来提及相似的特征。
图1图示了依据一个或多个实施例的其中能够采用本文中所描述的各种原理的操作环境。
图2图示了依据一个或多个实施例的架构。
图3是描述依据一个或多个实施例的方法中的步骤的流程图。
图4图示了依据一个或多个实施例的关系图。
图5图示了能够被利用来实现一个或多个实施例的示例系统。
具体实施方式
概述
各种实施例提供了独立于编程语言来描述与操作系统相关联的一个或多个接口的能力。抽象类型系统与接口定义语言(IDL)相组合地能够被配置成描述和/或定义接口。在一些实施例,能够以面向对象的方式来描述接口。替换地或附加地,与特定编程语言相关联的编译器能够被配置成将(一个或多个)语言无关的接口描述映射到在特定编程语言中的适当构造。替换地或附加地,编程语言应用运行时环境能够被配置成动态地(例如,在运行时执行期间)将(一个或多个)语言无关的接口描述映射到在特定运行时环境中的适当构造。在一些实施例中,应用能够被配置成程序上确定(一个或多个)独立接口描述。在一些情况下,能够以机器可读格式存储(一个或多个)独立接口描述。
在以下讨论中,标题为“操作环境”的章节被提供并且描述了其中能够采用一个或多个实施例的一个环境。紧跟这个之后,标题为“操作系统组件访问”的章节描述了使得多个编程语言能够程序上访问系统组件的架构。接下来,标题为“用抽象类型系统对面向对象的语言建模”的章节描述了抽象类型系统如何能够与扩展的IDL相结合地被用来以面向对象的方式描述操作系统接口。最后,标题为“示例系统”的章节描述了能够被利用来实现一个或多个实施例的示例系统。
已经提供了将在下面被描述的各种实施例的概述,现在考虑其中能够实现一个或多个实施例的示例操作环境。
操作环境
图1一般地在100处图示依据一个或多个实施例的操作环境。环境100包括具有一个或多个处理器104和一个或多个计算机可读存储媒体106的计算设备102。通过示例而非限制的方式,计算机可读存储媒体能够包括典型地与计算设备相关联的所有形式的易失性和非易失性存储器和/或存储媒体。这样的媒体能够包括ROM、RAM、闪速存储器、硬盘、可移动媒体等等。计算设备的一个特定示例在下面在图5中被示出和描述。
此外,计算设备102包括操作系统(OS) 108和关联的(一个或多个)操作系统接口110。虽然被示出为单独的模块,但应当领会和理解的是,操作系统108和(一个或多个)操作系统接口110能够被实现为单独的模块、组合的模块或其任何组合,而不背离所要求保护的主题的范围。操作系统108表示配置成管理计算设备102的(一个或多个)软件和/或硬件资源的功能性。(一个或多个)操作系统接口110表示对由操作系统108所提供的服务和/或功能性的程序访问,所述服务和/或功能性诸如存储器管理、文件管理、服务、函数、资源管理、外围设备管理等等。
计算设备102同样包括一个或多个描述性语言文件112,其表示配置成描述一个或多个接口的一个或多个文件。在一些实施例中,诸如(一个或多个)操作系统接口110之类的接口能够与操作系统相关联。描述性语言文件能够使用任何适合的描述、标记语言和/或语法(诸如用接口定义语言(IDL)、可扩展标记语言(XML)等等)来描述接口。
此外,计算设备102同样包括一个或多个编辑器/编译器模块114。在一些实施例中,编辑器/编译器模块114表示读取和/或解释(一个或多个)描述性语言文件112并且基于(一个或多个)文件112来生成诸如一个或多个二进制元数据文件116之类的输出的功能性。(一个或多个)二进制元数据文件116表示包括与(一个或多个)操作系统接口110和/或操作系统108相关联的信息的一个或多个机器可读文件,所述信息诸如输入参数类型、参数调用顺序、接口之间的关系等等。
替换地或附加地,(一个或多个)编辑器/编译器模块114表示读取和/或译解一个或多个源代码文件118的功能性。(一个或多个)源代码文件118对应于包含与至少一个编程语言相关联的编程语句的一个或多个文件。在一些情况下,(一个或多个)源代码文件118能够包括对一个或多个操作系统接口的调用的语句。(一个或多个)编辑器/编译器模块114解释(一个或多个)源代码文件118,并且基于(一个或多个)源文件来生成机器可执行代码。
计算设备102能够被体现为任何适合的计算设备,诸如(通过示例而非限制的方式)台式计算机、便携式计算机、笔记本计算机、诸如个人数字助理(PDA)、手机之类的手持式计算机等等。
已经描述了示例操作环境,现在考虑程序上将操作系统组件暴露给一个或多个编程语言的讨论。
操作系统组件访问
在计算设备上运行的应用经常地利用由在计算设备上运行的操作系统所提供的特征。操作系统能够使得实现对计算设备上的关联资源的简化访问,以及提供服务。有时,能够程序上访问这些特征、服务和/或资源。然而,如果操作系统以不同于应用所被编写的编程语言的编程语言格式来暴露这些功能性,则程序设计者将典型地编写包装器函数以帮助不同编程语言之间的转变。例如,考虑已被编写和/或暴露为扁平、导出的“C”函数的接口。期望使用“C”风格函数的C#或Visual Basic程序设计者能够包括特殊语句和/或附加的代码,以便使得它们的编程语言能够成功地调用“C”风格函数。结果,用与所暴露的接口不同的编程语言编写的应用不能够访问接口直到附加的语句和/或包装器函数被编写了为止。
各种实施例提供了独立于编程语言来描述与操作系统相关联的一个或多个接口的能力。独立于编程语言来描述接口使得多个编程语言能够容易地访问接口。当编程语言学习到如何解释接口的语言无关描述时,这个知识能够被应用于使用语言无关描述的现有和将来的接口。在一些实施例中,能够使用抽象类型系统来描述接口。进而,特定编程语言或关联的编程语言编译器能够将抽象类型系统映射到它关联的类型系统以解释和/或访问接口。
考虑图2,图2图示了依据一个或多个实施例的架构200。架构200包括操作系统202,所述操作系统202能够被配置成在计算设备上执行。应该理解的是为了简洁起见,操作系统202未被整体地图示。操作系统202包括配置成管理与计算设备相关联的资源的一个或多个操作系统组件204。在一些实施例中,(一个或多个)操作系统组件204能够提供对资源以及与管理资源相关联的一个或多个服务和/或特征的程序访问。(一个或多个)操作系统组件204还能够包括与操作系统202相关联的基本元素以及从基本元素建立的复杂元素。
在一些实施例中,能够经由诸如API之类的一个或多个接口来暴露(一个或多个)操作系统组件204。在这个示例中,操作系统202包括新的API族206、基于COM的API族208以及基于扁平导出的API族210。新的API族206表示一个或多个相关的API,其中功能性(即类、接口、方法、属性、事件等等)直接地使用抽象类型系统来描述, 如在下面进一步描述的那样。基于COM的API族208表示其中功能性使用组件对象模型(COM)类型系统来描述的一个或多个API。基于扁平导出的API族210表示其中功能性使用方法签名(即包括方法名称、调用约定、方法变元的数目和类型的方法签名)来描述的一个或多个API。基于扁平导出的API进一步表示仅由它们的名称标识并且没有被布置成类和/或面向对象的方式的API。想要确定哪些API是可用的程序设计者能够手动地和/或程序上访问每个API的描述。例如,为了确定对于新的API族206存在什么接口并且如何调用它们,程序设计者能够访问关联的元数据212。虽然基于COM的API族208和基于扁平导出的API族210分别在元数据214和216中具有关联的语言无关类型系统描述,但是程序设计者首先编写包装器代码以将语言无关类型系统描述映射到基于COM的和/或基于扁平导出的API。
元数据212、214以及216能够被配置成包括描述关联的(一个或多个)接口的各种方面的信息,诸如版本信息、什么方法是可用的、(一个或多个)接口采取什么参数、参数的数据类型、传递参数的顺序等。在一些实施例中,元数据能够包括与接口相关联的层次(hierarchical)信息,诸如描述(一个或多个)接口之间的关系和/或以面向对象的方式来描述(一个或多个)接口的信息。元数据能够被配置成包括类描述、关联的方法以及类的参数等等。在一些情况下,一个或多个IDL文件能够被扩展成包括这些描述中的一些并且被用在一个或多个元数据文件的生成中。在一些情况下,元数据可以是至少部分地基于一个或多个IDL文件的,如在下面进一步描述的那样。
操作系统202同样包括(一个或多个)应用二进制接口(ABI) 218。ABI在机器级别描述用于调用函数、方法、API等等的二进制合同。二进制合同能够包括与函数相关联的标识或名称、能够被用来调用函数的签名、传递给函数的参数的顺序和/或与参数相关联的数据类型等。替换地或附加地,二进制合同能够包括用于暴露与至少一个类型的类型系统相关联的行为的定义和/或规则。典型地,与二进制合同相关联的和/或由二进制合同所定义的行为不改变。例如,如果二进制合同的签名和/或标识保持不变,则所关联的合同的行为也保持不变。
应用二进制接口218表示通过能够被其他应用可靠地援引的二进制暴露的功能性。在这个示例中,(一个或多个)应用二进制接口218包括与(一个或多个)操作系统组件204相关联的接口、基础类型以及基础模式。在操作系统202外部的一个或多个应用(诸如(一个或多个)应用220)能够经由一个或多个应用二进制接口218来访问操作系统组件204。
应用220能够包括从诸如HTML、JavaScript、Visual Basic、C#、C++等等之类的一个或多个编程语言生成的一个或多个应用。在一些实施例中,应用220将一个或多个调用包括到操作系统组件中。在一些情况下,(一个或多个)应用220能够被配置成首先程序上确定什么接口是可用的,并且然后做出到所确定的(一个或多个)接口中的一个或多个的调用。在一些情况下(一个或多个)应用220在来自如在下面进一步描述的一个或多个生成的语言投影模块222的帮助下通过(一个或多个)应用二进制接口218来访问(一个或多个)接口。
在一个或多个实施例中,生成的(一个或多个)语言投影模块222将抽象类型系统定义映射到特定编程语言。能够映射任何适合的编程语言,其示例在上面被提供。在一些实施例中,生成的语言投影模块对于每个编程语言来说可以是唯一的。在其他实施例中,生成的语言投影模块可以是多目的的并且被多个编程语言利用。映射使得能够实现使用抽象类型系统来描述成在没有附加的编程语句(即包装器函数)的情况下对于特定编程语言可访问的当前的和将来的接口。映射进一步允许特定编程语言以本地于特定编程语言的方式来调用接口。能够映射任何适合类型的信息,诸如类、数据类型、函数指针、结构等等。
考虑其中程序设计者想要访问操作系统组件的示例。当编写诸如(一个或多个)应用220之类的应用时,程序设计者在与至少一个特定编程语言相关联的编辑器/编译器中生成源代码。编辑器/编译器能够被配置成访问(一个或多个)元数据文件以便获得和与操作系统相关联的什么接口和/或API是可用的相关联的信息。例如,在一些实施例中,当程序设计者编写了包括对作为操作系统组件的一部分实现的类的调用的一行代码时,编译器/编辑器能够查询与类相关联的元数据并且将什么方法、属性等等与类相关联的列表返回给程序设计者。列表能够包括任一种信息、关联的方法和/或类的属性等等。替换地或附加地,列表能够包括可用类的列表。在一些实施例中,信息能够被提供为配置成在视觉上将接口的有关方法、属性等呈现给用户以供选择的自动完成特征的一部分。在选择方法和/或属性时,编译器/编辑器能够将对应的语法插入到源代码中以得到更高效且准确的源代码生成。
在一些实施例中,程序设计者可以编写配置成使操作系统组件的类对象实例化的源代码。当在运行时被调用时,操作系统动态地创建类的实例以交付给调用代码。然而,交付给调用代码的实例可以是“抽象对象”或在与操作系统组件相关联的抽象类型系统中所描述的对象,如在下面进一步描述的那样。为了在抽象对象类型和与调用代码相关联的编程语言的具体数据类型之间桥接,编译器能够被配置成用它关联的编程语言(诸如通过生成的(一个或多个)语言投影模块222)将抽象对象转化和/或映射到可比较的类型。在一些情况下,代理能够被用来桥接操作系统组件的抽象对象和与编程语言相关联的具体对象之间的调用。
考虑配置成仿真操作系统组件类的行为的代理。在一些情况下,能够创建包括类的关联类型、方法、属性、事件、接口等的占位程序(stub)的代理。能够用调用代码的编程语言来构造代理,从而使得代码调用能够以本地于调用代码的方式来访问代理。占位程序能够包括适当的知识和/或代码以将这些调用转化和/或映射到操作系统(并且从操作系统转化和/或映射)。例如,在一些实施例中,代理能够与(一个或多个)应用二进制接口218通信。
在一些实施例中,编程语言能够像上面所描述的那样插进包装器函数和/或代理,以将抽象类型映射到本地于编程语言的类型。编程语言编辑器/编译器能够被配置成读取元数据(诸如元数据文件212、214以及216),确定什么抽象类型正被使用,用所关联的程序语言将(一个或多个)抽象类型映射到一个或多个可比较的类型,并且将关联的包装器函数和/或代理接线到与操作系统组件相关联的抽象类型。一旦用于每个类型的映射存在于编程语言与抽象类型系统之间,由抽象类型系统所定义的任何当前的或将来的接口就能够自动地被编程语言访问,而不用来自程序设计者的附加的编码。
作为示例,考虑图3,图3图示了描述依据一个或多个实施例的方法中的步骤的流程图。该方法能够被任何适合的硬件、软件、固件或其组合实行。在至少一些实施例中,该方法的方面被诸如在计算设备102上执行的编辑器/编译器模块114之类的软件实行。
步骤302接收对与可用操作系统接口相关联的信息的请求。例如,该请求能够被配置成请求什么接口是可用的和/或与可用接口相关联的其他信息。能够以任何适合的方式实现这一点。在一些实施例中,能够由其中源代码正被开发的源代码编辑器自动地生成请求。代码编辑器能够标识对操作系统接口和/或组件的调用,并且在标识时,发送对与操作系统接口相关联的可用方法、属性等的请求。在一些实施例中,能够经由下拉菜单、单选按钮等等的选择手动地生成请求。请求能够被配置成请求与所有可用操作系统接口、一些可用操作系统接口、各个操作系统接口或其组合相关联的信息。在一些实施例中,能够经由诸如图2的(一个或多个)应用220之类的运行的应用来生成请求。
步骤304获得与一个或多个操作系统接口相关联的信息。例如,在一些实施例中,操作系统能够被查询以得到信息。替换地或附加地,信息能够被包括在一个或多个元数据文件中并且通过查询和/或读取元数据文件来获得。如上面和在下面所描述的那样,元数据文件能够以机器可读格式,并且包括层次信息,诸如与接口相关联的对象关系构成。
响应于获得信息,步骤306确定与一个或多个操作系统接口相关联的一个或多个抽象类型。如上面所描述的那样,在一些实施例中,能够通过利用抽象类型系统独立于特定编程语言来描述操作系统接口。响应于确定了与一个或多个操作系统接口相关联的一个或多个抽象类型,步骤310将一个或多个抽象类型中的每一个映射到与特定编程语言相关联的类型。
考虑将ABI描述为OpenPicker运行时类的接口描述语言的示例。被包括在OpenPicker运行时类中的是配置成返回FileItem对象的合集的PickMultipleItems方法。在这个特别的示例中,FileItem类包含配置成返回包括Name(名称)值的FileItemProperties对象的GetProperties方法。
在一些实施例中,C#语言编译器能够将描述映射到C#语言构造。通过将描述映射到语言特定的构造,能够以本地于C#编程语言的方式来访问操作系统接口,如在下面所说明的那样:
在又一个示例中,以语言无关的方式所定义的结构能够被映射到JavaScript对象。考虑使用下项定义的FrameRate结构的示例:
FrameRate结构包括两个UINT32字段:Numerator和Denominator。因为FrameRate结构使用语言无关项来定义,所以该结构能够被各种语言特定的编程在使用适当的映射时访问,诸如通过JavaScript被访问。然而,JavaScript不包括包含字段的结构的概念或无符号32位整数的概念。替代地,JavaScript包括具有属性的对象的概念和Number的概念。在这个示例中,上述结构定义可以是具有命名为Numerator和Denominator的两个属性的对象,两者类型为Number:
已经考虑了程序上将操作系统组件暴露给一个或多个编程语言,现在考虑依据一个或多个实施例用抽象类型系统对面向对象的语言建模的讨论。
用抽象类型系统对面向对象的语言建模
当操作系统接口已使用特定编程语言来定义时,与接口相关联的参数由特定编程语言的数据类型来表征。进而,接口的调用者符合特定编程语言如何定义数据类型。对于用特定编程语言编写为为接口的程序,符合数据类型变得无关紧要,因为该程序具有相同的数据类型定义。调用该接口的不用特定编程语言编写的程序有时可能降低它们的能力以便符合数据类型。例如,调用来自不同编程语言的接口的程序设计者可以添加代码以在不同的编程语言和/或数据类型之间转换和/或桥接。结果,数据类型之间的桥接过程经常地能够降低调用编程语言的数据类型固有的功能性。附加地,这个转换有时可能是复杂的,并且在一些情况下,如果不同的编程语言具有对象是什么的不同概念则转换是不存在的。
各种实施例提供了利用抽象类型系统以面向对象的方式对操作系统的一个或多个接口建模的能力。在一些实施例中,扩展的IDL能够包括用来描述一个或多个接口之间的关系的语法。替换地或附加地,扩展的IDL能够包括支配接口如何能够被描述和/或定义的规则。在一些实施例中,二进制合同能够被配置成暴露关联抽象类型系统的行为,并且进一步被配置成包括与聚合数据类型相关联的信息。
面向对象的模型使用类层次来描述对象,其中类能够包括方法、属性、继承等。典型地,但未必,面向对象的类包括一个或多个构造器。构造器是类函数,所述类函数当被调用时,在存储器中创建类的实例/对象以供使用。类的一些构造器包含准备所创建的实例/对象以供使用的附加的代码。例如,附加的代码能够初始化类的成员变量,运行类的关联的启动例程等。默认构造器没有输入参数,而非默认构造器具有一个或多个输入参数。
在一些实施例中,操作系统组件的一个或多个构造器能够被约束成遵循特别的实施方式和/或设计。通过遵循特别的实施方式,构造器的调用者能够取决于构造器和/或作为结果的对象如何表现。例如,操作系统组件的默认构造器能够被约束和/或映射到类工厂对象的IActivationFactory接口的ActivateInstance方法的默认构造器。类工厂对象是建模来创建对象而不用指定所创建对象的确切类的设计模式。通过使用类工厂模型,默认构造器能够维持充足水平的抽象。操作系统组件的非默认构造器同样能够被约束成被放置在一个或多个特殊地指定的接口(诸如类工厂的可替换的接口)上。
指定接口的描述的一个方式是通过使用描述性语言文件,诸如像IDL和/或XML这样的扩展描述语言。在一些实施例中,扩展描述语言能够被配置成使得能够实现用来描述和/或指定操作系统组件的一个或多个构造器接口的能力。例如,考虑Compressor(压缩器)类,如在下面所说明的那样。在这个示例中,Compressor类声明它的ICompressorFactory接口包含与该类相关联的(一个或多个)非默认构造器方法的至少一个定义。
这些描述能够被包含在一个或多个文件中并且与至少一个编译器相结合地用来以机器可读格式生成一个或多个接口描述,如在下面进一步描述的那样。
面向对象的类能够被配置成包括至少一个静态方法、至少一个静态属性、至少一个静态事件或其任何组合。与约束构造器的定义类似,静态方法、静态属性以及和/或静态事件能够被设计成符合一个或多个特定地指明的接口。考虑声明静态方法、属性以及事件的CallControl类的示例。在这个示例中,静态方法、属性以及事件被定义在ICallControlStatics接口中:
面向对象的类能够被配置成包括至少一个实例方法、至少一个实例属性、至少一个实例事件或其任何组合。实例成员(方法、属性以及事件)对类的指定实例进行操作而静态成员被类的所有成员共享。类能够被设计成符合一个或多个特定地指定的接口,诸如其中CallControl类声明它关联的实例方法、属性以及事件被定义在ICallControl接口中的上述示例。在一些实施例中,一个或多个操作系统组件能够在类工厂设计模式之后/上对这些接口建模/实现这些接口。
无论特定编程语言是否调用语言特定的构造器、静态或实例成员,语言投影模块(诸如图2的生成的语言投影模块222)都能够将编程语言特定的调用映射到与适当的类工厂对象或实例相关联的适当方法和/或接口。在一些实施例中,类工厂对象与操作系统组件和/或运行时类相关联。例如,指导编译器创建运行时类的实例的代码的方法签名能够与类工厂对象的适当的构造器接口方法相匹配。在又一个示例中,语言投影模块能够被配置成使指导编译器调用静态方法的语言特定的方法签名与在与操作系统组件相关联的静态接口上的适当匹配接口相匹配。在又一个示例中,语言投影模块能够被配置成使指导编译器调用实例方法的语言特定的方法签名与在与操作系统组件的特别的实例相关联的接口上的适当匹配接口方法相匹配。
在一些实施例中,IDL编译器能够被配置成读取与至少一个操作系统组件接口描述相关联的一个或多个扩展的IDL文件,并且生成关联的机器可读文件。任何适合类型的信息能够被包括在扩展的IDL文件中,所述信息诸如描述关联的操作系统组件的类型、方法、属性、事件以及接口的信息。在一些情况下,编译器能够生成机器可读元数据文件。一个或多个应用能够被配置成读取所关联的机器可读文件以程序上确定什么接口是可用的、关联的描述和/或接口的声明、接口的参数的数据类型等。能够用任何适合的编程语言来编写一个或多个应用,所述任何适合的编程语言的示例在上面被提供。
在一些实施例中,IDL编译器能够生成与类型、方法、属性、事件和/或接口相关联的一个或多个通信代理和/或(一个或多个)代码占位程序。通信代理和/或代码占位程序能够附加地被配置成用于由操作系统组件访问。
考虑图4,图4图示了依据一个或多个实施例的(一个或多个)扩展的IDL文件402、编译器404与(一个或多个)元数据文件406之间的关系。在这里,(一个或多个)扩展的IDL文件402被编译器404接收和处理以产生(一个或多个)元数据文件406。在至少一些实施例中,在关系中所图示的模块能够被实现为软件、硬件或其任何组合,诸如在计算设备102上执行的编辑器/编译器模块114。
在所图示和描述的实施例中,(一个或多个)扩展的IDL文件402能够包括定义一个或多个操作系统组件接口(诸如操作系统API)的一个或多个文件。能够描述任何适合类型的操作系统组件,诸如文件对象/类、串对象/类、图形对象/类、文化对象/类等等。每个对象能够包括能够与面向对象的类相关联的方法、属性、继承信息等。扩展的IDL能够包括使得能够实现要描述的一个或多个接口之间的这些类型的关系的语法。替换地或附加地,扩展的IDL能够描述抽象类型系统。
在一些实施例中,抽象类型系统能够被配置成支持和/或描述各种数据类型。例如,方法接口能够被定义来映射所有接口对对象的实例进行操作的物理要求。在另一示例中,抽象类型系统能够被用来定义能够跨越编程语言和组件边界被调用的函数指针。第一组件能够发起函数指针或被绑定到方法的代表。然后代表能够被跨越二进制编译边界传递到用任意编程语言编写的第二组件,并且被援引。各种实施例使得扩展的IDL能够定义和/或描述这些数据类型,以便定义用于组成基本数据类型以及将该数据类型复合成聚合类型的规则。
在所图示和描述的实施例中,编译器404接受一个或多个输入文件(诸如扩展的IDL文件402),并且产生一个或多个元数据文件406。(一个或多个)元数据文件406能够被配置用于自动化的访问。例如,能够以机器可读格式存储元数据文件。在一些实施例中,(一个或多个)元数据文件406与一个或多个操作系统组件相关联。替换地或附加地,编译器404能够生成被占位的通信代理,如上面所描述的那样。
诸如通过读取(一个或多个)元数据文件406,(一个或多个)应用408能够动态地确定什么API是可用的。在一些实施例中,(一个或多个)应用408能够被配置为图1的编辑器/编译器114。通过(一个或多个)元数据文件406,应用能够确定是否存在功能性的较近版本、API采取什么参数、以及向用户通知用于API的什么功能性在运行时存在。因此,通过以机器可读格式来包括API描述以及用抽象类型系统来描述API,支持抽象类型系统与特定编程语言之间的映射的应用和/或语言用来自程序设计者的较少努力就容易地访问API。
已经考虑了用抽象类型系统对面向对象的语言建模,现在考虑依据一个或多个实施例的示例系统的讨论。
示例系统
图5图示了能够被用来实现上面所描述的各种实施例的示例计算设备500。计算设备500可以是例如图1的计算设备102或任何其他适合的计算设备。
计算设备500包括一个或多个处理器或处理单元502、一个或多个存储器和/或存储组件504、一个或多个输入/输出(I/O)设备506以及允许各种组件和设备与彼此通信的总线508。总线508表示一个或多个数个类型的总线结构中的任一个,包括存储器总线或存储器控制器、外围总线、加速图形端口、以及使用各种总线架构中的任一个的处理器或局部总线。总线508能够包括有线和/或无线总线。
存储器/存储组件504表示一个或多个计算机存储媒体。组件504能够包括易失性媒体(诸如随机存取存储器(RAM))和/或非易失性媒体(诸如只读存储器(ROM)、闪速存储器、光盘、磁盘等等)。组件504能够包括固定媒体(例如,RAM、ROM、固定硬盘驱动器等)以及可移动媒体(例如,闪速存储器驱动器、可移动硬盘驱动器、光盘等等)。
一个或多个输入/输出设备506允许用户将命令和信息键入到计算设备500,并且同样允许信息被呈现给用户和/或其他组件或设备。输入设备的示例包括键盘、光标控制设备(例如,鼠标)、麦克风、扫描器等等。输出设备的示例包括显示设备(例如,监视器或投影仪)、扬声器、打印机、网络卡等等。
可以在本文中在软件或程序模块的一般上下文中描述各种技术。一般地,软件包括执行特定任务或者实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。可以在某种形式的计算机可读媒体上存储或者跨越某种形式的计算机可读媒体传输这些模块和技术的实施方式。计算机可读媒体可以是能够被计算设备访问的任何可用的介质或媒体。通过示例而非限制的方式,计算机可读媒体可以包括“计算机可读存储媒体”。
“计算机可读存储媒体”包括用任何方法或技术实现以用于诸如计算机可读指令、数据结构、程序模块或其他数据之类的信息的存储的易失性和非易失性、可移动和非可移动媒体。计算机可读存储媒体包括但不限于RAM、ROM、EEPROM、闪速存储器或其他存储器技术、CD-ROM、数字通用盘(DVD)或其他光学存储装置、磁盒、磁带、磁盘存储装置或其他磁存储设备、或能够被用来存储所期望的信息并且能够被计算机访问的任何其他介质。
结论
各种实施例提供了独立于编程语言来描述与操作系统相关联的一个或多个接口的能力。替换地或附加地,与特定编程语言相关联的编译器能够被配置成将(一个或多个)独立接口描述映射到特定于编程语言的适当构造。在一些实施例中,应用能够被配置成程序上确定操作系统的一个或多个接口。
尽管已经用特定于结构特征和/或方法学行为的语言描述了本主题,但应当理解的是,在所附权利要求中限定的本发明的主题未必限于上面所描述的特定特征或行为。相反地,上面所描述的特定特征和行为作为实现权利要求的示例形式被公开。
Claims (10)
1. 一种计算机实现的方法,包括:
接收对与一个或多个可用操作系统接口相关联的信息的请求;
获得与所述一个或多个可用操作系统接口相关联的所述信息,所述操作系统接口使用抽象类型系统来描述;
确定与所述一个或多个可用操作系统接口相关联的一个或多个抽象类型;以及
将各个确定的抽象类型映射到与至少一个特定编程语言相关联的各个相应的类型。
2. 根据权利要求1所述的计算机方法,所述确定一个或多个抽象类型进一步包括确定与所述一个或多个抽象类型相关联的行为。
3. 根据权利要求2所述的计算机方法,所述确定与所述一个或多个抽象类型相关联的行为进一步包括通过至少一个二进制合同程序上确定行为。
4. 根据权利要求1所述的计算机方法,与所述一个或多个可用操作系统接口相关联的所述信息进一步包括层次信息。
5. 根据权利要求1所述的计算机方法,所述信息包括与至少一个接口相关联的版本信息、与所述至少一个接口相关联的各个参数的数据类型、以及与所述至少一个接口相关联的所述各个参数的调用顺序。
6. 根据权利要求1所述的计算机方法,所述获得与所述一个或多个可用操作系统接口相关联的信息包括从至少一个元数据文件程序上获得信息。
7. 一个或多个计算机可读存储媒体,包括计算机可读指令,所述计算机可读指令当被执行时,实现:
配置成使得能够实现对与操作系统相关联的功能性的程序访问的一个或多个应用编程接口(API)模块;
与所述一个或多个API模块相关联的一个或多个元数据文件,所述一个或多个元数据文件被配置成包括所述一个或多个API的至少一个描述,所述至少一个描述使用抽象类型系统;
配置成包括用于调用所述一个或多个API的一个或多个机器级别二进制合同的一个或多个应用二进制接口(ABI)模块;以及
配置成将至少一个类型的所述抽象类型系统映射到至少一个类型的一个或多个特定编程语言的一个或多个生成的语言投影模块。
8. 根据权利要求7所述的一个或多个计算机可读存储媒体,进一步包括当被执行时实现以下各项的指令:
配置成通过所述一个或多个元数据文件程序上确定在所述至少一个API模块中包括的至少一个接口的至少一个应用。
9. 根据权利要求7所述的一个或多个计算机可读存储媒体,所生成的语言投影模块包括至少一个代理,所述至少一个代理被配置成以本地于所述一个或多个特定编程语言的方式来仿真至少一个类型的所述抽象类型系统。
10. 根据权利要求7所述的一个或多个计算机可读存储媒体,用于调用所述一个或多个API的所述二进制合同包括与至少一个类型的所述抽象类型系统相关联的至少一个行为定义。
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US13/207,806 US8776094B2 (en) | 2011-08-11 | 2011-08-11 | Runtime system |
US13/207806 | 2011-08-11 | ||
PCT/US2011/055492 WO2013022465A1 (en) | 2011-08-11 | 2011-10-08 | Runtime system |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103718155A true CN103718155A (zh) | 2014-04-09 |
CN103718155B CN103718155B (zh) | 2017-09-26 |
Family
ID=47668756
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201180072813.6A Active CN103718155B (zh) | 2011-08-11 | 2011-10-08 | 运行时系统 |
Country Status (13)
Country | Link |
---|---|
US (2) | US8776094B2 (zh) |
EP (1) | EP2742420B1 (zh) |
JP (1) | JP5933002B2 (zh) |
KR (1) | KR101795844B1 (zh) |
CN (1) | CN103718155B (zh) |
AU (2) | AU2011374897B2 (zh) |
BR (1) | BR112014003123B1 (zh) |
CA (1) | CA2844492C (zh) |
IN (1) | IN2014CN00797A (zh) |
MX (1) | MX336195B (zh) |
RU (1) | RU2601198C2 (zh) |
TW (2) | TWI533217B (zh) |
WO (1) | WO2013022465A1 (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796521A (zh) * | 2014-10-16 | 2017-05-31 | 微软技术许可有限责任公司 | 独立于产品发布的api版本控制 |
CN111400162A (zh) * | 2019-01-02 | 2020-07-10 | 阿里巴巴集团控股有限公司 | 一种测试方法及测试系统 |
CN111857662A (zh) * | 2020-07-15 | 2020-10-30 | 曹蕤 | 基于map和接口来描述对象特定构成的程序设计方法 |
CN112969999A (zh) * | 2019-01-31 | 2021-06-15 | 宝马股份公司 | 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统 |
CN117453708A (zh) * | 2023-12-25 | 2024-01-26 | 成都深瑞同华科技有限公司 | 一种gis图形与cad图形的双向联动互转方法 |
Families Citing this family (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US8695021B2 (en) | 2011-08-31 | 2014-04-08 | Microsoft Corporation | Projecting native application programming interfaces of an operating system into other programming languages |
US20140237368A1 (en) * | 2013-02-19 | 2014-08-21 | Microsoft Corporation | Proxying non-interactive controls to enable narration |
US9442700B2 (en) * | 2013-09-30 | 2016-09-13 | MuleSoft, Inc. | API notebook tool |
US10228920B2 (en) * | 2014-05-13 | 2019-03-12 | Oracle International Corporation | Automatic selection of an abstract data type |
US10452409B2 (en) * | 2015-10-23 | 2019-10-22 | Oracle International Corporation | Universal adapter for native calling |
US10120655B2 (en) * | 2016-06-03 | 2018-11-06 | Microsoft Technology Licensing, Llc. | Seamless high performance interoperability between different type graphs that share a garbage collector |
US11343352B1 (en) * | 2017-06-21 | 2022-05-24 | Amazon Technologies, Inc. | Customer-facing service for service coordination |
US11050607B2 (en) * | 2017-06-21 | 2021-06-29 | Red Hat, Inc. | Proxy with a function as a service (FAAS) support |
CN109814861A (zh) * | 2017-11-21 | 2019-05-28 | 海云数据 | 为终端用户提供能力的开放平台 |
US10635416B2 (en) * | 2018-07-31 | 2020-04-28 | Microsoft Technology Licensing, Llc | Property filtering |
CN111949253B (zh) * | 2020-08-07 | 2023-12-01 | 抖音视界有限公司 | 组合idl文件的方法、装置、计算机设备和存储介质 |
US11036482B1 (en) | 2020-12-22 | 2021-06-15 | Temper Systems, Inc. | Deriving many idiomatic programming language interfaces |
US10963228B1 (en) | 2020-12-22 | 2021-03-30 | Temper Systems, Inc. | Preventing garbage object accumulation on minimal runtimes |
US11163559B1 (en) * | 2020-12-28 | 2021-11-02 | Temper Systems, Inc. | Cross-publishing software libraries to module repositories |
WO2022146933A1 (en) | 2020-12-28 | 2022-07-07 | Temper Systems, Inc. | Producing idiomatic software documentation for many programming languages from a common specification |
US12086141B1 (en) | 2021-12-10 | 2024-09-10 | Amazon Technologies, Inc. | Coordination of services using PartiQL queries |
Family Cites Families (156)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5097533A (en) | 1988-11-29 | 1992-03-17 | International Business Machines Corporation | System and method for interfacing computer application programs written in different languages to a software system |
US5371885A (en) | 1989-08-29 | 1994-12-06 | Microsoft Corporation | High performance file system |
JPH0540682A (ja) | 1990-06-08 | 1993-02-19 | Internatl Business Mach Corp <Ibm> | アトミシテイを有する記憶装置の高可用性耐故障再配置 |
US5339422A (en) | 1991-03-07 | 1994-08-16 | Digital Equipment Corporation | System and method for jacketing cross-domain calls in a multi-code execution and debugging system within a multi-architecture environment |
US5964835A (en) | 1992-12-17 | 1999-10-12 | Tandem Computers Incorporated | Storage access validation to data messages using partial storage address data indexed entries containing permissible address range validation for message source |
US5594863A (en) | 1995-06-26 | 1997-01-14 | Novell, Inc. | Method and apparatus for network file recovery |
US5910180A (en) | 1995-11-21 | 1999-06-08 | Diamond Multimedia Systems, Inc. | Context virtualizing device driver architecture |
US5887172A (en) | 1996-01-10 | 1999-03-23 | Sun Microsystems, Inc. | Remote procedure call system and method for RPC mechanism independent client and server interfaces interoperable with any of a plurality of remote procedure call backends |
CA2199675C (en) | 1996-05-08 | 2002-03-26 | John C. Goodwin, Iii | System and method for managing electronic price label overlays |
US6035342A (en) * | 1997-03-19 | 2000-03-07 | Microsoft Corporation | Method and computer program product for implementing object relationships |
US6026238A (en) | 1997-08-18 | 2000-02-15 | Microsoft Corporatrion | Interface conversion modules based upon generalized templates for multiple platform computer systems |
US6269431B1 (en) | 1998-08-13 | 2001-07-31 | Emc Corporation | Virtual storage and block level direct access of secondary storage for recovery of backup data |
US6920537B2 (en) | 1998-12-31 | 2005-07-19 | Emc Corporation | Apparatus and methods for copying, backing up and restoring logical objects in a computer storage system by transferring blocks out of order or in parallel |
US20050182828A1 (en) | 1999-04-21 | 2005-08-18 | Interactual Technologies, Inc. | Platform specific execution |
US6745385B1 (en) | 1999-09-01 | 2004-06-01 | Microsoft Corporation | Fixing incompatible applications by providing stubs for APIs |
EP1117033A1 (en) * | 2000-01-14 | 2001-07-18 | Sun Microsystems, Inc. | Dynamic dispatch function |
US6629264B1 (en) | 2000-03-30 | 2003-09-30 | Hewlett-Packard Development Company, L.P. | Controller-based remote copy system with logical unit grouping |
JP3562435B2 (ja) | 2000-04-12 | 2004-09-08 | 日本電気株式会社 | コンポーネントの自動生成装置 |
US7783720B1 (en) * | 2000-04-21 | 2010-08-24 | Oracle America, Inc. | CORBA metadata gateway to telecommunications management network |
US6813770B1 (en) | 2000-04-21 | 2004-11-02 | Sun Microsystems, Inc. | Abstract syntax notation to interface definition language converter framework for network management |
US7577834B1 (en) | 2000-05-09 | 2009-08-18 | Sun Microsystems, Inc. | Message authentication using message gates in a distributed computing environment |
US6691302B1 (en) | 2000-05-31 | 2004-02-10 | Siemens Information & Communications Networks, Inc. | Interfacing a service component to a native API |
US6643672B1 (en) | 2000-07-31 | 2003-11-04 | Hewlett-Packard Development Company, Lp. | Method and apparatus for asynchronous file writes in a distributed file system |
US6925476B1 (en) | 2000-08-17 | 2005-08-02 | Fusionone, Inc. | Updating application data including adding first change log to aggreagate change log comprising summary of changes |
US6928555B1 (en) | 2000-09-18 | 2005-08-09 | Networks Associates Technology, Inc. | Method and apparatus for minimizing file scanning by anti-virus programs |
US7065742B1 (en) | 2000-10-30 | 2006-06-20 | Microsoft Corporation | System and method for dynamically processing declarative language instance data |
US7574346B2 (en) | 2000-10-30 | 2009-08-11 | Microsoft Corporation | Kernel emulator for non-native program modules |
US7730213B2 (en) | 2000-12-18 | 2010-06-01 | Oracle America, Inc. | Object-based storage device with improved reliability and fast crash recovery |
US6993744B2 (en) | 2000-12-19 | 2006-01-31 | Tajen Corporation | Method for enabling a compiler or interpreter to use identifiers found at run time in a map container object in a manner similar or identical to identifiers declared at compile time |
US20020161596A1 (en) | 2001-04-30 | 2002-10-31 | Johnson Robert E. | System and method for validation of storage device addresses |
US6996832B2 (en) | 2001-05-30 | 2006-02-07 | Bea Systems, Inc. | System and method for software component plug-in framework |
CA2349905A1 (en) | 2001-06-07 | 2002-12-07 | Ibm Canada Limited-Ibm Canada Limitee | System and method of mapping between software objects and structured language element based documents |
US6643612B1 (en) | 2001-06-28 | 2003-11-04 | Atrica Ireland Limited | Mechanism and protocol for per connection based service level agreement measurement |
US7581231B2 (en) | 2001-07-10 | 2009-08-25 | Microsoft Corporation | Computing system and method for allowing plurality of applications written in different programming languages to communicate and request resources or services via a common language runtime layer |
US7546602B2 (en) | 2001-07-10 | 2009-06-09 | Microsoft Corporation | Application program interface for network software platform |
US7165239B2 (en) | 2001-07-10 | 2007-01-16 | Microsoft Corporation | Application program interface for network software platform |
US7631084B2 (en) | 2001-11-02 | 2009-12-08 | Juniper Networks, Inc. | Method and system for providing secure access to private networks with client redirection |
US20040201600A1 (en) | 2001-12-14 | 2004-10-14 | Microsoft Corporation | Methods and system for providing an XML-based interface description language |
US7330971B1 (en) | 2002-01-11 | 2008-02-12 | Microsoft Corporation | Delegated administration of namespace management |
US7072915B2 (en) | 2002-01-22 | 2006-07-04 | International Business Machines Corporation | Copy method supplementing outboard data copy with previously instituted copy-on-write logical snapshot to create duplicate consistent with source data as of designated time |
JP2003223350A (ja) | 2002-01-29 | 2003-08-08 | Ricoh Co Ltd | データベースシステム |
US20030188043A1 (en) | 2002-03-27 | 2003-10-02 | Woodall Thomas R. | Two layer middleware architecture with an intermediate target independent interface |
US7320123B2 (en) | 2002-04-01 | 2008-01-15 | Sun Microsystems, Inc. | Method and system for detecting deprecated elements during runtime |
US7424717B2 (en) | 2002-05-01 | 2008-09-09 | Bea Systems, Inc. | Systems and methods for business process plug-in development |
US7334124B2 (en) | 2002-07-22 | 2008-02-19 | Vormetric, Inc. | Logical access block processing protocol for transparent secure file storage |
US7219339B1 (en) | 2002-10-29 | 2007-05-15 | Cisco Technology, Inc. | Method and apparatus for parsing and generating configuration commands for network devices using a grammar-based framework |
US7412658B2 (en) | 2002-11-14 | 2008-08-12 | Sap Ag | Modeling system for graphic user interface |
US7171539B2 (en) | 2002-11-18 | 2007-01-30 | Arm Limited | Apparatus and method for controlling access to a memory |
US7546607B2 (en) | 2002-11-19 | 2009-06-09 | Microsoft Corporation | Native code exposing virtual machine managed object |
US7784044B2 (en) | 2002-12-02 | 2010-08-24 | Microsoft Corporation | Patching of in-use functions on a running computer system |
US6993603B2 (en) | 2002-12-09 | 2006-01-31 | Microsoft Corporation | Managed file system filter model and architecture |
US7020746B2 (en) | 2003-01-28 | 2006-03-28 | Microsoft Corporation | Method and system for an atomically updated, central cache memory |
US7197417B2 (en) | 2003-02-14 | 2007-03-27 | Advantest America R&D Center, Inc. | Method and structure to develop a test program for semiconductor integrated circuits |
US7846023B2 (en) | 2003-03-27 | 2010-12-07 | Microsoft Corporation | Application-centric user interface techniques |
US7322029B2 (en) | 2003-05-08 | 2008-01-22 | American Megatrends, Inc. | Method and system for recovering program code in a computer system |
US7383255B2 (en) * | 2003-06-23 | 2008-06-03 | Microsoft Corporation | Common query runtime system and application programming interface |
US7380235B1 (en) | 2003-06-27 | 2008-05-27 | Microsoft Corporation | Application program interface call replay tool |
US7519951B2 (en) | 2003-09-30 | 2009-04-14 | International Business Machines Corporation | Multi-attribute dynamic link library packaging |
US20050091271A1 (en) | 2003-10-23 | 2005-04-28 | Kasy Srinivas | Systems and methods that schematize audio/video data |
US8055907B2 (en) * | 2003-10-24 | 2011-11-08 | Microsoft Corporation | Programming interface for a computer platform |
US7493592B2 (en) | 2003-10-24 | 2009-02-17 | Microsoft Corporation | Programming interface for a computer platform |
US7721254B2 (en) * | 2003-10-24 | 2010-05-18 | Microsoft Corporation | Programming interface for a computer platform |
US20050114832A1 (en) | 2003-11-24 | 2005-05-26 | Microsoft Corporation | Automatically generating program code from a functional model of software |
US7392527B2 (en) | 2003-12-10 | 2008-06-24 | Microsoft Corporation | Driver-specific context for kernel-mode shimming |
GB2409735A (en) | 2003-12-30 | 2005-07-06 | Ibm | Method and system for change management of interfaces in distributed computer systems |
US7440966B2 (en) | 2004-02-12 | 2008-10-21 | International Business Machines Corporation | Method and apparatus for file system snapshot persistence |
US7694315B2 (en) | 2004-02-13 | 2010-04-06 | Microsoft Corporation | Schema-based machine generated programming models |
US7444621B2 (en) | 2004-02-20 | 2008-10-28 | Microsoft Corporation | Method and system for providing a common operating system |
US20050216552A1 (en) | 2004-03-24 | 2005-09-29 | Samuel Fineberg | Communication-link-attached persistent memory system |
US7707583B2 (en) | 2004-05-20 | 2010-04-27 | Sap Ag | Robust sharing of runtime systems |
EP1759313A2 (en) | 2004-05-21 | 2007-03-07 | Computer Associates Think, Inc. | Method and apparatus for updating a database using table staging and queued relocation and deletion |
US20050268308A1 (en) | 2004-05-28 | 2005-12-01 | Nokia Corporation | System and method for implementing a general application program interface |
US8306991B2 (en) * | 2004-06-07 | 2012-11-06 | Symantec Operating Corporation | System and method for providing a programming-language-independent interface for querying file system content |
US7941402B2 (en) | 2004-09-24 | 2011-05-10 | Sap Ag | Storing and using classes in databases |
JP4104586B2 (ja) | 2004-09-30 | 2008-06-18 | 株式会社東芝 | ファイル管理機能を備えたファイルシステム及びファイル管理方法 |
JP4956922B2 (ja) | 2004-10-27 | 2012-06-20 | ソニー株式会社 | 記憶装置 |
US8898123B2 (en) * | 2005-06-07 | 2014-11-25 | Rockwell Automation Technologies, Inc. | Method and system for interface configuration via device-side scripting |
WO2006055838A2 (en) | 2004-11-18 | 2006-05-26 | America Online, Inc. | Runtime environment |
US7464124B2 (en) | 2004-11-19 | 2008-12-09 | International Business Machines Corporation | Method for autonomic data caching and copying on a storage area network aware file system using copy services |
US20060129745A1 (en) | 2004-12-11 | 2006-06-15 | Gunther Thiel | Process and appliance for data processing and computer program product |
US7617259B1 (en) | 2004-12-31 | 2009-11-10 | Symantec Operating Corporation | System and method for managing redundant storage consistency at a file system level |
US20060161910A1 (en) | 2005-01-14 | 2006-07-20 | International Business Machines Corporation | Method, system and program product for automatically ensuring compatability of a code module loaded into a program-code environment |
US7519713B2 (en) | 2005-02-04 | 2009-04-14 | Microsoft Corporation | Mapping between object oriented and service oriented representations of a distributed application |
US7950023B2 (en) * | 2005-02-04 | 2011-05-24 | Microsoft Corporation | Utilizing abstract descriptions to generate, exchange, and configure service and client runtimes |
US20060195460A1 (en) * | 2005-02-28 | 2006-08-31 | Microsoft Corporation | Data model for object-relational data |
US7325007B2 (en) | 2005-03-07 | 2008-01-29 | Microsoft Corporation | System and method for supporting non-native data types in a database API |
US7685635B2 (en) | 2005-03-11 | 2010-03-23 | Microsoft Corporation | Systems and methods for multi-level intercept processing in a virtual machine environment |
US7716661B2 (en) | 2005-03-16 | 2010-05-11 | Microsoft Corporation | Embedded device update service |
JP4591148B2 (ja) | 2005-03-25 | 2010-12-01 | 富士ゼロックス株式会社 | 機能変換装置、機能変換方法、機能変換プログラム、デバイスデータ生成装置、デバイスデータ生成方法、及びデバイスデータ生成プログラム |
US20060287890A1 (en) | 2005-06-15 | 2006-12-21 | Vanderbilt University | Method and apparatus for organizing and integrating structured and non-structured data across heterogeneous systems |
US7992140B2 (en) | 2005-07-29 | 2011-08-02 | Microsoft Corporation | Compiler supporting programs as data objects |
US20070039010A1 (en) | 2005-08-15 | 2007-02-15 | Microsoft Corporation | Automatic generation of software code to facilitate interoperability |
CN1936853B (zh) | 2005-09-22 | 2010-05-05 | 康佳集团股份有限公司 | 嵌入式设备的数据掉电保护和修复方法 |
KR101198583B1 (ko) | 2005-10-12 | 2012-11-06 | 한국과학기술원 | 메타데이터를 이용한 멀티미디어 미들웨어 장치와 그 관리방법 및 기록 매체 |
US7716246B2 (en) | 2005-11-30 | 2010-05-11 | Microsoft Corporation | Dynamic mechanism for providing metadata |
US7624257B2 (en) * | 2005-11-30 | 2009-11-24 | International Business Machines Corporation | Digital data processing apparatus having hardware multithreading support including a register set reserved for special class threads |
US7890659B2 (en) | 2005-12-15 | 2011-02-15 | Microsoft Corporation | Conforming web services to an updated contract |
EP1974296B8 (en) | 2005-12-19 | 2016-09-21 | Commvault Systems, Inc. | Systems and methods for performing data replication |
US20070156913A1 (en) | 2005-12-30 | 2007-07-05 | Hiroyuki Miyamoto | Method for enabling extension points through plug-ins |
US8082555B2 (en) | 2006-02-21 | 2011-12-20 | Microsoft Corporation | Routing calls via reflective interfaces and a proxy |
US7620721B2 (en) | 2006-02-28 | 2009-11-17 | Microsoft Corporation | Pre-existing content replication |
US7552148B2 (en) | 2006-02-28 | 2009-06-23 | Microsoft Corporation | Shutdown recovery |
US9081585B1 (en) | 2006-03-31 | 2015-07-14 | The Mathworks, Inc. | Interfacing a device driver with an application using a virtual driver interface and a strategy |
DE602006014360D1 (de) | 2006-04-13 | 2010-07-01 | Microsoft Corp | Virtuelles Ausführungssystem für ressourcen-beschränkte Geräte |
US7730351B2 (en) | 2006-05-15 | 2010-06-01 | Oracle America, Inc. | Per file dirty region logging |
JP2007316944A (ja) | 2006-05-25 | 2007-12-06 | Toshiba Corp | データ処理装置、データ処理方法、およびデータ処理プログラム |
US8104048B2 (en) | 2006-08-04 | 2012-01-24 | Apple Inc. | Browsing or searching user interfaces and other aspects |
EP2293230B1 (en) | 2006-09-11 | 2014-05-07 | Software AG | System for managing the lifecycle of a service oriented architecture |
US20080077590A1 (en) | 2006-09-22 | 2008-03-27 | Honeywell International Inc. | Efficient journaling and recovery mechanism for embedded flash file systems |
GB0619147D0 (en) | 2006-09-28 | 2006-11-08 | Ibm | A method, apparatus or software for managing software component version identifications in a componentised software system |
DE602006019010D1 (de) | 2006-10-20 | 2011-01-27 | Fujitsu Ltd | Speicheranordnung und auffrisch-justierverfahren |
US7840752B2 (en) | 2006-10-30 | 2010-11-23 | Microsoft Corporation | Dynamic database memory management policies |
US7971208B2 (en) | 2006-12-01 | 2011-06-28 | Microsoft Corporation | Developing layered platform components |
US8370818B2 (en) | 2006-12-02 | 2013-02-05 | Time Warner Cable Inc. | Methods and apparatus for analyzing software interface usage |
CN101715575A (zh) | 2006-12-06 | 2010-05-26 | 弗森多系统公司(dba弗森-艾奥) | 采用数据管道管理数据的装置、系统和方法 |
US7956721B2 (en) | 2007-01-09 | 2011-06-07 | Homerun Holdings Corporation | Power conserving mobile transmitter |
CN101051324A (zh) | 2007-05-23 | 2007-10-10 | 中兴通讯股份有限公司 | 一种内存数据库的事务管理方法 |
JP2008293218A (ja) | 2007-05-23 | 2008-12-04 | Nec Corp | ファイル管理システム、ファイル管理方法、ファイル管理プログラム |
US20090012932A1 (en) | 2007-07-03 | 2009-01-08 | Xeround Systems Ltd. | Method and System For Data Storage And Management |
US7720800B2 (en) | 2007-07-06 | 2010-05-18 | International Business Machines Corporation | Method and approach to hosting versioned web services |
JP2009020705A (ja) | 2007-07-12 | 2009-01-29 | Hitachi Ltd | Guiアプリケーション開発支援装置及び開発支援方法 |
US20090024986A1 (en) | 2007-07-19 | 2009-01-22 | Microsoft Corporation | Runtime code modification |
US8667482B2 (en) | 2007-08-10 | 2014-03-04 | Microsoft Corporation | Automated application modeling for application virtualization |
KR100927442B1 (ko) | 2007-08-16 | 2009-11-19 | 주식회사 마크애니 | 가상 응용프로그램 생성 시스템, 가상 응용프로그램 설치방법, 네이티브 api 호출 처리 방법 및 가상응용프로그램 수행 방법 |
US8364683B2 (en) | 2007-08-30 | 2013-01-29 | International Business Machines Corporation | Importing and reconciling resources from disjoint name spaces to a common namespace |
US20090132285A1 (en) | 2007-10-31 | 2009-05-21 | Mckesson Information Solutions Llc | Methods, computer program products, apparatuses, and systems for interacting with medical data objects |
KR101528853B1 (ko) | 2007-12-14 | 2015-07-01 | 삼성전자주식회사 | Api 서비스 방법과 api 매쉬업 생성 방법, 장치 및기록매체 |
US8250524B2 (en) | 2007-12-21 | 2012-08-21 | Microsoft Corporation | Contract programming for code error reduction |
US9058407B2 (en) | 2008-01-22 | 2015-06-16 | Oracle International Corporation | Persistent multimedia content versioning |
EP2088506A1 (en) | 2008-02-06 | 2009-08-12 | Software AG | Method and system for calling services from a remote client |
US8732386B2 (en) | 2008-03-20 | 2014-05-20 | Sandisk Enterprise IP LLC. | Sharing data fabric for coherent-distributed caching of multi-node shared-distributed flash memory |
JP5386111B2 (ja) | 2008-05-22 | 2014-01-15 | 株式会社日立ソリューションズ | ファイルシステムの記録方法 |
US8484204B2 (en) | 2008-08-28 | 2013-07-09 | Microsoft Corporation | Dynamic metadata |
US9639375B2 (en) | 2008-08-28 | 2017-05-02 | Red Hat, Inc. | Generation of language bindings for libraries using data from compiler generated debug information |
US8595714B1 (en) | 2009-03-04 | 2013-11-26 | Amazon Technologies, Inc. | User controlled environment updates in server cluster |
GB0907171D0 (en) | 2009-04-27 | 2009-06-10 | Springsource Ltd | Method and apparatus for automatically generating source code files in a storage unit |
US9075667B2 (en) | 2009-05-21 | 2015-07-07 | Microsoft Technology Licensing, Llc | Dynamic binding directed by static types |
JP5730290B2 (ja) | 2009-05-21 | 2015-06-10 | セールスフォース ドット コム インコーポレイティッド | アプリケーションのコンポーネントをバージョン管理するシステム、方法及びコンピュータプログラムプロダクト |
US8495621B2 (en) | 2009-06-15 | 2013-07-23 | Microsoft Corporation | Catalog-based software component management |
US8539475B2 (en) | 2009-09-29 | 2013-09-17 | Oracle America, Inc. | API backward compatibility checking |
US8433865B2 (en) | 2009-12-11 | 2013-04-30 | Microsoft Corporation | Consistency without ordering dependency |
US10089119B2 (en) | 2009-12-18 | 2018-10-02 | Microsoft Technology Licensing, Llc | API namespace virtualization |
US8983982B2 (en) | 2009-12-22 | 2015-03-17 | Bmc Software, Inc. | Mechanism for deprecating object oriented data |
US8572591B2 (en) | 2010-06-15 | 2013-10-29 | Microsoft Corporation | Dynamic adaptive programming |
US8224780B2 (en) | 2010-06-15 | 2012-07-17 | Microsoft Corporation | Checkpoints for a file system |
US8793440B2 (en) | 2010-06-17 | 2014-07-29 | Microsoft Corporation | Error detection for files |
US9411634B2 (en) | 2010-06-21 | 2016-08-09 | Microsoft Technology Licensing, Llc | Action framework in software transactional memory |
US9483284B2 (en) | 2011-02-25 | 2016-11-01 | Red Hat, Inc. | Version compatibility determination |
US8776094B2 (en) | 2011-08-11 | 2014-07-08 | Microsoft Corporation | Runtime system |
US9619779B2 (en) | 2011-08-26 | 2017-04-11 | Apple Inc. | Client-side policy enforcement of developer API use |
US20130055291A1 (en) | 2011-08-31 | 2013-02-28 | Microsoft Corporation | Describing native application programming interfaces of an operating system with metadata |
US9262183B2 (en) | 2012-04-23 | 2016-02-16 | Microsoft Technology Licensing, Llc | Self-service composed web APIs |
US8949292B2 (en) | 2012-06-13 | 2015-02-03 | International Business Machines Corporation | Interoperability format translation and transformation between IFC architectural design file and simulation file formats |
US9444899B2 (en) | 2012-12-26 | 2016-09-13 | Microsoft Technology Licensing, Llc | Use of internet information services logging to collect user information in an asynchronous manner |
US8793359B1 (en) | 2013-11-25 | 2014-07-29 | Software Ag | Systems and/or methods for intelligently detecting API key domains |
US9110770B1 (en) | 2014-03-04 | 2015-08-18 | Amazon Technologies, Inc. | Assessing quality of code in an open platform environment |
-
2011
- 2011-08-11 US US13/207,806 patent/US8776094B2/en active Active
- 2011-10-07 TW TW100136563A patent/TWI533217B/zh not_active IP Right Cessation
- 2011-10-07 TW TW104140190A patent/TWI577539B/zh not_active IP Right Cessation
- 2011-10-08 IN IN797CHN2014 patent/IN2014CN00797A/en unknown
- 2011-10-08 MX MX2014001629A patent/MX336195B/es unknown
- 2011-10-08 CN CN201180072813.6A patent/CN103718155B/zh active Active
- 2011-10-08 AU AU2011374897A patent/AU2011374897B2/en active Active
- 2011-10-08 CA CA2844492A patent/CA2844492C/en active Active
- 2011-10-08 RU RU2014104582/08A patent/RU2601198C2/ru active
- 2011-10-08 WO PCT/US2011/055492 patent/WO2013022465A1/en active Application Filing
- 2011-10-08 BR BR112014003123-1A patent/BR112014003123B1/pt active IP Right Grant
- 2011-10-08 EP EP11870789.2A patent/EP2742420B1/en active Active
- 2011-10-08 JP JP2014524995A patent/JP5933002B2/ja active Active
- 2011-10-08 KR KR1020147003539A patent/KR101795844B1/ko active IP Right Grant
-
2014
- 2014-06-06 US US14/298,679 patent/US9563487B2/en active Active
-
2017
- 2017-02-09 AU AU2017200899A patent/AU2017200899B2/en active Active
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106796521A (zh) * | 2014-10-16 | 2017-05-31 | 微软技术许可有限责任公司 | 独立于产品发布的api版本控制 |
US10635504B2 (en) | 2014-10-16 | 2020-04-28 | Microsoft Technology Licensing, Llc | API versioning independent of product releases |
CN106796521B (zh) * | 2014-10-16 | 2020-11-13 | 微软技术许可有限责任公司 | 独立于产品发布的api版本控制 |
CN111400162A (zh) * | 2019-01-02 | 2020-07-10 | 阿里巴巴集团控股有限公司 | 一种测试方法及测试系统 |
CN111400162B (zh) * | 2019-01-02 | 2023-04-25 | 阿里巴巴集团控股有限公司 | 一种测试方法及测试系统 |
CN112969999A (zh) * | 2019-01-31 | 2021-06-15 | 宝马股份公司 | 用于在控制器上执行程序组件的方法、计算机可读存储介质、控制器和系统 |
CN111857662A (zh) * | 2020-07-15 | 2020-10-30 | 曹蕤 | 基于map和接口来描述对象特定构成的程序设计方法 |
CN111857662B (zh) * | 2020-07-15 | 2023-06-30 | 曹蕤 | 基于map和接口来描述对象特定构成的程序设计方法 |
CN117453708A (zh) * | 2023-12-25 | 2024-01-26 | 成都深瑞同华科技有限公司 | 一种gis图形与cad图形的双向联动互转方法 |
Also Published As
Publication number | Publication date |
---|---|
KR20140057547A (ko) | 2014-05-13 |
US20130042258A1 (en) | 2013-02-14 |
JP2014522063A (ja) | 2014-08-28 |
US9563487B2 (en) | 2017-02-07 |
MX2014001629A (es) | 2014-05-28 |
AU2011374897B2 (en) | 2016-11-10 |
EP2742420A4 (en) | 2015-02-11 |
RU2014104582A (ru) | 2015-08-20 |
BR112014003123B1 (pt) | 2021-07-20 |
CN103718155B (zh) | 2017-09-26 |
RU2601198C2 (ru) | 2016-10-27 |
CA2844492A1 (en) | 2013-02-14 |
TW201308209A (zh) | 2013-02-16 |
TW201609366A (zh) | 2016-03-16 |
BR112014003123A2 (pt) | 2017-02-21 |
TWI533217B (zh) | 2016-05-11 |
WO2013022465A1 (en) | 2013-02-14 |
AU2011374897A1 (en) | 2014-02-27 |
AU2017200899B2 (en) | 2017-12-07 |
JP5933002B2 (ja) | 2016-06-08 |
MX336195B (es) | 2016-01-11 |
US20140325534A1 (en) | 2014-10-30 |
AU2017200899A1 (en) | 2017-03-02 |
CA2844492C (en) | 2018-11-20 |
IN2014CN00797A (zh) | 2015-04-03 |
US8776094B2 (en) | 2014-07-08 |
EP2742420B1 (en) | 2020-09-02 |
KR101795844B1 (ko) | 2017-11-08 |
TWI577539B (zh) | 2017-04-11 |
EP2742420A1 (en) | 2014-06-18 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103718155A (zh) | 运行时系统 | |
US7877680B2 (en) | Auto-generation and auto-versioning of a multi-sourced dynamic document | |
CN105229603B (zh) | 控制对应用编程接口的运行时访问 | |
CN105164641A (zh) | 扩展开发环境 | |
JP2005346722A (ja) | フォームタイプを使用してフォームを生成する方法および装置 | |
CN102866910A (zh) | 用元数据描述操作系统的本机应用编程接口 | |
CN102402451A (zh) | 用户定义类型的编译时边界检查 | |
Benouda et al. | MDA approach to automate code generation for mobile applications | |
JP2013518321A (ja) | パターンベースのユーザインターフェース | |
US10489167B2 (en) | Dynamically binding data in an application | |
CN102591710B (zh) | 共享对象表示 | |
KR20220113372A (ko) | 통합된 참조물 및 2차 객체 표시 | |
Rana | Python: Simple though an Important Programming language | |
JP2007532997A (ja) | オブジェクトおよびエンティティの表示を構築するための方法および装置 | |
US8146109B2 (en) | Version resiliency for a host application and custom code | |
Inayatullah et al. | Model-based scaffolding code generation for cross-platform applications | |
US7917893B2 (en) | Using a system of annotations to generate views and adapters | |
US20150082443A1 (en) | System to automate compliance with licenses of software third-party content | |
US20230093709A1 (en) | Dynamically binding data in an application | |
Ludin | Learn BlackBerry 10 App Development: A Cascades-Driven Approach | |
Classon et al. | Phase 1: Analysis | |
CN113721975A (zh) | 文件构建方法及系统、装置、电子设备和存储介质 | |
Lee et al. | Object-oriented design |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
ASS | Succession or assignment of patent right |
Owner name: MICROSOFT TECHNOLOGY LICENSING LLC Free format text: FORMER OWNER: MICROSOFT CORP. Effective date: 20150619 |
|
C41 | Transfer of patent application or patent right or utility model | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20150619 Address after: Washington State Applicant after: Micro soft technique license Co., Ltd Address before: Washington State Applicant before: Microsoft Corp. |
|
GR01 | Patent grant | ||
GR01 | Patent grant |