53
La plataforma Microsoft .NET

01.- La Plataforma.net

  • Upload
    aravina

  • View
    18

  • Download
    3

Embed Size (px)

Citation preview

La plataforma Microsoft .NET

La plataforma Microsoft .NET

¿Qué es la plataforma Microsoft .NET?

Conjunto de tecnologías y componentes dispersos, que en algunos casos ya existían, que Microsoft ha integrado en una plataforma de desarrollo y ejecución de aplicaciones consistente.

Facilita el desarrollo y ejecución de aplicaciones usando tecnologías nativas de Microsoft.

Cambia el rumbo inicial de Microsoft, moviendo las aplicaciones de ser centradas en el cliente a ser centradas en el servidor.

Orientada a un nuevo modelo de computación distribuida en la red.

Red que está pasando de ser centrada en las personas y basada en los contenidos, a estar centrada en las aplicaciones y basada en los servicios.

La plataforma Microsoft .NET

La plataforma Microsoft .NET

¿Qué es la plataforma Microsoft .NET?

Respuesta de Microsoft al creciente mercado de los negocios en entornos Web, como competencia a la plataforma Java de Sun Microsystems.

Ofrece una marco de trabajo (framework) rápido, seguro y robusto, para desarrollar aplicaciones –o soluciones–.

Permite una integración más rápida y ágil entre empresas.

Permite un acceso más simple y universal a todo tipo de información desde cualquier tipo de dispositivo.

La plataforma Microsoft .NET

La plataforma Microsoft .NET

¿Qué es la plataforma Microsoft .NET?

La plataforma Microsoft .NET

La plataforma Microsoft .NET

Componente core de la plataforma Microsoft .NET

Entorno de ejecución y desarrollo de aplicaciones en la plataforma Microsoft .NET

Componente software que se debe instalar en aquellas máquinas que deseen EJECUTAR y/o DESARROLLAR aplicaciones mediante la plataforma Microsoft .NET

Incluido de forma nativa en WS2008, Windows Vista y Windows 7.

Componentes de .NET Framework: CLR - Common Language Runtime

.NET Framework Class Library

.NET Framework

La plataforma Microsoft .NET

Componentes de .NET Framework:

.NET Framework

La plataforma Microsoft .NET

.NET Framework es un entorno multilenguaje.

Soporta múltiples lenguajes de programación.

En la actualidad existen más de 20 lenguajes de programación compatibles con .NET Framework: C# , Visual Basic, JScript, J#, COBOL, Fortran, Haskell, Eiffel,

Pascal, Perl, Python, SmallTalk,...

CLS (Common Languague Specification): conjunto de normas mínimas que un lenguaje de programación debe cumplir para ser compatible con .NET Framework.

Componentes escritos en lenguajes distintos pueden compartir funcionalidad entre ellos de forma transparente.

Interoperabilidad de lenguajes

La plataforma Microsoft .NET

.NET Framework es un entorno multilenguaje.

Interoperabilidad de lenguajes

La plataforma Microsoft .NET

Programación de aplicaciones con Visual Studio .NET

9

Interoperabilidad de lenguajes

• Java: un lenguaje en múltiples plataformas

La plataforma Microsoft .NET

Programación de aplicaciones con Visual Studio .NET

10

Interoperabilidad de lenguajes

• ¿Cuál es el siguiente paso? (=>MONO)

La plataforma Microsoft .NET

.NET Framework es un entorno multilenguaje:

Interoperabilidad de lenguajes

La plataforma Microsoft .NET

Entorno común de ejecución de aplicaciones .NET que se instala sobre el SO.

Componente principal o núcleo del .NET Framework.

También conocido como ‘entorno gestionado o administrado’

Procesador “virtual” que se encarga de ejecutar aplicaciones en la plataforma Microsoft .NET.

Una aplicación .NET NO se ejecuta nunca directamente sobre el procesador o sistema operativo; sino que se ejecuta sobre el CLR.

Proporciona un entorno de ejecución de aplicaciones robusto y seguro.

Common Language Runtime (CLR)

La plataforma Microsoft .NET

Proporciona automáticamente una serie de servicios: Liberación del espacio ocupado en memoria.

Seguridad del código que se ejecuta.

Gestión de excepciones.

Gestión de threads.

Depuración de código.

….

Common Language Runtime (CLR)

