55
Plataforma .NET Plataforma .NET Lic. Israel García Anido Lic. Israel García Anido

Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Embed Size (px)

Citation preview

Page 1: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Plataforma .NETPlataforma .NET

Lic. Israel García AnidoLic. Israel García Anido

Page 2: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Microsoft .NetMicrosoft .Net Microsoft .NET es el conjunto de nuevas Microsoft .NET es el conjunto de nuevas

tecnologías en las que Microsoft ha estado tecnologías en las que Microsoft ha estado trabajando durante los últimos años con el trabajando durante los últimos años con el objetivo de obtener una plataforma sencilla y objetivo de obtener una plataforma sencilla y potente para distribuir el software en forma de potente para distribuir el software en forma de servicios que puedan ser suministrados servicios que puedan ser suministrados remotamente y que puedan comunicarse y remotamente y que puedan comunicarse y combinarse unos con otros de manera combinarse unos con otros de manera totalmente independiente de la plataforma, totalmente independiente de la plataforma, lenguaje de programación y modelo de lenguaje de programación y modelo de componentes con los que hayan sido componentes con los que hayan sido desarrollados. Ésta es la llamada desarrollados. Ésta es la llamada plataforma .NETplataforma .NET, y a los servicios antes , y a los servicios antes comentados se les denomina comentados se les denomina servicios Webservicios Web..

Page 3: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

.NET Framework..NET Framework.

Page 4: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Partes del .NET Partes del .NET Framework.Framework.

Common Language Runtime (CLR) El Common Language Runtime (CLR) es el núcleo de la plataforma .NET. Es el motor encargado de gestionar la ejecución de las aplicaciones para ella desarrolladas y a las que ofrece numerosos servicios que simplifican su desarrollo y favorecen su fiabilidad y seguridad.

Page 5: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Modelo de programación consistente:Modelo de programación consistente:

A todos los servicios y facilidades A todos los servicios y facilidades ofrecidos por el CLR se accede de la ofrecidos por el CLR se accede de la misma forma: a través de un modelo de misma forma: a través de un modelo de programación orientado a objetos.programación orientado a objetos.

Antes se hacían llamados a procedimientos de DLL o se hacían llamadas a componentes COM, esto implicaba diferentes maneras de acceder a los recursos del sistema.Había que dominar distintos conceptos intrínsecos de cada una de estos modelos.

Page 6: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Modelo de programación sencillo:Modelo de programación sencillo: Con el CLR desaparecen muchos Con el CLR desaparecen muchos elementos complejos incluidos en los elementos complejos incluidos en los sistemas operativos actuales (registro sistemas operativos actuales (registro de Windows, GUIDs, HRESULTS, de Windows, GUIDs, HRESULTS, IUnknown, etc.) El CLR no es que IUnknown, etc.) El CLR no es que abstraiga al programador de estos abstraiga al programador de estos conceptos, sino que son conceptos conceptos, sino que son conceptos que no existen en la plataforma .NETque no existen en la plataforma .NET

Page 7: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Eliminación del “infierno de las DLLs”:Eliminación del “infierno de las DLLs”:

Problema que consiste en que al Problema que consiste en que al sustituirse versiones viejas de DLLs sustituirse versiones viejas de DLLs compartidas por versiones nuevas compartidas por versiones nuevas puede que aplicaciones que fueron puede que aplicaciones que fueron diseñadas para ser ejecutadas usando diseñadas para ser ejecutadas usando las viejas dejen de funcionar si las las viejas dejen de funcionar si las nuevas no son 100% compatibles con nuevas no son 100% compatibles con las anteriores.las anteriores.

Page 8: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Infierno de las DLLInfierno de las DLLComponent.DLL version 1.1.0.1Component.DLL version 1.1.0.1

COM Class EmployeCatalogCOM Class EmployeCatalog

Public Sub LoadEmploye(name as String)Public Sub LoadEmploye(name as String)

DB.Find(name)DB.Find(name)

End SubEnd Sub

Component.DLL version 1.1.0.2Component.DLL version 1.1.0.2

COM Class EmployeCatalogCOM Class EmployeCatalog

Public Sub LoadEmploye(name as String, loadPartial as boolean)Public Sub LoadEmploye(name as String, loadPartial as boolean)

DB.Partial = loadPartialDB.Partial = loadPartial

DB.Find(name)DB.Find(name)

End SubEnd Sub

<%

