US8793676B2 - Version-resilient loader for custom code runtimes - Google Patents

Version-resilient loader for custom code runtimes Download PDF

Info

Publication number
US8793676B2
US8793676B2 US11/675,584 US67558407A US8793676B2 US 8793676 B2 US8793676 B2 US 8793676B2 US 67558407 A US67558407 A US 67558407A US 8793676 B2 US8793676 B2 US 8793676B2
Authority
US
United States
Prior art keywords
custom code
runtime
version
code
loader
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active, expires
Application number
US11/675,584
Other versions
US20080201568A1 (en
Inventor
Thomas E. Quinn
Richard A. Cook
Michael Shneerson
David A. Whitechapel
William A. Robertson
Pallavi Vajranabhaiah
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Technology Licensing LLC
Original Assignee
Microsoft Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Microsoft Corp filed Critical Microsoft Corp
Priority to US11/675,584 priority Critical patent/US8793676B2/en
Assigned to MICROSOFT CORPORATION reassignment MICROSOFT CORPORATION ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: COOK, RICHARD A., QUINN, THOMAS E., ROBERTSON, WILLIAM A., SHNEERSON, MICHAEL, VAJRANABHAIAH, PALLAVI, WHITECHAPEL, DAVID A.
Publication of US20080201568A1 publication Critical patent/US20080201568A1/en
Application granted granted Critical
Publication of US8793676B2 publication Critical patent/US8793676B2/en
Assigned to MICROSOFT TECHNOLOGY LICENSING, LLC reassignment MICROSOFT TECHNOLOGY LICENSING, LLC ASSIGNMENT OF ASSIGNORS INTEREST (SEE DOCUMENT FOR DETAILS). Assignors: MICROSOFT CORPORATION
Active legal-status Critical Current
Adjusted expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44521Dynamic linking or loading; Link editing at or after load time, e.g. Java class loading

Definitions

  • a third party develops custom code (e.g., addins and document-level customizations) that uses functionality exposed by the application.
  • the custom code may improve the usability of the applications or provide additional functionality (e.g., domain-specific functionality).
  • Such applications are referred to as “host applications” because the custom code is hosted within the process of the application.
  • Developers of applications typically want to encourage the development of custom code for their applications to increase the demand for their applications.
  • such developers may provide “runtimes” that facilitate the development of custom code.
  • a runtime is code that is loaded along with custom code and provides services to the custom code. These services may include higher-level functionality than exposed by the application or may include domain-specific functionality.
  • the application may load the runtime and direct the runtime to load and start the execution of the custom code.
  • the .NET Framework provides a common language runtime (“CLR”) that provides high-level operating system type services to the managed programs (including custom code and applications) and serves as an execution engine for managed programs.
  • CLR ensures that managed programs do not take any unauthorized action. As such, the CLR acts as a “sandbox” within which managed programs execute.
  • the CLR provides application domains (“appdomains”) in which different managed programs can execute to help ensure that an errant managed program will not unduly affect the execution of another managed program.
  • an application When an application starts, it may identify the custom code that is to be loaded and executed.
  • the application may access registry entries that identify the custom code.
  • the application When the application identifies custom code, it typically uses a loader object to load and start the execution of the custom code.
  • the application may instantiate the loader object and may then invoke a load method of the loader object to effect the loading of the identified custom code.
  • the loader object loads the runtime for the application and then directs the runtime to load the custom code.
  • the application instantiates a loader object of a loader object class that is defined at compile time. Because the class is specified at compile time, the specific runtime or version of the runtime is effectively hard-coded into the application. This hard-coding of the version of the runtime presents several problems.
  • An application and its runtime may be developed by different groups of developers, may be packaged as different products, and may have different release cycles for their versions. Because of the hard-coding, an application is typically programmed to load the version of the runtime that was current at the time of the application's release. Organizations, however, may be reluctant to upgrade to the new version of the application until the custom code that it relies upon is tested with the version of the runtime loaded by the application. This reluctance may slow the sales of the new version of the application. Another difficulty arises because a new version of the runtime may be released in between releases of the application.
  • the application cannot load custom code that relies on the new runtime until a new version of the application with its loader object updated is released or until the application is patched to access the new version of the runtime.
  • patching is both expensive and prone to errors.
  • a method and system for dynamically identifying and loading a version of a runtime for custom code of a host application without modifying the host application is provided.
  • a loading system dynamically identifies the version of the runtime during execution of the host application.
  • the loading system is also dynamically linked into the host application so that its algorithm for identifying the version of the runtime can be modified without modifying the host application.
  • the loading system may then collect custom code information and system information and identify the version of the runtime to load based on that information.
  • the loading system requests a load component of the loaded version of the runtime to load the custom code identified by the custom code identifier.
  • FIG. 1 is a block diagram that illustrates components of the loading system in one embodiment.
  • FIG. 2 is a block diagram that illustrates a process layout of a host application in which versions of custom code runtimes can be dynamically identified and loaded.
  • FIG. 3 is a flow diagram that illustrates the process of installing a new custom code runtime on a computing system in one embodiment.
  • FIG. 4 is a flow diagram that illustrates the process of loading custom code into a host process in one embodiment.
  • a method and system for dynamically identifying and loading a version of a runtime for custom code of a host application without modifying the host application is provided.
  • a loading system dynamically identifies the version of the runtime during execution of the host application.
  • the loading system is also dynamically linked into the host application so that its algorithm for identifying the version of the runtime can be modified without modifying the host application.
  • the host application may retrieve the custom code identifier from a system registry entry that identifies custom code to be loaded by the host application.
  • the loading system may then collect custom code information and system information and identify the version of the runtime to load based on that information.
  • the custom code information may include, for example, a specification of a specific version of the runtime needed by the custom code.
  • the system information may identify the different versions of the runtime that are available to be loaded, indicate which versions of the runtime are compatible with which versions of the host application, identify the version of the operating system, identify the version of the common language runtime, and so on.
  • the loading system requests a load component of the loaded version of the runtime to load the custom code identified by the custom code identifier.
  • the load component may use a deployment system as described in U.S. application Ser. No. 11/675,591, entitled “Dynamic Deployment of Custom Code,” filed concurrently and hereby incorporated by reference.
  • the deployment system dynamically downloads custom code for execution within a host application.
  • the identifier of the custom code may reference a manifest that contains information describing the custom code, its location (e.g., on a server), and other information needed to install, load, and execute the custom code.
  • the manifest may also contain information used by the loading system to identify which version of the runtime to load.
  • an implementation of the loading system also referred to a “custom code loader proxy,” is stored in a dynamic-link library so that its algorithm can be modified to identify different versions of the runtime without having to modify the host application.
  • a new implementation of the loading system may also be released with an updated algorithm for identifying what version of the runtime to load.
  • the installation process overwrites the dynamic-link library with the new implementation of the loading system.
  • the installation process may also update a runtime criteria store that contains information used by the algorithm to identify the version of the runtime to load.
  • the installation process also installs the new version of the runtime on the computing system. When the host application is next executed, it will automatically link in and execute the new version of the loading system, which will identify and load a version of the runtime.
  • FIG. 1 is a block diagram that illustrates components of the loading system in one embodiment.
  • the loading system 100 may be implemented on a client computing device 130 connected to a server computing device 110 via a communications link 120 .
  • the server computing device implements the server side of a custom code deployment system and may include a custom code manifest store 111 and a custom code manifest server component 112 .
  • the custom code manifest store contains the manifests of the custom code that has been published to the deployment system.
  • the custom code manifest server component receives requests to publish custom code and requests for manifests of the published custom code. Upon receiving a request for a manifest, the custom code manifest server component retrieves the manifest from the custom code manifest store and provides the retrieved manifest to the requesting computer system.
  • the manifest identifies the location where the custom code is stored, such as in a custom code store at server 150 .
  • the loading system may be used in an environment where custom code is not dynamically deployed by a deployment system.
  • the custom code can be installed on the client computing system using static installation techniques.
  • the client computing device includes an install custom code runtime component 131 , custom code runtime versions 132 and 133 , and a custom code runtime criteria store 134 .
  • the install custom code runtime component controls the installation process of a new custom code runtime and a new custom code loader proxy component 135 .
  • the install custom code runtime component also updates the custom code runtime criteria store to specify new criteria for identifying which versions of the runtime to load.
  • the custom code loader proxy component may not need to update when its algorithm is implemented to automatically recognize all installed versions of the runtime.
  • the installation process may update the custom code runtime criteria store to identify the new version of the runtime.
  • the loading system also includes a custom loader proxy component 135 , a custom code loader (unmanaged) component 136 , a custom code loader (managed) component 137 , and a custom code deployment component 138 .
  • a host application 140 invokes the custom code loader proxy component to load the custom code.
  • the custom code loader proxy component identifies a version of the custom code runtime, loads the custom code runtime, starts a common language runtime (“CLR”) 139 and invokes a load component of the custom code loader (unmanaged) component of the runtime.
  • the custom code loader (managed) component may use the custom code deployment component to install the custom code specified by its manifest on the server computing system.
  • the computing devices on which the loading system may be implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives).
  • the memory and storage devices are computer-readable media that may be embedded with computer-executable instructions that implement the loading system.
  • the instructions, data structures, and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link.
  • Various communications links may be used, such as the Internet, a local area network, a wide area network, or a point-to-point dial-up connection.
  • the loading system may be implemented on various computing systems or devices including personal computers, server computers, multiprocessor systems, microprocessor-based systems, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like.
  • the loading system may be used by various computing systems such as personal computers, cell phones, personal digital assistants, consumer electronics, home automation devices, and so on.
  • the loading system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices.
  • program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types.
  • functionality of the program modules may be combined or distributed as desired in various embodiments.
  • FIG. 2 is a block diagram that illustrates a process layout of a host application in which versions of custom code runtimes can be dynamically identified and loaded.
  • a host process 200 includes host code 201 that implements the primary behavior of the host application.
  • the host code desires to load and execute custom code, the host code instantiates a custom code loader proxy object 202 .
  • the implementation of the custom code loader proxy object may be stored in a dynamic-link library as unmanaged code.
  • the host code then invokes a load function of the custom code loader proxy object.
  • the load function identifies the appropriate version of the custom code runtime that should be loaded for the custom code that is to be loaded.
  • the load function may identify the appropriate version based on information stored in a custom code runtime criteria store 209 and other information such as version of the operating system, attributes of the custom code, and so on.
  • the load function loads the appropriate version of the custom code runtime 203 , which includes a custom code loader (unmanaged) object 204 , a custom code loader (managed) object 205 , and other custom code runtime code 206 .
  • the load function then invokes the load function of the custom code loader (unmanaged) object.
  • the load function of the custom code loader (unmanaged) object then initializes a common language runtime (“CLR”) 207 .
  • CLR common language runtime
  • the load function of the custom code loader (unmanaged) object then invokes a load function of the custom code loader (managed) object to load custom code 208 .
  • the host code interacts directly with the custom code bypassing the custom code loader proxy object.
  • FIG. 3 is a flow diagram that illustrates the process of installing a new custom code runtime on a computing system in one embodiment.
  • the installation process overwrites the existing custom code loader proxy stored in a dynamic-link library with the new custom code loader proxy.
  • the new custom code loader proxy is programmed to load the new custom code runtime or a previous custom code runtime as appropriate. Because the installation overwrites the existing custom code loader proxy, the computing system will not have multiple copies of the custom code loader proxy.
  • the installation process updates the custom code runtime criteria store so that the new custom code loader proxy can identify the appropriate version of the custom code runtime.
  • the installation process then installs the new custom code runtime using techniques that may be conventional. Upon completion of the installation, the computing system may have multiple versions of the custom code runtime, but it will have only one version of the custom code loader proxy that can be loaded by the host application.
  • FIG. 4 is a flow diagram that illustrates the process of loading custom code into a host process in one embodiment.
  • the host code 201 instantiates the custom code loader proxy object 202 and invokes a load function of the object.
  • the load function retrieves the manifest for the custom code, which may contain information that is used to identify the version of the runtime to load.
  • the load function collects information needed to identify the appropriate version of the custom code runtime, such as from the custom code runtime criteria store.
  • the load function identifies the version of the custom code runtime that should be loaded.
  • the load function may implement various algorithms for identifying the runtime to be loaded.
  • information associated with the custom code to be loaded may indicate that the custom code should execute with a specified version of the runtime.
  • the algorithm may, however, be programmed to identify the latest version of the runtime knowing that the latest version is compatible with the specified version.
  • the load function loads the identified version of the custom code runtime by instantiating an object for the class of the identified version.
  • the load function invokes a load function of the custom code loader (unmanaged) object 204 of the custom code runtime.
  • the load function starts the CLR 207 .
  • the load function invokes a load function of the custom code loader (managed) object 205 of the custom code runtime.
  • the load function of the custom code loader (managed) object loads the custom code.
  • the custom code runtime returns to the host code.
  • the host code invokes the custom code.
  • Each host application may have its own custom code loader proxy that includes an algorithm for identifying a version of the runtime for that host application.
  • host applications that are included in a suite of applications e.g., a suite that include a word processing application, a spreadsheet application, and a drawing application

