Application Domain

A boundary that the common language runtime establishes around objects created within the same application scope (that is, anywhere along the sequence of object activations beginning with the application entry point). Application domains help isolate objects created in one application from those created in other applications so that run-time behavior is predictable. Multiple application domains can exist in a single process [MSDN07].

Application Framework

Application Frameworks aim to provide a full range of functionality typically needed in an application. This functionality usually involves things like a GUI, documents, databases, etc [GB01].


A collection of one or more files that are versioned and deployed as a unit. An assembly is the primary building block of a .NET Framework application. All managed types and resources are contained within an assembly and are marked either as accessible only within the assembly or as accessible from code in other assemblies. Assemblies also play a key role in security. The code access security system uses information about the assembly to determine the set of permissions that code in the assembly is granted [MSDN07].

Binary compatibility

A core principle of component-oriented programming. It allows exchanging compatible components (i.e., binary building blocks) without the need of recompiling and redeploying the clients [Löwy05].

Common Language Runtime

The engine at the core of managed code execution. The runtime supplies managed code with services such as cross-language integration, code access security, object lifetime management, and debugging and profiling support [MSDN07].


A component represents a modular part of a system that encapsulates its contents and whose manifestation is replaceable within its environment. A component defines its behavior in terms of provided and required interfaces. As such, a component serves as a type, whose conformance is defined by these provided and required interfaces [OMG07, p. 146].


A mechanism for manipulating host application objects or extending host functionality, sometimes referred to as automation. Generally made available via an object model published as part of a host’s SDK [GK07].


A set of cooperating classes that makes up a reusable design for a specific class of software. A framework provides architectural guidance by partitioning the design into abstract classes and defining their responsibilities and collaborations. A developer customizes the framework to a particular application by subclassing and composing instances of framework classes [GHJV95, p. 360].

Intermediate Language (IL)

A language used as the output of a number of high-level language compilers (C# compiler, VB .NET compiler, etc.) and as the input to a Just-In-Time (JIT) compiler. The common language runtime includes a JIT compiler for converting IL to native code [MSDN07].

Just-In-Time (JIT) compiler

In reference to the .NET framework it means the compilation that converts intermediate language (IL) into machine code at the point when the code is required at run time [MSDN07].

Private Assembly

An assembly that is available only to clients in the same directory structure as the assembly [MSDN07].


The process of communication between different operating system processes, regardless of whether they are on the same computer. The .NET Framework remoting system is an architecture designed to simplify communication between objects living in different application domains, whether on the same computer or not, and between different contexts, whether in the same application domain or not [MSDN07].


The term service is highly overloaded in computer science. In this thesis it has the same meaning as component. See Component in the glossary for more information.