Set objEmpl = Server.CreateObject (“Conponent.EmployeCatalog”)

objEmpl.LoadEmploye(“anonymous”)

%>

Runtime Error!!!

Page 9: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

En .NET desaparece este problema En .NET desaparece este problema porque las DLL de diferentes versiones porque las DLL de diferentes versiones pueden coexistir y las aplicaciones que pueden coexistir y las aplicaciones que necesiten determinados servicios de necesiten determinados servicios de estas, cargan la versión compatible.estas, cargan la versión compatible.

Componentes.dll version 1.1.0.1Componentes.dll version 1.2.1.1

Aplicación X requiere Componentes.dll version 1.1.0.1

Global assembly

cache

Page 10: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ejecución multiplataforma: Ejecución multiplataforma: El CLR actúa como una El CLR actúa como una máquina virtual, encargándose de ejecutar las máquina virtual, encargándose de ejecutar las aplicaciones diseñadas para la plataforma .NET. Es aplicaciones diseñadas para la plataforma .NET. Es decir, cualquier plataforma para la que exista una decir, cualquier plataforma para la que exista una versión del CLR podrá ejecutar cualquier versión del CLR podrá ejecutar cualquier aplicación .NET.aplicación .NET.

Common Language Runtime (CLR)

Hasta ahora solo se han desarrollados CLR para todas las versiones de Windows, existe la posibilidad de desarrollar una versión para sistemas como Unix o Linux debido a que la arquitectura del CLR es abierta.

Proyecto Mono: http://go-mono.com

Page 11: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Integración de lenguajes:Integración de lenguajes:

Desde cualquier lenguaje para el que exista un Desde cualquier lenguaje para el que exista un compilador que genere código para la compilador que genere código para la plataforma .NET es posible utilizar código generado plataforma .NET es posible utilizar código generado para la misma usando cualquier otro lenguaje tal y para la misma usando cualquier otro lenguaje tal y como si de código escrito usando el primero se como si de código escrito usando el primero se tratase.tratase.

La integración de lenguajes provee que es posible escribir una clase en C# que herede de otra escrita en Visual Basic.NET que, a su vez, herede de otra escrita en C++ con extensiones gestionadas.

Page 12: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Gestión de memoria:Gestión de memoria:El CLR incluye un recolector de basura que evita que el programador tenga que tener en cuenta cuándo ha de destruir los objetos que dejen de serle útiles.

Gracias a este recolector se evitan errores de programación muy comunes como:

• Intentos de borrado de objetos ya borrados.

• Agotamiento de memoria por olvido de eliminación de objetos inútiles o

• Solicitud de acceso a miembros de objetos ya destruidos.

Page 13: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Reserva de un recurso en el heap administrado por el GC:Reserva de un recurso en el heap administrado por el GC:

Page 14: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Reserva de un recurso en el heap NO administrado:Reserva de un recurso en el heap NO administrado:

Linked list

Page 15: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

GC: Determinación de instancias inválidas.GC: Determinación de instancias inválidas.

Page 16: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

GC: Reorganización de memoria.GC: Reorganización de memoria.

Page 17: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Seguridad de tipos:Seguridad de tipos: El CLR facilita la El CLR facilita la detección de errores de programación detección de errores de programación difíciles de localizar comprobando que difíciles de localizar comprobando que toda conversión de tipos que se realice toda conversión de tipos que se realice durante la ejecución de una durante la ejecución de una aplicación .NET se haga de modo que los aplicación .NET se haga de modo que los tipos origen y destino sean compatibles.tipos origen y destino sean compatibles.

Page 18: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

class EmployeCatalogclass EmployeCatalog

{{

private: private:

DatabaseCatalog DB;DatabaseCatalog DB;

Public:Public:

void LoadEmploye(int ID) {void LoadEmploye(int ID) {

DB.Find(name)DB.Find(name)

} }

void EmployeCatalog(DatabaseCatalog aDB) {void EmployeCatalog(DatabaseCatalog aDB) {

DB = aDBDB = aDB

}}

}}

EmployeCatalog Catalog = New EmployeCatalog(SystemCatalog)EmployeCatalog Catalog = New EmployeCatalog(SystemCatalog)

String b = “a5”;String b = “a5”;

Catalog.LoadEmploye( (int)b )Catalog.LoadEmploye( (int)b )Podia interpretar la variable obteniendo un valor incorrecto.

Page 19: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