La plataforma Microsoft .NET

Biblioteca de clases de .NET Framework

Proporciona una serie de servicios y componentes de alto nivel ya implementados para su uso en el desarrollo de aplicaciones.

Conjunto de librerías estándar de clases organizadas jerárquicamente en espacios de nombres o namespaces.

Disponible para todos los lenguajes de programación compatibles con .NET Framework.

La mayoría de namespaces disponibles se organizan bajo la siguiente jerarquía de nombres: System.*

Microsoft.*

.NET Framework Class Library

http://msdn.microsoft.com/es-es/library/ms229335.aspx

La plataforma Microsoft .NET

Las clases que componen esta biblioteca se distribuyen en varios ensamblados (assemblies) almacenados en el GAC (Global Assembly Cache).

.NET Framework Class Library se divide en dos partes: Base Class Library (BCL).

Clases core o estándars que componen el API básico del .NET Framework.

Disponibles en: mscorlib.dll, System.dll y System.core.dll.

Framework Class Library.

Resto de clases que componen .NET Framework Class Library.

.NET Framework Class Library

%SYSTEMDRIVE%\WINDOWS\assembly

La plataforma Microsoft .NET

Espacios de nombres o namespaces típicos: System

Contiene clases estándar que cualquier aplicación necesita.

System.IO Contiene clases para la lectura y escritura de archivos y secuencias de datos.

System.Data Contiene clases para el acceso a datos.

System.Xml Contiene clases que permiten procesar documentos XML.

System.Collections / System.Collections.Generic Contiene clases que definen diversas colecciones de objetos, tales como listas, colas,

matrices de bits, tablas hash y diccionarios.

System.Web Contiene clases que habilitan la comunicación entre el explorador y el servidor.

.NET Framework Class Library

La plataforma Microsoft .NET

.NET Framework Class Library

La plataforma Microsoft .NET

Evolución de .NET Framework

La plataforma Microsoft .NET

.NET Framework 3.0 (WinFX) Extensión de .NET Framework 2.0

No implica ningún cambio en la arquitectura de .NET Framework.

Sigue utilizando el entorno común de ejecución (CLR) de .NET Framework 2.0.

Incluye 4 nuevas librerías al .NET Framework Class Library:

Windows Presentation Foundation (WPF – Avalon)

Windows Communication Foundation (WCF – Indigo)

Windows Workflow Foundation (WF)

Windows CardSpace (InfoCard)

No implica nuevas versiones en los lenguajes de programación C# (C# 2.0) y VB (VB 8)

.NET Framework Class Library

La plataforma Microsoft .NET

.NET Framework 3.5 Extensión de .NET Framework 3.0

Implica cambios y mejoras en el entorno común de ejecución o CLR.

Implica nuevas versiones en los lenguajes de programación C# (C# 3.0) y VB (VB 9.0)

Nuevas librerías y mejoras en .NET Framework Class Library:

LinQ (Language Integrated Query)

ASP.NET 3.5

Soporte a AJAX

….

Incluye .NET Framework 2.0 SP1 + .NET Framework 3.0 SP1.

.NET Framework Class Library

La plataforma Microsoft .NET

Microsoft .NET Framework 3.5

La plataforma Microsoft .NET

Microsoft .NET Framework 3.5

La plataforma Microsoft .NET

Microsoft .NET Framework 3.5

La plataforma Microsoft .NET

Microsoft .NET Framework 3.5

La plataforma Microsoft .NET

Microsoft .NET Framework 4.0

La plataforma Microsoft .NET

Microsoft .NET Framework 4.5

La plataforma Microsoft .NET

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Proceso de compilación y ejecución

Compilación

Cuando el método es invocado por 1ª vez

Compilador lenguaje

Ensamblado (EXE, DLL)

Ejecución

Compilador JIT

Código MSIL

Metadatos

Código

Máquina CPU

01010101

Código fuente

C# o VB

La plataforma Microsoft .NET

29

Proceso de compilación y ejecución

• Proceso de compilación

file.cs

file.vb

file.cpp

Compilador C#

csc.exe

Compilador VB

vbc.exe

Compilador C++

cl.exe

Código

MSIL

Código fuente C#

Código fuente VB

Código fuente C++

La plataforma Microsoft .NET

El proceso de compilación del código fuente produce un