Abstract

A method and system for dynamically identifying and loading a version of a runtime for custom code of a host application without modifying the host application is provided. A loading system dynamically identifies the version of the runtime during execution of the host application. The loading system is also dynamically linked into the host application so that its algorithm for identifying the version of the runtime can be modified without modifying the host application. When requested by the host application to load custom code, the loading system identifies a version of the runtime to load, loads the identified version of the runtime, and then requests a load component of the loaded version of the runtime to load the custom code.

Description

BACKGROUND
Developers of many application programs (“applications”) implement the applications so that they can be customized by third parties. To customize an application, a third party develops custom code (e.g., addins and document-level customizations) that uses functionality exposed by the application. The custom code may improve the usability of the applications or provide additional functionality (e.g., domain-specific functionality). Such applications are referred to as “host applications” because the custom code is hosted within the process of the application. Developers of applications typically want to encourage the development of custom code for their applications to increase the demand for their applications. As a result, such developers may provide “runtimes” that facilitate the development of custom code. A runtime is code that is loaded along with custom code and provides services to the custom code. These services may include higher-level functionality than exposed by the application or may include domain-specific functionality. When an application is to load and start the execution of custom code, the application may load the runtime and direct the runtime to load and start the execution of the custom code.
Because of the ease of developing custom code as “managed code,” many applications support the execution of custom code in the .NET Framework provided by Microsoft Corporation. The .NET Framework provides a common language runtime (“CLR”) that provides high-level operating system type services to the managed programs (including custom code and applications) and serves as an execution engine for managed programs. The CLR ensures that managed programs do not take any unauthorized action. As such, the CLR acts as a “sandbox” within which managed programs execute. The CLR provides application domains (“appdomains”) in which different managed programs can execute to help ensure that an errant managed program will not unduly affect the execution of another managed program.
When an application starts, it may identify the custom code that is to be loaded and executed. The application may access registry entries that identify the custom code. When the application identifies custom code, it typically uses a loader object to load and start the execution of the custom code. The application may instantiate the loader object and may then invoke a load method of the loader object to effect the loading of the identified custom code. The loader object loads the runtime for the application and then directs the runtime to load the custom code. The application instantiates a loader object of a loader object class that is defined at compile time. Because the class is specified at compile time, the specific runtime or version of the runtime is effectively hard-coded into the application. This hard-coding of the version of the runtime presents several problems. An application and its runtime may be developed by different groups of developers, may be packaged as different products, and may have different release cycles for their versions. Because of the hard-coding, an application is typically programmed to load the version of the runtime that was current at the time of the application's release. Organizations, however, may be reluctant to upgrade to the new version of the application until the custom code that it relies upon is tested with the version of the runtime loaded by the application. This reluctance may slow the sales of the new version of the application. Another difficulty arises because a new version of the runtime may be released in between releases of the application. In such a case, the application cannot load custom code that relies on the new runtime until a new version of the application with its loader object updated is released or until the application is patched to access the new version of the runtime. Such patching, however, is both expensive and prone to errors.
SUMMARY
A method and system for dynamically identifying and loading a version of a runtime for custom code of a host application without modifying the host application is provided. A loading system dynamically identifies the version of the runtime during execution of the host application. The loading system is also dynamically linked into the host application so that its algorithm for identifying the version of the runtime can be modified without modifying the host application. After the loading system is loaded, it receives from the host application a request to load custom code identified by a custom code identifier. The loading system may then collect custom code information and system information and identify the version of the runtime to load based on that information. The loading system then requests a load component of the loaded version of the runtime to load the custom code identified by the custom code identifier.
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.
BRIEF DESCRIPTION OF THE DRAWINGS
FIG. 1 is a block diagram that illustrates components of the loading system in one embodiment.
FIG. 2 is a block diagram that illustrates a process layout of a host application in which versions of custom code runtimes can be dynamically identified and loaded.
FIG. 3 is a flow diagram that illustrates the process of installing a new custom code runtime on a computing system in one embodiment.
FIG. 4 is a flow diagram that illustrates the process of loading custom code into a host process in one embodiment.
DETAILED DESCRIPTION
A method and system for dynamically identifying and loading a version of a runtime for custom code of a host application without modifying the host application is provided. In one embodiment, a loading system dynamically identifies the version of the runtime during execution of the host application. The loading system is also dynamically linked into the host application so that its algorithm for identifying the version of the runtime can be modified without modifying the host application. After the loading system is loaded, it receives from the host application a request to load custom code identified by a custom code identifier. The host application may retrieve the custom code identifier from a system registry entry that identifies custom code to be loaded by the host application. The loading system may then collect custom code information and system information and identify the version of the runtime to load based on that information. The custom code information may include, for example, a specification of a specific version of the runtime needed by the custom code. The system information may identify the different versions of the runtime that are available to be loaded, indicate which versions of the runtime are compatible with which versions of the host application, identify the version of the operating system, identify the version of the common language runtime, and so on. The loading system then requests a load component of the loaded version of the runtime to load the custom code identified by the custom code identifier. The load component may use a deployment system as described in U.S. application Ser. No. 11/675,591, entitled “Dynamic Deployment of Custom Code,” filed concurrently and hereby incorporated by reference. The deployment system dynamically downloads custom code for execution within a host application. The identifier of the custom code may reference a manifest that contains information describing the custom code, its location (e.g., on a server), and other information needed to install, load, and execute the custom code. The manifest may also contain information used by the loading system to identify which version of the runtime to load.
In one embodiment, an implementation of the loading system, also referred to a “custom code loader proxy,” is stored in a dynamic-link library so that its algorithm can be modified to identify different versions of the runtime without having to modify the host application. When a new version of the runtime is released, a new implementation of the loading system may also be released with an updated algorithm for identifying what version of the runtime to load. To install the new version of the runtime on a computing system, the installation process overwrites the dynamic-link library with the new implementation of the loading system. The installation process may also update a runtime criteria store that contains information used by the algorithm to identify the version of the runtime to load. The installation process also installs the new version of the runtime on the computing system. When the host application is next executed, it will automatically link in and execute the new version of the loading system, which will identify and load a version of the runtime.
FIG. 1 is a block diagram that illustrates components of the loading system in one embodiment. The loading system 100 may be implemented on a client computing device 130 connected to a server computing device 110 via a communications link 120. The server computing device implements the server side of a custom code deployment system and may include a custom code manifest store 111 and a custom code manifest server component 112. The custom code manifest store contains the manifests of the custom code that has been published to the deployment system. The custom code manifest server component receives requests to publish custom code and requests for manifests of the published custom code. Upon receiving a request for a manifest, the custom code manifest server component retrieves the manifest from the custom code manifest store and provides the retrieved manifest to the requesting computer system. The manifest identifies the location where the custom code is stored, such as in a custom code store at server 150. Alternatively, the loading system may be used in an environment where custom code is not dynamically deployed by a deployment system. In such an environment, the custom code can be installed on the client computing system using static installation techniques.
The client computing device includes an install custom code runtime component 131, custom code runtime versions 132 and 133, and a custom code runtime criteria store 134. The install custom code runtime component controls the installation process of a new custom code runtime and a new custom code loader proxy component 135. The install custom code runtime component also updates the custom code runtime criteria store to specify new criteria for identifying which versions of the runtime to load. When a new version of a runtime is installed, the custom code loader proxy component may not need to update when its algorithm is implemented to automatically recognize all installed versions of the runtime. Whether or not the custom code loader proxy is updated, the installation process may update the custom code runtime criteria store to identify the new version of the runtime. The loading system also includes a custom loader proxy component 135, a custom code loader (unmanaged) component 136, a custom code loader (managed) component 137, and a custom code deployment component 138. A host application 140 invokes the custom code loader proxy component to load the custom code. The custom code loader proxy component identifies a version of the custom code runtime, loads the custom code runtime, starts a common language runtime (“CLR”) 139 and invokes a load component of the custom code loader (unmanaged) component of the runtime. The custom code loader (managed) component may use the custom code deployment component to install the custom code specified by its manifest on the server computing system.
The computing devices on which the loading system may be implemented may include a central processing unit, memory, input devices (e.g., keyboard and pointing devices), output devices (e.g., display devices), and storage devices (e.g., disk drives). The memory and storage devices are computer-readable media that may be embedded with computer-executable instructions that implement the loading system. In addition, the instructions, data structures, and message structures may be stored or transmitted via a data transmission medium, such as a signal on a communications link. Various communications links may be used, such as the Internet, a local area network, a wide area network, or a point-to-point dial-up connection.
The loading system may be implemented on various computing systems or devices including personal computers, server computers, multiprocessor systems, microprocessor-based systems, network PCs, minicomputers, mainframe computers, distributed computing environments that include any of the above systems or devices, and the like. The loading system may be used by various computing systems such as personal computers, cell phones, personal digital assistants, consumer electronics, home automation devices, and so on.
The loading system may be described in the general context of computer-executable instructions, such as program modules, executed by one or more computers or other devices. Generally, program modules include routines, programs, objects, components, data structures, and so on that perform particular tasks or implement particular abstract data types. Typically, the functionality of the program modules may be combined or distributed as desired in various embodiments.
FIG. 2 is a block diagram that illustrates a process layout of a host application in which versions of custom code runtimes can be dynamically identified and loaded. A host process 200 includes host code 201 that implements the primary behavior of the host application. When the host code desires to load and execute custom code, the host code instantiates a custom code loader proxy object 202. The implementation of the custom code loader proxy object may be stored in a dynamic-link library as unmanaged code. The host code then invokes a load function of the custom code loader proxy object. The load function identifies the appropriate version of the custom code runtime that should be loaded for the custom code that is to be loaded. The load function may identify the appropriate version based on information stored in a custom code runtime criteria store 209 and other information such as version of the operating system, attributes of the custom code, and so on. The load function loads the appropriate version of the custom code runtime 203, which includes a custom code loader (unmanaged) object 204, a custom code loader (managed) object 205, and other custom code runtime code 206. The load function then invokes the load function of the custom code loader (unmanaged) object. The load function of the custom code loader (unmanaged) object then initializes a common language runtime (“CLR”) 207. The load function of the custom code loader (unmanaged) object then invokes a load function of the custom code loader (managed) object to load custom code 208. After the custom code is loaded, the host code interacts directly with the custom code bypassing the custom code loader proxy object.
FIG. 3 is a flow diagram that illustrates the process of installing a new custom code runtime on a computing system in one embodiment. In block 301, the installation process overwrites the existing custom code loader proxy stored in a dynamic-link library with the new custom code loader proxy. The new custom code loader proxy is programmed to load the new custom code runtime or a previous custom code runtime as appropriate. Because the installation overwrites the existing custom code loader proxy, the computing system will not have multiple copies of the custom code loader proxy. In block 302, the installation process updates the custom code runtime criteria store so that the new custom code loader proxy can identify the appropriate version of the custom code runtime. In block 303, the installation process then installs the new custom code runtime using techniques that may be conventional. Upon completion of the installation, the computing system may have multiple versions of the custom code runtime, but it will have only one version of the custom code loader proxy that can be loaded by the host application.
FIG. 4 is a flow diagram that illustrates the process of loading custom code into a host process in one embodiment. In block 401, the host code 201 instantiates the custom code loader proxy object 202 and invokes a load function of the object. In block 402, the load function retrieves the manifest for the custom code, which may contain information that is used to identify the version of the runtime to load. In block 403, the load function collects information needed to identify the appropriate version of the custom code runtime, such as from the custom code runtime criteria store. In block 404, the load function identifies the version of the custom code runtime that should be loaded. The load function may implement various algorithms for identifying the runtime to be loaded. For example, information associated with the custom code to be loaded may indicate that the custom code should execute with a specified version of the runtime. The algorithm may, however, be programmed to identify the latest version of the runtime knowing that the latest version is compatible with the specified version. In block 405, the load function loads the identified version of the custom code runtime by instantiating an object for the class of the identified version. In block 406, the load function invokes a load function of the custom code loader (unmanaged) object 204 of the custom code runtime. In block 407, the load function starts the CLR 207. In block 408, the load function invokes a load function of the custom code loader (managed) object 205 of the custom code runtime. In block 409, the load function of the custom code loader (managed) object loads the custom code. After the custom code is loaded, the custom code runtime returns to the host code. In block 410, the host code invokes the custom code.
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. Each host application may have its own custom code loader proxy that includes an algorithm for identifying a version of the runtime for that host application. Alternatively, host applications that are included in a suite of applications (e.g., a suite that include a word processing application, a spreadsheet application, and a drawing application) may share the same runtime and thus may share the same custom code loader proxy. Accordingly, the invention is not limited except as by the appended claims.