public class EmployeCatalog{public class EmployeCatalog{

private DatabaseCatalog DB; private DatabaseCatalog DB;

public void LoadEmploye(int ID)public void LoadEmploye(int ID)

DB.Find(ID);DB.Find(ID);

}}

public void EmployeCatalog (DatabaseCatalog aDB)public void EmployeCatalog (DatabaseCatalog aDB)

DB = aDB;DB = aDB;

}}

}}

EmployeCatalog Catalog = new EmployeCatalog(SystemCatalog)EmployeCatalog Catalog = new EmployeCatalog(SystemCatalog)

string b;string b;

b = “a5”b = “a5”

Catalog.LoadEmploye((int)b));Catalog.LoadEmploye((int)b));

Page 20: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Aislamiento de procesos:Aislamiento de procesos: El CLR asegura El CLR asegura que desde código perteneciente a un que desde código perteneciente a un determinado proceso no se pueda acceder determinado proceso no se pueda acceder a código o datos pertenecientes a otroa código o datos pertenecientes a otro..

Gracias al sistema de seguridad de tipos.Gracias al sistema de seguridad de tipos.

Page 21: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

A:Entero 4 bytes

B:Cadena 10 bytes

Heap memory

Int AInt A

String[10] BString[10] B

String[10] CString[10] C

C = (String[10])AC = (String[10])A

No se producía error en muchos casos

Page 22: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Tratamiento de excepciones: Tratamiento de excepciones: En el En el CLR todo los errores que se puedan CLR todo los errores que se puedan producir durante la ejecución de una producir durante la ejecución de una aplicación se propagan de igual aplicación se propagan de igual manera: mediante manera: mediante excepcionesexcepciones..

Ciertos errores se transmitían Ciertos errores se transmitían mediante códigos de error en formato mediante códigos de error en formato Win32, otros mediante HRESULTs y Win32, otros mediante HRESULTs y otros mediante excepciones.otros mediante excepciones.

Page 23: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Soporte multihilo: Soporte multihilo: El CLR es capaz El CLR es capaz de trabajar con aplicaciones divididas de trabajar con aplicaciones divididas en múltiples hilos de ejecución que en múltiples hilos de ejecución que pueden ir evolucionando por separado pueden ir evolucionando por separado en paralelo o intercalándose, según el en paralelo o intercalándose, según el número de procesadores de la número de procesadores de la máquina sobre la que se ejecuten.máquina sobre la que se ejecuten.

Page 24: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Distribución transparente: Distribución transparente: El CLR El CLR ofrece la infraestructura necesaria para ofrece la infraestructura necesaria para crear objetos remotos y acceder a ellos de crear objetos remotos y acceder a ellos de manera completamente transparente a su manera completamente transparente a su localización real, tal y como si se localización real, tal y como si se encontrasen en la máquina que los utiliza.encontrasen en la máquina que los utiliza.

.NET Remoting XML Web Services

Page 25: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Seguridad avanzada: Seguridad avanzada: El CLR proporciona El CLR proporciona mecanismos para restringir la ejecución de mecanismos para restringir la ejecución de ciertos códigos o los permisos asignados a ciertos códigos o los permisos asignados a los mismos según su procedendecia o el los mismos según su procedendecia o el usuario que los ejecuteusuario que los ejecute..

Basado en la Zona de red de la que proviene. Internet, Intranet, local.

Basado en el usuario que intenta correr el código.

Basado en el nivel de confianza especificado para el código que intenta ejecutarse.

Puedo decir que las aplicaciones provenientes de la compañía X puedan tener ciertos privilegios en mi PC.

Esto es semejante en comportamiento a las firmas digitales que vienen en los Componentes ActiveX

Page 26: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Language Runtime (CLR)

Interoperabilidad con código antiguo:Interoperabilidad con código antiguo:

Acceso a componentes COMAcceso a componentes COM

Acceso a funciones sueltas preexistentes Acceso a funciones sueltas preexistentes en DLL (Como la API de Windows).en DLL (Como la API de Windows).

Page 27: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Resumen CLRResumen CLR Como se puede deducir de las Como se puede deducir de las

características comentadas, el CLR lo que características comentadas, el CLR lo que hace es gestionar la ejecución de las hace es gestionar la ejecución de las aplicaciones diseñadas para la plataforma aplicaciones diseñadas para la plataforma .NET. Por esta razón, al código de estas .NET. Por esta razón, al código de estas aplicaciones se le suele llamar aplicaciones se le suele llamar códigocódigo gestionadogestionado, y al código no escrito para , y al código no escrito para ser ejecutado directamente en la ser ejecutado directamente en la plataforma .NET se le suele llamar plataforma .NET se le suele llamar código código no gestionadono gestionado

