Documentos de Académico
Documentos de Profesional
Documentos de Cultura
2 NET Framework
2 NET Framework
NET Framework
David Gan Jimnez
P08/B0036/01625
.NET Framework
FUOC P08/B0036/01625
ndice
Introduccin..........................................................................................
Objetivos.................................................................................................
1. El .NET Framework.......................................................................
10
12
12
14
14
15
15
16
16
18
19
19
19
20
20
21
22
23
24
5. Ensamblados....................................................................................
25
25
26
26
28
29
30
31
32
32
33
.NET Framework
FUOC P08/B0036/01625
Bibliografa............................................................................................
35
FUOC P08/B0036/01625
Introduccin
.NET Framework
FUOC P08/B0036/01625
Objetivos
.NET Framework
FUOC P08/B0036/01625
1. El .NET Framework
El .NET Framework es el conjunto de componentes y herramientas que permiten la ejecucin de aplicaciones .NET. Para desarrollar aplicaciones .NET se
utilizan las herramientas del .NET Framework SDK. Dentro del .NET Framework podemos distinguir las tres partes principales siguientes:
CLS (common language specification) y lenguajes .NET. CLS es una especificacin de las caractersticas de los lenguajes de programacin compatibles
con el .NET Framework. Esta especificacin es precisamente la que permite
que se puedan implementar nuevos lenguajes de programacin adaptados
a la plataforma.
El .NET Framework incluye cinco lenguajes de programacin: Visual Basic
.NET, Visual C++ .NET, C#, J# y JScript. No obstante, permite que otros lenguajes desarrollados por terceros puedan acoplarse fcilmente a la plataforma, y ya existe una gran variedad de ellos, entre los cuales podemos encontrar versiones de COBOL, FORTRAN, Ada, Pascal, Haskell, Eiffel, Delphi, etc.
FCL (framework class library). La biblioteca de clases comunes est compuesta por una serie de clases con las herramientas y utilidades bsicas
necesarias para empezar a desarrollar aplicaciones, todas ellas disponibles
para todos los lenguajes .NET gracias al CLS. Dentro de la FCL, podemos
destacar algunas de las libreras ms importantes, como las funcionalidades bsicas del sistema operativo (Base Class Library BCL), adems de otras
tecnologas como ASP.NET, WinForms para creacin de interfaces graficas,
ADO.NET para acceso a datos, etc.
.NET Framework
FUOC P08/B0036/01625
.NET Framework
Integracin de componentes y aplicaciones. Los servicios web proporcionan una arquitectura gil del sistema, tanto interna como externamente,
simplificando la integracin de aplicaciones o componentes por medio de
intranets o de Internet.
Adems, permiten la integracin de aplicaciones ya existentes de forma
sencilla y sin necesidad de grandes modificaciones, con independencia de
la plataforma y lenguaje utilizado para desarrollar la aplicacin. Esto es
posible gracias a que los servicios web estn basados en el estndar XML.
Interoperabilidad entre lenguajes. El .NET Framework proporciona un entorno comn de desarrollo y ejecucin para todos los lenguajes .NET. Todos los lenguajes .NET permiten desarrollar aplicaciones Windows, Web
Services, pginas ASP.NET o aplicaciones para dispositivos mviles.
Todos los lenguajes .NET comparten la librera de clases (FCL), el sistema
1
de depuracin , el sistema de excepciones, la gestin automtica de memoria, etc. De hecho, se pueden utilizar diferentes lenguajes .NET para
desarrollar partes distintas de una misma aplicacin. Esto facilita que los
programadores puedan escoger el lenguaje de programacin en funcin
de sus preferencias y no de la potencia del lenguaje, ya que todos ellos
tienen acceso a las mismas funcionalidades.
(1)
FUOC P08/B0036/01625
.NET Framework
El .NET Framework incluye cuatro lenguajes de programacin desarrollados por Microsoft: C#, Visual Basic .NET, C++.NET y J#. Aparte de estos
lenguajes, existen otros lenguajes .NET desarrollados por otras compaas
o grupos de entusiastas. La creacin de lenguajes .NET por grupos o empresas ajenas a Microsoft es posible gracias a que la especificacin de los
lenguajes .NET es un estndar.
(2)
Adems, algunas de las tareas necesarias en COM como la gestin de memoria o el control de punteros, que son fuente de muchos de los problemas de falta de memoria o de accesos incorrectos, han sido eliminados,
gracias a la implementacin de un gestor automtico de memoria, y al
uso de referencias en vez de punteros3.
Simplifica la instalacin. Los componentes .NET no necesitan aadir informacin en el registro del sistema para funcionar, ni es necesario definir
interfaces MIDL4 para su utilizacin, ya que son autodescriptivos. Esto implica que los componentes .NET se pueden instalar simplemente copian-
MIDL (Microsoft interface definition language) es el lenguaje utilizado para describir los componentes COM y sus funcionalidades, para que puedan ser utilizados por
otras aplicaciones.
(5)
DLL (dynamic link library). Ficheros binarios que contienen un conjunto de funcionalidades comunes
que forman parte de una aplicacin. Las dll se pueden compartir
entre aplicaciones, favoreciendo as
la reutilizacin de componentes.
Las libreras .NET tambin tienen
extensin .dll, pero el formato del
fichero es totalmente distinto.
FUOC P08/B0036/01625
10
.NET Framework 1.1. La versin 1.1 aparece en 2003 junto con la nueva
versin de la herramienta de desarrollo Visual Studio .NET 2003 y el sistema operativo Windows Server 2003. Este sistema operativo incluye el
.NET Framework como componente instalable.
En esta versin, se mantiene el mismo motor de ejecucin que en la anterior, aunque incluye bastantes mejoras respecto de la versin 1.0, entre
otras incluye una versin del .NET Framework para dispositivos mviles
conocido como .NET Compact Framework. Tambin se incluyen herramientas para interoperar con la suite ofimtica Office 2003, que tambin
aparece este mismo ao.
.NET Framework 2.0. Esta nueva versin del .NET aparece en 2005, junto
con Visual Studio 2005 (la palabra .NET desaparece del nombre del producto) y SQL Server 2005 (la nueva versin del motor de bases de datos de
Microsoft, despus de 5 aos). Tambin se crea una nueva revisin del sistema operativo Windows Server 2003 R2, que incluye esta nueva versin
del .NET Framework en vez de la versin 1.1.
Esta versin incluye cambios sustanciales tanto en el CLR como en los lenguajes .NET, como son los tipos genricos o los tipos abstractos. Tambin
aparece una segunda versin del .NET Compact Framework para dispositivos mviles. Otra de las mejoras importantes consiste en la integracin
del CLR dentro del motor de bases de datos SQL Server 2005, de forma que
es posible crear elementos de programacin de la base de datos, utilizando
lenguajes y tecnologas .NET.
.NET Framework
FUOC P08/B0036/01625
11
Windows communication foundation (WCF). Ofrece un conjunto de funcionalidades que facilitan la creacin de aplicaciones SOA orientadas
a servicio (Service Oriented Architecture).
Windows workflow foundation (WWF). Incluye funcionalidades y herramientas para crear flujos de trabajo que se pueden ejecutar desde una
aplicacin.
Windows cardspace (WCS). Permite almacenar de forma segura la identidad digital de una persona y proporciona una interfaz unificada para
escoger la identidad para una transaccin particular como por ejemplo
autenticarse en un website.
.NET Framework 3.5. La siguiente versin del .NET Framework est prevista para finales de 2007, principios de 2008, junto a la aparicin de Visual
Studio 2008, SQL Server 2008 y Windows Server 2008, que incluir esta
versin como componente del sistema operativo. Tambin aparecer por
entonces la correspondiente versin del Framework para dispositivos mviles (.NET Compact Framework 3.5).
En esta versin del Framework s que se incluye una nueva versin del motor de ejecucin de .NET, para ofrecer las funcionalidades necesarias para
algunas de las caractersticas que se incluyen en ella, como por ejemplo
LINQ o lambda expressions.
.NET Framework
FUOC P08/B0036/01625
12
.NET Framework
Gestin automtica de memoria. El CLR gestiona automticamente la memoria utilizada por las aplicaciones .NET. Cuando una porcin de memoria deja de ser utilizada por la aplicacin, uno de los componentes del CLR,
llamado garbage collector (recolector de basura), libera automticamente
esa zona de memoria para que vuelva a estar disponible de nuevo.
(6)
Un entorno gestionado es un
contexto de ejecucin de aplicaciones que gestiona los recursos, la
memoria, asegura la ejecucin de
cdigo seguro, etc.
13
FUOC P08/B0036/01625
.NET Framework
te, las aplicaciones que utilizan la versin antigua siguen funcionando correctamente.
(8)
mecanismo de P/Invoke permite realizar llamadas a funciones que se encuentran en libreras dinmicas o dll del sistema o de aplicaciones win32.
Cdigo no gestionado que utiliza un tipo gestionado. Mediante las herramientas Tlbexp.exe y Regasm.exe, incluidas en el .NET Framework, es posible crear un objeto COM que describa y se comunique con el tipo gestionado, y registrarlo en el sistema de forma que otras aplicaciones COM
puedan utilizarlo.
(9)
FUOC P08/B0036/01625
14
Los rectngulos amarillos representan los diferentes estados por los que pasa
el cdigo, mientras que los verdes representan las etapas por las que pasa el
cdigo hasta ser ejecutado. El recuadro azul delimita las etapas que lleva a cabo
el CLR.
2.2.1.
Compilacin
.NET Framework
FUOC P08/B0036/01625
15
.NET Framework
Todos los lenguajes de .NET compilan a un cdigo intermedio comn denominado MSIL (MicroSoft intermediate language) o simplemente IL (intermediate
language). De esta forma, los componentes se ejecutan igual en el CLR independientemente del lenguaje y de la plataforma en los que fueron creados.
La tarea de compilacin se lleva a cabo mediante una aplicacin llamada compilador. Cada compilador permite compilar cdigo fuente escrito en un lenguaje de programacin concreto. Todos los compiladores de lenguajes .NET
traducen el cdigo fuente a IL.
El cdigo IL generado por los compiladores se almacena en un fichero llamado
PE (portable executable), que contiene el cdigo IL junto con sus metadatos.
Los metadatos son la descripcin de los tipos de datos definidos en el cdigo
IL, sus mtodos, sus atributos, etc. Los metadatos son necesarios para ejecutar
aplicaciones, para verificar que el cdigo IL que se ejecuta es correcto y evitar
operaciones invlidas. Veremos la estructura de los ficheros PE en el apartado
de ensamblados, ms adelante en este mismo captulo.
2.2.2.
Enlazado
Para que el CLR pueda ejecutar una aplicacin, es necesario agrupar todos los
archivos PE generados en una estructura lgica llamada ensamblado
10
. Este
(10)
Aunque la extensin de los ensamblados coincide con la de las libreras dinmicas (.dll) o los archivos ejecutables de Windows (.exe),
el contenido de estos ficheros slo
se puede ejecutar mediante el CLR.
FUOC P08/B0036/01625
16
Al ejecutarse una aplicacin .NET, existe una aplicacin llamada CLR Host,
que se encarga de iniciar un proceso con el CLR (si no est ya iniciado), y crear
uno o ms dominios de aplicacin en el proceso del CLR para poder ejecutar
la aplicacin. Ejemplos de aplicaciones CLR Host son ASP.NET, y el cargador
de aplicaciones .exe del shell de Windows.
2.2.4.
Cargador de clases
Compilacin JIT
Los procesadores actuales no son capaces de ejecutar las instrucciones IL directamente, aunque puede que esto sea posible en el futuro. Por ello, es necesario un proceso de traduccin de cdigo IL al cdigo mquina del procesador
en el que se est ejecutando la aplicacin.
Antes de ejecutar un mtodo, el CLR detecta todos los tipos de datos referenciados en su cdigo y guarda, en una estructura de datos interna, toda la informacin sobre los mtodos de estos tipos y las direcciones donde se puede
encontrar su cdigo fuente.
La primera vez que un mtodo gestionado es invocado, el cdigo IL correspondiente es traducido a cdigo mquina por un compilador llamado JIT compiler (just-in-time compiler). El cdigo mquina generado por el JIT compiler se
almacena en memoria, de forma que la prxima vez que se ejecuta ese mtodo
no es necesario volver a traducir su cdigo IL a nativo.
No obstante, el cdigo nativo generado se borra una vez termina la ejecucin
de la aplicacin, es decir, que la prxima vez que se ejecute se volver a traducir
el cdigo IL a nativo. Aunque esto pueda parecer una prdida de eficiencia
respecto a las aplicaciones nativas, el proceso de conversin de IL a cdigo
nativo est optimizado para cada tipo de procesador, por lo que en global el
rendimiento es similar. En todo caso, es posible precompilar una aplicacin
.NET para un procesador concreto con la aplicacin Ngen.exe incorporada
en el .NET Framework SDK si es necesario maximizar el rendimiento, pero
entonces perderemos la compatibilidad con otras plataformas.
Durante el proceso de JIT, aparte de traducir el cdigo a nativo, se verifica el
cdigo para asegurar que no realiza operaciones de acceso a memoria incorrectas, que los mtodos se llaman con el nmero de parmetros correctos,
.NET Framework
FUOC P08/B0036/01625
17
que los tipos de los parmetros y del retorno coinciden, etc. Para realizar estas
comprobaciones, el CLR utiliza la informacin sobre los tipos de datos almacenados en los metadatos del ensamblado.
Si se determina que el cdigo IL no es seguro, se lanza una excepcin y el
mtodo no se ejecuta. Los compiladores de C#, Visual Basic .NET y J# producen
siempre cdigo IL seguro.
Los tipos de compilador JIT son los siguientes:
Normal. El cdigo nativo generado a partir del cdigo MSIL est optimizado para aprovechar al mximo las prestaciones de la mquina en la que
se ejecuta la aplicacin. Es un proceso ms lento, pero el cdigo generado
es ms eficiente y rpido.
Pre-JIT. El cdigo MSIL se traduce enteramente a cdigo nativo y se almacena para prximos usos.
.NET Framework
FUOC P08/B0036/01625
2.2.6.
18
Ejecucin CLR
El cdigo generado por el compilador JIT se denomina cdigo nativo gestionado, porque se ejecuta dentro del entorno del CLR, es decir, el CLR gestiona
la ejecucin de ese cdigo de forma que no se puedan producir referencias invlidas, controla la memoria, comprueba la seguridad, etc. Este cdigo s que
es ejecutable directamente por el procesador.
.NET Framework
FUOC P08/B0036/01625
19
El CTS o sistema comn de tipos, define las reglas que debe cumplir la definicin de un tipo para que pueda ser gestionado por el CLR. El CTS permite la
interoperabilidad de tipos entre distintos lenguajes .NET, ya que todos ellos
deben seguir las normas establecidas en el CTS. Entre otras ventajas del CTS
conviene destacar las siguientes:
Tipos valor. Son los tipos primitivos del lenguaje: enteros, reales, caracteres, etc. Los tipos valor de .NET, a diferencia de otros lenguajes orientados
a objeto, son tambin objetos, y por lo tanto se pueden utilizar en los mismos contextos en los que se utilizan el resto de tipos.
.NET Framework
FUOC P08/B0036/01625
20
Campo (field). Una variable que forma parte del estado del objeto. Se identifican por su nombre y su tipo.
Mtodo. Una funcin o accin que ejecuta una operacin o cambio sobre
el estado del objeto.
3.4. Visibilidad
La visibilidad define, para cada elemento o miembro de un tipo, quin puede
acceder a su informacin:
Familiar. El miembro slo es accesible desde el propio tipo o desde cualquier tipo derivado.
Ensamblado. El miembro es accesible desde cualquier tipo que se encuentre dentro del mismo ensamblado.
Las palabras clave para definir el tipo de visibilidad de un miembro dependen del lenguaje de programacin. En C# estas palabras son respectivamente:
private, protected, internal y public.
Aparte de los tipos de visibilidad anteriores, tambin existen los dos siguientes, menos frecuentes y no disponibles en todos los lenguajes, aunque si soportados por el CTS:
.NET Framework
FUOC P08/B0036/01625
21
.NET Framework
22
FUOC P08/B0036/01625
.NET Framework
Servicios web
Aplicaciones de consola
Servicios de Windows
Libreras de componentes
La FCL est diseada completamente bajo el concepto de orientacin a objetos, por lo que es mucho ms sencilla de utilizar y de comprender que otras
(11)
(12)
La FCL est organizada como una estructura de directorios, para organizar los
(13)
Console
23
FUOC P08/B0036/01625
System.Web,
.NET Framework
System.WebServices,
Acceso a las funciones del sistema operativo. La FCL contiene clases y mtodos que permiten acceder a las diferentes funcionalidades del sistema
operativo, entre ellas las siguientes:
ASP.NET (System.Web). ASP.NET es la nueva versin de pginas web dinmicas de Microsoft. Es un nuevo entorno, desarrollado desde cero (no
est basado en ASP14, la versin anterior) que se ejecuta en Internet Information Services (IIS) y simplifica a los programadores la escritura de cdigo para construir pginas web basadas en HTML que se muestran en un
explorador.
ASP.NET caracteriza una forma nueva, independiente del lenguaje, de escribir cdigo y ligarlo a peticiones de pginas web. Introduce los formularios de web de .NET, que consiste en un modelo de programacin dirigido
por eventos para interactuar con controles que hace que la programacin
de una pgina web parezca muy similar a la programacin de un formulario de Windows Forms.
ASP.NET contiene caractersticas importantes de seguridad y administracin del estado de la sesin. Es ms robusto y contiene muchas mejoras
en su comportamiento respecto al ASP original.
WinForms (System.Windows.Forms) WinForms es el homlogo a los formularios web de ASP.NET para las aplicaciones de Windows. Permite desarrollar fcilmente interfaces grficas potentes, sin tener que escribir ms
cdigo de la cuenta. Visual Studio proporciona un diseador de formularios, que permite desarrollar la interfaz grfica con WinForms de manera
visual.
ADO.NET (System.Data). ADO.NET es una versin mejorada y rediseada dentro de .NET de la librera de acceso a fuentes de datos ADO. Como
cosas ms interesantes, ADO.NET incorpora mejores funcionalidades para
trabajar con datos XML, y permite trabajar con fuentes de datos en modo
desconectado, es decir, sin necesidad de mantener abierta la conexin con
(14)
FUOC P08/B0036/01625
24
Enterprise Services (COM+) (System.EnterpriseServices). COM+, conocido dentro de Microsoft .NET como Enterprise Services, es una versin
mejorada de COM que pretende solucionar alguno de los problemas que
presenta el antiguo COM. El .NET Framework proporciona acceso total
a los servicios COM+ mediante el mecanismo de interoperabilidad con
COM.
Adems, COM+ ofrece todo un conjunto nuevo de funcionalidades que
facilitan el desarrollo de aplicaciones empresariales como transacciones,
object pooling o queued components.
System.Text. Utilidades para trabajar con texto en diferentes codificaciones (ASCII, unicode, etc.)
.NET Framework
FUOC P08/B0036/01625
25
5. Ensamblados
Definen una barrera de seguridad. El ensamblado es la unidad ms pequea sobre la que se pueden pedir y conceder permisos de seguridad.
Son la unidad mnima de instalacin. Al instalar una aplicacin, sta incluye todos los ensamblados que necesita para ser ejecutada. Si se elimina
la aplicacin, slo se eliminan los ensamblados correspondientes, por lo
que el resto de aplicaciones continan funcionando correctamente.
.NET Framework
FUOC P08/B0036/01625
26
.NET Framework
Estticos o dinmicos. Un ensamblado esttico es un ensamblado almacenado en uno o ms ficheros. Los ensamblados dinmicos, en cambio,
son ensamblados generados en tiempo de ejecucin y se almacenan en
memoria.
Para poder instalar y ejecutar una aplicacin en una mquina son necesarios ensamblados estticos. Los ensamblados dinmicos se utilizan cuando es necesario crear programas y ejecutarlos durante la ejecucin de una
aplicacin.
Nmero de versin
Lenguajes soportados
Bibliografa
Ms informacin sobre el
manifest en: NET Framework
Developer's Guide, Assembly
Manifest.
FUOC P08/B0036/01625
27
Una tabla de ficheros que indica todos los ficheros que forman parte del
ensamblado, incluyendo ficheros .netmodule y recursos incluidos.
.NET Framework
FUOC P08/B0036/01625
28
.NET Framework
El .NET Framework SDK proporciona una herramienta llamada Ildasm.exe para visualizar el contenido de un archivo PE. Con esta herramienta, podemos
ver el contenido del manifest (si se trata de un ensamblado), de los metadatos,
as como la estructura de tipos y elementos que contiene y el cdigo MSIL
generado por el compilador.
Bibliografa
Ms informacin sobre esta
herramienta en: .NET Framework Developer's Guide. Assembly Linker (Al.exe).
FUOC P08/B0036/01625
29
5.3.2.
Internacionalizacin
.NET Framework
FUOC P08/B0036/01625
30
Seguridad de ficheros. Slo el administrador del sistema puede borrar ensamblados de la GAC.
.NET Framework
FUOC P08/B0036/01625
31
5.4.1.
Strong name
Un nombre simple
.NET Framework
32
FUOC P08/B0036/01625
.NET Framework
Una firma digital generada con la clave privada de la misma clave criptogrfica
Instalacin en la GAC
Una vez hemos creado un strong name para un ensamblado, ya podemos colocarlo dentro de la GAC. Para ello, se utiliza la herramienta GACUtil.exe del
.NET Framework SDK. Con la opcin /i podemos instalar un ensamblado en la
GAC, mientras que con la opcin /u podemos desinstalarlo. Para utilizar esta
herramienta, es necesario pertenecer al grupo de Administradores del equipo.
5.4.3.
Versionado
El CLR usa un sistema de versionado para controlar las actualizaciones y asegurar la compatibilidad. La gestin de versiones se aplica a los ensamblados
compartidos, ya que los ensamblados privados se instalan siempre en el propio
directorio de la aplicacin (es responsabilidad del distribuidor de la aplicacin
de que todos los componentes sean compatibles entre s).
Cada ensamblado tiene asignadas las dos versiones siguientes:
mayor>.<versin
menor>.<numero
de
compilacin>.<revisin>
Los dos primeros nmeros identifican la versin del producto, mientras
que el tercero identifica el nmero de compilaciones del ensamblado que
se han realizado. Finalmente, el cuarto nmero se utiliza cuando hay que
repetir alguna compilacin fallida.
FUOC P08/B0036/01625
33
5.4.4.
Ejecucin 'side-by-side'
El CLR es capaz de ejecutar varios ficheros con el mismo nombre pero situados
en lugares distintos del disco, dentro del mismo espacio de direcciones. Este
mecanismo permite la compatibilidad entre diferentes versiones de un mismo
ensamblado.
.NET Framework
FUOC P08/B0036/01625
35
Bibliografa
Richter, Jeffrey (2002). Applied Microsoft .NET Framework Programming. Microsoft Press.
http://msdn.microsoft.com/netframework/
.NET Framework