Claims (14)

We claim:
1. A computing system for dynamically identifying and loading a version of a runtime for custom code, the custom code for execution within a host process of a host application, the computing system comprising:
a memory storing computer-executable instructions of:
a host application that hosts custom code for execution within the host process; and
a loader component for execution within the host process that:
receives from the host application executing within the host process a request to load custom code identified by a custom code identifier;
executes an algorithm that identifies a version of a runtime for the custom code, the algorithm
collects system information including information relating to different versions of the runtime that are available to be loaded and executed within the host process; and
identifies, based on the system information, a version of the runtime to load;
loads the identified version of the runtime for execution within the host process;
requests a load component of the loaded version of the runtime to load the custom code identified by the custom code identifier; and
invokes the loaded custom code for execution within the host process of the host application as hosted custom code so that different runtimes are loaded into the hosted application depending of the version of the runtime needed by each custom code;
wherein the loader component is dynamically linked to the host application so that the algorithm that identifies the version of the runtime can be modified without modifying the host application and
wherein the components are stored in a dynamic-link library and
a processor that executes the computer-executable instructions stored in the memory.
2. The computing system of claim 1 wherein the system information includes operating system information.
3. The computing system of claim 1 wherein the components are implemented using unmanaged code.
4. The computing system of claim 1 including a component that collects custom code information relating to the custom code to be loaded and wherein the component that identifies a version of the runtime performs the identification based on the custom code information.
5. The computing system of claim 4 wherein the custom code information specifies a version of the runtime to load.
6. The computing system of claim 5 wherein the component that identifies overrides the specification of the version by the custom code information when it is determined that a later version of the runtime is compatible with the custom code.
7. The computing system of claim 1 wherein the load component of the runtime dynamically deploys the custom code.
8. The computing system of claim 1 wherein system information specifies compatibility between versions of the host application and versions of the runtime.
9. A computer-readable memory embedded with computer-readable instructions for controlling a computing system to load custom code, the custom code for providing customization of a host application, the custom code using a runtime that supports the customization of the host application, by a method comprising:
under control of the host application executing within a host process as unmanaged code,
loading a custom code loader proxy for execution within the host process of the host application as unmanaged code, wherein the custom code loader proxy is stored in a dynamic-link library; and
requesting the loaded custom code loader proxy to load the custom code;
under control of the custom code loader proxy executing within the host process,
identifying a version of the runtime that is compatible with the host application and the custom code to be loaded;
loading the identified version of the runtime for execution within the host process; and
requesting an unmanaged custom code loader of the loaded runtime to load the custom code;
under control the unmanaged custom code loader of the runtime executing within the host process as unmanaged code,
starting execution of the runtime for execution of managed code;
requesting a managed custom code loader of the runtime to load the custom code;
under control of the managed custom code loader of the loaded runtime executing within the host process as managed code, loading the custom code for execution with the host process as managed code; and
under control of the custom code executing within the host process as managed code, using services provided by the runtime to effect customization of the host application.
10. The computer-readable memory of claim 9 wherein the identifying is based on compatibility between version of the host application, version of the custom code installed on the computing system, and version of an operating system under which the host application executes.
11. The computer-readable memory of claim 9 wherein a new custom code loader proxy is installed by replacing the dynamic-link library on which is stored an old custom code loader proxy with a dynamic-link library on which is stored the new custom code loader proxy.
12. The computer-readable memory of claim 9 wherein the custom code specifies a version of the runtime.
13. The computer-readable memory of claim 12 wherein the identifying overrides the specification of the version when a later version of the runtime is compatible with the custom code.
14. The computer-readable memory of claim 9 wherein the loading of the custom code includes deploying of the custom code from a server.
US11/675,584 2007-02-15 2007-02-15 Version-resilient loader for custom code runtimes Active 2030-10-25 US8793676B2 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
US11/675,584 US8793676B2 (en) 2007-02-15 2007-02-15 Version-resilient loader for custom code runtimes

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US11/675,584 US8793676B2 (en) 2007-02-15 2007-02-15 Version-resilient loader for custom code runtimes