Page 28: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Microsoft Intermediate Language Microsoft Intermediate Language (MSIL)(MSIL)

Los compiladores que generan código para Los compiladores que generan código para la plataforma .NET no generan código la plataforma .NET no generan código máquina para CPUs x86 ni para ningún otro máquina para CPUs x86 ni para ningún otro tipo de CPU concretatipo de CPU concreta..

Sino que generan código escrito en el Sino que generan código escrito en el lenguaje intermedio conocido como lenguaje intermedio conocido como Microsoft Intermediate Lenguage (MSIL)Microsoft Intermediate Lenguage (MSIL)

Incluye instrucciones que permiten trabajar Incluye instrucciones que permiten trabajar directamente con objetos (crearlos, directamente con objetos (crearlos, destruirlos, inicializarlos, llamar a métodos destruirlos, inicializarlos, llamar a métodos virtuales, etc.), tablas y excepciones virtuales, etc.), tablas y excepciones (lanzarlas, capturarlas y tratarlas)(lanzarlas, capturarlas y tratarlas)

Page 29: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Maquinas Virtuales.Maquinas Virtuales.

Aplicaciones (EXE)

Hardware

Sistema Operativo

Aplicaciones (EXE)

Hardware

Sistema Operativo

Maquina Virtual

Page 30: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Compiler JIT (Just-In Time)Compiler JIT (Just-In Time)

CLR

JIT

Archivo DLL o EXE compilado en MSIL

Codigo nátivo listo para ejecutarse en el CPU

Metodo X

Cliente Invoca al Método X

Page 31: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Código portableCódigo portable En la plataforma .NET se distinguen dos tipos En la plataforma .NET se distinguen dos tipos

de de módulosmódulos de código compilado: de código compilado: ejecutablesejecutables (extensión (extensión .exe.exe) y ) y librerías de librerías de enlace dinámicoenlace dinámico (extensión (extensión .dll.dll generalmente)generalmente)

La diferencia entre ellos es que sólo los EXE La diferencia entre ellos es que sólo los EXE disponen de un método especial que sirve de disponen de un método especial que sirve de punto de entrada a partir del que es posible punto de entrada a partir del que es posible ejecutar el código que contienen haciendo una ejecutar el código que contienen haciendo una llamada desde la línea de comandos del llamada desde la línea de comandos del sistema operativo. sistema operativo.

A ambos tipos de módulos se les suele llamar A ambos tipos de módulos se les suele llamar ejecutables portablesejecutables portables (PE), ya que su código (PE), ya que su código puede ejecutarse bajo cualquier versión del puede ejecutarse bajo cualquier versión del CLR.CLR.

Page 32: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

MetadatosMetadatos

El contenido de un módulo no sólo MSIL, El contenido de un módulo no sólo MSIL, sino que también consta de otras dos sino que también consta de otras dos áreas muy importantes: la cabecera de áreas muy importantes: la cabecera de CLR y los metadatos.CLR y los metadatos.

La La cabecera de CLRcabecera de CLR es un pequeño es un pequeño bloque de información que indica que se bloque de información que indica que se trata de un módulo gestionado e indica es trata de un módulo gestionado e indica es la versión del CLR que necesita, cuál es su la versión del CLR que necesita, cuál es su firma digital, cuál es su punto de entrada firma digital, cuál es su punto de entrada (si es un ejecutable), etc.(si es un ejecutable), etc.

Page 33: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

MetadatosMetadatos

Los Los metadatosmetadatos son un conjunto de son un conjunto de datos organizados en forma de tablas datos organizados en forma de tablas que almacenan información sobre los que almacenan información sobre los tipos definidos en el módulo, los tipos definidos en el módulo, los miembros de éstos y sobre cuáles miembros de éstos y sobre cuáles son los tipos externos al módulo a los son los tipos externos al módulo a los que se les referencia en el módulo. que se les referencia en el módulo.

Generados por el compilador.Generados por el compilador.

Page 34: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

MetadatosMetadatos

Se puede acceder desde el código y Se puede acceder desde el código y conocer la información de los conocer la información de los metadatos de un módulo.metadatos de un módulo.

