CN102804137A - Controlling access to software component state - Google Patents
Controlling access to software component state Download PDFInfo
- Publication number
- CN102804137A CN102804137A CN2010800260140A CN201080026014A CN102804137A CN 102804137 A CN102804137 A CN 102804137A CN 2010800260140 A CN2010800260140 A CN 2010800260140A CN 201080026014 A CN201080026014 A CN 201080026014A CN 102804137 A CN102804137 A CN 102804137A
- Authority
- CN
- China
- Prior art keywords
- software component
- value
- values
- setting
- request
- 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 OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/10—Protecting distributed programs or content, e.g. vending or licensing of copyrighted material ; Digital rights management [DRM]
- G06F21/12—Protecting executable software
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- G—PHYSICS
- G06—COMPUTING OR CALCULATING; 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/451—Execution arrangements for user interfaces
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
- Multimedia (AREA)
- Technology Law (AREA)
- Computer Hardware Design (AREA)
- Human Computer Interaction (AREA)
- Information Transfer Between Computers (AREA)
- Computer And Data Communications (AREA)
- Storage Device Security (AREA)
Abstract
Description
背景技术 Background technique
计算机典型地运行操作系统,操作系统提供包括允许在计算机上安装和运行其他应用的各种功能性。这样的操作系统时常提供一个存储单元(location),在其中应用可以存储要跨应用的多次执行而存留的(persisted)各种类型的信息。这个存储单元可以是例如操作系统寄存器。虽然保留(maintain)这样的信息对于应用可以是有利的,但当前的存储机制都存在它们的问题。一个这样的问题是,不同的应用典型地与同一个存储单元交互,使得出现这样的情形,即:其中由一个应用存储的信息被另一个应用删除、改写、或以其他方式破坏。这样的情形可以导致应用不能按计划中那样去运行,或甚至完全无法运行。 Computers typically run an operating system that provides various functionality including allowing other applications to be installed and run on the computer. Such operating systems often provide a storage location where applications can store various types of information to be persisted across multiple executions of the application. This storage location may be, for example, an operating system register. While maintaining such information can be beneficial to applications, current storage mechanisms all suffer from their problems. One such problem is that different applications typically interact with the same storage unit, leading to situations where information stored by one application is deleted, overwritten, or otherwise corrupted by another application. Such a situation can cause the application not to function as planned, or even to fail to function at all.
发明内容 Contents of the invention
本概要是为了以简化的形式介绍概念的选择而提供的,这些概念还将在下面的详细说明中进行描述。本概要既不打算确认所要求保护的主题的关键特征或必要特征,也不打算被使用来限制所要求保护的主题的范围。 This Summary is provided to introduce a selection of concepts in a simplified form that are also described below in the Detailed Description. This summary is not intended to identify key features or essential features of the claimed subject matter, nor is it intended to be used to limit the scope of the claimed subject matter.
按照一个或多个方面,从软件产品的软件构件(software component)接收对于访问软件构件的设置(setting)的值的请求。这样的设置例如是软件构件想要以以下方式存储的配置信息,即:该配置信息在该软件的运行时(runtime)以外存留,以致该软件的随后激活可以读出该持久性(persistent)信息并重建该配置。对于请求是否符合用于该设置的适当的格式进行检查。如果所述请求符合该适当的格式,则执行所请求的访问。然而,如果所述请求不符合该适当的格式,则所请求的访问被拒绝。 According to one or more aspects, a request is received from a software component of a software product to access a value of a setting of the software component. Such settings are, for example, configuration information that a software component intends to store in such a way that the configuration information persists beyond the runtime of the software so that subsequent activations of the software can read the persistent information and rebuild that configuration. Checks that the request conforms to the appropriate format for this setting. If the request conforms to the appropriate format, the requested access is performed. However, if the request does not conform to the proper format, the requested access is denied.
按照一个或多个方面,接收用于软件构件的设置声明(declaration)。设置声明标识用于访问所声明的设置的适当的格式。设置声明的记录被保留。用于所声明的设置的多个值也被接收,并且该多个值同时被保留。 According to one or more aspects, a setup declaration for a software component is received. A setting declaration identifies the appropriate format for accessing the declared setting. Records of setting statements are kept. Multiple values for the stated settings are also received, and the multiple values are preserved at the same time.
附图说明 Description of drawings
相同的标号在全部附图中被使用来引用同样的特征。 The same reference numbers are used throughout the drawings to refer to the same features.
图1图解按照一个或多个实施例、实现对软件构件状态的控制访问的示例性计算设备。 Figure 1 illustrates an example computing device that enables controlled access to software component state, in accordance with one or more embodiments.
图2图解按照一个或多个实施例的示例性软件构件。 Figure 2 illustrates exemplary software components in accordance with one or more embodiments.
图3图解按照一个或多个实施例、实现对软件构件设置值的控制访问的示例性计算设备。 Figure 3 illustrates an example computing device that enables controlled access to software component setting values, in accordance with one or more embodiments.
图4是图解按照一个或多个实施例、用于存储软件构件状态的示例性文件系统分级结构的框图。 Figure 4 is a block diagram illustrating an exemplary file system hierarchy for storing software component states in accordance with one or more embodiments.
图5是图解按照一个或多个实施例、用于设备控制对软件构件设置值的访问的示例性过程的流程图。 Figure 5 is a flow diagram illustrating an exemplary process for a device controlling access to software component settings, in accordance with one or more embodiments.
图6是图解按照一个或多个实施例、用于设备控制对软件构件设置值的访问的另一个示例性过程的流程图。 Figure 6 is a flow diagram illustrating another exemplary process for a device controlling access to software component settings, in accordance with one or more embodiments.
图7图解按照一个或多个实施例、可被配置成实现对软件构件状态的控制访问的示例性计算设备。 Figure 7 illustrates an example computing device that may be configured to enable controlled access to software component state, in accordance with one or more embodiments.
具体实施方式 Detailed ways
这里讨论了控制对软件构件持久性设置的访问。这些设置跨软件构件的不同执行而存留。软件产品由一个或多个软件构件组成,每个软件构件可以与设置存储控制模块通信。所述设置存储控制模块控制对与软件构件相关联的至少某些持久性状态的访问。软件构件可以存储由设置存储控制模块控制对其的访问的一种类型的持久性设置(被称为公共设置(public settings))。软件构件也可以存储其它类型的持久性设置或信息(被称为私有状态(private state))。在公共设置和私有状态两者的情形下,存储软件构件的持久性状态数据的位置被控制。在公共设置的情形下,数据的结构和类型由存储控制模块按照通过软件构件的已声明设置模式(setting schema)强加的每个约束条件来进行约束。在私有状态的情形下,软件构件本身确定数据的结构和类型,但不确定实际上存储该数据的位置。 Controlling access to software artifact persistence settings is discussed here. These settings persist across different executions of the software component. The software product consists of one or more software components, each of which can communicate with the settings storage control module. The settings storage control module controls access to at least some persistent state associated with software components. A software component may store a type of persistent settings (referred to as public settings) to which access is controlled by a settings storage control module. Software components can also store other types of persistent settings or information (known as private state). In the case of both public settings and private state, the location where persistent state data for software components is stored is controlled. In the case of public settings, the structure and type of data are constrained by the storage control module in accordance with each constraint imposed by the declared setting schema of the software component. In the case of private state, the software component itself determines the structure and type of data, but not where that data is actually stored.
可以被特定的软件构件访问的特定的公共设置在设置模式中声明,该设置模式是作为软件构件的不可改变的库存清单(manifest)的一部分的。设置存储控制模块将每个软件构件约束为仅仅访问在设置模式中已声明的软件构件的公共设置;对于来自软件构件的访问公共设置的其它请求被设置存储控制模块拒绝。 Specific public settings that can be accessed by a particular software component are declared in a settings schema as part of the software component's immutable manifest. The settings storage control module constrains each software component to only access public settings of software components declared in the settings mode; other requests from software components to access public settings are denied by the settings storage control module.
另外,设置存储控制模块可以保留和允许访问用于每个设置的多个不同的值。当设置值被写入时,存储该设置值的位置可以是取决于该值的写入者的身份的。因此,不同的构件、模块、设备等等可以让不同的设置值同时对于同一个设置被存储和存留。算法或规则组可被使用来识别那些不同的设置值中的哪个设置值将响应于对于特定设置的值的请求而被返回。 Additionally, the settings storage control module may retain and allow access to multiple different values for each setting. When a setting value is written, the location where the setting value is stored may be dependent on the identity of the writer of the value. Thus, different components, modules, devices, etc. can have different setting values stored and persisted for the same setting at the same time. An algorithm or set of rules may be used to identify which of those different setting values is to be returned in response to a request for a value for a particular setting.
图1图解按照一个或多个实施例的、实现对软件构件状态的控制访问的示例性计算设备100。计算设备100可以是能够运行应用的各种各样不同的设备。例如,计算设备100可以是台式计算机、服务器计算机、膝上型计算机、移动站、娱乐器具、可通信地耦合到显示设备的机顶盒、蜂窝电话或其它无线电话、游戏操纵台、汽车计算机等等。因此,计算设备100的范围可以是从具有大量存储器和处理器资源的完全资源设备(例如,个人计算机、游戏控制台)到具有有限的存储器和/或处理资源的低资源设备(例如,传统的机顶盒、手持游戏操纵台)。
FIG. 1 illustrates an
计算设备100包括软件构件设置存储控制模块102和软件构件状态存储库(store)104。两个软件产品106和108--也被称为软件应用--被图解为是包括在计算设备100中的。虽然在图1的例子中图示了两个软件产品106和108,但可替换地,在计算设备100中可以包括少于两个或多于两个软件产品。每个软件产品106和108包括一个或多个软件构件。在图1的例子中,软件产品106包括软件构件112、软件构件114和软件构件116,而软件产品108包括软件构件116和软件构件118。正如在图1上可以看到的,多个不同的软件产品可以共享软件构件(例如,软件构件116)。
构件软件设置存储控制模块102管理至少某些在软件构件状态存储库104中的用于软件构件112-118的设置的存储及对所述设置的访问。这些设置是由控制模块102跨软件构件112-118的不同执行而存留的、用于软件构件112-118的配置信息。可以由控制模块102为每个软件构件112-118管理多个不同的设置。这些不同设置的每个设置具有设置标识和一个或多个设置值,正如在下面更详细地讨论的。被软件构件112-118存储的特定设置和软件构件112-118如何使用这些设置,由一个个软件构件112-118的开发者确定。然而,所述设置的一个或多个值的存储由控制模块102控制和管理。
The component software settings
正如在图1上可以看到的,每个软件产品包括一个或多个软件构件。软件产品的软件构件包括可在计算设备100上运行的指令和数据,以及所述软件构件一起提供软件产品的功能性。对控制模块102的访问是由软件构件在运行时作出的,而不是由软件产品作为整体作出的。
As can be seen in Figure 1, each software product consists of one or more software components. The software components of a software product include instructions and data executable on
图2图解按照一个或多个实施例的示例性软件构件200。软件构件是一个或多个文件与描述软件构件的元数据的集合。软件构件200包括一个或多个资源文件202,每个资源文件存储着用于软件构件200的各种指令和/或数据。被包括在软件构件200 中的特定的资源文件202可以根据软件构件200的开发者的希望而变化。
Figure 2 illustrates an
库存清单204存储描述软件构件200的元数据。在一个或多个实施例中,库存清单204包括软件构件200的标识符、软件构件200的一个或多个版本号、以及用于软件构件200的一个或多个公共设置声明(总起来被称为“设置模式”)。软件构件200的标识符允许软件构件200与被安装在设备上的其它软件构件区分开。标识符可以以各种各样的不同的方式被生成,诸如根据由软件构件200的开发者赋予的名称、软件构件200的开发者的标识符、软件构件200的出版者或发行者的标识符、软件构件200的版本号等等。
软件构件200的版本号使得软件构件200的不同版本容易被识别。在一个或多个实施例中,两个不同的版本号被包括在库存清单204中:合同版本号和服务版本号。可替换地,合同版本号和服务版本号可以一起组合成多元素号,令一个或多个元素是合同版本号而一个或多个元素是服务版本号。这些版本号可被使用来便于软件构件200的升级,而同时在某些情形下保留以前的状态设置,正如在下面更详细地讨论的。
The version number of the
在库存清单204中声明的公共设置模式规定由软件构件利用的(leverage)一个或多个公共设置的每个设置的名称、数据类型和缺省值。在该模式中的每个公共设置声明被存储控制管理器利用,以确保软件构件对那个特定设置的运行时访问是以正确的格式(正确的格式的验证是图1的存储控制模块102的责任之一)。与每个所声明的公共设置相关联的值(例如,在下面更详细地讨论的缺省值、由软件构件写入的软件值和策略覆盖(policy override)值)跨软件构件200的不同执行而存留。例如,软件构件200的执行可以被终结和随后重新启动,以及当重新启动时,对于软件构件200的设置的所存储的值可被检索,从而使得软件构件200具有带着和执行被终结之前的相同的设置值的相同设置。
The public settings schema declared in the
用几种操作系统定义的低级别数据类型之一,诸如整数、串、布尔(Boolean)等等,来声明在设置模式中声明的特定的设置。可以在设置模式中声明多个设置,以便将更复杂的数据类型表示为这组基本(primitive)数据类型的复合体。例如,公共设置可被声明来代表诸如屏幕位置(例如,识别用户接口的哪里的部分要被显示)、字型大小和/或字体、语言优选项、缺省的位置、卷级别优选项、启用或禁用特定的输入设备等等那样的信息。 Specific settings declared in settings mode are declared with one of several operating system-defined low-level data types, such as Integer, String, Boolean, and so on. Multiple settings can be declared in a settings schema to represent more complex data types as composites of this set of primitive data types. For example, common settings can be declared to represent things such as screen position (e.g., identifying where a portion of the user interface is to be displayed), font size and/or font, language preference, default location, volume level preference, enabled Or disable specific input devices and so on.
应当指出,其值被软件构件200存储的设置是指软件状态,而不是用户数据。软件状态是指具有被操作系统(或可替换地,被另一个应用程序)管理的位置和寿命的数据,尽管软件状态的值可以响应于用户请求而被改变。另一方面,用户数据是指具有明显地被用户管理的位置和寿命的数据文件(例如,特定的文档文件、图片文件、音乐文件等等)。
It should be noted that settings whose values are stored by
软件构件200可以存储公共设置和/或私有状态。私有状态是指未模式化(unschematized)的信息,其结构和数据类型由软件构件的实现方案确定(即,私有状态未在设置声明中被模式化)。私有状态和它的存储在下面更详细地讨论。
另一方面,公共设置是指由软件构件设置存储控制模块(诸如图1的模块102)管理的状态。库存清单204包括对于每个公共设置的设置声明、识别设置身份、为该设置存储的信息的类型和可选地用于该设置的缺省值。
Public settings, on the other hand, refer to states managed by a software component settings storage control module, such as
在一个或多个实施例中,在库存清单204中的公共设置声明包括三个元素:名称、类型和缺省值。名称规定标识该公共设置的名字(moniker),区分开该公共设置与由软件构件200使用的其它公共设置。类型标识了用于公共设置的数据类型(例如,被使用来存储特定的值的尺寸、格式和语义)。可以支持各种各样不同的设置类型,诸如整数、布尔值、字符串、日期和/或时间值、对文件或目录的引用等等。缺省值标识了如由软件构件200的开发者规定的用于公共设置的缺省值。这个缺省值被保留,尽管该设置的值此后可能被改变,正如在下面更详细地讨论的。在一个或多个实施例中,每个设置具有缺省值,虽然可以使用空串、“空(null)”或零的值等缺省值。在其它实施例中,开发者可能没有提供缺省值。
In one or more embodiments, a public settings declaration in
回到图1,每个软件构件112-118可以保留私有状态和/或公共设置。每个软件构件112-118可以存储它想要的任何数据或信息,并且不被约束为向控制模块102预先声明它的私有状态。然而,私有状态数据的位置被操作系统控制。存储控制模块102,或可替换地,计算设备100的操作系统的另一个构件或模块,给每个软件构件提供在文件系统分级结构中或在其它登记存储库中的一个或多个位置,在其中它可以存储它的私有状态。
Returning to FIG. 1, each software component 112-118 may retain private state and/or public settings. Each software component 112 - 118 may store any data or information it wants, and is not constrained to pre-declare its private state to the
另一方面,公共设置是指由存储控制模块102管理的设置。每个软件构件112-118预先声明它希望让模块102作为公共设置而保留的特定的设置。这个预先声明例如是通过使用如以上讨论的库存清单的公共设置声明而完成的。公共设置声明在运行的软件构件试图访问公共设置之前被向模块102预先声明。
On the other hand, public settings refer to settings managed by the
公共设置的预先声明向控制模块102提供用于那些设置的适当格式的确切规范。通过预先声明它的公共设置,软件构件被约束为仅仅访问被预先声明的公共设置。例如,状态被控制模块102约束为具有如预先声明的名称、具有如预先声明的设置类型和具有如预先声明的缺省值。
The pre-declaration of public settings provides the
图3图解按照一个或多个实施例、实现对软件构件设置值的控制访问的示例性计算设备300。计算设备300可以是例如图1的计算设备100。为了易于说明,在图3上图解了具有单个软件构件304的软件产品302。然而,应当意识到,多个软件构件可被包括在如上讨论的软件产品中。
FIG. 3 illustrates an
软件构件304可以把公共设置值和/或私有状态存储在软件构件状态存储库306。软件构件状态存储库306可以是例如图1的存储库104。存储库306的私有状态部分308把任凭软件构件开发者自行处理的任意的信息存储在由计算设备300的操作系统确定的位置,而存储库306的公共设置部分310存储公共设置值。软件构件304可以直接访问私有状态部分308,按所希望地在计算设备300的操作系统所规定的位置中保存、检索和以其它方式访问私有状态。软件构件304可被操作系统告知以这个位置,或可替换地,位置可被操作系统提取,并且软件构件可以经由被操作系统显露的一个或多个应用编程接口(API)方法而访问私有状态部分308。
然而,软件构件304经由软件构件设置存储控制模块312访问公共设置部分310。控制模块312典型地被实现为在计算设备300上运行的操作系统的一部分,虽然控制模块312可以可替换地被实现为单独的模块或构件。因此,来自软件构件304的、对于保存、检索或以其它方式访问公共设置部分310的请求,由模块312而不是直接由软件构件304对存储库306执行。控制模块312可以是例如图1的控制模块102。
However,
由软件构件304使用的公共设置的名称向存储控制模块312标识了该公共设置,并且允许模块312将该公共设置与由软件构件304使用的其它公共设置区分开。模块312利用设置模式以验证所命名的公共设置,正如以上讨论的。由软件构件304使用的公共设置的这个名称可以是如在设置模式中所声明的设置的名称,或可替换地,可以是与如在设置模式中声明的设置的名称相关联的另一个名称和/或更复杂的名字,以便适应用于公共设置的更复杂类型的系统。
The name of a public setting used by
私有状态部分308还可选择地包括可丢弃的状态部分314。可丢弃的状态部分314存储被认为是具有低价值并且可以在维持软件构件304正确运行的同时被丢弃的私有状态。在一个或多个实施例中,可丢弃的状态部分314存储可以在从存储库306被删除后容易被重新确定的私有状态。例如,软件构件304可以使用可丢弃的状态部分314作为一种类型的性能高速缓冲器,存储由软件构件304计算或从某其他软件构件得到的信息(例如,很长的计算的中间结果)。软件构件304的性能可以通过以下方式来被改进,即:从可丢弃的状态部分314 检索该信息而不是在每次软件构件304想要使用该信息时都重新计算或重新得到该信息。然而,如果可丢弃的状态部分314要被删除,则该信息仍旧可以重新计算或重新得到,从而维持软件构件304的正确运行。
具有可丢弃的状态部分314可以有利于各种不同的使用情形。例如,可以采用多个不同的复位级别,正如下面更详细地讨论的,其中之一可以是删除在可丢弃的状态部分314中的私有状态。作为另一个例子,当想要重新要求存储空间时,可以删除在可丢弃的状态部分314中的信息,以及可以重新要求可丢弃的状态部分314用于其它用途。
Having a
软件构件设置存储控制模块312或计算设备300的操作系统的另一个构件或模块控制了软件构件状态存储库306。这个控制包括存储库306的位置(例如,特定的一个或多个存储设备、特定的文件系统路径等等)以及存储库306被组织的方式(例如,使用文件系统分级结构、表格、列表等等)。
Software component settings
软件构件状态存储库306可以以各种各样不同的方式实现。例如,存储库306可以通过使用文件系统分级结构(例如,如在下面参照图4更详细地讨论的)、使用一个或多个表格、一个或多个数据库、一个或多个列表、其它记录等等而被实现。
Software
在一个或多个实施例中,软件构件状态存储库306以文件系统分级结构被实现,令不同的文件夹被使用于计算设备300的不同用户和不同的软件构件304。文件系统分级结构的一些部分可以与私有状态部分308相关联,而文件系统分级结构的另外的部分可以与公共设置部分310相关联。
In one or more embodiments, software
图4是图解按照一个或多个实施例的、用于存储软件构件设置的示例性文件系统分级结构的框图。图4图解软件构件状态存储库400,该软件构件状态存储库可以是例如图3的存储库306和图1的存储库104。
Figure 4 is a block diagram illustrating an exemplary file system hierarchy for storing software component settings in accordance with one or more embodiments. FIG. 4 illustrates a software
如图4所示,存储库400被组织成具有最高的或第一级别404、第二级别406、第三级别408和第四级别410。第一级别404存储用于用户的目录或文件夹。在计算设备上对于不同用户可用的特定软件构件可以变化,并且由不同用户使用的相同软件构件可以具有不同的公共设置和/或私有状态。在图4的例子中,有单个用户(用户A),虽然可替换地最高级别404可包括用于在计算设备上每个另外的用户的另外的目录或文件夹。
As shown in FIG. 4 ,
第二级别406存储用于软件构件的目录或文件夹。对于不同软件构件的设置被存储在不同的位置。每个软件构件在最高级别404中的文件夹下具有它自己的子目录或子文件夹。在图4的例子中,有两个软件构件,虽然可替换地第二级别406可包括用于另外的软件构件的另外的目录或文件夹,或可替换地包括用于单个软件构件的目录或文件夹。
A
第三级别408存储用于公共设置和私有状态的目录或文件夹。每个软件构件可以具有公共设置和私有状态,以及单独的目录或文件夹被包括在第三级别408中来存储公共设置和私有状态。公共子目录或子文件夹和私有子目录或子文件夹被包括在第三级别406中的每个软件构件目录或文件夹下。存储用于软件构件的公共设置的一个或多个文件可被包括在用于软件构件的文件夹下的公共子文件夹中。对于每个公共设置可以在公共子文件夹中包括单独的文件,或可替换地,多个公共设置可被包括在公共子文件夹中的某个文件中。
A
第四级别410存储用于可丢弃的私有状态的目录或文件夹。私有状态可包括可丢弃的状态,正如以上讨论的。用于可丢弃的私有状态的信息作为一个或多个文件被存储在第四级别410中的可丢弃的子文件夹,而用于其它私有状态的信息作为一个或多个文件被存储在第三级别408中的私有子文件夹。
A
回到图3,软件构件设置存储控制模块312得到一个或多个公共设置声明320。每个公共设置声明320是如上面所讨论的用于软件构件304的预先声明的设置。在一个或多个实施例中,公共设置声明320是当软件构件304被安装在计算设备300时由安装构件或模块提供给控制模块312的。可替换地,控制模块312可以以不同的方式得到公共设置声明320。例如,公共设置声明320可以由控制模块312从远程服务(例如,经由互联网或另一个网络)、从计算设备300的另一个本地存储库(可移除的或固定的计算机存储媒体)、从另一个远程服务或源、从另一个计算设备等等被检索。
Returning to FIG. 3 , software component settings
一旦得到,控制模块312就强制服从公共设置声明320。在执行期间,控制模块312从软件构件304接收访问公共设置部分310的公共设置的请求。控制模块312检查该访问,以证实它们与公共设置声明320相符。例如,控制模块312证实访问的设置身份和类型与在公共设置声明320中声明的设置身份和类型相符。
Once obtained, the
控制模块312还显露应用编程接口(API)326,允许软件构件304请求对软件构件304的公共设置的访问。各种不同的访问被许可,诸如写入用于公共设置的软件值、读出公共设置的有效值、枚举公共设置模式、去除以前写入的用于公共设置的软件值以便将设置的有效值还原回用于软件构件304的缺省值等等。
为了请求对于公共设置写入软件值,软件构件304提供该设置的名称和想要的值。通过写入用于公共设置的软件值,软件构件304能够覆盖(override)由开发者设置的、作为该设置的预先声明的一部分的缺省值。
To request that a software value be written for a public setting,
响应于对于公共设置写入软件值的请求,控制模块312证实该请求符合该设置的预先声明的格式。这个证实包括证实被包括在请求中的该设置的名称已经被预先声明,和证实想要的值类型与对于该设置已经被预先声明过的值类型相同。如果该请求符合该设置的预先声明的格式,则通过把对于所提供的名称的所提供的值存储在公共设置部分310而执行该请求。然而,如果该请求不符合该设置的预先声明的格式,则该请求被拒绝。
In response to a request to write a software value for a public setting, the
例如,假设软件构件304请求把特定的值作为对于特定设置的值写入。如果该特定设置的名称不是对于软件构件304已预先声明过的设置的名称,则控制模块312拒绝该请求。如果该特定设置的名称匹配于(相同于)对于软件构件304已预先声明过的设置的名称,但设置类型不同(例如,用于所指定的设置的设置类型被预先声明为布尔值,但试图被写入的值是串值),则控制模块312拒绝该请求。然而,如果该特定设置的名称匹配于(相同于)对于软件构件304已预先声明过的设置的名称,以及设置类型匹配于(相同于)对于那个预先声明的设置名称已预先声明过的设置类型,则控制模块312执行该请求。
For example, assume that
响应于对于设置读出值的请求,控制模块312证实该请求符合该设置的预先声明的格式。这个证实包括证实被包括在该请求中的设置的名称已被预先声明。如果该请求符合该设置的预先声明的格式,则该请求通过从公共设置部分310检索对于在该请求中被指定的设置的值而被执行。当为在该请求中被指定的设置来存储多个值时,被检索的多个值的特定值可以按照如下面更详细地讨论的各种算法或规则被确定。然而,如果该请求不符合该设置的预先声明的格式,则该请求被拒绝。
In response to a request to set a readout value, the
应当意识到,因为控制模块312管理对公共设置部分310的访问,所以控制模块312可以防止软件构件304对于设置写入不正确的值类型以及无意中改写用于另一个设置的值。软件构件304不直接访问公共设置部分310。而是控制模块312响应于来自软件构件304的请求去访问公共设置部分310,以及把值写入到公共设置部分310中的适当的位置。还应当指出,这个经由模块312的控制防止了软件构件304无意中改写对于另一个软件构件的设置的值。例如,对于不同的软件构件的公共设置值是通过定义而被保留在不同的存储库中的(它的示例性实施例是以上参照图4描述的)。因为存储库被单独地维护,所以不同的软件构件不需要担心修改对于它们的被声明的设置的软件值将修改与任何其它构件所关联的软件值。另外,正如以上讨论的,控制模块312可以将对于不同用户的公共设置存储在公共设置部分310的不同部分中。计算设备300的当前用户可以以各种各样不同的方式被确定,诸如与另一个构件或模块通信,以便识别当前登录到计算设备300中的特定的用户,识别当前被指派来使用计算设备300的处理器的特定用户,等等。因此,不同的公共设置被存储用于不同的用户,尽管不同的用户可能使用着相同的软件构件。
It should be appreciated that because
另外,运行软件构件304导致典型地被称为正被创建的软件构件304的实例的东西。在一个或多个实施例中,软件构件304的多个不同的实例可以同时为同一个当前的用户运行。例如,可以同时从用户和/或另一个构件或模块接收许多次运行相同的软件构件304的请求。在这样的情形下,这多个不同的实例共享公共设置部分310的相同部分。因此,通过软件构件304的一个实例(经由控制模块312)写入到公共设置部分310的设置值可以由软件构件304的另外的实例(经由控制模块312)随后读出。同样地,这多个不同的实例也共享私有状态部分306的相同部分。
Additionally, running
例如,假设软件构件304提供便签簿功能性,允许用户创建和保存文本笔记。软件构件304的不同实例共享相同的公共设置,允许设置改变(诸如想要的语言、字型大小、字体的改变等等)对于软件构件304的多个实例是相同的。
For example, assume that
应当指出,正如这里讨论的,控制模块312是在软件构件的基础上管理对公共设置的访问。不是软件产品请求对公共设置的访问,而是组成软件产品的一个个软件构件请求对公共设置的访问。因此,应当意识到,由软件构件在作为一个软件产品的一部分执行时对公共设置作出的改变可以随后由那个软件构件在作为另一个软件产品的一部分执行时检索。
It should be noted that, as discussed herein, the
在一个或多个实施例中,软件构件设置存储控制模块312保留对于同一个设置的多个不同的值。这些不同的值可以由不同的实体提供,诸如开发者(他提供缺省值)、软件构件304、计算设备300的管理员、计算设备300被耦合到的网络的管理员等等。这些不同的值被提供来覆盖特定的其它值,诸如覆盖来自开发者的缺省值的管理员覆盖值;覆盖由软件构件304设置的值的管理员覆盖值等等。管理员覆盖值也可以被称为策略覆盖值。这些不同的值可以以不同的方式被保留,诸如保留在公共设置部分310的不同部分。例如,公共文件夹(例如,在图4的级别408)可以具有多个子文件夹,每个子文件夹对应于不同的实体。作为另一个例子,来自软件构件304的值可被保留在公共文件夹中(例如,在图4的级别408中),而来自其它实体的值可被保留在其它文件夹、表格、列表等等中。控制模块312或另一个构件或模块可以在这样的文件夹、表格、列表等上强加访问权利,允许控制模块312访问这样的文件夹、表格、列表等,但阻止软件构件304访问这样的文件夹、表格、列表等。
In one or more embodiments, the software component setting
这些不同的实体可以以各种各样的不同方式提供它们对于设置的各自的值。来自开发者的缺省值可以如以上讨论的被提供在公共设置声明320中。来自软件构件304的值可经由API 326被包括在写入请求中。来自管理员的值可经由API 326被包括在写入请求中,可以经由另一个接口被提供到控制模块312,可以由管理员或另一个构件或模块等等存储在存储库306(或另一个存储库)的已知的位置中(为管理员和控制模块312两者所知)。
These different entities can provide their respective values for the settings in a variety of different ways. Default values from the developer may be provided in the public settings declaration 320 as discussed above. Values from
在一个或多个实施例中,写入或以其它方式存储值的实体是根据写入或存储出现的方式而固有地给出的。例如,在公共设置声明320中的值是来自开发者的缺省值,经由API 326接收的值是来自软件构件304的值等等。可替换地,写入或以其它方式存储值的实体可以以其它方式被识别。例如,实体可以在作出写入请求之前提供本身的标识符,实体可以提供本身的标识符作为写入请求的一部分,等等。
In one or more embodiments, the entity of writing or otherwise storing a value is inherently given by the manner in which the writing or storing occurs. For example, values in public settings declaration 320 are default values from developers, values received via
当软件构件304请求读出用于设置的值时,软件构件304可以标识它正在请求用于该设置的多个值中的哪一个。例如,软件构件304可以标识它正在请求缺省值、由软件构件304设置的值等等。在一个或多个实施例中,软件构件304通过把它正在请求的多个值中的哪个值的标识符包括在请求中而标识它正在请求用于该设置的多个值中的哪个值。可替换地,软件构件304可以以其它方式来标识它正在请求用于该设置的多个值中的哪个值,诸如通过对于不同的值调用API 326的不同方法(例如,一个读出缺省值的方法、另一个读出由软件构件304 以前设置的值的方法等等)。
When
在一个或多个实施例中,软件构件304可以标识:它请求读出用于设置的“有效值(effective value)”。响应于这样的请求,控制模块312确定对于该设置的有效值(假设读出请求被证实为是符合该设置的预先声明的格式的)并且把有效值返回给软件构件304。有效值是为该设置存储的值之一,特定的一个有效值是按照特定的算法或规则组被确定的。这个算法或规则组描述了多个值中的哪个值具有超过该多个值的其它值的优先权,因此是响应于对于设置值的请求而要被返回的值。
In one or more embodiments,
在一个或多个实施例中,控制模块312按照以下的规则确定有效值。如果存在由管理员设置的用于该设置的值,则该值是有效值。否则,如果存在由软件构件304设置的用于该设置的值,则该值是有效值。否则,缺省值是有效值。
In one or more embodiments, the
在一个或多个其他的实施例中,控制模块312按照以下的规则确定有效值。如果存在管理员覆盖值来覆盖由软件构件304设置的值,则该值是有效值。否则,如果存在由软件构件304设置的用于该设置的值,则那个值是有效值。否则,如果存在管理员覆盖值来覆盖缺省值组,则那个值是有效值。否则,缺省值是有效值。
In one or more other embodiments, the
另外,在一个或多个实施例中,公共设置可以被集合在一起以形成原子(atomic)单元。当多个公共设置被集合在一起时,控制模块312将集合在一起的设置作为一个组写入公共设置部分310。虽然如果希望的话,软件构件304(或它的不同的实例)可以访问读出和/或写入这些被集合在一起的公共设置的一个个公共设置,但模块312保证它们作为一个组被写入到部分310。
Additionally, in one or more embodiments, common settings may be grouped together to form atomic units. When a plurality of common settings are grouped together, the
例如,四个值可被使用来标识要被显示的矩形的位置(例如,在“x”维的左上值(upper left value)、在“y”维的左上值、在“x”维的右下值(lower right value)和在“y”维的右下值)。这四个值的每个值可以是不同的公共设置,且这四个公共设置可被声明为是集合在一起的。因此,如果控制模块312接收到来自软件构件304的、写入这四个值的一个或多个值的请求,则控制模块312将所有的四个值写入到部分310。控制模块312因此防止出现软件构件的实例写入被存储在公共设置部分310中的四个值之一的情形--在本例中可导致所存储的坐标是无意义的情形。
For example, four values can be used to identify the position of the rectangle to be displayed (eg, upper left value in the "x" dimension, upper left value in the "y" dimension, right lower right value and lower right value in the "y" dimension). Each of the four values can be a different common setting, and the four common settings can be declared as being grouped together. Thus, if
另外,在一个或多个实施例中,API 326显露一个或多个方法,所述方法允许软件构件304访问它自己的公共设置值。可以显露不同的方法以允许不同类型的访问(例如,读访问、写访问、枚举访问等等)。下面的表I描述了可以被软件构件304调用的这样的方法的例子。
Additionally, in one or more embodiments,
表I Table I
图5是图解按照一个或多个实施例的、用于设备控制对软件构件设置值的访问的示例性过程500的流程图。过程500由诸如图1的计算设备100或图3的计算设备300那样的设备实行,以及它可以以软件、固件、硬件、或它们的组合实现。过程500是用于控制对软件构件设置的访问的示例性过程;在这里,参照不同的附图,包括了控制对软件构件设置的访问的附加讨论。
FIG. 5 is a flow diagram illustrating an
在过程500中,对于软件构件的一个或多个设置声明被接收(动作502)。每个设置声明指示对于访问所声明的设置的适当格式。所述设置声明可以以如上所讨论的各种各样的不同方式被接收。
In
设置声明的不可改变的记录被保留(动作504)。保留这个记录允许例如随后证实对所声明的设置的访问符合适当的格式。这个保留例如可以是存储在动作502接收的库存清单和/或存储包括从在动作502接收的库存清单得到的缺省值的设置。对软件构件实现的执行不能修改设置模式,因为这个信息是软件构件的已公布库存清单合同的不可改变的部分。
An immutable record of the setting declaration is kept (act 504). Keeping this record allows, for example, to subsequently verify that access to declared settings conforms to the proper format. This reservation may be, for example, storing the inventory received at
对于已声明设置的一个或多个中的每个已声明的设置,多个值被接收(动作506)。这多个值可包括来自各种各样不同的实体的值等等,正如以上讨论的。 For each declared setting of the one or more declared settings, a plurality of values are received (act 506 ). The plurality of values may include values from a variety of different entities, etc., as discussed above.
接收的多个值的每个值被同时保留(动作508)。因为多个值的每个值被存储,所以可以响应于如以上讨论的不同的请求,而返回该多个值中的不同值。 Each value of the received plurality of values is retained simultaneously (act 508). Because each of the plurality of values is stored, different ones of the plurality of values may be returned in response to different requests as discussed above.
图6是图解按照一个或多个实施例的、用于设备控制对软件构件设置的访问的示例性过程600的流程图。过程600由诸如图1的计算设备100或图3的计算设备300 那样的设备实行,以及可以以软件、固件、硬件、或它们的组合来实现。过程600是用于控制对软件构件设置的访问的示例性过程;在这里,参照不同的附图,包括了控制对软件构件设置的访问的附加讨论。
FIG. 6 is a flowchart illustrating an
在过程600中,从软件构件接收对于访问设置的值的请求(动作602)。这个请求例如可以经由如以上讨论的被软件构件设置存储控制模块显露的API接收。
In
将所述请求与用于该设置的已声明的格式进行比较(动作604),且进行有关所述请求是否符合用于该设置的适当格式的检查(动作606)。这个检查可包括各种操作,诸如检查如以上讨论的设置名称、设置类型、原子性是否被维持等等。 The request is compared to the declared format for the setting (act 604), and a check is made as to whether the request conforms to the appropriate format for the setting (act 606). This check may include various operations, such as checking the setting name, setting type, whether atomicity is maintained, etc. as discussed above.
如果所述请求符合用于该设置的适当的格式,则所请求的访问被执行(动作608)。然而,如果所述请求不符合用于该设置的适当的格式,则所请求的访问被拒绝(动作610)且因此不被执行。 If the request conforms to the appropriate format for the setting, then the requested access is performed (act 608). However, if the request does not conform to the proper format for the setting, then the requested access is denied (act 610) and thus not performed.
这里讨论的控制对软件构件状态的访问的技术提供了对于软件构件的公共设置的控制,帮助防止设置值的无意中的改写,以及提供了供开发者利用的更一致的设置模型。另外,这里讨论的控制对软件构件状态的访问的技术为各种使用情形作好准备。 The techniques for controlling access to software component state discussed herein provide control over the common settings of software components, help prevent inadvertent overwriting of setting values, and provide a more consistent setting model for developers to utilize. Additionally, the techniques discussed here for controlling access to software component state provide for a variety of use cases.
在一个或多个实施例中,控制对软件构件状态的访问允许用于软件构件的多个复位级别。可以利用不同的复位级别,每个复位级别改变对于软件构件的私有状态和/或公共设置。例如,一个复位级别可以删除在私有状态部分的可丢弃的状态部分中的所有状态,但维持私有状态部分的其余部分和公共设置部分不变。在这样的复位后,被保留在私有状态部分(除了可丢弃的状态部分以外)和公共设置部分中的软件构件的值对于软件构件仍旧是可访问的。作为另一个例子,另一个复位级别可以删除在私有状态部分中的所有状态(而不管该信息是否是在可丢弃的状态部分中),但维持公共设置部分不变。在这样的复位后,被保留在公共设置部分中的软件构件的设置对于软件构件仍旧是可访问的。作为再一个例子,再一个复位级别可以删除由软件构件设置的所有的值,实际上使得软件构件的设置返回到它们的缺省级别(在公共设置声明中提供的缺省值)。在这样的复位后,软件构件的缺省值对于软件构件仍旧是可访问的。 In one or more embodiments, controlling access to the state of the software component allows multiple reset levels for the software component. Different reset levels may be utilized, each of which changes private states and/or public settings for software components. For example, a reset level may delete all state in the discardable state section of the private state section, but leave the rest of the private state section and the public settings section unchanged. After such a reset, the values of the software component that are kept in the private state section (except for the discardable state section) and the public settings section are still accessible to the software component. As another example, another reset level may delete all state in the private state section (regardless of whether the information is in the discardable state section), but leave the public settings section unchanged. After such a reset, the settings of the software component that were retained in the common settings section are still accessible to the software component. As yet another example, yet another reset level may delete all values set by the software component, effectively returning the settings of the software component to their default levels (the default values provided in the public settings declaration). After such a reset, the software component's default values are still accessible to the software component.
另外,控制对软件构件状态的访问允许软件构件被升级到新的版本,而同时保留以前的私有状态和公共设置值。正如以上讨论的,版本号可包括合同版本号和服务版本号。在一个或多个实施例中,即使服务版本号不同,软件构件设置存储控制模块也将具有相同合同版本号的软件构件识别为相同的软件构件。然而,软件构件设置存储控制模块将具有不同的合同版本号的软件构件识别为不同的软件构件。因此,开发者可以发布具有相同的合同版本号、但具有新的服务版本号的软件构件的新版本,并且仍旧让软件构件访问由软件构件的以前的版本存储的私有状态和公共设置值。 Additionally, controlling access to software component state allows software components to be upgraded to new versions while preserving previous private state and public setting values. As discussed above, version numbers may include contract version numbers and service version numbers. In one or more embodiments, the software component setting storage control module identifies software components with the same contract version number as the same software component even if the service version numbers are different. However, the software component setting storage control module recognizes software components having different contract version numbers as different software components. Thus, a developer can release a new version of a software component with the same contract version number, but a new service version number, and still have the software component access private state and public setting values stored by previous versions of the software component.
而且,在一个或多个实施例中,控制对软件构件状态的访问便于软件构件的迁移。这种迁移可以是指软件构件从一个计算设备转移到另一个计算设备,或改变其上安装了该软件构件的计算设备所使用的操作系统。不管迁移的类型如何,对于软件构件的公共设置和私有状态值都被保留在软件构件设置存储库的特定部分中。这些特定部分是已知的,且在迁移期间可以利用这种知识,以允许公共设置和私有状态值连同软件构件一起被迁移(到不同的计算设备和/或不同的操作系统)。 Furthermore, in one or more embodiments, controlling access to software component state facilitates migration of software components. Such migration may refer to transferring a software component from one computing device to another, or changing the operating system used by the computing device on which the software component is installed. Regardless of the type of migration, public settings and private state values for software components are preserved in specific sections of the software component settings repository. These specific parts are known, and this knowledge can be exploited during migration to allow public settings and private state values to be migrated along with the software components (to a different computing device and/or a different operating system).
图7图解按照一个或多个实施例的、可被配置成实现对软件构件状态的控制访问的示例性计算设备700。计算设备700可以是例如图1的计算设备100或图3的计算设备300。
FIG. 7 illustrates an
计算设备700包括一个或多个处理器或处理单元702、一个或多个可以包括一个或多个存储器和/或存储部件706的计算机可读媒体704,一个或多个输入/输出(I/O)设备708和允许各种部件和设备互相通信的总线710。计算机可读媒体704和/或一个或多个I/O设备708可以被包括作为计算设备700的一部分,或可替换地,可被耦合到计算设备700。总线710代表几种类型的总线结构的一种或多种,包括使用各种各样不同的总线结构的存储器总线或存储器控制器、外设总线、加速的图形端口、处理器或本地总线等等。总线710可包括有线和/或无线总线。
存储器/存储部件706代表一个或多个计算机存储媒体。部件706可包括易失性媒体(诸如随机存取存储器(RAM))和/或非易失性媒体(诸如只读存储器(ROM)、闪存、光盘、磁盘等等)。部件706可包括固定的媒体(例如,RAM、ROM、固定的硬驱动等等)以及可移除的媒体(例如,闪存驱动、可移除的硬驱动和光盘等等)。
Memory/
这里讨论的技术可以以具有由一个或多个处理单元702执行的指令的软件被实现。应当意识到,不同的指令可被存储在计算设备700的不同部件中,诸如处理单元702中、处理单元702的各种高速缓冲存储器中、设备700的其它高速缓冲存储器中(未示出)、其它的计算机可读媒体中等等。另外,应当意识到,在计算设备700中存储指令的位置可以随时间而改变。
The techniques discussed here may be implemented in software with instructions executed by one or
一个或多个输入/输出设备708允许用户将命令和信息输入到计算设备700,还允许将信息呈现给用户和/或其它部件或设备。输入设备的例子包括键盘、光标控制装置(例如鼠标)、话筒、扫描仪等等。输出设备的例子包括显示设备(例如,显示器或投影仪)、扬声器、打印机、网卡等等。
One or more input/
各种技术在这里可以在软件或程序模块的一般性上下文中描述。通常,软件包括执行特定任务或实现特定的抽象数据类型的例行程序、程序、对象、构件、数据结构等等。这些模块和技术的实现可被存储在某种形式的计算机可读媒体中,或跨某种形式的计算机可读媒体被发送。计算机可读媒体可以是计算设备可访问的任何可用的介质或媒体。作为例子,但不作为限制,计算机可读媒体可包括“计算机存储媒体”和“通信媒体”。 Various techniques may be described herein in the general context of software or program modules. Generally, software includes routines, programs, objects, components, data structures, etc. that perform particular tasks or implement particular abstract data types. An implementation of these modules and techniques may be stored on or transmitted across some form of computer-readable media. Computer readable media can be any available medium or media that can be accessed by a computing device. By way of example, and not limitation, computer-readable media may include "computer storage media" and "communication media."
“计算机存储媒体”包括以用于存储诸如计算机可读指令、数据结构、程序模块、或其它数据那样的信息的任何方法或技术实现的易失性和非易失性、可移除和不可移除的媒体。计算机存储媒体包括,但不限于,RAM、ROM、EEPROM、闪存或其它存储器技术、CD-ROM、数字多功能盘(DVD)、或其它光存储装置、盒式磁带、磁带、磁盘存储装置或其它磁存储设备、或可被使用来存储想要的信息且可以由计算机访问的任何其它介质。 "Computer storage media" includes volatile and nonvolatile, removable and non-removable media implemented in any method or technology for storage of information such as computer readable instructions, data structures, program modules, or other data. deleted media. Computer storage media including, but not limited to, RAM, ROM, EEPROM, flash memory or other memory technology, CD-ROM, digital versatile disk (DVD), or other optical storage devices, cassette tapes, magnetic tape, magnetic disk storage devices or other A magnetic storage device, or any other medium that can be used to store desired information and that can be accessed by a computer.
“通信媒体”典型地将计算机可读指令、数据结构、程序模块、或其它数据具体化为诸如载波或其它输送机制那样的调制的数据信号。通信媒体还包括任何信息传递媒体。术语“调制的数据信号”是指使它的特性中的一个或多个以如下方式设置或改变的信号,即:将信息编码在信号中。作为例子,但不作为限制,通信媒体包括诸如有线网络或直接连线连接那样的有线媒体和诸如声学、RF、红外和其它无线媒体那样的无线媒体。以上的任何媒体的组合也被包括在计算机可读媒体的范围内。 "Communication media" typically embodies computer readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism. Communication media also includes any information delivery media. The term "modulated data signal" means a signal that has one or more of its characteristics set or changed in such a manner as to encode information in the signal. By way of example, and not limitation, communication media includes wired media such as a wired network or direct-wired connection, and wireless media such as acoustic, RF, infrared and other wireless media. Combinations of any of the above are also included within the scope of computer readable media.
通常,这里描述的任何的功能或技术可以通过使用软件、固件、硬件(例如,固定的逻辑电路)、人工处理、或这些实现的组合而被实现。当在这里使用时,术语“模块”和“构件”通常代表软件,虽然可替换地它们也可以合并固件和/或硬件。在软件实现的情形下,模块或构件代表在处理器(例如,一个或多个CPU)上被执行时完成特定任务的程序代码。程序代码可被存储在一个或多个计算机可读存储器设备中,关于它的进一步说明可以参照图7而找到。这里描述的控制对软件构件状态访问的技术的特征是平台独立的,意味着所述技术可以在具有各种各样的处理器的各种各样的商业计算平台上被实现。 In general, any of the functions or techniques described herein can be implemented using software, firmware, hardware (eg, fixed logic circuits), manual processing, or a combination of these implementations. As used herein, the terms "module" and "component" generally represent software, although they may alternatively incorporate firmware and/or hardware. In the case of a software implementation, the modules or components represent program code that performs specified tasks when executed on a processor (eg, one or more CPUs). The program code may be stored in one or more computer readable memory devices, further description of which may be found with reference to FIG. 7 . The characteristics of the techniques for controlling access to software component state described herein are platform independent, meaning that the techniques can be implemented on a wide variety of commercial computing platforms with a wide variety of processors.
虽然本主题是以特定于结构特征和/或方法动作的语言被描述的,但应当理解在所附权利要求中限定的主题不一定局限于上述的特定特征或动作。而是,上述的特定特征或动作是作为实施权利要求的示例性形式而公开的。 Although the subject matter has been described in language specific to structural features and/or methodological acts, it is to be understood that the subject matter defined in the appended claims is not necessarily limited to the specific features or acts described above. Rather, the specific features and acts described above are disclosed as example forms of implementing the claims.
Claims (15)
Applications Claiming Priority (4)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| US12/483,465 US8429395B2 (en) | 2009-06-12 | 2009-06-12 | Controlling access to software component state |
| US12/483,465 | 2009-06-12 | ||
| US12/483465 | 2009-06-12 | ||
| PCT/US2010/038349 WO2010144828A2 (en) | 2009-06-12 | 2010-06-11 | Controlling access to software component state |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN102804137A true CN102804137A (en) | 2012-11-28 |
| CN102804137B CN102804137B (en) | 2015-04-29 |
Family
ID=43307576
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201080026014.0A Expired - Fee Related CN102804137B (en) | 2009-06-12 | 2010-06-11 | Controlling access to software component state |
Country Status (6)
| Country | Link |
|---|---|
| US (2) | US8429395B2 (en) |
| EP (1) | EP2440998A2 (en) |
| JP (1) | JP2012530297A (en) |
| KR (1) | KR101624005B1 (en) |
| CN (1) | CN102804137B (en) |
| WO (1) | WO2010144828A2 (en) |
Families Citing this family (7)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US8429395B2 (en) | 2009-06-12 | 2013-04-23 | Microsoft Corporation | Controlling access to software component state |
| US8869112B2 (en) * | 2010-11-30 | 2014-10-21 | Sap Se | System and method for modular business applications |
| US8554797B2 (en) | 2010-12-17 | 2013-10-08 | Sap Ag | System and method for modular business applications |
| US8181254B1 (en) * | 2011-10-28 | 2012-05-15 | Google Inc. | Setting default security features for use with web applications and extensions |
| KR102192198B1 (en) | 2014-02-24 | 2020-12-17 | 삼성전자주식회사 | Electronic device and communication method |
| RU2666645C1 (en) * | 2017-08-10 | 2018-09-11 | Акционерное общество "Лаборатория Касперского" | System and method for providing safe system configuration change |
| US11349961B2 (en) * | 2020-10-08 | 2022-05-31 | Sage Intacct, Inc. | Chained adapters for multiple versions of application programming interface |
Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6732354B2 (en) * | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
| CN1973262A (en) * | 2003-10-23 | 2007-05-30 | 创道软件有限公司 | Dynamic Addressing Using a Centralized Dynamic Addressing (DA) Manager |
| CN101371250A (en) * | 2006-01-12 | 2009-02-18 | 微软公司 | Capture and restore application state after unexpected application shutdown |
Family Cites Families (24)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6119131A (en) | 1998-06-12 | 2000-09-12 | Microsoft Corporation | Persistent volume mount points |
| US6359634B1 (en) | 1998-08-25 | 2002-03-19 | International Business Machines Corporation | Method and computer program product for graphical user interface (GUI) organization control for extending GUI applications |
| US6161176A (en) * | 1998-11-20 | 2000-12-12 | Microsoft Corporation | System and method for storing configuration settings for transfer from a first system to a second system |
| US6538668B1 (en) * | 1999-04-09 | 2003-03-25 | Sun Microsystems, Inc. | Distributed settings control protocol |
| ATE236428T1 (en) * | 1999-04-28 | 2003-04-15 | Tranxition Corp | METHOD AND SYSTEM FOR AUTOMATIC TRANSLATION OF CONFIGURATION SETTINGS BETWEEN COMPUTER SYSTEMS |
| US6560699B1 (en) * | 1999-10-20 | 2003-05-06 | Cisco Technology, Inc. | Constraint-based language configuration files for updating and verifying system constraints |
| US6735691B1 (en) * | 2000-01-27 | 2004-05-11 | Microsoft Corporation | System and method for the automated migration of configuration information |
| JP5010068B2 (en) * | 2001-01-16 | 2012-08-29 | セイコーエプソン株式会社 | Device environment setting system, device environment setting processing method, and information recording medium |
| US6941546B2 (en) | 2001-08-01 | 2005-09-06 | International Business Machines Corporation | Method and apparatus for testing a software component using an abstraction matrix |
| US7698713B2 (en) | 2001-09-20 | 2010-04-13 | Google Inc. | Altered states of software component behavior |
| AU2003214975A1 (en) * | 2002-02-01 | 2003-09-02 | John Fairweather | System and method for navigating data |
| US7353502B2 (en) * | 2002-07-03 | 2008-04-01 | The Mathworks, Inc. | System and method for creation of software components |
| US7346634B2 (en) * | 2003-06-23 | 2008-03-18 | Microsoft Corporation | Application configuration change log |
| US7334119B2 (en) * | 2003-07-23 | 2008-02-19 | Cisco Technology, Inc. | Method, system, apparatus, and program product for temporary personalization of a computer terminal |
| US8140475B1 (en) * | 2004-02-26 | 2012-03-20 | Netapp, Inc. | Dynamic configuration archival and retrieval |
| US7386556B2 (en) | 2004-06-14 | 2008-06-10 | Lucent Technologies Inc. | Substitute manager component that obtains state information of one or more software components upon failure of a first manager component |
| US20060069909A1 (en) * | 2004-09-23 | 2006-03-30 | Roth Steven T | Kernel registry write operations |
| US7681226B2 (en) * | 2005-01-28 | 2010-03-16 | Cisco Technology, Inc. | Methods and apparatus providing security for multiple operational states of a computerized device |
| US7949995B2 (en) * | 2005-09-14 | 2011-05-24 | Sadlek James M | Visual programming method |
| US7934207B2 (en) * | 2006-12-19 | 2011-04-26 | Microsoft Corporation | Data schemata in programming language contracts |
| US7386885B1 (en) | 2007-07-03 | 2008-06-10 | Kaspersky Lab, Zao | Constraint-based and attribute-based security system for controlling software component interaction |
| EP2227741A4 (en) * | 2007-12-31 | 2011-10-05 | Datalogic Mobile Inc | Systems and methods for configuring, updating, and booting an alternate operating system on a portable data reader |
| US8024732B2 (en) * | 2008-07-28 | 2011-09-20 | Microsoft Corporation | State separation for application changes |
| US8429395B2 (en) | 2009-06-12 | 2013-04-23 | Microsoft Corporation | Controlling access to software component state |
-
2009
- 2009-06-12 US US12/483,465 patent/US8429395B2/en not_active Expired - Fee Related
-
2010
- 2010-06-11 CN CN201080026014.0A patent/CN102804137B/en not_active Expired - Fee Related
- 2010-06-11 EP EP10786921A patent/EP2440998A2/en not_active Withdrawn
- 2010-06-11 KR KR1020117029378A patent/KR101624005B1/en not_active Expired - Fee Related
- 2010-06-11 JP JP2012515191A patent/JP2012530297A/en not_active Withdrawn
- 2010-06-11 WO PCT/US2010/038349 patent/WO2010144828A2/en not_active Ceased
-
2013
- 2013-04-19 US US13/866,970 patent/US8949590B2/en not_active Expired - Fee Related
Patent Citations (3)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US6732354B2 (en) * | 2002-04-23 | 2004-05-04 | Quicksilver Technology, Inc. | Method, system and software for programming reconfigurable hardware |
| CN1973262A (en) * | 2003-10-23 | 2007-05-30 | 创道软件有限公司 | Dynamic Addressing Using a Centralized Dynamic Addressing (DA) Manager |
| CN101371250A (en) * | 2006-01-12 | 2009-02-18 | 微软公司 | Capture and restore application state after unexpected application shutdown |
Also Published As
| Publication number | Publication date |
|---|---|
| KR101624005B1 (en) | 2016-05-24 |
| EP2440998A2 (en) | 2012-04-18 |
| US8949590B2 (en) | 2015-02-03 |
| US8429395B2 (en) | 2013-04-23 |
| US20140019954A1 (en) | 2014-01-16 |
| WO2010144828A2 (en) | 2010-12-16 |
| CN102804137B (en) | 2015-04-29 |
| US20100319050A1 (en) | 2010-12-16 |
| WO2010144828A3 (en) | 2011-02-24 |
| KR20120037381A (en) | 2012-04-19 |
| JP2012530297A (en) | 2012-11-29 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN102804132B (en) | Catalog-based software component management | |
| US10949551B2 (en) | Policy aware unified file system | |
| CN102708067B (en) | Combining memory pages having identical content | |
| CN109906433B (en) | Storage isolation for containers | |
| US9235589B2 (en) | Optimizing storage allocation in a virtual desktop environment | |
| US8966188B1 (en) | RAM utilization in a virtual environment | |
| US7610296B2 (en) | Prioritized files | |
| US20190187980A1 (en) | Version control of applications | |
| CN101650660B (en) | boot computer system from central storage | |
| CN102804137B (en) | Controlling access to software component state | |
| US10353636B2 (en) | Write filter with dynamically expandable overlay | |
| KR20170133120A (en) | System and mehtod for managing container image | |
| KR20090079933A (en) | Computer-readable media and methods for restricting access to components of the system and file system that restrict access to resources for reverse name mapping in restricted namespace environments | |
| US20100293561A1 (en) | Methods and apparatus for conversion of content | |
| US11424982B2 (en) | Remediation of a system to new desired state using configuration dependency graph | |
| US8909875B1 (en) | Methods and apparatus for storing a new version of an object on a content addressable storage system | |
| US20190347027A1 (en) | Pinning in a multi-tiered system | |
| CN115344313B (en) | Android system partition mounting method, electronic equipment and machine-readable storage medium | |
| JP7580501B2 (en) | Image distribution method, electronic device and storage medium | |
| US8977814B1 (en) | Information lifecycle management for binding content | |
| CN110554915A (en) | An information processing method, device, computer storage medium and terminal | |
| US8010741B1 (en) | Methods and apparatus for controlling migration of content | |
| US20230359471A1 (en) | Operating system partitioning of different users for single-user applications | |
| US20220237000A1 (en) | Managing configurations of system services running in a cluster of hosts | |
| CN119938359A (en) | A three-dimensional model loading method, device and medium based on shared memory |
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: 20150611 |
|
| C41 | Transfer of patent application or patent right or utility model | ||
| TR01 | Transfer of patent right |
Effective date of registration: 20150611 Address after: Washington State Patentee after: Micro soft technique license Co., Ltd Address before: Washington State Patentee before: Microsoft Corp. |
|
| CF01 | Termination of patent right due to non-payment of annual fee | ||
| CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20150429 Termination date: 20210611 |