Nombre:
Matricula:
Facilitador:
Materia:
Programación IV
Tema:
Cuestionario
RESPONDE EL SIGUIENTE CUESTIONARIO 3 DE PROGRAMACIÓN IV.
1) Describa las siguientes características y servicios que ofrece el CLR:
a) Modelo de programación consistente
El CLR ofrece un modelo de programación uniforme que permite a los
desarrolladores trabajar con diferentes lenguajes de programación bajo un mismo
entorno. Esto significa que los servicios básicos, como la gestión de memoria, el manejo
de excepciones y la seguridad, son consistentes independientemente del lenguaje
utilizado.
b) Modelo de programación sencilla
El CLR simplifica el desarrollo al encargarse de tareas complejas como la gestión de
memoria, la recolección de basura y la seguridad de tipos. Esto permite a los
desarrolladores centrarse en la lógica de negocio en lugar de preocuparse por detalles
técnicos de bajo nivel.
c) Eliminación del "infierno de las DLLS"
El CLR resuelve el problema conocido como "DLL Hell" (conflictos entre versiones de
bibliotecas compartidas) al utilizar un sistema de ensamblados. Cada ensamblado
incluye información sobre su versión, lo que permite que múltiples versiones de una
misma biblioteca coexistan sin conflictos.
d) Ejecución multiplataforma
El CLR, como parte de .NET, permite la ejecución de aplicaciones en diferentes
plataformas gracias a su diseño basado en un modelo de máquina virtual. Esto se logra
mediante la compilación intermedia (MSIL) y el uso de compiladores JIT (Just-In-
Time) específicos para cada plataforma.
e) Integración de lenguajes
El CLR permite que múltiples lenguajes de programación trabajen juntos de manera
fluida. Esto es posible gracias al Common Type System (CTS), que define un conjunto
común de tipos de datos y reglas para todos los lenguajes compatibles con .NET.
f) Gestión de memoria
El CLR incluye un recolector de basura (Garbage Collector) que administra
automáticamente la memoria, liberando los recursos no utilizados y evitando problemas
como fugas de memoria o referencias colgantes.
g) Seguridad de tipos
El CLR garantiza que el código respete las reglas de tipos definidas, evitando errores
como accesos indebidos a memoria o conversiones de tipos no válidas. Esto mejora la
estabilidad y seguridad de las aplicaciones.
h) Aislamiento de procesos
El CLR utiliza dominios de aplicación (Aplicación Domains) para aislar procesos y
evitar que errores en una parte de la aplicación afecten a otras. Esto proporciona un
entorno seguro y controlado para la ejecución del código.
Tratamiento de excepciones
El CLR proporciona un sistema unificado para el manejo de excepciones, lo que permite
capturar y gestionar errores de manera consistente en todos los lenguajes compatibles
con .NET.
1) Soporte multihilo
El CLR incluye soporte para programación multihilo, permitiendo que las aplicaciones
aprovechen los procesadores multinúcleo y ejecuten tareas concurrentes de manera
eficiente.
k) Distribución transparente
El CLR facilita la distribución de aplicaciones al empaquetar todo lo necesario en
ensamblados. Esto simplifica la implementación y asegura que las aplicaciones
funcionen correctamente en diferentes entornos.
1) Seguridad avanzada
El CLR incluye un modelo de seguridad basado en permisos que controla qué acciones
puede realizar el código en función de su origen y nivel de confianza. Esto protege el
sistema contra código malicioso o no autorizado.
m) Interoperabilidad con código antiguo
El CLR permite que las aplicaciones .NET interactúen con código no administrado
(como bibliotecas escritas en C o C++) mediante el uso de P/Invoke (Platform
Invocation Services) o COM Interop, asegurando compatibilidad con sistemas
heredados.
2) ¿Que es Microsoft Intermediate Language (MSIL)?
También conocido como Common Intermediate Language (CIL), es un conjunto de
instrucciones intermedias que son independientes de la plataforma. Estas instrucciones
son generadas por el compilador específico del lenguaje (como C# o [Link]) a partir
del código fuente. El MSIL no es código ejecutable directamente por el sistema
operativo; en su lugar, es compilado en tiempo de ejecución por el Just-In-Time (JIT)
compiler del CLR, que lo convierte en código nativo específico para la plataforma en la
que se ejecuta.
El MSIL incluye instrucciones para operaciones como:
Cálculos matemáticos.
Control de flujo (bucles, condicionales).
Acceso a memoria.
Manejo de excepciones.
3) ¿Qué es La cabecera de CLR?
Es una sección dentro de un archivo ejecutable (Portable Executable o PE) que contiene
información esencial para que el Common Language Runtime (CLR) pueda ejecutar el
programa. Esta cabecera incluye detalles como:
La ubicación de las tablas de metadatos.
Información sobre los ensamblados y módulos.
Indicadores para el JIT compiler y otros servicios del CLR.
4) ¿Qué es Metadatas?
Son información estructurada que describe los elementos de un programa, como clases,
métodos, propiedades, y dependencias. En el contexto de .NET, los metadatos son
generados automáticamente por el compilador junto con el código MSIL y se almacenan
en el ensamblado (archivo PE). Estos datos permiten que el CLR entienda y administre
el programa durante su ejecución. Algunos ejemplos de lo que incluyen los metadatos:
Información sobre las clases y sus miembros (métodos, propiedades, etc.).
Dependencias de ensamblados.
Atributos personalizados.
Información de seguridad.
5) ¿Que definen los siguientes módulos de metadatos:
a) ModuleDef
Es un módulo de metadatos que describe el ensamblado o módulo en su conjunto.
Contiene información general sobre el módulo, como:
Su nombre.
La versión del ensamblado.
Información sobre las dependencias externas.
Este módulo actúa como el punto de entrada para los metadatos y organiza la estructura
general del ensamblado.
b) TypeDef
Define los tipos que existen dentro del ensamblado, como clases, estructuras, interfaces,
enumeraciones, etc. Incluye información como:
El nombre del tipo.
Su visibilidad (pública, privada, etc.).
La jerarquía de herencia (si hereda de otra clase o implementa interfaces).
Los métodos, campos y propiedades asociados al tipo.
El TypeDef es esencial para describir cómo están organizados los elementos del
programa.
c) Method Def
Describe los métodos definidos dentro de un tipo. Contiene información como:
El nombre del método.
Su firma (tipos de parámetros y valor de retorno).
Su visibilidad (público, privado, protegido, etc.).
La dirección del código MSIL asociado al método.
Este módulo permite al CLR identificar y ejecutar los métodos correctamente.
d) ParamDef
Describe los parámetros de un método. Incluye información como:
El nombre del parámetro.
Su tipo de datos.
Si es un parámetro de entrada, salida o ambos.
Valores predeterminados (si los tiene).
Este módulo es importante para garantizar que los métodos se llamen con los
argumentos correctos.
e) Field Def
Describe los campos (variables miembros) definidos dentro de un tipo. Contiene
información como:
El nombre del campo.
Su tipo de datos.
Su visibilidad (público, privado, etc.).
Si es estático o de instancia.
El FieldDef permite al CLR gestionar los datos asociados a los tipos.