O sea, un módulo puede conocerse a O sea, un módulo puede conocerse a si mismo y conocer a otro y saber si mismo y conocer a otro y saber que clases tiene.que clases tiene.

System.ReflectionSystem.Reflection

Page 35: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

EnsambladosEnsamblados

Un Un ensamblado ensamblado es una agrupación es una agrupación lógica de uno o más módulos o lógica de uno o más módulos o ficheros de recursos ficheros de recursos (ficheros .GIF, .HTML, etc.) que se (ficheros .GIF, .HTML, etc.) que se engloban bajo un nombre común.engloban bajo un nombre común.

Abstracción de localización. (like Abstracción de localización. (like COM)COM)

Page 36: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ensamblados de un solo Ensamblados de un solo archivoarchivo

Page 37: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

EnsambladosEnsamblados

Los ensamblados pueden estar compuestos por archivos separados para facilitar el tiempo de descarga, por

ejemplo solo cuando se vayan a usar las funcionalidades del ensamblado “Mylib.netmodule” se hará un

download de este en la PC de la aplicación, por lo tanto si nunca se llegara a usar esta funcionalidad, no

tendriamos nunca una copia de este binario dentro de nuestra PC.

Page 38: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

EnsambladosEnsamblados

Módulo de Acceso bancario

Módulo de Recursos

SERVIDOR EN CANADA INTRANET

APLICACIÓN PRINCIPAL

Page 39: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ensamblados Estáticos y Ensamblados Estáticos y DinámicosDinámicos

Estáticos: DLL o EXE que se compilan y se Estáticos: DLL o EXE que se compilan y se almacenan en un directorio para luego almacenan en un directorio para luego ejecutarse.ejecutarse.

Dinamicos: Se crean en tiempo de Dinamicos: Se crean en tiempo de ejecución, .NET Framework provee un ejecución, .NET Framework provee un conjunto de clases bajo el namespace: conjunto de clases bajo el namespace: System.Reflection.Emit para crear System.Reflection.Emit para crear ensamblados dinámicos, crear código MSIL ensamblados dinámicos, crear código MSIL y guardarlo en un archivo.y guardarlo en un archivo.

Page 40: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Identidad de un EnsambladoIdentidad de un Ensamblado

NombreNombre VersiónVersión CulturaCultura Nombre Fuerte (Strong-Name)Nombre Fuerte (Strong-Name)

El El Manifiesto del ensambladoManifiesto del ensamblado es una es una parte del archivo que contiene todo lo parte del archivo que contiene todo lo referente a su identidad y la identidad de referente a su identidad y la identidad de los ensamblados a los que se enlaza este.los ensamblados a los que se enlaza este.

Page 41: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ensamblados Privados o Ensamblados Privados o CompartidosCompartidos

Los privados se almacenan en el Los privados se almacenan en el mismo directorio que la aplicación mismo directorio que la aplicación que los usa y sólo puede usarlos éstaque los usa y sólo puede usarlos ésta..

Mientras que los compartidos se Mientras que los compartidos se almacenan en un almacenan en un caché de caché de ensamblado globalensamblado global (GAC) y pueden (GAC) y pueden usarlos cualquier aplicación que haya usarlos cualquier aplicación que haya sido compilada referenciándolos.sido compilada referenciándolos.

Page 42: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ensamblados compartidosEnsamblados compartidos

Han de cifrarse con RSA ya que lo que los Han de cifrarse con RSA ya que lo que los identifica en el GAC es su nombre (sin identifica en el GAC es su nombre (sin extensión) más su clave pública.extensión) más su clave pública.

Permite que en el GAC puedan instalarse Permite que en el GAC puedan instalarse varios ensamblados con el mismo nombre varios ensamblados con el mismo nombre y diferentes claves públicasy diferentes claves públicas..

la clave pública forma parte del nombre la clave pública forma parte del nombre del ensamblado.del ensamblado. Ensamblados deEnsamblados de nombre nombre fuertefuerte

Page 43: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ensamblados compartidosEnsamblados compartidos

Ensamblado DBUsers.DLL de la compañía Ensamblado DBUsers.DLL de la compañía Microsoft.Microsoft.

Ensamblado DBUsers.DLL de la compañía Sun Ensamblado DBUsers.DLL de la compañía Sun Microsystem.Microsystem.

Cada compañía tiene diferentes llaves publicas.Cada compañía tiene diferentes llaves publicas. En el GAC se pueden mantener múltiples En el GAC se pueden mantener múltiples

