Вы находитесь на странице: 1из 23

Fundamentos de la Interaccin

Persona-Ordenador

5. Conceptos de la
arquitectura .NET Framework
Lus Rodrguez Baena (luis.rodriguez@upsam.net)

Universidad Pontificia de Salamanca (campus Madrid)


Facultad de Informtica
El entorno .NET Framework

Entorno de ejecucin de aplicaciones


i f
informticas
ti sobre
b ell que se ejecuta
j t cualquier
l i
programa desarrollado en .NET en cualquiera
de sus lenguajes (VB.NET, Visual C++ .NET,
Visual C# .NET, Visual J#, NetCOBOL, etc.).
Forma parte de Microsoft .NET que incluye adems
herramientas de programacin (Visual Studio .NET),
NET)
servidores, software cliente, etc.
Ofrecen un entorno de ejecucin comn:
Instalacin transparente.
Fin de las incompatibilidades de DLL y otros componentes.
Mismas capacidades para todos los lenguajes.

Universidad Pontificia de Salamanca (Campus Madrid)


2
Facultad de Informtica, Lus Rodrguez Baena, 2010
Arquitectura de .NET Framework

VB .NET C++ .NET C# .NET Otros...

Especificacin comn de lenguajes


(CLS, Common Language Specification
)

ASP.NET Windows Forms

.NET F
(Servicios Web, Web Forms)

Datos y XML

Framewo
Biblioteca de clases base
(BCL, Base Class Library
)

ork
Common Language Runtime (CLR)

Sistema operativo
p

Universidad Pontificia de Salamanca (Campus Madrid) 3


Facultad de Informtica, Lus Rodrguez Baena, 2010
Arquitectura de .NET Framework (II)

Entorno comn de ejecucin (Common


Language Runtime,
Runtime CLR).
CLR)
Administra el cdigo en tiempo de ejecucin y
proporciona los servicios bsicos (administracin de
memoria, control de excepciones, control de hilos de
ejecucin).
j i )
Biblioteca de clases base (Base Class
y, BCL).
Library, )
Coleccin de cdigo OO que puede ser empleado desde
cualquier lenguaje .NET.
Contiene los tipos bsicos, clases para la entrada/salida,
seguridad etc.
seguridad, etc
Al tener definidos los tipos de datos para todos los
lenguajes, facilita el intercambio de datos entre
aplicaciones desarrolladas en distintos lenguajes.

Universidad Pontificia de Salamanca (Campus Madrid)


4
Facultad de Informtica, Lus Rodrguez Baena, 2010
Arquitectura de .NET Framework (III)

Capa de datos y XML.


