Documente Academic
Documente Profesional
Documente Cultură
Es el componente que administra la ejecución en .NET Framework. Provee servicios tales como código
seguro y resuelve el problema de versiones de las librerías de enlace dinámico (DDL).
Maneja los hilos de una aplicación y el aislamiento de memoria para las aplicaciones, lo que permite que
las fallas de una aplicación no comprometan la normal ejecución de otras aplicaciones sobre el mismo
entorno. Cuando los objetos no están siendo utilizados por una aplicación .NET, este componente provee
el “recolector de basura” (Garbage Collector) que libera la memoria que ha sido utilizada por estos
objetos.
El CLR asegura además que una aplicación .NET se ejecute de la manera apropiada, provee seguridad de
tipos y controla conversiones inseguras, variables no inicializadas, indexación de arreglos fuera de los
límites, entre otros. El CLR también administra el control de excepciones para las aplicaciones de manera
mucho más eficiente.
Antes del .NET Framework, las aplicaciones compartían archivos DLL. Si una aplicación necesitaba una
nueva versión de una DLL, ésta se actualizaba durante la instalación de la aplicación o de manera
manual utilizando el comando regsvr32. Como resultado de esta actualización, otros programas que
hacían uso de esa DLL ya no funcionaban apropiadamente. Este “versionamiento” de las DLL se conocía
como “Infierno de las DLLs”
Con el advenimiento del CLR, la versión es parte de la identidad de la DLL. Si una aplicación requiere
una versión particular de una DLL, es posible especificar la versión a utilizar en la aplicación. El CLR
garantiza que la versión correcta de la DLL está disponible para la aplicación. Así, el CLR permite que
múltiples versiones de una DLL coexistan y se ejecuten simultáneamente.
• Soporte de librería de clases: integra el código con el motor de ejecución que soporta las
• Soporte de hilos: provee clases e interfases para hacer posible la programación multi-hilos
(Microsoft Intermediate Language) puede ser verificado para garantizar tipos seguros.
• Motor de seguridad: provee seguridad basada en evidencias que está a su vez basada en el
origen del código y el usuario. Una evidencia es la información que el CLR utiliza para tomar
una decisión basada en políticas de seguridad. La evidencia indica al CLR que el código tiene
características particulares.
• Compilador MSIL a Nativo: convierte MSIL a lenguaje nativo a través de una compilación
• Administrador de Código: Maneja la ejecución del código. El código manejado es aquel que
es ejecutado por el CLR en lugar de ser manejado por el sistema operativo. Este servicio da la
ventaja de proveer una plataforma uniforme y comportamiento independiente del lenguaje.
• Recolector de Basura: Provee una manejo automático del tiempo de vida de todos los
• Cargador de clases: maneja la metadata, así como el cargado de las clases en memoria.
Cada lenguaje compatible con .NET provee su propio compilador a MSIL. Luego de que el código es
compilado a MSIL, el CLR compila el MSIL a código nativo y ejecuta la aplicación.
El MSIL es manejado por el CLR. El CLR usa un Compilador JIT para compilar el MSIL a código nativo.
Luego de que la aplicación es compilada “justo en el momento”, ésta es conservada para evitar
posteriores compilaciones cuando vuelva a requerirse su uso.
Luego de que la aplicación es compilada, el CLR ejecuta la aplicación y genera el resultado respectivo
hacia el cliente.
Cuando se compila a código manejado, el compilador transfiere el código original a MSIL, el cual es un
conjunto de instrucciones independiente del CPU y que puede ser convertido con mayor eficiencia a
código nativo. El MSIL incluye instrucciones para cargar, almacenar, inicializar e invocar a métodos y
objetos, así como instrucciones para operaciones aritméticas y lógicas, control de flujo, acceso directo a
memoria, manejo de errores y otras operaciones. Antes de que el código sea ejecutado, el MSIL es
convertido al código específico para el CPU sobre el cual se va a ejecutar. Esta conversión la lleva a cabo
un Compilador “Just In Time” (Justo en el momento). Dado que el CLR provee uno o más JIT Compilers
para cada arquitectura de CPU, el mismo conjunto de MSIL puede ser compilado y ejecutado sobre
cualquier equipo.
Cuando un compilador produce MSIL, también produce metadata. La metadata describe los tipos en el
código, incluyendo la definición de cada tipo, la firma de cada miembro del tipo, los miembros que son
referenciados por el código, y otra información que el CLR utilizará para ejecutar la aplicación. El MSIL y
la metadata son contenidos en un archivo “EXE Portable” (PE). La presencia de la metadata en el archivo
permite que el MSIL se describa a sí mismo, esto significa que no es necesario utilizar interfases de
definición de lenguaje. El CLR localiza y extrae la metadata desde el archivo cuando sea necesario
durante la ejecución.
Soporte Multilenguaje
El CTS define como los tipos son declarados, usados y manejados por el CLR. Es una parte fundamental
de la integración de lenguajes. El CTS ejecuta las siguientes funciones:
• Tipos de Valor: contienen directamente sus datos. Sus instancias son colocadas en la pila o en
estructuras (enumeraciones, tipos definidos por el usuario, implementaciones del CLR).
• Tipos de Referencia: almacenan una referencia hacia la dirección en memoria del valor, y
localizada en el Heap (montón). Pueden ser tipos que se auto describen, punteros o interfaces
(clases definidas por el usuario, tipos encapsulados y delegados (punteros a función))
Conjunto básico de características de lenguaje necesaria para muchas aplicaciones. Las reglas del CLS
define un subconjunto del CTS; esto es, todas las reglas que se aplican al CTS también se aplican al
CLS, excepto aquellas reglas que son definidas en el CLS. El CLS hace posible la interoperabilidad entre
lenguajes por definir un conjunto de características que los desarrolladores encuentran en una amplia
variedad de lenguajes. Entre las características incluidas por el CLS tenemos: visibilidad, miembros
globales, palabras claves, sobrecarga, eventos, punteros, etc.
Debido a que el .NET Framework soporta desarrollos con múltiples lenguajes, se obtienen los siguientes
beneficios:
• Los módulos son reutilizables. Un módulo escrito en un lenguaje puede ser utilizado en una
aplicación escrita en un lenguaje diferente.
• Las bibliotecas de clases son las mismas para todos lo lenguajes. Todos los lenguajes utilizan el
mismo modelo de objetos, el cual es provisto por las bibliotecas de clase del .NET Framework.
• La flexibilidad de los lenguajes permite que pueda escogerse el lenguaje correcto para una
determinada tarea. Por ejemplo, Perl es la mejor opción cuando desean manejarse expresiones
regulares, mientras que Cobol es el lenguaje preferido para aplicaciones de negocio. Esta
flexibilidad no sólo permite escoger el lenguaje para los nuevos proyectos, también permite
actualizar las aplicaciones existentes con nuevas tecnologías, sin reescribir toda la aplicación en
el nuevo lenguaje.
• Todos los lenguajes son soportados por el .NET Framework con casi el mismo desempeño.
Además, todos los lenguajes basados en .NET se compilan a MSIL, y todo el código MSIL a
código nativo.
Microsoft Build Engine (MSBuild) es la nueva plataforma de generación de Microsoft y Visual Studio.
MSBuild presenta un nuevo formato de archivo de proyecto basado en código XML que es sencillo de
comprender, fácil de ampliar y totalmente compatible con Microsoft. El formato de archivo de proyecto
de MSBuild permite a los desarrolladores describir completamente qué elementos se han de generar y
cómo han de generarse con distintas plataformas y configuraciones. Además, el formato de archivo de
proyecto permite a los desarrolladores crear reglas reutilizables que se pueden factorizar en archivos
independientes para que las generaciones se ejecuten de igual forma en los distintos proyectos del
producto. El proceso de generación de MSBuild se define mediante unidades atómicas de generación,
denominadas tareas. Puede crear sus propias tareas en cualquier lenguaje .NET para ampliar el proceso
de generación. Los proyectos de Visual Studio ahora se almacenan en el formato de archivo de proyecto
de MSBuild, lo que proporciona la posibilidad de personalizar el proceso de generación de Visual Studio.
MSBuild es completamente transparente en el modo de procesar y generar el software, permitiendo a los
desarrolladores generar proyectos en equipos sin Visual Studio.
Pruebas
Distribución
• Requisitos previos de las secuencias de inicio: ahora se pueden incluir componentes del
sistema necesarios, tales como la versión en tiempo de ejecución de .NET Framework, como
parte de un proyecto de implementación o de la implementación ClickOnce. Para obtener más
información, vea Requisitos previos de implementación.
Fuente:
Developing Microsoft® ASP.NET Web Applications Using Visual Studio® .NET
MSDN Training. Microsoft Corp.