Publications (2)

Publication Number Publication Date
US20080201568A1 US20080201568A1 (en) 2008-08-21
US8793676B2 true US8793676B2 (en) 2014-07-29

Family

ID=39707662

Family Applications (1)

Application Number Title Priority Date Filing Date
US11/675,584 Active 2030-10-25 US8793676B2 (en) 2007-02-15 2007-02-15 Version-resilient loader for custom code runtimes

Country Status (1)

Country Link
US (1) US8793676B2 (en)

Cited By (27)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282457A1 (en) * 2013-03-13 2014-09-18 Alex C. Chow Systems And Methods For Embedded Shared Libraries In An Executable Image
US20140337824A1 (en) * 2013-05-08 2014-11-13 Microsoft Corporation Out-of-band framework libraries within applications
US9690444B1 (en) 2013-03-15 2017-06-27 EMC IP Holding Company LLC Custom help systems by runtime modification of generic help files
US10956185B2 (en) * 2014-09-30 2021-03-23 Amazon Technologies, Inc. Threading as a service
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11126469B2 (en) 2014-12-05 2021-09-21 Amazon Technologies, Inc. Automatic determination of resource sizing
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11263034B2 (en) 2014-09-30 2022-03-01 Amazon Technologies, Inc. Low latency computational capacity provisioning
US11354169B2 (en) 2016-06-29 2022-06-07 Amazon Technologies, Inc. Adjusting variable limit on concurrent code executions
US11360793B2 (en) 2015-02-04 2022-06-14 Amazon Technologies, Inc. Stateful virtual compute system
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system
US11461124B2 (en) 2015-02-04 2022-10-04 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US11467890B2 (en) 2014-09-30 2022-10-11 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11836516B2 (en) 2018-07-25 2023-12-05 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11875173B2 (en) 2018-06-25 2024-01-16 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system