versiones de un mismo ensamblado.versiones de un mismo ensamblado. Si una aplicación fue compilada usando una cierta Si una aplicación fue compilada usando una cierta

versión de un determinado ensamblado versión de un determinado ensamblado compartido, cuando se ejecute sólo podrá hacer compartido, cuando se ejecute sólo podrá hacer uso de esa versión del ensamblado y no de alguna uso de esa versión del ensamblado y no de alguna otra más moderna que se hubiese instalado en el otra más moderna que se hubiese instalado en el GACGAC. (Soluciona el infierno de las DLL). (Soluciona el infierno de las DLL)

Page 44: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Global assembly CacheGlobal assembly Cache

WINDIR%\Assembly folderWINDIR%\Assembly folder

Page 45: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

EjercicioEjercicio Crear un ensamblado de un solo archivo.Crear un ensamblado de un solo archivo. Ver el contenido del ensamblado con la utilidad Ver el contenido del ensamblado con la utilidad

“ildasm.exe” y ver el contenido del manifiesto.“ildasm.exe” y ver el contenido del manifiesto.

using System;

using Util;

class MyClass{

   [STAThread]

public static void Main(string[] args)         

{int n1, n2;n1 = 10 n2 = 20    string message = " The sum of 10 and 20 is " +

  add(n1, n2).ToString() System.Console.Write(message)

System.Console.ReadLine(); }    private int add(int n1, int n2){ add = n1 + n2      }}

Page 46: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

EjercicioEjercicio Crear un ensamblado de multiples archivos.Crear un ensamblado de multiples archivos.Namespace Util Public Class HelloUtil Public Shared Sub Hello() System.Console.writeline("Hello, how are you doing!") End Sub End ClassEnd Namespace

vbc /t:module HelloUtil.vb

import System; package Util {      public class GoodByeUtil {     public static function GoodBye()         {             System.Console.WriteLine("Goodbye, see you next time!");         }      } }

jsc /t:library GoodByeUtil.js

Page 47: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

using System; using Util; class MyClass  {    [STAThread]    public static void Main(string[] args)          {       System.Console.WriteLine("Hello from Main");       HelloUtil.Hello();       GoodByeUtil.GoodBye();    }  }

csc /addmodule:HelloUtil.netmodule /r:GoodByeUtil.dll,Microsoft.JScript.dll

/target:module Main.cs

El compilador creará el archivo Main.netmodule.

Combinar los tres archivos en un solo ensamblado usando AL:

al /t:exe /out:MyApp.exe /main:MyClass.Main HelloUtil.netmodule GoodByeUtil.dll Main.netmodule

Observar el manifiesto del archivo creado.

Page 48: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ejercicio.Ejercicio.

Colocar un ensamblado en el GAC Colocar un ensamblado en el GAC utilizando la utilizad gacutil.exe /iutilizando la utilizad gacutil.exe /i

Primero hay que asignarle un Primero hay que asignarle un nombre fuerte utilizando la utilidad nombre fuerte utilizando la utilidad sn.exe –ksn.exe –k

Creando una referencia al Creando una referencia al ensamblado desde una aplicación.ensamblado desde una aplicación.

Page 49: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Librería de clase base Librería de clase base (BCL)(BCL)

Esta librería está escrita en MSIL, por lo Esta librería está escrita en MSIL, por lo que puede usarse desde cualquier que puede usarse desde cualquier lenguaje cuyo compilador genere MSIL.lenguaje cuyo compilador genere MSIL.

Dado la amplitud de la BCL, ha sido Dado la amplitud de la BCL, ha sido necesario organizar las clases en ella necesario organizar las clases en ella incluida en incluida en espacios de nombresespacios de nombres que que agrupen clases con funcionalidades agrupen clases con funcionalidades similares. Por ejemplo, los espacios de similares. Por ejemplo, los espacios de nombres más usados son:nombres más usados son:

Page 50: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Espacio de nombres Utilidad de los tipos de datos que contiene

System Tipos muy frecuentemente usados, como los los tipos básicos, tablas, excepciones, fechas, números aleatorios, recolector de basura, entrada/salida en consola, etc.

System.Collections Colecciones de datos de uso común como pilas, colas, listas, diccionarios, etc.

System.Data Manipulación de bases de datos. Forman la denominada arquitectura ADO.NET.

System.IO Manipulación de ficheros y otros flujos de datos.