G
Gestiona
ti ell acceso a llos d
datos
t y ell ttratamiento
t i t d de d
datos
t
XML.
9 Los datos los gestiona mediante ADO.NET.
9 Gran parte de la informacin de .NET
NET (configuracin
(configuracin,
estructura de archivos y de aplicaciones) se gestiona
mediante XML.
Facilidad para importar, exportar y tratar datos de/hacia XML.

Definicin
de la interfaz: ASP.NET y
Windows Forms.
ASP
ASP.NET
NET utiliza Web Forms (para aplicaciones Web
basadas en ASP) y los servicios Web.
Windows Forms proporciona un conjunto de componentes
de interfaz p
para desarrollar aplicaciones
p cliente basadas
en Windows.

Universidad Pontificia de Salamanca (Campus Madrid)


5
Facultad de Informtica, Lus Rodrguez Baena, 2010
Common Language Runtime

Frameworks

me
age Runtim Clases base

Compilador
de cdigo Control de Control de
intermedio a excepciones seguridad
on Langua

cdigo nativo

Recolector de basura (GC), stack walk y


administrador de cdigo
g
Commo

Cargador de clases y entorno de trabajo


(class loader)

Universidad Pontificia de Salamanca (Campus Madrid)


6
Facultad de Informtica, Lus Rodrguez Baena, 2010
Common Language Runtime (II)

Cargador de clases (Class Loader).


Llama al puntero de inicio del procedimiento
procedimiento, establece
su entorno de memoria y mantiene la ejecucin bajo
control.
Co
Control
t o de recursos:
ecu sos recolector
eco ecto de basura,
basu a,
control de la pila, administrador de
cdigos.
Interaccin con el sistema operativo:
control de excepciones, control de
seguridad, compilador de cdigo nativo.
El cdigo
di iintermedio
t di ddebe
b compilarse
il a cdigo
di nativo.
ti
Clases base.
Definen el entorno de trabajo sobre el que se apoya el
cdigo.
di

Universidad Pontificia de Salamanca (Campus Madrid)


7
Facultad de Informtica, Lus Rodrguez Baena, 2010
Especificacin de lenguajes comn (CLS)

Conjunto de directivas proporcionadas por


Microsoft para el desarrollo de lenguajes
compatibles con .NET.
Fijan las caractersticas comunes de los lenguajes.
Los fabricantes pueden ampliarlas o modificarlas.
9 Una aplicacin no debera hacer uso de las caractersticas ampliadas
cuando se comunique con otros componentes .NET.
Actualmente estn desarrollados o en fase de
d
desarrollo
ll ms
dde 60 lenguajes
l j .NET.
NET
Cdigo administrado y cdigo no administrado.
Todos los lenguajes .NET producen cdigo administrado.
9 Cdigo que ejecuta el CLR directamente.
.NET puede ejecutar tambin cdigo generado por lenguajes que
no sigan el CLS.
9 Cdigog no administrado ((cdigo
g nativo)) q
que p
permite,, p
por ejemplo,
j p ,
utilizar API antiguas y controles ActiveX.

Universidad Pontificia de Salamanca (Campus Madrid)


8
Facultad de Informtica, Lus Rodrguez Baena, 2010
Especificacin de lenguajes comn (CLS) (II)

Los lenguajes .NET son ms parecidos


entre si que otros lenguajes
l clsicos.
l
Por lo tanto:
9 Su velocidad de ejecucin es bastante similar. La eleccin de
un lenguaje u otro no depender de la velocidad de
ejecucin.
9 Garantiza la interoperabilidad entre lenguajes.
Todos utilizan los mismos tipos basados en el Sistema de tipo
comn (Common Type System, CTS).
Posibilidad de crear una aplicacin con componentes
desarrollados en distintos lenguajes.
9 La curva de aprendizaje para un nuevo lenguaje .NET es
menor.

Universidad Pontificia de Salamanca (Campus Madrid)


9
Facultad de Informtica, Lus Rodrguez Baena, 2010
Especificacin de lenguajes comn (CLS) (III)

'HolaMundo en VB.NET
Public Class HolaMundo
Shared Sub main()
System.Console.WriteLine("Hola, mundo!")
System.Console.ReadLine()
End Sub
End Class

//HolaMundo en C#
public class HolaMundo{
static void Main(){
System.Console.WriteLine("Hola, mundo!");
S t
System.Console.ReadLine();
C l R dLi ()
}
}

//HolaMundo en VJ#
public
bli class
l H
HolaMundo{
l M d {
public static void main(String args[]){
System.Console.WriteLine("Hola, mundo!");
System.Console.ReadLine();
}
}

Universidad Pontificia de Salamanca (Campus Madrid)


10
Facultad de Informtica, Lus Rodrguez Baena, 2010
Lenguaje intermedio de Microsoft (MSIL)

Los compiladores .NET no producen cdigo nativo (cdigo


binario ejecutable directamente por el procesador)
procesador).
Producen cdigo intermedio (MSIL o simplemente IL).
Se trata de una especie de lenguaje mquina asociado a un
procesador virtual que no corresponde a ninguna CPU
disponible en la actualidad.
El compilador a cdigo nativo (compliador JIT, Just-In-
Time) de la CLR es el que se encargar de compilar al al
vuelo el cdigo IL a lenguaje nativo de la plataforma
donde se ejecute la aplicacin.
Esta caracterstica permitir que el cdigo de una aplicacin
.NET pueda ejecutarse en otra plataforma distinta sin
ningn cambio (siempre y cuando exista un CLR para esa
plataforma).
p )

Universidad Pontificia de Salamanca (Campus Madrid)


11
Facultad de Informtica, Lus Rodrguez Baena, 2010
Estructura de una aplicacin .NET

