The Common Language Runtime (CLR) is the foundation upon
which the Microsoft .NET strategy is built. The CLR provides an execution
environment that manages running code and provides services that make software
development easier. In order to start running managed code in a process, the
CLR must be loaded and initialized. The host is responsible for loading the
CLR. Most hosts consist of both unmanaged and managed code.
The unmanaged code is responsible for loading the CLR into a
process and converting the program into managed code.
The managed portion of the host is responsible for creating and
managing the application domains.
There are mainly 2 reasons for hosts to have managed code
and unmanaged code. The primary reason is a performance issue. There is a
performance associated with calling a managed code from unmanaged code or vice
versa. Hence, it is a better to call the unmanaged code and then go ahead with
managed code (instead of transitioning from unmanaged host code to managed user
code). It is also easy to implement/manage.
These are some of the hosts:
SQL Server 2005