• Share
  • Email
  • Embed
  • Like
  • Save
  • Private Content
Introducción - Arquitectura .NET
 

Introducción - Arquitectura .NET

on

  • 1,594 views

 

Statistics

Views

Total Views
1,594
Views on SlideShare
1,591
Embed Views
3

Actions

Likes
0
Downloads
0
Comments
0

1 Embed 3

http://www.slideshare.net 3

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Introducción - Arquitectura .NET Introducción - Arquitectura .NET Presentation Transcript

    • MOTOR DE EJECUCIÓN COMÚN DE LENGUAJES (COMMON LANGUAGE RUNTIME - CLR)
      Es la máquina virtual que administra la ejecución del código. Es decir estamos hablando de una biblioteca utilizada por cada aplicación .NET durante su ejecución.
      El CLR comprende un motor de ejecución, un recolector de basura, un compilador justo a tiempo (JIT), un sistema de seguridad, y lo fundamental de la Plataforma .NET.
    • Cuando se compila el código escrito, el compilador lo traduce a un código intermedio denominado MSIL (Microsoft Intermediate Language) o simplemente IL, correspondiente a un lenguaje independiente de la unidad central de proceso. Esto quiere decir que el código generado puede transportarse a cualquier plataforma (Intel, Motorola, etc.) que tenga instalada una máquina virtual de .NET y ejecutarse. Este código MSIL se encuentra dentro del assembly (.exe o .dll).
      CÓDIGOINTERMEDIO(assembly)
      CÓDIGOFUENTE
      COMPILADOR
    • Un ensamblado (assembly) es la unidad fundamental de construcción de una aplicación .NET. En un ensamblado se diferencian básicamente dos partes: el manifiesto y el código MSIL. El manifiesto incluye los metadatos que describe completamente los componentes en el ensamblado (versión, tipos, dependencias, etc.).Antes de que el código intermedio pueda ser ejecutado, debe ser convertido por un compilador JIT (Just in Time) a código nativo, que es el código especifico de la UCP del ordenador sobre el que se ejecuta el JIT.
      CÓDIGOMSIL
      CÓDIGONATIVO
      Máquina Virtual
    • La máquina virtual no convierte todo el código MSIL a código nativo y después lo ejecuta, sino que lo va convirtiendo bajo demanda con el fin de reducir el tiempo de ejecución; es decir, cada método es compilado a código nativo cuando es llamado por primera vez para ser ejecutado, este código obtenido es guardado para ser accedido en las siguientes llamadas. Este código nativo se denomina “código administrado” si cumple con la especificación CLS, en otro caso recibe el nombre de “código no administrado”.
      El CLR proporciona la infraestructura necesaria para que el código administrado sea ejecutado. Provee de servicios como recolector de basura, interoperabilidad con código no administrado, etc.
      El código no administrado es código creado sin tener en cuenta el CLS (especificación del lenguaje común. Este código se ejecuta sin los requisitos mínimos del CLR (sin recolector de basura, depuración limitada, etc.).
    • SISTEMA COMÚN DE TIPOS (COMMON TYPE SYSTEM - CTS)
      Es el conjunto de reglas que han de seguir las definiciones de tipos de datos para que el CLR las acepte.
      El CTS define todos los tipos predefinidos que están disponibles en el Lenguaje Intermedio, de forma que todos los lenguajes que generen código para .NET producirán en última instancia código basado en esos tipos.
    • COMMON TYPE SYSTEM - CTS
      C#
      IL
      int
      Lenguaje
      Intermedio
      Int32
      VB.NET
      Integer
    • COMMON TYPE SYSTEM - CTS
      Estructura Jerárquica del Sistema Común de Tipos:
      Type
      Tipos-valor
      Tipos-referencia
      Tipos-valor predefinidos
      Tipos-valor predefinidos por el usuario
      Tipos-punteros
      Tipos-interfaces
      Tipos autodescriptivos
      Enumeraciones
      Clases
      Arrays
      Tipos-referencia definidos por el usuario
      Tipos-valor enmarcados
      Delegados
    • ESPECIFICACIÓN COMÚN DE LENGUAJES (CLS)
      Trabaja conjuntamente con el CTS para asegurar la interoperabilidad entre lenguajes.
      Es un conjunto de normas mínimas establecidas que todos los compiladores orientados a .NET deben soportar.
      Es completamente aceptable escribir código que no cumpla con los requisitos del CLS. Si esto ocurre no se garantiza que el código compilado sea totalmente interoperable con código escrito en otros lenguajes.
    • TIPOS-VALOR Y TIPOS-REFERENCIA
      TIPO REFERENCIA
      • Almacena sólo una referencia al valor.
      • Se almacenan en una zona de memoria conocida como memoria dinámica controlada (managed heap).
      TIPO VALOR
      Almacena su valor de manera directa.
      Se almacenan en una zona de memoria llamada pila (stack).
    • THREAD STACK
      Espacio de memoria asociado al hilo de ejecución.
      Es la pila donde va progresando nuestro código.
      Aquí se van "apilando" las llamadas a funciones y las variables locales y parámetros, de forma que el puntero de ejecución va cargando, ejecutando y liberando métodos con sus respectivas variables.
      No se pueden compartir ese espacio entre varios hilos, esta únicamente ligado un hilo de ejecución.
      Como decía es el espacio de memoria asociado al hilo de ejecución, por lo que es bastante rápido.
    • THREAD STACK
      Está limitado a un máximo de 1MByte por hilo.
      Si se intenta superar el límite de memoria se obtiene un StackOverflowException.
      Aquí se almacenan tipos de los cuales se conoce su tamaño antes de su inicialización (tipos por valor) y referencias a objetos del managed heap, que contienen la dirección de memoria del objeto allí ó un nulo si no referencian nada.
      El proceso de liberar memoria de este espacio se realiza de forma determinística por el puntero de ejecución.
    • MANAGED HEAP
      Espacio de memoria asociado al proceso.
      Compartido entre los hilos que lo forman (si hubiese varios).
      Accedido mediante punteros (dirección/indirección) lo que lo hace más lento que el thread stack, pero permite ser accedido desde otros hilos.
      No tiene una limitación en su tamaño que no sea la del hardware.
    • MANAGED HEAP
      Normalmente almacena tipos por referencia y tipos por valor cuando tienen una relación de composición con un tipo por referencia.
      Si se supera el máximo de memoria disponible se obtiene un OutOfMemoryException.
      El proceso de liberar memoria de este espacio se realiza de forma no determinística por el recolector de basura (GarbageCollector).