Aplicacin .NET
NET

Ensamblado1 Ensamblado2

Metadatos del ensamblado

Metadatos de los tipos

Ensamblado3
Cdigo MSIL

Recursos
(archivos bitmap, archivos
HTML, XML, )

Universidad Pontificia de Salamanca (Campus Madrid)


12
Facultad de Informtica, Lus Rodrguez Baena, 2010
Ensamblados, manifiestos y
metadatos
Ensamblado: unidad de instalacin de una
aplicacin .NET.
NET
Compuesto de uno o ms archivos de
recursos y de archivos ejecutables
j MSIL
(mdulos administrados).
Los mdulos administrados contienen cdigo IL y metadatos
que describen los tipos del mdulo.
Un ensamblado tendr un archivo ejecutable
portable (PE) que se generar al compilar la
aplicacin a MSIL.
MSIL
Archivo .exe o .dll.
Un archivo PE no podr ejecutarse si no est contenido en
un manifiesto de ensamblado.

Universidad Pontificia de Salamanca (Campus Madrid)


13
Facultad de Informtica, Lus Rodrguez Baena, 2010
Ensamblados, manifiestos y
metadatos (II)
( )
Los ensamblados:
Crean un lmite de seguridad.
9 Es la unidad donde se solicitan y conceden los permisos.
Crean un lmite de tipos.
9 La referencia a un tipo incluye el nombre del ensamblado en que
reside.
reside
Crean un lmite de mbito de referencia.
9 El manifiesto del ensamblado contiene metadatos para resolver los
tipos: especifica que tipos se exponen fuera del ensamblado y
enumera los
l ensamblados
bl d d
de llos que d
depende.
d
Forma un lmite de versin.
9 Todos los recursos de un ensamblado pertenecen a la misma
versin.
Crean la unidad de implementacin.
9 Al arrancar una aplicacin slo deben estar presentes los
ensamblados a los que llama la aplicacin inicialmente. El resto se
recuperan
p appeticin.

Universidad Pontificia de Salamanca (Campus Madrid)


14
Facultad de Informtica, Lus Rodrguez Baena, 2010
Ensamblados, manifiestos y
metadatos (III)

Solucin al problema de versiones.


Las aplicaciones Win32 requieren que los componentes
que utiliza estn especificados como entradas del
registro.
9 Dos aplicaciones distintas pueden usar el mismo
componente, pero con versiones distintas.
Los ensamblados son autodescriptivos: no dependen de
l entradas
las t d ddell registro.
i t
9 La instalacin de aplicaciones se simplifica: slo es necesario
copiar los directorios donde estn contenidos los recursos a
los que llama el ensamblado.
ensamblado
9 Con el ensamblado se instala siempre la versin adecuada
de los componentes.

Universidad Pontificia de Salamanca (Campus Madrid)


15
Facultad de Informtica, Lus Rodrguez Baena, 2010
Modelo de ejecucin

Universidad Pontificia de Salamanca (Campus Madrid)


16
Facultad de Informtica, Lus Rodrguez Baena, 2010
Modelo de ejecucin (II)

.NET Framework no es un interprete de


b
bytecode
d como la
l mquina
virtuall Java.
No traduce las instrucciones una a una: compila todo el
mtodo a la vez.
No carga toda la aplicacin a la vez.
El tiempo de carga inicial es despreciable.
No necesita utilizar tcnicas de
optimizacin de bajo nivel.

Universidad Pontificia de Salamanca (Campus Madrid)


17
Facultad de Informtica, Lus Rodrguez Baena, 2010
El compilador Just-in-Time

VB C++ C# ...

Generador de cdigo
g en
tiempo de instalacin
IL
(Compilador preJIT o NGEN)

Cdigo nativo

Compilador
Compilador JIT
econo JIT

Cdigo nativo

Common Language Runtime

Universidad Pontificia de Salamanca (Campus Madrid)


18
Facultad de Informtica, Lus Rodrguez Baena, 2010
El compilador Just-in-Time (II)

Compilador JIT estndar.