Families Citing this family (43)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101727345B (en) * 2008-10-29 2013-09-04 国际商业机器公司 Method and system for controlling loading state of dynamic link library DLL
US8387032B1 (en) * 2009-03-04 2013-02-26 Adobe Systems Incorporated Captive runtime deployment
WO2010135696A1 (en) * 2009-05-21 2010-11-25 Salesforce.Com, Inc. System, method and computer program product for versioning components of an application
US20100313031A1 (en) * 2009-06-04 2010-12-09 Bertrand Jaslet Watermarking during system deployment
US8266201B2 (en) * 2010-03-29 2012-09-11 The Aerospace Corporation System and method for distributing processing of a single-process application having first and second objects in a network having local and remote processes
US8843891B2 (en) * 2012-06-22 2014-09-23 Sap Ag Custom code management
US10891569B1 (en) * 2014-01-13 2021-01-12 Amazon Technologies, Inc. Dynamic task discovery for workflow tasks
US9836315B1 (en) * 2014-06-25 2017-12-05 Amazon Technologies, Inc. De-referenced package execution
US10048974B1 (en) 2014-09-30 2018-08-14 Amazon Technologies, Inc. Message-based computation request scheduling
US9830193B1 (en) 2014-09-30 2017-11-28 Amazon Technologies, Inc. Automatic management of low latency computational capacity
US9323556B2 (en) 2014-09-30 2016-04-26 Amazon Technologies, Inc. Programmatic event detection and message generation for requests to execute program code
US9785476B2 (en) 2015-04-08 2017-10-10 Amazon Technologies, Inc. Endpoint management system and virtual compute system
US9930103B2 (en) 2015-04-08 2018-03-27 Amazon Technologies, Inc. Endpoint management system providing an application programming interface proxy service
US9910713B2 (en) 2015-12-21 2018-03-06 Amazon Technologies, Inc. Code execution request routing
US10067801B1 (en) 2015-12-21 2018-09-04 Amazon Technologies, Inc. Acquisition and maintenance of compute capacity
US10891145B2 (en) 2016-03-30 2021-01-12 Amazon Technologies, Inc. Processing pre-existing data sets at an on demand code execution environment
US10884787B1 (en) 2016-09-23 2021-01-05 Amazon Technologies, Inc. Execution guarantees in an on-demand network code execution system
US11916994B1 (en) * 2016-12-15 2024-02-27 Blue Yonder Group, Inc. Extending RESTful web service resources in a JAVA-component-driven-architecture application
US10733085B1 (en) 2018-02-05 2020-08-04 Amazon Technologies, Inc. Detecting impedance mismatches due to cross-service calls
US10831898B1 (en) 2018-02-05 2020-11-10 Amazon Technologies, Inc. Detecting privilege escalations in code including cross-service calls
US10725752B1 (en) 2018-02-13 2020-07-28 Amazon Technologies, Inc. Dependency handling in an on-demand network code execution system
US10776091B1 (en) 2018-02-26 2020-09-15 Amazon Technologies, Inc. Logging endpoint in an on-demand code execution system
US10649749B1 (en) 2018-06-26 2020-05-12 Amazon Technologies, Inc. Cross-environment application of tracing information for improved code execution
US10949237B2 (en) 2018-06-29 2021-03-16 Amazon Technologies, Inc. Operating system customization in an on-demand network code execution system
US10884812B2 (en) 2018-12-13 2021-01-05 Amazon Technologies, Inc. Performance-based hardware emulation in an on-demand network code execution system
US11115404B2 (en) 2019-06-28 2021-09-07 Amazon Technologies, Inc. Facilitating service connections in serverless code executions
US11263220B2 (en) 2019-09-27 2022-03-01 Amazon Technologies, Inc. On-demand execution of object transformation code in output path of object storage service
US11250007B1 (en) 2019-09-27 2022-02-15 Amazon Technologies, Inc. On-demand execution of object combination code in output path of object storage service
US11055112B2 (en) 2019-09-27 2021-07-06 Amazon Technologies, Inc. Inserting executions of owner-specified code into input/output path of object storage service
US11656892B1 (en) 2019-09-27 2023-05-23 Amazon Technologies, Inc. Sequential execution of user-submitted code and native functions
US10996961B2 (en) 2019-09-27 2021-05-04 Amazon Technologies, Inc. On-demand indexing of data in input path of object storage service
US11023311B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. On-demand code execution in input path of data uploaded to storage service in multiple data portions
US11023416B2 (en) 2019-09-27 2021-06-01 Amazon Technologies, Inc. Data access control system for object storage service based on owner-defined code
US11550944B2 (en) 2019-09-27 2023-01-10 Amazon Technologies, Inc. Code execution environment customization system for object storage service
US11106477B2 (en) 2019-09-27 2021-08-31 Amazon Technologies, Inc. Execution of owner-specified code during input/output path to object storage service
US10908927B1 (en) 2019-09-27 2021-02-02 Amazon Technologies, Inc. On-demand execution of object filter code in output path of object storage service
US11416628B2 (en) 2019-09-27 2022-08-16 Amazon Technologies, Inc. User-specific data manipulation system for object storage service based on user-submitted code
US11394761B1 (en) 2019-09-27 2022-07-19 Amazon Technologies, Inc. Execution of user-submitted code on a stream of data
US11360948B2 (en) 2019-09-27 2022-06-14 Amazon Technologies, Inc. Inserting owner-specified data processing pipelines into input/output path of object storage service
US11386230B2 (en) 2019-09-27 2022-07-12 Amazon Technologies, Inc. On-demand code obfuscation of data in input path of object storage service
US10942795B1 (en) 2019-11-27 2021-03-09 Amazon Technologies, Inc. Serverless call distribution to utilize reserved capacity without inhibiting scaling
US11188391B1 (en) 2020-03-11 2021-11-30 Amazon Technologies, Inc. Allocating resources to on-demand code executions under scarcity conditions
US11775640B1 (en) 2020-03-30 2023-10-03 Amazon Technologies, Inc. Resource utilization-based malicious task detection in an on-demand code execution system

Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634114A (en) 1993-11-18 1997-05-27 Intel Corporation Dynamic link library version negotiation
US5805899A (en) 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
US6006235A (en) * 1997-11-26 1999-12-21 International Business Machines Corporation Method and apparatus for invoking a stored procedure or a user defined interpreted language function in a database management system
US6154878A (en) 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US6332168B1 (en) 1995-09-28 2001-12-18 International Business Machines Corporation Method of, system for, and computer program product for providing a run time subsystem for run time libraries
US6347398B1 (en) * 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US6349408B1 (en) * 1998-03-23 2002-02-19 Sun Microsystems, Inc. Techniques for implementing a framework for extensible applications
US20020118220A1 (en) * 1999-05-07 2002-08-29 Philip Lui System and method for dynamic assistance in software applications using behavior and host application models
US6546554B1 (en) * 2000-01-21 2003-04-08 Sun Microsystems, Inc. Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer
US20030187929A1 (en) * 2001-03-09 2003-10-02 Pugh William A. Multi-version hosting of application services
US6654762B2 (en) * 1999-08-16 2003-11-25 International Business Machines Corporation Generating small footprint applications for mobile devices
US6658659B2 (en) 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
US20040019887A1 (en) 2002-07-25 2004-01-29 Sun Microsystems, Inc. Method, system, and program for loading program components
US6748591B1 (en) 2000-09-14 2004-06-08 International Business Machines Corporation Method, system, program, and data structures for loading programs into a runtime environment
US20040187105A1 (en) * 2003-01-06 2004-09-23 Brother Kogyo Kabushiki Kaisha Driver software installing system
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
US20060101468A1 (en) * 2004-10-25 2006-05-11 Microsoft Corporation Cooperative threading in a managed code execution environment
US20060200817A1 (en) 2005-03-04 2006-09-07 Microsoft Corporation Versioning support for drivers frameworks

