Isolating assembly versions for binding to application programs
First Claim
1. A computer-implemented method for allowing a software application to run using a specified version of one or more shared assemblies, wherein the specified version of the one or more shared assemblies used in the application is not compiled in the executable files of the application, the method comprising:
- accessing a manifest, the manifest comprising a software data file including metadata describing applications'"'"' dependencies on assembly versions, the manifest being stored in non-volatile storage and being associated with an application that is configured to load specified versions of one or more assemblies upon initiation;
building an activation context based on the accessed manifest, wherein the activation context comprises a table of contents that maps global, version independent names to a specified version of at least one of the one or more assemblies that are indicated in the manifest;
loading the activation context into computer system memory in a persistable binary form to provide accelerated access to the activation context;
receiving a request from an application to load an assembly from among a plurality of assemblies located in a same directory;
consulting information in the activation context to identify a specified version of the requested assembly without referring to the received manifest, in response to receiving the request to load the assembly; and
providing the specified version of the assembly for use by the application.
2 Assignments
0 Petitions
Accused Products
Abstract
An infrastructure that allows applications to run with specified versions of dependent assemblies, wherein each assembly may exist and run side-by-side on the system with other versions of the same assembly being used by other applications. An application provides a manifest to specify any desired assembly versions on which it is dependent. Similarly, each assembly may have an assembly manifest that specifies the versions of assemblies on which it is dependent. During an initialization phase, an activation context is created for the application, based on the manifests, to map version independent names to a particular assembly version maintained on the system. While the application is in a running phase, for any globally named object that the application wants created, the activation context is accessed to locate the application'"'"'s or assembly'"'"'s manifest-specified version. The manifests and activation context constructed therefrom thus isolate an application from assembly version changes.
68 Citations
39 Claims
-
1. A computer-implemented method for allowing a software application to run using a specified version of one or more shared assemblies, wherein the specified version of the one or more shared assemblies used in the application is not compiled in the executable files of the application, the method comprising:
-
accessing a manifest, the manifest comprising a software data file including metadata describing applications'"'"' dependencies on assembly versions, the manifest being stored in non-volatile storage and being associated with an application that is configured to load specified versions of one or more assemblies upon initiation; building an activation context based on the accessed manifest, wherein the activation context comprises a table of contents that maps global, version independent names to a specified version of at least one of the one or more assemblies that are indicated in the manifest; loading the activation context into computer system memory in a persistable binary form to provide accelerated access to the activation context; receiving a request from an application to load an assembly from among a plurality of assemblies located in a same directory; consulting information in the activation context to identify a specified version of the requested assembly without referring to the received manifest, in response to receiving the request to load the assembly; and providing the specified version of the assembly for use by the application. - View Dependent Claims (2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15)
-
-
16. A computer-implemented method for allowing a software application to run using a specified version of one or more shared assemblies, wherein the specified version of the one or more shared assemblies used in the application is not compiled in the executable files of the application, the method comprising:
-
accessing a manifest, the manifest comprising a software data file including metadata describing applications'"'"' dependencies on assembly versions, the manifest being stored in non-volatile storage and being associated with an application that is configured to load specified versions of one or more assemblies upon initiation building an activation context based on the accessed manifest, wherein the activation context comprises a table of contents that maps global, version independent names to a specified version of at least one of the one or more assemblies that are indicated in the manifest, the activation context identifying dependency information; loading the activation context into computer system memory in a persistable binary form to provide accelerated access to the activation context; receiving a request from an application to load an assembly from among a plurality of assemblies located in a same directory; interpreting the dependency information associated with the application, the dependency information identifying at least one specified version of an assembly without referring to the received manifest, in response to the request to load the assembly; and associating with the application at least one mapping based on the dependency information, each mapping relating a version independent assembly name that the application may provide to a version specific assembly identified in the dependency information. - View Dependent Claims (17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31)
-
-
32. A system in a computing environment, comprising:
-
an accessing mechanism configured to access a manifest, the manifest comprising a software data file including metadata describing applications'"'"' dependencies on assembly versions, the manifest being stored in non-volatile storage and being associated with an application that is configured to load specified versions of one or more assemblies upon initiation a building mechanism configured to build an activation context based on the accessed manifest, wherein the activation context comprises a table of contents that maps global, version independent names to a specified version of at least one of the one or more assemblies that are indicated in the manifest, the activation context identifying dependency information; a loading mechanism configured to load the activation context into computer system memory in a persistable binary form to provide accelerated access to the activation context; a receiving mechanism configured to receive a request from an application to load an assembly from among a plurality of assemblies located in a same directory; an interpretation mechanism configured to interpret dependency data associated with the application, the dependency data corresponding to at least one specified assembly version on which the application depends without referring to the received manifest, in response to the request to load the assembly; an associating mechanism configured to associate with the application at least one mapping based on the dependency information, each mapping relating a version independent assembly name that the application may provide to a version specific assembly identified in the dependency information; and a version matching mechanism configured to access the activation context to relate a version independent request from the application to a version specific assembly. - View Dependent Claims (33, 34, 35, 36, 37, 38, 39)
-
Specification