Compilacin completa
completa, optimizando el cdigo y verificando su
integridad.
EconoJIT.
Diseado para aplicaciones en el que la velocidad de descarga
es importante (aplicaciones ASP.NET) o cuando se ejecuta en
dispositivos con recursos limitados (Windows CE).
p
No realiza una optimizacin del cdigo.
g
Permite el rechazo de cdigo.
Generador de imgenes nativas (NGEN).
Genera cdigo en tiempo de instalacin.
Mejora de rendimiento en casos especiales.
Utilizacin de cdigo nativo de forma directa.

Universidad Pontificia de Salamanca (Campus Madrid)


19
Facultad de Informtica, Lus Rodrguez Baena, 2010
La biblioteca de clases

Biblioteca de clases base (BCL).


Conjunto de clases que permiten a todos los lenguajes
.NET realizar tareas comunes (entrada/salida, acceso a
BBDD, interfaz de usuario, etc.).
Su forma de acceso es comn a todos los
lenguajes.
Mantiene
i lla iinteroperabilidad
bilid d entre llenguajes
j que se
ajusten al CLS.
Permiten su modificacin mediante
herencia.

Universidad Pontificia de Salamanca (Campus Madrid)


20
Facultad de Informtica, Lus Rodrguez Baena, 2010
Espacios de nombre

Los espacios de nombre o Namespaces organizan la


infinidad de clases de la BCL.
Para utilizar los tipos de la BCL de un espacio de nombres
concreto se utiliza la notacin de punto.
Permite agrupar espacios de nombres y clases relacionadas
b
bajo una raz
comn.

9 Por ejemplo, System.Data guarda las clases relacionadas con el
acceso a datos, System.Windows.Forms guarda las clases de
interfaz para las aplicaciones basadas en formularios Windows, etc.
Cada espacio de nombres se puede guardar en una o varias
DLL.
La ubicacin fsica no tiene porqu guardar correspondencia con
la organizacin lgica de los espacios de nombres
nombres.
El concepto de espacios de nombres permite ampliar la
biblioteca con clases propias de una forma coherente.

Universidad Pontificia de Salamanca (Campus Madrid)


21
Facultad de Informtica, Lus Rodrguez Baena, 2010
Espacios de nombre (II)

Para crear nuevos espacios de nombres en VB.NET se utiliza la


declaracin NamespaceEnd Namespace.

Namespace MiCompaia
Namespace MiNuevaTecnologia
Class MiClase

End Class
End Namespace
End Namespace

Para utilizar un espacio de nombres ya creado y no usar el nombre


completamente cualificado, en VB.NET se utiliza la declaracion Imports.
z Imports no importa nada, simplemente aade el espacio de nombres cuando no se
utiliza un nombre completamente cualificado.
Imports MiCompaia.MiNuevaTecnologa
...
Dim x as New MiClase()
'Es
Es lo mismo que utilizar New MiCompaia
MiCompaia.MiNuevaTecnologa.MiClase()
MiNuevaTecnologa MiClase()

Universidad Pontificia de Salamanca (Campus Madrid)


22
Facultad de Informtica, Lus Rodrguez Baena, 2010
Espacios de nombre (III)

'En el ensamblado MiCompaa Imports MiCompaa.MiNuevaTecnologa


Namespace MiNuevaTecnologa Imports MiCompaa.MiOtraNuevaTecnologa
Public Class Class1
Module Module1
End Class Sub Main()
Public Class Class2 Dim a As Class1
Dim b As Class2
End Class Dim c As AlgunasClases.Class3
End Namespace Dim d As AlgunasClases.Class4
End Sub
Namespace MiOtraNuevaTecnologa End Module
Namespace AlgunasClases
Public Class Class3
El ensamblado MiCompaa (una biblioteca de clases)
End Class incluye 3 espacios de nombre.
End Namespace
End Namespace La aplicacin importa 2 espacios de nombre, por lo que
Namespace
p MiOtraNuevaTecnologa
g
no tiene que utilizar el nombre cualificado para las
Namespace AlgunasClases clases
l Cl
Class33 y Cl
Class4.
4
Public Class Class4

End Class
End Namespace
End Namespace

Universidad Pontificia de Salamanca (Campus Madrid)


23
Facultad de Informtica, Lus Rodrguez Baena, 2010