Execution and Deployment Models


Assemblies are the unit of deployment for one or more modules. They are not a packaging mechanism and are not intended to be an "application," although an application will consist of one or more assemblies. An assembly is defined by a manifest, which is metadata that lists all of the files included and directly referenced in the assembly, what types are exported and imported by the assembly, versioning information, and security permissions that apply to the whole assembly.

Although the compilers capture the versioning and security information, it is the implementation of the VES that allows users to set policies that determine which versions are to be used, and how security is implemented. An assembly has a security boundary that grants the entire assembly some level of security permission; e.g., the entire assembly may write to a certain part of the disk, and methods can demand proof that everyone in the call chain has permission to perform a given operation.

The notion of "application" is not part of this standard. It is up to the implementer to determine how applications relate to assemblies. The standard does, however, encompass the idea of an application domain.

A process may have more than one application domain. Assemblies are loaded into application domains. Information about the available classes, the associated code, and the static variables is housed in that application domain.

The execution model is that compilers generate the Common Intermediate Language (CIL). How and when the CIL is compiled to machine code are not specified as part of the standard, and those determinations rest with the implementation of the VES. The most frequently used model is just-in-time (JIT) compilers that generate native code as it is needed. Install-time compilers are another option, and it is also possible to implement an interpreter, rather than a compiler, for the CIL. Native unmanaged code would go directly to the VES. Figure 1-4 illustrates the execution model.

Figure 1-4. Execution Model

graphics/01fig04.gif

Chapter 6 of this book contains Partition III, which includes a complete reference to CIL instructions.



The Common Language Infrastructure Annotated Standard (Microsoft. NET Development Series)
The Common Language Infrastructure Annotated Standard (Microsoft. NET Development Series)
ISBN: N/A
EAN: N/A
Year: 2002
Pages: 121

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net