Patent Citations (18)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5634114A (en) 1993-11-18 1997-05-27 Intel Corporation Dynamic link library version negotiation
US5805899A (en) 1995-07-06 1998-09-08 Sun Microsystems, Inc. Method and apparatus for internal versioning of objects using a mapfile
US6332168B1 (en) 1995-09-28 2001-12-18 International Business Machines Corporation Method of, system for, and computer program product for providing a run time subsystem for run time libraries
US6347398B1 (en) * 1996-12-12 2002-02-12 Microsoft Corporation Automatic software downloading from a computer network
US6006235A (en) * 1997-11-26 1999-12-21 International Business Machines Corporation Method and apparatus for invoking a stored procedure or a user defined interpreted language function in a database management system
US6349408B1 (en) * 1998-03-23 2002-02-19 Sun Microsystems, Inc. Techniques for implementing a framework for extensible applications
US6154878A (en) 1998-07-21 2000-11-28 Hewlett-Packard Company System and method for on-line replacement of software
US20020118220A1 (en) * 1999-05-07 2002-08-29 Philip Lui System and method for dynamic assistance in software applications using behavior and host application models
US6654762B2 (en) * 1999-08-16 2003-11-25 International Business Machines Corporation Generating small footprint applications for mobile devices
US6658659B2 (en) 1999-12-16 2003-12-02 Cisco Technology, Inc. Compatible version module loading
US6546554B1 (en) * 2000-01-21 2003-04-08 Sun Microsystems, Inc. Browser-independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer
US6748591B1 (en) 2000-09-14 2004-06-08 International Business Machines Corporation Method, system, program, and data structures for loading programs into a runtime environment
US20030187929A1 (en) * 2001-03-09 2003-10-02 Pugh William A. Multi-version hosting of application services
US6996832B2 (en) 2001-05-30 2006-02-07 Bea Systems, Inc. System and method for software component plug-in framework
US20040019887A1 (en) 2002-07-25 2004-01-29 Sun Microsystems, Inc. Method, system, and program for loading program components
US20040187105A1 (en) * 2003-01-06 2004-09-23 Brother Kogyo Kabushiki Kaisha Driver software installing system
US20060101468A1 (en) * 2004-10-25 2006-05-11 Microsoft Corporation Cooperative threading in a managed code execution environment
US20060200817A1 (en) 2005-03-04 2006-09-07 Microsoft Corporation Versioning support for drivers frameworks