módulo gestionado (managed module) conocido como ensamblado (assembly).

Los ensamblados son los únicos componentes que pueden ser ejecutados por el CLR.

Un ensamblado es la unidad mínima de distribución y construcción de aplicaciones en .NET.

Conceptualmente, un ensamblado proporciona una manera de considerar un conjunto de archivos como una entidad única.

Proceso de compilación y ejecución

La plataforma Microsoft .NET

El proceso de compilación en .NET no genera instrucciones

nativas o código máquina específico de ningún procesador.

El proceso de compilación en .NET genera un código intermedio conocido como MSIL o IL –Microsoft Intermediate Language-.

Lenguaje máquina de alto nivel independiente de cualquier procesador y que se ejecuta sobre el CLR.

También conocido como código gestionado (managed code).

Los procesadores no pueden ejecutar directamente el código MSIL o IL.

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Este código MSIL debe ser convertido a código nativo del

procesador sobre el que se vaya a ejecutar la aplicación.

El CLR se encarga de traducir (compilar sobre la marcha) este código MSIL en instrucciones nativas del procesador de destino.

De esto se encarga un componente del CLR conocido como compilador JIT (Just-in-Time) o JITter.

Un compilador JIT (Just-in-Time) o JITter convierte, en tiempo de ejecución, el código MSIL a ejecutar en código nativo del procesador de destino según sea necesario.

Proceso de compilación y ejecución

IL_0000: ldstr "Hola mundo!"

IL_0005: call void [mscorlib]System.Console::WriteLine(string)

IL_000a: ret

La plataforma Microsoft .NET

Existen tres tipos de compilador JIT (Just-in-Time) o JITter: Compilador JITter normal

Es el que se suele usar por defecto.

Sólo compila el código MSIL a código nativo a medida que va siendo necesario en tiempo de ejecución.

Compilador JITter económico

Diseñado especialmente para sistemas que tienen recursos limitados.

Incorporación del descarte de código para liberar memoria.

Compilador preJITter (Native Generator, ngen)

Permite compilar completamente cualquier assembly antes de que se cargue la aplicación.

No en tiempo de ejecución.

Usando la herramienta ngen.exe

Proceso de compilación y ejecución

La plataforma Microsoft .NET

El CLR proporciona dos herramientas para trabajar con

código MSIL o gestionado: MSIL Assembler (ilasm.exe)

Ensamblador de código MSIL.

A partir de un fichero con código MSIL (*.il) genera un ensamblado o módulo gestionado (managed module).

MSIL Disassembler (ildasm.exe)

Desensamblador de código MSIL.

A partir de un ensamblado o módulo gestionado (managed module) genera el código MSIL correspondiente.

Proceso de compilación y ejecución

>ilasm HelloWorldCS.il

> ildasm HelloWorldCS.exe /out:HelloWorldCS.il

La plataforma Microsoft .NET

35

Proceso de ejecución gestionada

• En el .NET Framework, el CLR proporciona la infraestructura necesaria para un entorno de ejecución gestionada.

La plataforma Microsoft .NET

36

Proceso de ejecución gestionada

Código fuente

VB C# C++

Compilador Compilador Compilador

Código gestionado

Código

MSIL

Código

MSIL

Código

MSIL

Entorno común de ejecución (CLR) COMPILADOR JIT

Código nativo

Componente

no gestionado

Servicios del Sistema Operativo

La plataforma Microsoft .NET

37

Proceso de ejecución gestionada

• Proceso de ejecución > Cuando un usuario ejecuta una aplicación gestionada, el

SO carga el CLR para que comience con la ejecución del código MSIL del módulo gestionado.

> Pero la CPU no puede ejecutar el código MSIL directamente.

> El CLR debe antes convertir el código MSIL a código nativo del procesador.

> Código MSIL es sólo compilado a código nativo cuando sea necesario mediante el componente del CLR conocido como compilador JIT o JITer.

La plataforma Microsoft .NET

Estructura de un ensamblado:

Manifiesto (Manifest).

Metadatos.

Código MSIL.

Conjunto de recursos

Ensamblados o assemblies

La plataforma Microsoft .NET

Ensamblados o assemblies

La plataforma Microsoft .NET

40

Metadatos

• El proceso de compilación genera metadatos dentro de cada módulo gestionado creado.

• Es información declarativa emitida en tiempo de compilación (datos que describen datos).

