控制对应用编程接口的运行时访问制造技术

技术编号:12673770 阅读:79 留言:0更新日期:2016-01-07 18:25
本发明专利技术涉及用于控制对应用编程接口的运行时访问的方法、系统和计算机程序产品。本发明专利技术的实施例允许库开发者更准确且容易地控制他们的库的API中的哪些可被动态地调用。由此,他们进行服务和版本化的负担可被更适当地控制。此外,应用开发者可控制这样的API中的哪些进一步从动态调用场景中排除以最小化运行时支持开销(例如,阻止元数据的生成)。

【技术实现步骤摘要】
【国外来华专利技术】【专利说明】控制对应用编程接口的运行时访问背景背景和相关技术计算机系统及相关技术影响社会的许多方面。的确,计算机系统处理信息的能力已转变了人们生活和工作的方式。现在,计算机系统通常执行在计算机系统出现以前人工执行的许多任务(例如,文字处理、日程安排、帐目管理等)。最近,计算机系统彼此耦合并耦合到其他电子设备以形成计算机系统及其他电子设备可在其上传输电子数据的有线和无线计算机网络。因此,许多计算任务的执行被分布在多个不同的计算机系统和/或多个不同的计算环境中。在代码开发期间,软件开发者通常使用应用编程接口(API)来促进各软件组件之间的通信。API可包括针对与该API相关联的例程、数据结构、对象类以及变量的规范。由此,一个开发者可使用API规范来确定如何调用由另一开发者编写的API。通常,一个软件开发者(库开发者)开发具有多个相关API的代码,该多个相关API被分组到提供指定功能性的库中。软件开发者可通过将库内相应的API展示为公共API来使得该功能性的各部分变得对其他程序可用。由此,另一开发者(应用开发者)可从他们的代码中通过对公共API的调用来访问功能性的可用部分。软件开发者还可将该功能性的其他部分维持为私有的。私有功能性可在该库内的各API之间内部地使用或用于访问其他库中的其他私有API。提供私有功能性的API不直接被展示给其他程序。然而,许多运行时环境许可代码动态地调用第三方库中的任一 API (例如,使用反射来访问元数据)。由此,应用程序或库可标识并调用另一库内的私有API。当软件开发者将API维持为私有的时,该软件开发者不希望该API被外部地调用。不幸的是,对这类库的内部实现细节的服务或版本化改变(诸如例如,对私有方法的重命名或移除)会潜在地致使在使用这些库的应用中的破坏性改变。此外,对动态调用的运行时支持携带大小和工作集开销(例如,元数据)。无论API是否实际上被动态地调用,大小和工作集开销都针对API (私有或公共)维持。维持对于不被调用的API的大小和工作集开销不必要地消耗计算资源。简要概沐本专利技术涉及用于控制对应用编程接口的运行时访问的方法、系统和计算机程序产品。本专利技术的各实施例包括控制对应用编程接口(API)的运行时访问。运行时环境基于API类型向动态访问请求(例如,通过反射或其他动态调用技术)提供对API的默认可见性。例如,对非公共API的默认可见性可阻止动态访问。被组合在库中的一组API被访问。该组API包括一个或多个公共API以及一个或多个非公共API。从该组API中标识针对其被提供到动态访问请求的默认可见性要被更改的 API。通过将属性应用到该API来更改对该API的默认可见性。该属性在运行时向运行时环境指示动态访问请求要被提供对该API的经更改的可见性。更改可见性可包括许可对非公开API的动态访问,而默认地动态访问不被许可。其他实施例包括减少对可访问的API的默认可见性。应用的应用代码被访问。该应用代码引用被组合在库中的一个或多个可访问的API。在该应用代码中被引用的可访问的API被标识。该可访问的API是从该一个或多个可访问的API中选择的。确定了该可访问的API在运行时不被动态地访问。属性被应用到该可访问的API以减少对该可访问的API的默认可见性。该属性在运行时向运行时环境指示动态访问请求(例如,通过反射或其他动态调用技术)要被提供对该可访问的API的经减少的可见性。减少对API的可见性可相应地减少元数据生成。在一些实施例中,减少对API的可见性包括阻止对该API的动态访问。其他实施例包括向消费者提供对API的指定可见性。可执行代码在运行时环境中被执行。可执行代码是从应用代码中导出的。在可执行代码的执行期间,从消费者接收到对于执行该可执行代码的一部分的动态调用。该可执行代码的该部分是从应用代码的引用库中的API的一部分中导出的。基于该API的类型来访问对于该API的运行时默认可见性。应用到该API的任何属性被访问。应用到该API的属性可指示API的作者想要更改对该API的运行时默认可见性。应用到应用代码的该部分的任何属性被访问。应用到应用代码的该部分的属性可指示应用代码的作者想要提供比如应用到该API的任何属性所更改的运行时默认可见性指示的对该API的更少的可见性。基于以下中的一个或多个来确定对该API的经计算的可见性:对该API的运行时默认可见性、应用到该API的任何属性以及应用到应用代码的引用该API的任何属性。动态调用被提供对该API的经计算的可见性。本概述被提供以便以简化形式介绍概念的选集,所述概念将在以下详细描述中进一步描述。该概述不旨在标识所要求保护的主题的关键特征或基本特征,也不旨在被用来帮助确定所要求保护的主题的范围。本专利技术的附加特征和优点将在以下描述中叙述,并且其一部分根据本描述将是显而易见的,或者可通过对本专利技术的实践来获知。本专利技术的特征和优点可通过在所附权利要求书中特别指出的工具和组合来实现和获得。本专利技术的这些以及其它特征、优点和特征将根据以下描述和所附权利要求而变得更显而易见,或者可通过如此后阐述的对本专利技术的实践而获知。附图简沐为了描述可获得本专利技术的上述和其它优点和特征的方式,将通过参考附图中示出的本专利技术的具体实施例来呈现以上简要描述的本专利技术的更具体描述。可以理解,这些附图只描绘了本专利技术的各典型实施例,并且因此不被认为是对其范围的限制,将通过使用附图并利用附加特征和细节来描述和解释本专利技术,在附图中:图1示出促进控制对应用编程接口的运行时访问的示例计算机架构。图2示出用于控制对应用编程接口的运行时访问的示例方法的流程图。图3示出促进减少对可访问的应用编程接口的默认可见性的示例计算机架构。图4示出用于减少对可访问的应用编程接口的默认可见性的示例方法的流程图。图5示出促进向消费者提供对应用编程接口的指定可见性的示例计算机架构。图6示出用于向消费者提供对应用编程接口的指定可见性的示例方法的流程图。详细描沐本专利技术涉及用于控制对应用编程接口的运行时访问的方法、系统和计算机程序产品。本专利技术的各实施例包括控制对应用编程接口(API)的运行时访问。运行时环境基于API类型向动态访问请求(例如,通过反射或其他动态调用技术)提供对API的默认可见性。例如,对非公共API的默认可见性可阻止动态访问。被组合在库中的一组API被访问。该组API包括一个或多个公共API以及一个或多个非公共API。从该组API中标识针对其被提供到动态访问请求的默认可见性要被更改的一 API。通过将一属性应用到该API来更改对该API的默认可见性。该属性在运行时向运行时环境指示动态访问请求要被提供对该API的经更改的可见性。更改可见性可包括许可对非公开API的动态访问,而默认地动态访问不被许可。其他实施例包括减少对可访问的API的默认可见性。应用的应用代码被访问。该应用代码引用被组合在库中的一个或多个可访问的API。在该应用代码中被引用的可访问的API被标识。该可访问的API是从该多个可访问的API中选择的。确定了该可访问的API在运行时不被动态地访问。一属性被应用到该可访问的API以减少对该可访问的API的默认可见性。该属性在运行时向运行时环境指示动态访问请求(例如,通过反射或本文档来自技高网...

【技术保护点】
一种在计算机系统处用于控制对于应用编程接口(API)的运行时访问的方法,所述计算机系统包括用于开发包括所述应用编程接口(API)的可执行代码的开发环境,所述可执行代码用于运行在能动态地请求访问所述应用编程接口(API)的运行时环境中,所述运行时环境基于应用编程接口(API)类型来向动态访问请求提供对应用编程接口(API)的默认可见性,所述方法包括:访问被组合在库中的一组应用编程接口(API),该组应用编程接口(API)包括一个或多个公共应用编程接口(API)以及一个或多个非公共应用编程接口(API);从该组应用编程接口(API)中标识针对其提供给动态访问请求的所述默认可见性要被更改的应用编程接口(API);以及通过将属性应用到所述应用编程接口(API)来将对所述应用编程接口(API)的所述默认可见性更改为经更改的可见性,所述属性在运行时向所述运行时环境指示动态访问请求要被提供对所述应用编程接口(API)的所述经更改的可见性。

【技术特征摘要】
【国外来华专利技术】...

【专利技术属性】
技术研发人员:M·特罗芬P·杜斯德R·马丁J·L·昂比M·斯特雷霍斯基D·C·赖顿A·卡纳莫里F·M·哈纳
申请(专利权)人:微软技术许可有限责任公司
类型:发明
国别省市:美国;US

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1