Non-Patent Citations (3)

* Cited by examiner, † Cited by third party
Title
"Version Control with Shared Libraries," HP-UX Linker and Libraries User's Guide: HP 9000 Computers, Chapter 5 Creating and Using Libraries, © 1997 Hewlett-Packard Development Company, L.P., http://docs.hp.com/en/B2355-90655/ch05s08.html, [last accessed Dec. 26, 2007].
Eisenbach, Susan et al., "Keeping Control of Reusable Components," 2nd International working conference on component deployment, e-science Institute, Edinburgh, Scotland, May 2004, Springer-Verlag.
Whitechapel, Andrew, "Microsoft Visual Studio 2005 Tools for the 2007 Microsoft Office System Beta-Design," Sep. 2006, © 2006 Microsoft Corporation.

Cited By (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20140282457A1 (en) * 2013-03-13 2014-09-18 Alex C. Chow Systems And Methods For Embedded Shared Libraries In An Executable Image
US9104504B2 (en) * 2013-03-13 2015-08-11 Dell Products Lp Systems and methods for embedded shared libraries in an executable image
US9690444B1 (en) 2013-03-15 2017-06-27 EMC IP Holding Company LLC Custom help systems by runtime modification of generic help files
US20140337824A1 (en) * 2013-05-08 2014-11-13 Microsoft Corporation Out-of-band framework libraries within applications
US9009693B2 (en) * 2013-05-08 2015-04-14 Microsoft Corporation Out-of-band framework libraries within applications
US11561811B2 (en) 2014-09-30 2023-01-24 Amazon Technologies, Inc. Threading as a service
US10956185B2 (en) * 2014-09-30 2021-03-23 Amazon Technologies, Inc. Threading as a service
US11263034B2 (en) 2014-09-30 2022-03-01 Amazon Technologies, Inc. Low latency computational capacity provisioning
US11467890B2 (en) 2014-09-30 2022-10-11 Amazon Technologies, Inc. Processing event messages for user requests to execute program code
US11126469B2 (en) 2014-12-05 2021-09-21 Amazon Technologies, Inc. Automatic determination of resource sizing
US11360793B2 (en) 2015-02-04 2022-06-14 Amazon Technologies, Inc. Stateful virtual compute system
US11461124B2 (en) 2015-02-04 2022-10-04 Amazon Technologies, Inc. Security protocols for low latency execution of program code
US11132213B1 (en) 2016-03-30 2021-09-28 Amazon Technologies, Inc. Dependency-based process of pre-existing data sets at an on demand code execution environment
US11354169B2 (en) 2016-06-29 2022-06-07 Amazon Technologies, Inc. Adjusting variable limit on concurrent code executions
US11875173B2 (en) 2018-06-25 2024-01-16 Amazon Technologies, Inc. Execution of auxiliary functions in an on-demand network code execution system
US11146569B1 (en) 2018-06-28 2021-10-12 Amazon Technologies, Inc. Escalation-resistant secure network services using request-scoped authentication information
US11836516B2 (en) 2018-07-25 2023-12-05 Amazon Technologies, Inc. Reducing execution times in an on-demand network code execution system using saved machine states
US11099917B2 (en) 2018-09-27 2021-08-24 Amazon Technologies, Inc. Efficient state maintenance for execution environments in an on-demand code execution system
US11243953B2 (en) 2018-09-27 2022-02-08 Amazon Technologies, Inc. Mapreduce implementation in an on-demand network code execution system and stream data processing system
US11943093B1 (en) 2018-11-20 2024-03-26 Amazon Technologies, Inc. Network connection recovery after virtual machine transition in an on-demand network code execution system
US11010188B1 (en) 2019-02-05 2021-05-18 Amazon Technologies, Inc. Simulated data object storage using on-demand computation of data objects
US11861386B1 (en) 2019-03-22 2024-01-02 Amazon Technologies, Inc. Application gateways in an on-demand network code execution system
US11119809B1 (en) 2019-06-20 2021-09-14 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11714675B2 (en) 2019-06-20 2023-08-01 Amazon Technologies, Inc. Virtualization-based transaction handling in an on-demand network code execution system
US11190609B2 (en) 2019-06-28 2021-11-30 Amazon Technologies, Inc. Connection pooling for scalable network services
US11159528B2 (en) 2019-06-28 2021-10-26 Amazon Technologies, Inc. Authentication to network-services using hosted authentication information
US11119826B2 (en) 2019-11-27 2021-09-14 Amazon Technologies, Inc. Serverless call distribution to implement spillover while avoiding cold starts
US11714682B1 (en) 2020-03-03 2023-08-01 Amazon Technologies, Inc. Reclaiming computing resources in an on-demand code execution system
US11593270B1 (en) 2020-11-25 2023-02-28 Amazon Technologies, Inc. Fast distributed caching using erasure coded object parts
US11550713B1 (en) 2020-11-25 2023-01-10 Amazon Technologies, Inc. Garbage collection in distributed systems using life cycled storage roots
US11388210B1 (en) 2021-06-30 2022-07-12 Amazon Technologies, Inc. Streaming analytics using a serverless compute system

Also Published As

Publication number Publication date
US20080201568A1 (en) 2008-08-21

Similar Documents

Publication Publication Date Title
US8793676B2 (en) Version-resilient loader for custom code runtimes
US8336043B2 (en) Dynamic deployment of custom code
US11442746B2 (en) Dynamically loaded plugin architecture
US8448161B2 (en) Application tracking for application execution environment
US7930273B1 (en) Version management for application execution environment
US7694277B2 (en) Cross version customization of design environment
US7954087B2 (en) Template integration
EP2831726B1 (en) Dynamic plugin(s) for cloud application(s)
US7062764B2 (en) System and method for manipulating offline software
US8375381B1 (en) Management user interface for application execution environment
US6976037B1 (en) Method and systems for DLL/COM redirection
US9213559B2 (en) Method and device for publishing and implementing wireless application
US20080222160A1 (en) Method and system for providing a program for execution without requiring installation
US8522227B2 (en) Runtime activation and version selection
US20040088397A1 (en) System and method for management of software applications
JP5847734B2 (en) Declarative registration of extension points for virtualization
US20070169114A1 (en) Application suite installer with automatic detection of content and configurable options
JP2003521036A (en) Browser independent and automatic apparatus and method for receiving, installing and launching applications from a browser on a client computer
EP1654670A1 (en) Servicing a component-base software product
US7945921B2 (en) Cross application domain late binding to non-local types
CN111880987A (en) Dynamic monitoring method and device of application program, storage medium and electronic device
JP7454011B2 (en) Firmware publishing method for multiple binary images and electronic devices
RU2635891C2 (en) Installation mechanism and package format for parallelizable reliable installations
US8146109B2 (en) Version resiliency for a host application and custom code
US8181188B2 (en) Version resiliency for a host application and managed code

Legal Events

Date Code Title Description
AS Assignment

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:QUINN, THOMAS E.;COOK, RICHARD A.;SHNEERSON, MICHAEL;AND OTHERS;REEL/FRAME:019192/0400;SIGNING DATES FROM 20070321 TO 20070322

Owner name: MICROSOFT CORPORATION, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNORS:QUINN, THOMAS E.;COOK, RICHARD A.;SHNEERSON, MICHAEL;AND OTHERS;SIGNING DATES FROM 20070321 TO 20070322;REEL/FRAME:019192/0400

FEPP Fee payment procedure

Free format text: PAYOR NUMBER ASSIGNED (ORIGINAL EVENT CODE: ASPN); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

STCF Information on status: patent grant

Free format text: PATENTED CASE

AS Assignment

Owner name: MICROSOFT TECHNOLOGY LICENSING, LLC, WASHINGTON

Free format text: ASSIGNMENT OF ASSIGNORS INTEREST;ASSIGNOR:MICROSOFT CORPORATION;REEL/FRAME:034542/0001

Effective date: 20141014

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 4TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1551)

Year of fee payment: 4

MAFP Maintenance fee payment

Free format text: PAYMENT OF MAINTENANCE FEE, 8TH YEAR, LARGE ENTITY (ORIGINAL EVENT CODE: M1552); ENTITY STATUS OF PATENT OWNER: LARGE ENTITY

Year of fee payment: 8