System.Net Realización de comunicaciones en red.

System.Reflection Acceso a los metadatos que acompañan a los módulos de código.

System.Runtime.Remoting Acceso a objetos remotos.

System.Security Acceso a la política de seguridad en que se basa el CLR.

System.Threading Manipulación de hilos.

System.Web.UI.WebControls Creación de interfaces de usuario basadas en ventanas para aplicaciones Web.

System.Winforms Creación de interfaces de usuario basadas en ventanas para aplicaciones estándar.

System.XML Acceso a datos en formato XML.

Page 51: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Common Type System (CTS)Common Type System (CTS)

Conjunto de reglas que han de seguir las definiciones de Conjunto de reglas que han de seguir las definiciones de tipos de datos para que el CLR las acepte.tipos de datos para que el CLR las acepte.

Ejemplo: No puede haber herencia múltiple, y todo tipo de Ejemplo: No puede haber herencia múltiple, y todo tipo de dato ha de heredar directa o indirectamente de dato ha de heredar directa o indirectamente de System.ObjectSystem.Object..

Common Language Specification (CLS)Common Language Specification (CLS) Conjunto de reglas que han de seguir las definiciones de tipos que se Conjunto de reglas que han de seguir las definiciones de tipos que se

hagan usando un determinado lenguaje gestionado si se desea que hagan usando un determinado lenguaje gestionado si se desea que sean accesibles desde cualquier otro lenguaje gestionado.sean accesibles desde cualquier otro lenguaje gestionado.

Las excepciones han de derivar de System.Exception, los delegados Las excepciones han de derivar de System.Exception, los delegados de System.Delegate, las enumeraciones de System.Enum, y los tipos de System.Delegate, las enumeraciones de System.Enum, y los tipos por valor que no sean enumeraciones de System.ValueType.por valor que no sean enumeraciones de System.ValueType.

En un mismo ámbito no se pueden definir varios identificadores En un mismo ámbito no se pueden definir varios identificadores cuyos nombres sólo difieran en la capitalización usada. De este cuyos nombres sólo difieran en la capitalización usada. De este modo se evitan problemas al acceder a ellos usando lenguajes no modo se evitan problemas al acceder a ellos usando lenguajes no sensibles a mayúsculas.sensibles a mayúsculas.

Page 52: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Actualización.Actualización.

Como se actualiza un componente COM?Como se actualiza un componente COM? Hay que reiniciar servicios y que la aplicación Hay que reiniciar servicios y que la aplicación

deje de ser funcional por ese momento.deje de ser funcional por ese momento. Problemas críticos en aplicaciones Problemas críticos en aplicaciones

Empresariales que deben permanecer online.Empresariales que deben permanecer online. Se pierden los estados de los componentes, Se pierden los estados de los componentes,

las Variables de sesion, transacciones las Variables de sesion, transacciones pendientes, etc…pendientes, etc…

Page 53: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Actualización on-the-fly.Actualización on-the-fly.

El CLR crea copias sombras de los El CLR crea copias sombras de los ensamblados que están siendo utilizados.ensamblados que están siendo utilizados.

Se puede sobre escribir el ensamblado Se puede sobre escribir el ensamblado mientras la aplicación se está mientras la aplicación se está ejecutando.ejecutando.

En la proxima llamada a un método el En la proxima llamada a un método el CLR detecta que hay un cambio de CLR detecta que hay un cambio de versión, desmonta la version antigua y versión, desmonta la version antigua y actualiza la copia sombra.actualiza la copia sombra.

Page 54: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Actualización on-the-fly.Actualización on-the-fly.

En ASP.NET el proceso de las copias En ASP.NET el proceso de las copias sombras es automático.sombras es automático.

En aplicaciones clientes para En aplicaciones clientes para Windows es necesario especificar Windows es necesario especificar que se quiere hacer una copia que se quiere hacer una copia sombra y cargar los nuevos sombra y cargar los nuevos ensamblados en un ensamblados en un dominio de dominio de aplicaciónaplicación distinto al actual. distinto al actual.

Page 55: Plataforma.NET Lic. Israel García Anido. Microsoft.Net Microsoft.NET es el conjunto de nuevas tecnologías en las que Microsoft ha estado trabajando durante

Ejercicio.Ejercicio.

Crear un ensamblado que utilice otro Crear un ensamblado que utilice otro desde ASP.NET.desde ASP.NET.

Buscar las copias sombras.Buscar las copias sombras.