• Es un conjunto de tablas de datos, que describe completamente cualquier elemento que está definido en un módulo: propiedades, métodos, argumentos, valores de retorno, atributos, clases de base,...

• Un ensamblado y sus metadatos son inseparables.

La plataforma Microsoft .NET

Una aplicación puede usar dos tipos de ensamblados (*.dll):

Ensamblados privados.

Ensamblados globales.

Un ensamblado privado se encuentra en el mismo directorio que el ejecutable de la aplicación y sólo puede ser usado por dicha aplicación.

Un ensamblado global se encuentra en la ‘caché de ensamblados globales’ (GAC) y puede ser usado por cualquier aplicación que se ejecute en esa máquina.

Los ensamblados que componen el .NET Framework son ensamblados globales.

Ensamblados o assemblies

La plataforma Microsoft .NET

Programación de aplicaciones con Visual Studio .NET

42

Estructura de una aplicación en .NET

• Estructura básica:

APLICACIÓN

….

Archivo de código fuente Archivo de código fuente

CLASE CLASE

…. ….

Rutina de código: proc.

Rutina de código: proc.

Rutina de código: proc.

Rutina de código: proc.

ENSAMBLADO .EXE / .DLL

Importaciones de E.N Importaciones de E.N

La plataforma Microsoft .NET

Programación de aplicaciones con Visual C# .NET - .NET Framework 2.0

Espacio de nombres (namespace)

Clase

Método a invocar de la clase

Proceso de compilación y ejecución

Ejemplo de aplicación en C#:

La plataforma Microsoft .NET

Programación de aplicaciones con Visual C# .NET - .NET Framework 2.0

Ejemplo de aplicación en C#:

using System;

Importación de namespaces

}

namespace CursoNET.CSharp {

Declaración de namespace

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Programación de aplicaciones con Visual C# .NET - .NET Framework 2.0

Espacio de nombres (namespace)

Clase

Método a invocar de la clase

Proceso de compilación y ejecución

Ejemplo de aplicación en Visual Basic:

La plataforma Microsoft .NET

Programación de aplicaciones con Visual C# .NET - .NET Framework 2.0

Ejemplo de aplicación en Visual Basic:

Imports System

Importación de namespaces

End Namespace

Namespace CursoNET.VB

Declaración de namespace

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Compilador por línea de comandos de C#: csc.exe: C# Compiler

>csc /help Compilador de Microsoft (R) Visual C# 2008, versión 3.5.21022.8 para Microsoft (R) .NET Framework, versión 3.5

(C) Microsoft Corporation. Reservados todos los derechos.

Opciones del Compilador de Visual C# 2008

>csc /target:exe /out:HolaMundoCS.exe HolaMundoCS.cs

> ildasm HolaMundoCS.exe

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Compilador por línea de comandos de Visual Basic: vbc.exe: Visual Basic Compiler

>vbc /help Compilador de Microsoft (R) Visual Basic versión 9.0.21022.8

(c) Microsoft Corporation. Reservados todos los derechos.

Opciones del compilador de Visual Basic

>vbc /target:exe /out:HolaMundoVB.exe HolaMundoVB.vb

> ildasm HolaMundoVB.exe

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Programación de aplicaciones con Visual Studio .NET

49

Proceso de compilación y ejecución

• MSIL Disassembler (ildasm.exe): > Desensamblado de código MSIL

>ildasm HolaMundoCS.exe

>ildasm HolaMundoVB.exe

La plataforma Microsoft .NET

Programación de aplicaciones con Visual C# .NET - .NET Framework 2.0 Código MSIL del ensamblado HolaMundoVB.exe (VB):

Código MSIL del ensamblado HolaMundoCS.exe (C#):

Proceso de compilación y ejecución

La plataforma Microsoft .NET

Estructura de una aplicación .NET

A nivel de ejecución, una aplicación en .NET es una colección de objetos cargos en memoria principal (heap)

A nivel de desarrollo, una aplicación en .NET es una colección de clases agrupadas en namespaces.

HEAP

“Un objeto es una entidad o concepto que existe en el mundo real y que queremos representar

en nuestra aplicación”.

Existe un namespace por defecto (global namespace) donde van aquellas clases a las que no les

indicamos su namespace.

La plataforma Microsoft .NET

La plataforma Microsoft .NET