Computing systems have revolutionized the way we work and play. Computing systems come in a wide variety of forms including laptop computers, desktop computers, personal digital assistants, telephones, and even devices that have not been conventionally associated with computing systems such as, for example, refrigerators and automobiles. Computing systems may even comprise a number of constituent computing systems interconnected via a network. Thus, some computing systems may be small enough to fit in the palm of the hand, while others are spread over much of the globe.
Regardless of their physical form, computing systems are composed of hardware and software. The hardware includes most fundamentally at least one processor and memory. The software includes instructions that may be embodied in the memory or in storage, and that can be accessed and executed by the processor(s) to direct the overall functionality of the computing system. Thus, software is critical in enabling and directing the functionality of the computing system.
The software in a typical computing system will typically include an operating system and application programs. The operating system typically provides the core functionality common across multiple application programs. For instance, the operating system provides Application Program Interfaces (often termed “APIs”) that provide underlying file systems, memory management, security, networking, user interfacing, and other core functionality to application programs. The operating system also initiates, manages, and terminates multiple processes on a single computing system.
A “process” is a term of art that is used to describe a virtual address space that includes a collection of resources that may be shared by one or more running executable components that are included in that process. The resources may include a process identifier, one or more execution threads, file handles, shared memory, and shared processor time. A process may also impose constraints on the executable component(s) that are run in that process so that order may be properly maintained. For instance, a process may expect a data structure or object of a particular type to have a specific structure, and may require that each component executing in the process use memory in a consistent manner.
“Script” is a term used to describe a sequence of commands that may be interpreted to form computer-executable instructions during run-time immediately before the computer-executable instructions are actually executed by the processor(s). Often, the commands will be used to execute specific components. The components invoked by the script are run in a certain processing context that is implied or expressed in the script that invokes the component. The processing context may include the process that the component runs in and the security context in which the component is run. For instance, the security context may specify that the security mechanism for the component is to treat the user as a particular entity, and/or to run the component on a particular machine. It may be needful or advantageous for components to be run in a particular processing context.
As a specific example, by default, the script may invoke a component that is run within a particular process. However, the component may not be compatible with the current process. For instance, the component may rely on a functions library that is not available to the process, or perhaps the component may not function as intended within the context of that process. Alternatively or in addition, the script may have been drafted by an author that is not trusted within the context of that process. In any of these cases, the script language may be altered to specify that the component is to be run in a different process. Furthermore, if the component is to be run outside of a default security context, that security context would be identified as well in the script language.
Thus, whenever a processing context of a script component is outside of the default processing context, the script is changed as well to reflect the new processing context. Altering the script in this manner can be a cumbersome process.
Script is accessed and interpreted to identify an executable component. Processing context configuration files may then be used to identify an appropriate processing context for the identified executable component. Examples of processing context include, but are not limited to, a process in which the identified executable component is to run, one or more adaptations to perform on the component prior to running, and/or a security context in which to run the component. Processing context thus need not be specified in the actual script itself.
This Summary is provided to introduce a selection of concepts in a simplified form that are further 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 as an aid in determining the scope of the claimed subject matter.
In order to describe the manner in which the above-recited and other advantages and features of the invention can be obtained, a more particular description of the invention briefly described above will be rendered by reference to specific embodiments thereof which are illustrated in the appended drawings. Understanding that these drawings depict only typical embodiments of the invention and are not therefore to be considered to be limiting of its scope, the invention will be described and explained with additional specificity and detail through the use of the accompanying drawings in which:
The present invention extends to the identifying of a processing context associated with one or more components executed by a script, without having to refer to processing context identification within the script itself. Thus, if the processing context changes, the script itself need not change. Instead, one or more processing context configuration files associated with each component are referred to in identifying the processing context. Should the processing context for a script component change, the configuration files are simply altered, rather than changing any script that invokes that component.
First, an example computing system in which the principles of the present invention may operate will be described with respect to
Computing systems are now increasingly taking a wide variety of forms. Computing systems may, for example, be handheld devices, appliances, laptop computers, desktop computers, mainframes, or distributed computing systems. In this description and in the claims, the term “computing system” is defined broadly as including any device or system (or combination thereof) that includes at least one processor, and a memory capable of having thereon computer-executable instructions that may be executed by the processor. The memory may take any form and may depend on the nature and form of the computing system. A computing system may be distributed over a network environment and may include multiple constituent computing systems.
Referring to
As used herein, the term “module” or “component” can refer to software objects or routines that execute on the computing system. The different components, modules, engines, and services described herein may be implemented as objects or processes that execute on the computing system (e.g., as separate threads) as part of a protocol. While the system and methods described herein may be implemented in software, implementations in hardware, and in combinations of software and hardware are also possible and contemplated.
In the description that follows, embodiments of the invention are described with reference to acts that are performed by one or more computing systems. If such acts are implemented in software, one or more processors of the associated computing system that performs the act direct the operation of the computing system in response to having executed computer-executable instructions. An example of such an operation involves the manipulation of data. The computer-executable instructions (and the manipulated data) may be stored in the memory 104 of the computing system 100.
Computing system 100 may also contain communication channels 108 that allow the computing system 100 to communicate with other computing systems over, for example, network 110. Communication channels 108 are examples of communications media. Communications media typically embody computer-readable instructions, data structures, program modules, or other data in a modulated data signal such as a carrier wave or other transport mechanism and include any information-delivery media. By way of example, and not limitation, communications media include wired media, such as wired networks and direct-wired connections, and wireless media such as acoustic, radio, infrared, and other wireless media. The term computer-readable media as used herein includes both storage media and communications media.
Embodiments within the scope of the present invention also include computer-readable media for carrying or having computer-executable instructions or data structures stored thereon. Such computer-readable media can be any available media that can be accessed by a general purpose or special purpose computer. By way of example, and not limitation, such computer-readable media can comprise RAM, ROM, EEPROM, CD-ROM or other optical disk storage, magnetic disk storage or other magnetic storage devices, or any other medium which can be used to carry or store desired program code means in the form of computer-executable instructions or data structures and which can be accessed by a general purpose or special purpose computer. When information is transferred or provided over a network or another communications connection (either hardwired, wireless, or a combination of hardwired or wireless) to a computer, the computer properly views the connection as a computer-readable medium. Thus, any such connection is properly termed a computer-readable medium. Combinations of the above should also be included within the scope of computer-readable media.
Computer-executable instructions comprise, for example, instructions and data which cause a general purpose computer, special purpose computer, or special purpose processing device to perform a certain function or group of functions. 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.
First, the script to be executed is accessed (act 201). The script may be accessed by receiving the script from another computing system, or by accessing the script from a source internal to the computing system. For instance, if the method 200 is performed in the context of the computing system 100 of
Next, the script is interpreted (act 202) to identify one or more executable components to invoke (act 203). There are a number of conventional ways to interpret script to thereby identify one or more components to invoke. The principles of the present invention are consistent with any of those conventional methods and are also likely compatible with script interpretation technology that is yet to be developed so long as that script interpretation allows for the identification of components being invoked by that script. Referring to
Referring back to
Specifically, one or more processing context configuration files associated with the identified executable component are identified (act 211).
For instance, perhaps the name of the executable components alone is sufficient to identify one or more associated processing context configuration files. Component dependencies may also be useful in identifying associated processing context configuration files. For instance, a component may depend on a particular functions library for proper execution. The author, creation date, version number, and the like may also be relevant properties used to identify one or more associated configuration files. Referring to
The processing context configuration files are then used to identify the processing context of the associated component. The processing context of the component may include, for example, any one or more of the following: an identification of a process in which to run the identified executable component, one or more adaptations to perform on the identified executable component prior to being run (e.g., change the name or type of a field, or perform some calculation), a security context in which to run the identified executable component (e.g., an identification of a user security context, or an identification of a machine on which to run the component). Referring to
Several concrete examples will now be provided to clarify the principles more generally described above. In a first example, consider a script that includes the sequential execution of three components, C1 followed by C2 followed by C3. This may be represented by the following sequence: C1|C2|C3. Now suppose that there has been some change to component C2 which no longer makes it advisable or possible to have the component run in the same process as components C1 and C3. In that case, the processing context configuration file might read as follows for component C2 if represented in one eXtenstible Markup Language (XML) format.
The use of such a configuration file makes it much easier to change the processing context of the configuration file. For instance, if the component C2 were changed such that it is once again advantageous to run the component C2 in the same process with components C1 and C3, the processing context configuration file may once again be changed to reflect this change as opposed to changing all script that references component C2. For instance, the configuration file may be changed to read as follows:
In this example, the configuration file is identifiable by the name of the component. However, as previously mentioned, the configuration file(s) may be identified by other properties of the component such as author, creation date, or others.
As mentioned above, the processing context may involve much more than whether or not the component is run in-process or out-of-process. Take, for example, the following configuration file specifying a far more complex processing context for component C2:
Here, the processing context configuration file for component C2 specifies what version of interpreter is required to run in the process. Thus, if the component C2 requires a different version of the interpreter than components C1 and C3, the component C2 would be run out-of-process unless different versions of the interpreter were possible in the same process.
The “Adaptor” element specifies an adaptation that is to be performed prior to execution of the component. Here, the LMD (Last Modified Date) Field is changed to the MD (Modified Date) field. This allows the component C2 to be modified in a manner that allows the component to be executed within the component execution sequence. Referring to
The “OutOfProcess” field specifies that the component C2 is to be run out-of-process. The “RunAsUser” filed specifies that the component C2 is to have the same security context as is permissible should the identified user be making the same requests. In the example case, the system will permit all operations being performed by component C2 so long as the system would permit that operation if requested by Bob.
The “HostComputer” field specifies the host computer on which the component C2 is to be executed. In this case, the component C2 is to run on the host computer identified as “Bobs”. As previously mentioned, the execution is performed using the security context for Bob on that host computer since the “RunAsUser” field specifies “Bob”.
Referring back to
In this case, however, the processing context determination module 404 has decided that components C2 and C3 can run in the same process within Process B. In such a case, there are processing efficiencies since processing control does not need to be returned from component C2 back to Process A, before passing processing control back to Process B for execution of component C3. Instead, execution of component C2 may smoothly transition to execution of component C3 within the same Process B.
Accordingly the principles of the present invention provide a flexible mechanism for specifying and altering the processing context in which a script component is to be executed, without requiring that the script itself be altered to specify the processing context.
The present invention may be embodied in other specific forms without departing from its spirit or essential characteristics. The described embodiments are to be considered in all respects only as illustrative and not restrictive. The scope of the invention is, therefore, indicated by the appended claims rather than by the foregoing description. All changes which come within the meaning and range of equivalency of the claims are to be embraced within their scope.
Number | Name | Date | Kind |
---|---|---|---|
5586260 | Hu | Dec 1996 | A |
5587902 | Kugimiya | Dec 1996 | A |
5740441 | Yellin et al. | Apr 1998 | A |
5787177 | Leppek | Jul 1998 | A |
5796393 | MacNaughton | Aug 1998 | A |
5918228 | Rich | Jun 1999 | A |
5983348 | Ji | Nov 1999 | A |
6029245 | Scanlan | Feb 2000 | A |
6038394 | Layes et al. | Mar 2000 | A |
6067559 | Allard et al. | May 2000 | A |
6182142 | Win | Jan 2001 | B1 |
6189103 | Nevarez | Feb 2001 | B1 |
6205465 | Schoening et al. | Mar 2001 | B1 |
6279111 | Jensenworth | Aug 2001 | B1 |
6292936 | Wang | Sep 2001 | B1 |
6330689 | Jin et al. | Dec 2001 | B1 |
6341312 | French | Jan 2002 | B1 |
6377994 | Ault | Apr 2002 | B1 |
6442564 | Frey | Aug 2002 | B1 |
6473893 | Kay et al. | Oct 2002 | B1 |
6931546 | Kouznetsov et al. | Aug 2005 | B1 |
6957228 | Graser | Oct 2005 | B1 |
6968539 | Huang et al. | Nov 2005 | B1 |
7065784 | Hopmann et al. | Jun 2006 | B2 |
7337034 | Lensing et al. | Feb 2008 | B1 |
7343584 | Plain et al. | Mar 2008 | B1 |
7380237 | Goring et al. | May 2008 | B2 |
7448022 | Ram et al. | Nov 2008 | B1 |
7802089 | Snover et al. | Sep 2010 | B2 |
8079025 | Marchant | Dec 2011 | B2 |
8099713 | Becker et al. | Jan 2012 | B2 |
20020010803 | Oberstein et al. | Jan 2002 | A1 |
20020066024 | Schmall et al. | May 2002 | A1 |
20020073330 | Chandnani et al. | Jun 2002 | A1 |
20030154202 | Dinker et al. | Aug 2003 | A1 |
20030217352 | Ueno et al. | Nov 2003 | A1 |
20040073810 | Dettinger et al. | Apr 2004 | A1 |
20040083383 | Carmona | Apr 2004 | A1 |
20040088689 | Hammes | May 2004 | A1 |
20040162997 | Hopmann et al. | Aug 2004 | A1 |
20050015775 | Russell et al. | Jan 2005 | A1 |
20050076344 | Goring et al. | Apr 2005 | A1 |
20050149726 | Joshi | Jul 2005 | A1 |
20050198639 | Matsui | Sep 2005 | A1 |
20050283838 | Saito | Dec 2005 | A1 |
20060184931 | Rochette et al. | Aug 2006 | A1 |
Number | Date | Country |
---|---|---|
2002-0043917 | Jun 2002 | KR |
WO 02100034 | Dec 2002 | WO |
WO 2004074952 | Sep 2004 | WO |
2005031566 | Apr 2005 | WO |
WO 2005106658 | Nov 2005 | WO |
Number | Date | Country | |
---|---|---|---|
20070174813 A1 | Jul 2007 | US |