Sunteți pe pagina 1din 5

CLR 1

Common Language Runtime (CLR)

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.

Versionamiento de las DLL

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.

Componentes del CLR

• Soporte de librería de clases: integra el código con el motor de ejecución que soporta las

librerías de clase del .NET Framework.

• Soporte de hilos: provee clases e interfases para hacer posible la programación multi-hilos

(varios procesos ejecutándose simultáneamente).

• Empaquetador COM: provee marshaling (conversión de datos y mensajes) desde y hacia

objetos COM (Component Object Model)

• Chequeador de tipos: no permite conversiones inseguras o variables no inicializadas. El MSIL

(Microsoft Intermediate Language) puede ser verificado para garantizar tipos seguros.

• Administrador de excepciones: provee un manejo estructurado de errores, el cual está

integrado al manejo estructurado de errores de Microsoft Windows (SEH)

• 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.

• Motor de Depuración: permite depurar aplicaciones y rastrear la ejecución del código.

Ing. Consuelo Del Castillo Castro


CLR 2

• Compilador MSIL a Nativo: convierte MSIL a lenguaje nativo a través de una compilación

“Justo en el momento” (JIT: Just In Time)

• 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

objetos. Es multiproceso y escalable.

• Cargador de clases: maneja la metadata, así como el cargado de las clases en memoria.

Modelo de Compilación y Ejecución

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

Common Type System (Sistema de tipos común)

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:

Ing. Consuelo Del Castillo Castro


CLR 3

• Establece un marco de trabajo que permite la integración de lenguajes, tipos seguros y un

amplio desempeño en la ejecución del código.


• Provee un modelo orientado a objetos que soporta una completa implementación para muchos
lenguajes de programación.
• Define las reglas que el lenguaje debe seguir, el cual ayuda a asegurar que los objetos escritos
en diferentes lenguajes puedan interactuar entre sí.

El CTS establece dos categorías generales de tipos:

• 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))

Common Language Specification (Especificación de Lenguaje Comú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.

Beneficios del Soporte de Múltiples Lenguajes

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.

CONSTRUCCIÓN EVALUACIÓN Y DISTRIBUCIÓN

Ing. Consuelo Del Castillo Castro


CLR 4

Microsoft Build Engine

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

• Diseñador de clases: el Diseñador de clases permite visualizar sistemas y aplicaciones.


Aunque el usuario diseña los tipos de clase, los miembros y los métodos, el Diseñador de clases
genera el código fuente correspondiente.

• Herramienta de prueba de objetos: cuando codifique, puede utilizar la Herramienta de


prueba de objetos para probar rápidamente .NET Framework o las aplicaciones de Visual J#.

(Estas características no están disponibles en las ediciones Express)

Distribución

• ClickOnce Implementación: la implementación ClickOnce permite implementar aplicaciones


de actualización automática para Windows que pueden instalarse y ejecutarse tan fácilmente
como las aplicaciones Web. También pueden implementarse aplicaciones de línea de comandos
y de cliente de Windows. Hay un nuevo comando Publicar proyecto en los menús Proyecto. Para
obtener más información, vea Implementación ClickOnce.

• 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.

• Implementación de Windows Installer: las mejoras en los proyectos de instalación e


implementación incluyen la posibilidad de elegir entre una instalación por usuario o por equipo,
compatibilidad con implementaciones de 64 bits e implementación en servidores Web que
alojen varios sitios Web.

Fuente:
Developing Microsoft® ASP.NET Web Applications Using Visual Studio® .NET
MSDN Training. Microsoft Corp.

Ing. Consuelo Del Castillo Castro


CLR 5

Developing Windows-Based Applications with Microsoft Visual Basic .NET And


Microsoft Visual C# .NET
MCAD/MCSD Self-Paced Training Kit

Ing. Consuelo Del Castillo Castro

S-ar putea să vă placă și