Presentación 1: Introducción - Ivan...
Transcript of Presentación 1: Introducción - Ivan...
Iván Bernal, [email protected]
httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito – Ecuador
Copyright @2004, I. Bernal
Presentación 1: IntroducciónJueves, 21 de Octubre de 2004
MICROSOFTMICROSOFT .NET.NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
22
Agenda• Visión general de .NET
– Servicios ofrecidos.• .NET framework
– MSIL, CLR, Garbage Collector, JITter.– Assemblies, metadatos.
• Control de versiones• Interoperabilidad con COM• Seguridad• ASP.NET y Servicios Web• Delegados y eventos
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
33
Bibliografía (1)• D. Platt, “Introducing Microsoft .NET”, 3rd
Edition, Microsoft Press, 2003. ISBN:0735619182.
• Nota:– Las transparencias de esta presentación fue elaborado
tomando como referencia principal el libro de D. Platt; se utilizan ejemplos y figuras del libro de Platt.
– Algunos capítulos, y los ejemplos utilizando C# y VB.NETestán disponibles gratuitamente en:• http://www.introducingmicrosoft.net
– El presente material (transparencias) y algunas cosas adicionales, que de seguro encontrarán interesantes, pueden obtenerlas en:• http://wwwfie.epn.edu.ec/ibernal
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
44
Bibliografía (2)• J. Webb, “Developing Web Applications
with Microsoft Visual Basic.NET and Visual C#.NET”, Microsoft Press, 2003. ISBN:0735619271.
• J. Archer, A. Whitechapel, “Inside C#”, Microsoft Press, 2002. ISBN:0735616485.
• J. Clark, “Introducing the .NET Framework with C#”, http://www.wintellect.com/resources/tutorials.
• D. Chappell, “One more time: What exactly is .NET?”, Column: .NET & Beyond. 2003 , http://www.adtmag.com/article.asp?id=8003
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
55
Objetivo
• Presentar una visión global de lo que involucra la Infraestructura .NET, discutiendo sus servicios y campos de acción.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
66
Microsoft .NET (1)
•• ““Infraestructura (Infraestructura (infrastructureinfrastructure) prefabricada ) prefabricada para resolver problemas comunes en el para resolver problemas comunes en el desarrollo de aplicaciones para el Internetdesarrollo de aplicaciones para el Internet””
-------- David Platt.David Platt.
•• ““Es una iniciativa para conectar Es una iniciativa para conectar informaciinformacióón, personas y dispositivosn, personas y dispositivos””
-------- Jeffrey Richter.Jeffrey Richter.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
77
Microsoft .NET (2)• Por qué una infraestructura prefabricada para el
Internet ?• No podemos construirla nosotros mismos: tomaría
demasiado tiempo, costaría demasiado, y talvez no sabríamos cómo.
• Mis requerimientos para una infraestructura para aplicaciones Internet son similares a las de otros.
• Ejemplos:• Escribir código seguro es extremadamente difícil.• También es difícil realizar: pruebas, depuración, entrega,
instalación y mantenimiento.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
88
Microsoft .NET (3)• Anunciada en el verano del 2000.• Microsoft empezó a llamar a todo con la
etiqueta .NET:–.NET Framework–Visual Studio .NET–.NET Enterprise Servers–.NET My Services–Windows .NET Server–Incluso un posible Office .NET para el futuro
• Una estrategia de mercadeo, antes que tecnológica, que confundió a muchos
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
99
• “.NET Enterprise Servers” son ahora parte del conjunto de servidores “Windows Server System”.
–Microsoft Application Center–Microsoft BizTalk Server–Microsoft Commerce Server–Microsoft Exchange–Microsoft Host Integration Server–Microsoft Internet Security and Acceleration (ISA) Server–Microsoft Mobile Information–Microsoft SQL Server
Microsoft .NET (4)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1010
• “.NET My Services” no tuvo éxito en su conjunto. –Plan para desarrollar Servicios Web propios de Microsoft
•Passport•.NET Alerts•.NET Calendar•.NET Devices•.NET Locations•etc
• El Sistema Operativo “Windows .NET Server” fue denominado finalmente “Windows Server 2003”, aunque es la primera versión de Windows en traer el .NET Framework como parte integral.
• El rumor sobre Office .NET desapareció, en su lugar se entregó Office 2003.
Microsoft .NET (5)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1111
• Qué conservó la etiqueta .NET?–.NET Framework y Visual Studio .NET–La versión del IDE de desarrollo es ahora Visual Studio 2003.
Microsoft .NET (6)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1212
Microsoft .NET (7)• .NET incluye los siguientes servicios:
• .NET Framework: (run-time environment)• ASP.NET/ Web Forms (Formularios/ formas Web)• Soporte para implementar Servicios Web (XML Web
Services)• Windows Forms (Formularios/formas Windows)
• .NET no excluye aplicaciones de escritorio, a pesar que énfasis es el Internet
• Soporte para desarrollo de controles:• Windows Forms Controls• Web Forms Controls
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1313
Microsoft .NET (8)
• .NET incluye los siguientes servicios:• ADO.NET• .NET Remoting• Soporte para manipulación de documentos y streams
XML• Soporte para señalización de eventos asincrónicos
(callbacks)• Soporte para escribir aplicaciones multithreading con
mayor facilidad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1414
.NET Framework (1)• .NET framework es un run-time environment.
– Componentes y programas se ejecutan en este ambiente. – Runtimes ofrecen servicios a aplicaciones y evitan el
reinventar algoritmos para ciertas tareas.
• Parte de la iniciativa .NET que facilita la escritura de código para que éste sea bueno, robusto, y se lo escriba de manera rápida.
• Facilita la administración, instalación, y revisión del código.
• Constituido de dos partes principales: CLR y FCL
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1515
.NET Framework (2): servicios• Ofrece:
– Garbage collection (administración automática de memoria).
– Fácil acceso a servicios del sistema operativo.– Utilidades para acceso a bases de datos y el Internet.– Un nuevo mecanismo para reutilización de código
(assemblies).– Mayor facilidad para distribuir e instalar aplicaciones– Soporte estandarizado para el control de versiones.– Facilita la interoperabilidad de varios lenguajes de
programación.– Control de acceso en tiempo de ejecución.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1616
.NET Framework (3)
• Varias descripciones del framework:– Plataforma de desarrollo– Ambiente de ejecución– Sistema Operativo
• En realidad tiene un poco de todo lo mencionado.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1717
.NET Framework (4): MSIL• Escribimos nuestro código en un “lenguaje adecuado”
de alto nivel.• Nuestro código se compila (transforma) en “Microsoft
Intermediate Language (MSIL)”.– Abstracción de un lenguaje ensamblador.
• Para un CPU que no existe. – MSIL es de alto nivel para ser un lenguaje
ensamblador• Incluye instrucciones para conceptos de
programación avanzados como instanciación de objetos o llamadas a funciones virtuales
– No importa el “lenguaje adecuado” seleccionado.– El código correrá en un ambiente denominado CLR.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1818
.NET Framework (5): CLR
• El CLR (Common Language Runtime) provee un “mejor” conjunto de servicios que el API Win32.
• El CLR es a quien se entrega el código intermedio para que lo procese. – De cierta manera, el CLR es similar a otros motores de
ejecución: JVM (Java Virtual Machine) o Visual Basic.
• El código entregado al CLR se denomina: Código Administrado (managed code)– Se llama administrado porque corre bajo la constante
supervisión del CLR.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
1919
.NET Framework (6):CLR
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2020
.NET Framework (7): Lenguajes• Las herramientas de desarrollo que se
ajustan al CLR, deben procesar un lenguaje de programación dado y generar MSIL.– Al momento de llegar al CLR, las diferencias entre
los lenguajes de programación han desaparecido.• Ejemplo: No importa como se presente en el
código fuente de un lenguaje de programación las cadenas (strings).
• La representación interna del programaresultante es la misma: todas usan el objeto StringString en el CLR.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2121
.NET Framework (8): Lenguajes
• MS Visual Studio, .NET y 2003, proveen versiones de Visual Basic.NET, C#, Java#, JScript y C++.
• Otras compañías están desarrollando compiladores que generan MSIL para alrededor de 20 lenguajes: – COBOL, APL, PERL, Java, etc.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2222
.NET Framework (9): Lenguajes
HardwareHardware
Operating SystemOperating System
Common Language Runtime (CLR)Common Language Runtime (CLR)
Your ApplicationYour Application .NET Framework.NET FrameworkClass LibraryClass Library
VBVB J#J# C#C# C++C++ ……
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2323
.NET Framework (10): Lenguajes
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2424
.NET Framework (11): JITter
• El código MSIL no puede correr directamente en el procesador de una computadora.
• Se requiere algo que lea MSIL y produzca código de máquina que corra en la plataforma en uso:– JITter (Just-in-time Compiler), parte del CLR.
• Cada plataforma debe tener su propio JITter.• CLRs existen para plataformas Windows.
– Mono es una implementación para LINUX.– http://www.mono-project.com
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2525
.NET Framework (12): JITter• Mas detalles del JITter:
– La primera vez que un ejecutable administrado hace referencia a una clase o tipo, se carga el módulo que implementa esa clase.
– Al cargar el módulo, el JITter crea stubs (esqueletos) para todos los métodos de la clase (en lenguaje de máquina nativo).
• Los stubs solo tienen un salto a una función específica del JITter.
• Se hace que cualquier llamada en el código que hace referencia al nuevo tipo apunte a los stubs.
• Hasta ahora no ha existido compilación JIT del nuevo tipo.– Cuando se invoque algún stub, el código del stub
produce un salto al JITter, que examina el código (IL+metadata) y construye código en lenguaje de máquina nativo, ese momento (on the fly).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2626
.NET Framework (13): JITter• Mas detalles del JITter:
– Se reemplaza el código del stub con un salto al nuevo código generado.
– La siguiente vez que se invoque el mismo método, se ejecutará el código nativo, sin necesidad de compilación JIT, o ninguno de los otros pasos mencionados.
– No se desperdicia tiempo compilando métodos que no son llamados (al menos esta vez).
– Al realizar compilación JIT de un método, puede ser que éste haga referencia a otros tipos.
• El CLR chequea si estos se usan por primera vez en esta ejecución de la aplicación.Si este es el caso, todo el proceso descrito se inicia de nuevo para este nuevo tipo.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2727
.NET Framework (14): JITter
• El código administrado no es interpretado.– A diferencia de otros motores o ambientes de ejecución, el
código que corre bajo la supervisión del CLR se ejecuta de forma nativa, en el lenguaje de máquina del CPU en uso.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2828
.NET Framework (15): metadatos• Describen el código al CLR
– Definiciones de clases, la firma de los métodos, tipos de los argumentos y de los valores de retorno, la relación de tipos de un módulo con tipos que están en módulos externos.
– Información sobre:• La versión de un EXE, DLL.• Cultura: lenguaje
• Conclusión: Los metadatos describen todo aspecto de la estructura del código que no sea la lógica de ejecución.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
2929
.NET Framework (16): metadatos• Un ejecutable administrado es MSIL +
metadatos.– A esto se llama un assembly (más sobre
assemblies en las próximas transparencias)– Ejecutables tradicionales solo contienen
instrucciones; las definiciones de clases, etc., desaparecen al momento de la compilación.
• El JITter utiliza MSIL y los metadatos de un ejecutable administrado para crear las instrucciones en lenguaje de máquina, en tiempo de ejecución.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3030
.NET Framework (17): vista global
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3131
.NET Framework (18): FCL
• .NET Framework Class Library (FCL)– Gran conjunto de clases, estructuras, tipos
enumerados e interfaces.– Las clases facilitan tareas:
• Simples, como manejo de archivos, ventanas y otros elementos de GUI.
• Complejas, para creación de aplicaciones Weby distribuidas.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3232
.NET Framework (19): otros servicios del CLR
• El CLR provee además:– Verificación del código.– Administración de memoria.– Administración de threads (hilos o subprocesos).– Manejo de Excepciones.– Facilidades para control de versiones.– Seguridad.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3333
.NET Framework (20):Verificación• Verificación de si el código es correcto.
– Durante compilación JIT, el CLR examina el MSIL y se verifica de que todo sea seguro (safe).
• Ejemplos:– Si existen referencias a memoria que ya fue liberada, o
a datos no inicializados. – Castings a tipos no adecuados.– Si los métodos se invocan con el número adecuado de
parámetros.• Se puede marcar código como unsafe.
– Se produce código que no se puede verificar.– Para uso de punteros: acceder al SO, implementar
algoritmos en donde el tiempo es crítico.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3434
.NET Framework (21): Unmanaged Code
• Unmanaged code ( código no administrado)– Módulos que no requieren el CLR para su
ejecución (a los que estamos acostumbrados).– El .NET Framework ofrece facilidades para
interactuar con código no administrado.• Nota aparte: Visual C++ ahora puede
configurarse para que genere módulos que requieran el CLR (managed code).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3535
.NET Framework (22): Unmanaged Code
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3636
.NET Framework (23): GC
• El .NET Framework provee administración automática de memoria: garbage collection.– Un programa no tiene que liberar explícitamente
memoria que ha reservado.– El CLR detecta cuando un programa ya no está
usando cierta área de memoria (garbage) y la recicla automáticamente.
– La memoria se reserva de un “managed heap”, administrado por el CLR.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3737
.NET Framework (24):GC
• Mas detalles de garbage collection.– Es un proceso que toma tiempo.
• El CLR debe detener la mayoría o todos los threads en la aplicación para realizar GC.
– Se realiza cuando se detecta que no hay suficiente memoria libre para satisfacer una petición de crear un objeto o reservar espacio para buffers.
– Se puede forzar un GC por código con la función:• System.GC.Collect
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3838
.NET Framework (25):GC
• Mas detalles de garbage collection.– Cuando se realiza GC, se buscan los objetos
locales (stack) y globales referenciados, los cuales no son “basura”; estos a su vez se usan para buscar mas objetos referenciados, que tampoco serán “basura”, y así sucesivamente. • Todos los objetos que no han sido
referenciados son basura y su memoria puede ser recuperada.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
3939
.NET Framework (26): GC
• Mas detalles de garbage collection.– Durante GC, la memoria de objetos “basura” se
compacta, y los objetos referenciados se desplazan a utilizar esta memoria liberada.• Se deben actualizar las referencias en el código
a las nuevas direcciones de los objetos desplazados.
• Memoria se usa de mejor manera ya que se evita fragmentación.
• Si bien GC toma tiempo, la asignación de memoria es muy rápida.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4040
.NET Framework (27): GC• Problema: en donde se debe ubicar el código
necesario para limpieza cuando un objeto se destruye?– C++ lo hace en los destructores de forma determinística.– Cómo hacer esto con GC involucrado?
• La tarea de destructores en C++ era liberar memoria reservada para otros objetos.– En .NET eso ya está solucionado precisamente por GC.
• En .NET quedan pendientes tareas como:– Cerrar conexiones a bases de datos.– Logouts de sistemas remotos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4141
.NET Framework (28): GC
• GC del CLR maneja la idea de finalizers.– Es un método en los objetos que se invoca el momento en
el que GC destruye los objetos.– System.Object contiene el método Finalize, el cual puede
ser redefinido.– Si GC detecta que el objeto tiene el método Finalize lo
invoca, ejecutando el código de limpieza.– Esto no es mecanismo determinístico.
• En C#, para sobrescribir Finalize, se escribe algo que parece un destructor de C++.– Class X{ public: X( ) {… } ~X( ) {……..} };
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4242
.NET Framework (29): GC
• Desventajas de finalizers:– No hay forma de garantizar el orden en el que GC invoca los
finalizers en los objetos que se han convertido en basura.– No escribir código que dependa de si un objeto terminó
antes o después que otros.– No escribir código que invoque funciones de otros objetos
en los finalizers; si mi objeto es basura, puede ser que los que intente invocar también lo sean.
– No se deben lanzar excepciones dentro de los finalizers.• Ya nadie escucha a objeto por excepciones.
– Si se debe escribir código para capturar excepciones generadas en el código del finalizer.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4343
.NET Framework (30): GC• Los finalizers pueden ser una solución en ciertos
casos pero si se trata de recursos escasos, se requiere algo determinístico.– Se podría forzar que corra GC pero costoso.– Se quiere liberar recursos de un objeto en particular.
• Los objetos que desean una finalización determinística, deben implementar la interfaz IDisposable.– Tiene solo el método Dispose.– En este método se incluye el código para liberar recursos.– El cliente invoca este método paral liberar recursos este
momento.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4444
.NET Framework (31): GC
• WinForms soportan Dispose para liberar rápidamente los manipuladores de ventana.
• Problema: el cliente puede olvidar el invocar Dispose.– El código de limpieza debería invocarse también en el
finalizer.– Pero si el usuario Si invoca Dispose, GC desperdicia tiempo
en el finalizer.• System.GC.SuppresFinalize
• El invocar Dispose en un objeto, no implica que éste se convierta en basura.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4545
.NET Framework (32): POO
• El CLR es una plataforma diseñada para ser totalmente orientada a objetos (OO), y promover los principios y objetivos de POO (Programación OO).– Clases (datos + funcionalidad), objetos, herencia,
polimorfismo, etc.
• Todos los lenguajes que puedan compilarse a MSIL puede ofrecer el mismo conjunto de características.– No necesariamente todo lenguaje expone todas las
propiedades del CLR al programador.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4646
.NET Framework (33): POO
• Características de POO que en Visual Basic no estaban presentes:– Herencia: heredar algo de alguien y luego modificar lo
que sea necesario o agregar algo nuevo (forma de reutilización de código).
– Constructores (de clases) parametrizados.
• Todos los tipos, incluidos los primitivos están derivados de System.Object, brindando una vista homogénea de todos los tipos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4747
.NET Framework (34): namespaces• .NET Framework organiza las funcionalidades
ofrecidas por el Sistema Operativo con la ayuda del namespace denominado System.
• En general un namespace es:– Un namespace es el conjunto de nombres dentro
del cual un nombre particular tiene que ser único.– Evita la colisión de nombres con la nomenclatura
de otros programadores.– Agrupa funciones, clases, objetos que tengan
alguna relación.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4848
.NET Framework (35): namespaces• Permiten organizar jerárquicamente servicios del SO,
una subdivisión lógica de funcionalidad que facilita encontrar las características que se requieran de entre 5000 funciones.– System.Console.Write: un namespace subordinado
(subnamespace), parte de la jerarquía completa.– Fully-qualified name de una función: nombre de la función
precedido por el namespace completo.– System está implementado en varios dlls; deben especificarse los
utilizados al compilar el código.– Problema si nombre calificado es muy largo.
• Importar namespace (VB.NET: Imports, C#: using)• Se indica al compilador que se usaran nombres cortos, no
completamente calificados.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
4949
.NET Framework (36): namespaces• WinCV (SDK) permite explorar clases de assemblies
compartidas, pero es útil porque incluye a las clases base.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5050
Ejemplos básicos con Visual Studio• Ejemplos sencillos
– Consola con VB.NET y C# • Hola Mundo
– GUI con C#• Hola mundo
• Ejemplo de relativa complejidad– Copia de archivos con C#
• Qué es C#?– Un nuevo lenguaje de programación (POO) diseñado
específicamente para escribir código administrado que tiene como objetivo el .NET Framework.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5151
Ejemplo 1: VB.NET y C#
• Utilizando Visual Studio.NET se demuestra como se puede desarrollar partes de un sistema utilizando diferentes lenguajes.– Un componente (dll) escrito en VB.NET que
obtenga la hora del sistema. Tipo de proyecto: “class library”
– Una aplicación de consola en C# que utilice el componente VB.NET e imprima la hora en pantalla. Tipo de proyecto: “console application”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5252
Ejemplo 1: Server en VB.NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5353
Ejemplo 1: Server en VB.NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5454
Ejemplo 1: Cliente en C#
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5555
Ejemplo 1: Cliente en C#
Para
com
pila
r el c
lient
e se
re
quie
re a
greg
ar u
na
refe
renc
ia a
l com
pone
nte
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5656
Assemblies (1)
• Son una colección lógica de uno o mas EXEso DLLs, que contienen el código, recursos y metadatos.
• A la parte de metadatos se le denomina manifest (manifiesto).– Como el manifiesto de un embarque, en el que se detalla el
contenido del mismo.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5757
Assemblies (2)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5858
Assemblies (3) : ILDASM.exe
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
5959
Assemblies (4) : Privadas
• Assemblies: private– Modelo Simple: copiar en el directorio del cliente.– No hay necesidad de registrar nada.– Problema: proliferación de assemblies (esto era lo
que las DLLs intentaban solucionar originalmente).• Para algunos, esto no es un problema en la
actualidad: existe suficiente disco duro.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6060
Assemblies (5) : Compartidas• Shared
– Si assembly será utilizada por múltiples (muchas) aplicaciones.
– Ubicar assemblies en Global Assembly Cache (GAC)– GAC es un directorio.
• Ejemplo: C:\WINDOWS\assembly.– Problema es la posible colisión de nombres.
• A pesar de tener iguales nombres se las debe identificar de forma única.
– Herramientas para administración (del SDK):• GACUTIL.exe: programa de línea de comandos• Assembly Cache Viewer: con GUI, integrada con
Windows Explorer.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6161
Assemblies (6) : Compartidas
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6262
Assemblies (7) : Compartidas• Generar strong name (SN)
– El manifiesto de un shared assembly incluye una llave pública.
– Se usa criptografía de llave pública para generar el nombre, que debe ser único en el sistema, con:
• Parte de la llave pública.• Nombre del archivo del assembly.• Versión.
• Con Visual Studio:– Usar SN.exe para generar un archivo con el par de llaves:
pública/privada.– Usar el archivo AssemblyInfo.(vb o cs) para indicar a Visual
Studio sobre el archivo con las llaves.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6363
Assemblies (8) : Compartidas
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6464
Assemblies (9) : Compartidas
• Con Visual Studio:– Al compilar se genera y asigna el strong name al
componente, lo que se conoce como signing.– Luego se usa drag-and-drop para poner assembly en el GAC
(en desarrollo, proveer instalador al final).
• Cómo utilizar un assembly del GAC?– Por ahora NO NO se puede añadir una referencia desde el GAC
al proyecto del cliente.– Para compilar el cliente es “necesario” añadir una referencia
al assembly ubicado en un directorio cualquiera.– Luego de terminado el proceso de desarrollo, el cliente usará
el assembly del GAC.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6565
Assemblies (10) : Compartidas• Para el ejemplo de la hora:
– Realizar el signing del componente en VisualBasic.NET– Mover el componente al GAC.– Hacer una copia del cliente en C# (solo el .exe) al directorio
C:\ y comprobar que funcione. Al no encontrar el componente en C:\ se busca en el GAC.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6666
Assemblies (11) : Compartidas
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6767
Assemblies (12) : Ngen.exe
• Una aplicación puede especificar que la compilación JIT se realice una sola vez, cuando la aplicación se instale, y se almacene la versión en código nativo.– Ngen.exe sirve para esta tarea.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6868
Control de Versiones (1)
• El .NET Framework soporta facilidades para control de versiones. – Evitar “DLL hell”.
• Información de versión en manifiesto. – La herramienta de desarrollo la incluye en el manifiesto.
• Compatibility Version: cuatro números, que usa el CLR para este control.– Major version number– Minor version number– Build number– Revision number
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
6969
Control de Versiones (2)
• Usar el archivo AssemblyInfo.(vb o cs) para indicar en Visual Studio.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7070
Control de Versiones (3)• En el manifiesto de un cliente se indica cual
versión del assembly (servidor) se utilizó al generar el cliente.
• Cuando el cliente se ejecuta, el CLR revisa la versión del servidor indicada en el cliente y la busca.– El comportamiento por default, busca la versión exacta
indicada, si no se la encuentra falla la ejecución.– Incluso en el caso del GAC, se pueden tener varias
versiones, ya que el strong name será diferente para cada caso.
• No se rompe el código de clientes viejos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7171
Control de Versiones (4): GAC• Qué tal si descubrimos un error crítico y deseo
que todos los clientes usen una nueva versión del assembly servidor?– No es factible volver a compilar todos los clientes.– Debo hacer que todos los clientes usen el nuevo servidor a
pesar que en sus manifiesto se indique otra versión.
• Podría ser que una nueva versión tenga un error critico, y quiero que nuevos y viejos clientes usen una versión anterior.
• La solución de .NET es usar “Archivos de Configuración”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7272
Control de Versiones (5): GAC• Publisher Policy para todostodos los clientes de
assemblies en el GAC, utilizando el archivo machine.config– Archivo que tiene la configuración administrativa
de .NET para toda la máquina (XML).– Usar mscorcfg.msc para manipular archivo.
• Disponible en Administrative Tools en Control Panel
• Sirve par ver y añadir assemblies al GAC– Se añade a la lista de “Configured Assemblies”
aquella cuyo comportamiento en lo referente a versiones se desea modificar.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7373
Control de Versiones (6): GAC
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7474
Control de Versiones (7): GAC
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7575
Control de Versiones (8): GAC• Se deben especificar las “binding policies”• Se puede especificar la correspondencia entre:
– Una versión y otra.– Entre un rango de versiones y una nueva.
• Cuando un cliente crea un objeto (especificando una versión original), el CLR chequea el archivo de configuración, detecta la publisher policy, y automáticamente hace la sustitución.
• Se puede especificar el “codebase”, indicando de donde se puede traer el código si todavía no estápresente en la máquina.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7676
Control de Versiones (9)• Se desea que un cliente en específico utilice
una versión diferente.– “Application Configuration File” (XML)
• Este archivo cambia la configuración de una aplicación en particular.– Nombre: MiAplicacion.exe.configMiAplicacion.exe.config– Usar mscorcfg.msc para generar/manipular archivo.– Se crea en el directorio de trabajo de la aplicación.– Assembly a configurar puede estar en el GAC o en dir de la
aplicación.
• Añadir Aplicación al folder en mscorcfg.exe
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7777
Control de Versiones (10)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7878
Control de Versiones (11)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
7979
Control de Versiones (12)• Se puede especificar
otro lugar para el nuevo assembly (archivo en la misma máquina o URL).
• El assembly original podría continuar en el mismo directorio que el de la aplicación y no habría conflicto.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8080
Control de Versiones (13)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8181
.NET Framework (1) :.NET y COM• .NET Framework provee mecanismos de
interoperabilidad con COM (Component ObjectModel) y COM+ (transacciones).– Se puede acceder a servidores COM desde .NET,
utilizando envolturas (wrappers RCW) que dan la ilusión de estar accediendo a un objeto .NET cualquiera.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8282
.NET Framework (2) : NET y COM• Se puede hacer que objetos .NET se
registren como objetos COM. – Los clientes pueden ser escritos en otros lenguajes
como C++ o Visual Basic; para ellos los objetos .NET parecen servidores COM comunes, gracias a los CCW.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8383
.NET Framework: SEH (1)
• Structured Exception Handling– Situación actual:
• SEH se usa para manejar errores durante ejecución.• C++ y Java lo usan.• Idea: generar un objeto que lleve información del error,
y se debe proveer un bloque de código para procesar ese objeto.
• Se usan solo dentro de un determinado lenguaje.– .NET permite manejar excepciones en todos los
lenguajes y entre los lenguajes.– Toda excepción generada debe ser manejada, caso
contrario el CLR detiene la aplicación.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8484
.NET Framework: SEH (2)• try/throw/catch/finally• Se puede lanzar un objeto tipo
System.Exception.– Se puede derivar nuevas clases en base a ésta.
• Problema: gracias al GC cualquier objeto construido dentro del bloque trytry será liberado al ocurrir una excepción.– Si se desea que un objeto libere recursos de forma
determinística, esto no es posible porque no hubo oportunidad de llamar a Dispose.
• Finalize se llamará en algún momento durante GC, pero eso puede no ser lo deseado o adecuado.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8585
.NET Framework: SEH (3)• Se usa un bloque finally
– Se garantiza que será llamado y puede ponerse código de liberación de recursos, y no es necesario esperar por la GC.
– Se puede tener finally combinado con catch, para un mismo try.
• Dentro de un bloque try, se pueden lanzar diferentes tipos de objetos de excepción; se puede acompañar al try con varios catch, cada un de los cuales procesa uno de los diferentes tipos de excepción.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8686
.NET Framework (1): seguridad
• .NET Framework provee seguridad del código.– Se puede especificar que es lo que puede hacer una
sección de código y que no.– Ejemplo: Puedo especificar que se pueda leer archivos pero
no escribirlos. • El CLR se encarga de hacer cumplir mis
especificaciones y bloquear cualquier intento fuera de lo indicado en dichas especificaciones.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8787
.NET Framework (2): seguridad• Previamente, se proveían mecanismos para tratar de
saber de donde provenía el código.– Authenticode añadía una firma digital a los controles
ActiveX.– La pregunta era se instala o no ?(todo o nada).– Una vez instalado, no hay forma de evitar posibles daños
causados por el código.• Se desea formas de restringir las operaciones de piezas
individuales de código, basados en el nivel de “confianza” que se tiene en dicho código. – Un control bajado del Internet pueda acceder a elementos
del interfaz de usuario pero no a archivos. – Sistemas Operativos Windows no hacen esto; CLR si.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8888
.NET Framework (3): seguridad
• El CLR provee “codecode accessaccess securitysecurity-- CASCAS”– Seguridad basada en lo que se le permite acceder
al código.– Permite a un administrador especificar los
privilegios que cada assembly tiene, basado en el nivel de confianza que tenga del assembly.
• Al hacer una llamada desde un assembly (A4), para acceder a un recurso protegido, el CLR chequea a ver si el administrador ha otorgado los privilegios necesarios.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
8989
.NET Framework (4): seguridad• La llamada puede haber sido comandada
desde otro assembly (A3). Puede ser que quien desencadeno la llamada (A3) no tenga los privilegios necesarios y que la assembly(A4) que accede al recurso si.– A4 demanda que los que invoquen uno de sus métodos
tenga el permiso P.• El CLR sigue la pista de que assembly invocó
a otro hasta llegar a la fuente (cabeza del stack de llamadas).– Se evita que alguien que no tenga los privilegios utilice a
otros que si tienen los privilegios necesarios.– Esto puede hacer mas lento al sistema pero de otra manera
se dejaría un hueco en la seguridad.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9090
.NET Framework (5): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9191
.NET Framework (6): seguridad
• Política de seguridad (Security Policy).– En archivos XML.– Se administran gráficamente con “mscorcfg.msc”.– Se administran con línea de comandos con
“caspol.exe”.– Un conjunto de reglas configurables que indican
cuales assemblies pueden o no realizar tales o cuales operaciones.
– Los permisos se otorgan al momento de cargar un assembly.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9292
.NET Framework (7): seguridad• Niveles de las políticas de seguridad:
– Enterprise (alto nivel)– Machine– User (bajo nivel)
• El valor de una configuración colocada a bajo nivel puede incrementar las restricciones impuestas por un valor colocado en un nivel mas alto, pero no lo opuesto.
• Si a nivel de máquina se permite que un assemblyabra un archivo, a nivel de usuario se puede negar este privilegio. Lo opuesto no se puede hacer.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9393
.NET Framework (8): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9494
.NET Framework (9): seguridad• El administrador crea conjuntos de permisos
(permission sets).– No se asignan permisos individuales a las
aplicaciones.– El conjunto es el que se asigna a un assembly.
• Se provee una gama de permission setspredefinidos:– Desde Full trust (se puede hacer todo).– Hasta Nothing (todo está negado incluso ejecutarse).– No es posible modificar estos conjuntos, pero se
pueden hacer copias y modificar las copias. El resultado son llamados named permission sets.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9595
.NET Framework (10): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9696
.NET Framework (11): seguridad• Cada permission set consiste de 0 o mas
permisos (code access permissions).– Un permiso es el derecho de usar cierta funcionalidad del
sistema; por ejemplo: las ventanas de diálogo para manipular archivos.
• A su vez, cada permiso soporta una o mas propiedades.– Ejemplo: para las ventanas de diálogo para archivos, se
definir si se permite:• Abrir• Salvar• Los dos anteriores • Nada
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9797
.NET Framework (12): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9898
.NET Framework (13): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
9999
.NET Framework (14): seguridad• Resumen:
– Se ha visto como definir conjunto de permisos.– No se ha asignado un conjunto a un assembly.
• Asignar conjunto de permisos a un assembly: – A nivel individual, assembly por assembly (poco
utilizado).– A nivel de grupos.
•• CodeCode groupsgroups: grupos de assemblies, miembros comparten un nivel común de privilegios.– Son los que relacionan a los conjuntos de permisos con
los assemblies, basados en evidencia respecto a los assemblies.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
100100
.NET Framework (15): seguridad• Evidencias:
– Strong name: simplemente el nombre mas versión y llave pública.
– Publicante (publisher): si disponible es la firma autenticode.
– Zona de origen: máquina local, Intranet Local, Internet.– Ubicación de origen: el directorio del sistema de
archivos local, una URL.• Algunas de las evidencias son mas fáciles de
falsificar que otras, aquí está la tarea del administrador al definir una política.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
101101
.NET Framework (16): seguridad• No se puede esperar que cada vez que el browser
encuentre un componente en el Internet se dependa del administrador, se quiere que esto se realice de forma automática.
• Condiciones de membresía (membership conditions).– Determinan los criterios para que un assembly se asige
a los grupos de código.– Ejemplo de condición: “program zone”
• De donde vino el assembly ? El Internet, Intranet, mi propia computadora, etc.
• Definidas las condiciones de membresía, se debe asignar los conjuntos de permisos para los miembros del grupo.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
102102
.NET Framework (17): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
103103
.NET Framework (18): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
104104
.NET Framework (19): seguridad• Es común que un assembly pertenezca a mas
de un grupo de código. – Si bajo un componente de Microsoft, pertenecería a un
grupo de Microsoft y al del Internet.– Los conjuntos de permisos se suman, y el resultado es el
que se aplica a un assembly.
• Si se escribe un programa y este no tiene los suficientes privilegios, se podría escribir código para informar que tiene y que le falta. Se necesita interactuar con el sistema de seguridad code-access.– CLR tiene funciones y objetos para interacción.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
105105
.NET Framework (20): seguridad• En resumen: cada nivel de política (enterprise, machine,
user) consiste de una colección de grupos de código, organizados jerárquicamente, y cada grupo tiene un conjunto de permisos asociado.
• El .NET Framework encuentra todos los grupos en los que encaja un assembly y realiza la unión de los correspondientes conjuntos de permisos.
• Lo anterior se realiza para un nivel de política dado, y luego continua con el siguiente nivel. – Orden de evaluación: enterprise, machine, user.
• El conjunto de permisos resultante y que se aplica a un assembly es la intersección de los resultados obtenidos para cada nivel.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
106106
.NET Framework (21): seguridad• Ejemplo:
– Se presenta la jerarquía de grupos de código.
– En la raíz se suele tener permisos muy limitados o ninguno (como en la figura).
– Cuando se añaden mas nodos hijos, se asignan mas y mas permisos, pero al mismo tiempo se requiere evidencia mas fuerte.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
107107
.NET Framework (22): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
108108
.NET Framework (23): seguridad• Para un assembly con la evidencia indicada en
la figura:Nothing U Execute U ( FileIO+Reflection)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
109109
.NET Framework (24): seguridad• Crear un aplicación con GUI: un botón y una
caja de texto multilínea.– Probar la aplicación sin cambios en la configuración.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
110110
.NET Framework (25): seguridad• Se solicitan dos permisos:
– File IO para leer el directorio C:\WINNT– Permiso para leer la variable de ambiente USERNAME
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
111111
.NET Framework (26): seguridad• Crear un directorio para definir una condición
en la cual los assemblies que corran desde este directorio tengan ciertos permisos.– C:\Test\PruebaPermisos
• Se crea un nuevo “permission set” con el nombre “Test”– Se quiere permitir a un assembly ejecutarse, acceder al
directorio C:\WINNT, leer la variable de ambiente USERNAME, y crear elementos de interfaz de usuario.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
112112
.NET Framework (27): seguridad• Click con botón derecho del ratón sobre
“Permission Sets” y escoger “New”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
113113
.NET Framework (28): seguridad• Luego de presionar “Next” y añadir “Security”.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
114114
.NET Framework (29): seguridad• Luego de añadir “File IO”.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
115115
.NET Framework (30): seguridad• Luego de añadir “Environment variables”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
116116
.NET Framework (31): seguridad• Luego de añadir “User Interface”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
117117
.NET Framework (32): seguridad• Se crea un nuevo “code group”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
118118
.NET Framework (33): seguridad• Luego de presionar “Next”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
119119
.NET Framework (34): seguridad• Luego de “Next” se asocia nuestro “permission
set”
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
120120
.NET Framework (35): seguridad• Ver “properties” del grupo y cambiar la opción:
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
121121
.NET Framework (36): seguridad• Si se ejecuta la aplicación todo debe
funcionar adecuadamente.– Se cumple la condición de membresía al grupo
(que el assembly esté en un directorio especificado).
– Se asoció al grupo el conjunto de permisos que definimos (ningún otro conjunto se asocia):• Ejecución y acceso al interfaz de usuario.• También se garantizó acceso a un directorio y a
una variable de ambiente, que es lo que se solicita dentro del programa.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
122122
.NET Framework (37): seguridad• Ahora se cambia el conjunto de permisos a
“Internet”.– Se cumple la condición de membresía al grupo (que el
assembly esté en un directorio especificado).– Se asoció al grupo el conjunto de permisos “Internet”:
• Este conjunto permite: ejecución y acceso al interfaz de usuario.
• Pero NO garantiza acceso al directorio de interés ni a la variable de ambiente, que es lo que se solicita dentro del programa.
• Se obtendrán excepciones dentro de nuestro código, que se reportan en la caja de texto.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
123123
.NET Framework (38): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
124124
.NET Framework (39): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
125125
.NET Framework (40): seguridad
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
126126
ASP.NET (1)• Siguiente versión de ASP (Active Server
Pages).• Alternativa a CGIs, ISAPIs, JSP.• Para aplicaciones llamadas: Active Web
Applications o Web Form Applications• Presentan su GUI como páginas web.
• Se ejecuta en IIS (Internet Information Server). • Código se ejecuta en el lado del servidor.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
127127
ASP.NET (2)• Hace más fácil la tarea de escribir código para
generar dinámicamente páginas Web (en lugar de HTML estático).
• Introduce nueva forma de escribir dicho código (code behind) y asociarlo a peticiones de páginas.
• Introduce Web Forms que es un modelo de programación basada en eventos para interactuar con controles, haciendo que la programación de una página web sea similar a desarrollar una forma en Visual Basic.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
128128
ASP.NET (3)
• Proporciona soporte adecuado para seguridad y para manejar el estado de una sesión.
• Introduce algunas mejoras en rendimiento (performance) respecto ASP.
• Permite administrar fácilmente diferentes aspectos de la aplicación Web.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
129129
Servicios Web• Forma para que servidores en el Internet expongan
su funcionalidad.• Cualquier cliente, en cualquier máquina, utilizando
cualquier Sistema Operativo, puede consumir Servicios Web.
• El cliente hace llamadas al servidor utilizando XML/HTTP. – SOAP (Simple Object Access Protocol)
• .NET ofrece facilidades para escribir Servicios Web.• Clientes pueden ser aplicaciones con o sin interfaz de
usuario (comunicación máquina a máquina).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
130130
ADO.NET
• Muchas aplicaciones para el Internet emplean gran parte del tiempo recopilando información de un cliente, haciendo una petición a una base de datos y presentando os resultados.
• ADO.NET provee un buen soporte para acceso a bases de datos dentro de .NETframework.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
131131
Windows Forms (1)
• Facilitan escribir aplicaciones dedicadas de cliente utilizando el .NET framework.– Soporte para drag-and-drop, menús, barras de
herramientas y estado ( controles para GUI en general).
– Soporte para manejar controles ActiveX.– Soporte para impresión y vistas previas.– Acceso fácil a bases de datos y Servicios Web.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
132132
Windows Forms (2)• La clase base que provee soporte para
albergar controles, adosamiento de ventanas (docking) , y respuestas a eventos es:
System.Windows.Forms.Form• Una aplicación basada en Win Forms, requiere
un hilo para correr un lazo de mensajes que reciba mensajes del sistema operativo, generados por la interacción con el usuario, y los enrute a los manejadores adecuados.– System.Windows.Forms.Applicattion.Run( )
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
133133
Windows Forms (3)• Se tiene a disposición un rico conjunto de
controles.• En Visual Studio, la filosofía es similar ala de
Visual Basic: arrastrar controles de una barra de herramientas a las formas y procesar los eventos de dichos controles.
• A parte de solo insertar controles y manejar eventos, hay soporte para:– Dibujar– Manejo de mouse, teclado– Ventanas de diálogo.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
134134
Controles Windows Forms y Web Forms
• Control: unidad con funcionalidad predefinida para actividades de interfaz de usuario.
• Se ofrecen controles prediseñados y soporte para el desarrollo de nuevos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
135135
Streams y documentos XML (1)• XML es considerado como formato para transmitir
datos en Sistemas Distribuidos.– Servicios Web, – Serialización de datasets en XML para fácil transmisión.
• Aplicaciones que soporten XML.– XML sirve par definir vocabularios para intercomunicarse entre
diferentes entidades de una industria en particular.• ACORD XML para industrias de seguros• XL7 (Health Level 7) para cuidado de la salud.
– No toda aplicación desea utilizar HTTP como mecanismo de transporte.
– Se requiere una forma fácil de leer el contenido de documentos XML que llegan y generar documentos XML para enviarlos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
136136
Streams y documentos XML (2)• Soporte:
– Para serializar/deserializar objetos .NET a/de documentos XML.
– Para ajustar los documentos generados a un esquema predefinido, tal vez por otros.
– Usar herramienta que ajuste los documentos a un esquema predefinido.
– A bajo nivel: parsers genéricos, sin optimizaciones para tareas particulares, para generar y leer documentos XML.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
137137
Streams y documentos XML (3)• Serializador .NET a XML
– System.Serialization.XmlSerializer• Serialization: tomar cualquier objeto .NET, leer
sus propiedades, datos miembro y escribirlos a un documento XML.
• Deserialization: tomar un documento XML, leer su contenido y recrear un objeto del mismo tipo, con los valores del objeto original.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
138138
Streams y documentos XML (4)• Serializador
– MiPunto es un objeto de la clase definida por nosotros CPunto.
– El archivo en donde se guarda el resultado es xmlstream.– El serializador para CPunto es serializer.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
139139
Streams y documentos XML (5)• Serializador
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
140140
Streams y documentos XML (6)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
141141
Streams y documentos XML (7)• Serializador
– El proceso de creación del serializador es muy costoso.• Se lee los metadatos de la clase para encontrar
los nombres y tipos de variables y objetos.• Se utiliza el API de Reflection. • Costoso incluso para la clase CPunto.
– Se pueden reutilizar los serializadores.• No es necesario crear uno cada vez.• Se los puede crear al inicio de la aplicación y
mantenerlos
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
142142
Streams y documentos XML (8)• Control de documento XML generado
– Se requiere que salida .NET se ajuste a un esquema dado.
– Se consigue con “programación con atributos”.– Atributos son leídos de los metadatos de la clase.– Ejemplo: Que los elementos de la clase CPunto (
X, Y) sean almacenados como atributos ( no elementos).• El resultado sería:
<CPunto m_X="114" m_Y="666" />
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
143143
Streams y documentos XML (9)• Control de documento XML generado
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
144144
Streams y documentos XML (10)• Control de documento XML generado
– Se puede serializar los miembros (X, Y) de la clase punto ya sea como elementos o atributos.
– Puede ser necesario que durante ejecución se decida si utilizar la opción elemento o atributo.
• Un punto puede ser de uno de dos tipos.– Esto se puede hacer con atributos, listando todos los
posibles tipos que se puedan utilizar para la serialización.
– Ejemplo: una clase rectángulo que requiere especificar dos puntos.
• El tipo de los puntos es objectobject para poder luego escoger durante ejecución.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
145145
Streams y documentos XML (11)• Control de documento XML generado
– ElementPoint es una clase que permite serializar los miembros X, Y como elementos.
– AttributePoint es una clase que permite serializar los miembros X, Y como atributos.
– La lista de tipos se aplica a los dos puntos (caso único).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
146146
Streams y documentos XML (12)• Control de documento XML generado
– Si no se conocen en tiempo de diseño todos los tipos posibles:
• Sobreescribir los atributos en tiempo de ejecución.• Poner los atributos en las variables: XmlAnyElement o
XmlAnyAttribute.• Si se encuentra en un documento XML un tipo
desconocido, la serialización concluye.– Otras funciones que se pueden realizar:
• Añadir namespaces a elementos y atributos.• Serializar a tipos diferentes a los indicados en la clase
.NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
147147
Streams y documentos XML (13)• Esquemas y Serialización
– El esquema de un documento XML es la descripción, (escrita también en XML), de todo lo que un documento XML válido puede contener, en un vocabulario del dominio de un problema particular.
• Especifica los nombres de los elementos, atributos, frecuencia de ocurrencia, opciones, tipos de datos.
• Producido y distribuido por la agencia de estándares que gobierna una industria en particular.
– Los documentos XML pueden ser muy grandes y complejos (cientos de elementos son comunes).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
148148
Streams y documentos XML (14)• Esquemas y Serialización
– Escribir una clase .NET que maneje adecuadamente cada elemento o atributo es muy complicado.
– XSD.exe es una herramienta para generar automáticamente :
• Clases .NET a partir de esquemas XML.• Esquemas XML a partir de clases .NET, leídas
desde sus assemblies. – El esquema describe los documentos que se generan cuando
se realiza serialización de objetos.– Cualquiera que quiera enviarme un objeto CPunto serializado
en XML conoce como construir su documento XML, si el esquema es publicado.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
149149
Streams y documentos XML (15)• Esquemas y Serialización
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
150150
Streams y documentos XML (16)• Esquemas y Serialización
– Se generan clases para el esquema de la figura de la siguiente transparencia.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
151151
Streams y documentos XML (17)• Esquemas y Serialización
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
152152
Streams y documentos XML (18)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
153153
Streams y documentos XML (19)• Soporte a bajo nivel: simples parsers
– Chequean si un documento está construido adecuadamente, cuentan los < >, ven parejas de nombres para las etiquetas, etc.
– Son genéricos, no ofrecen optimizaciones para tareas particulares.
– Ofrecen un interfaz al cliente para leer/escribir.– No ofrecen tipos de datos diversos; todo es un
string.– A pesar de todo, son necesarios sino se tiene la
menor idea de la estructura del documento que se procesara. Ejemplo: editor XML.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
154154
Streams y documentos XML (20)• Soporte a bajo nivel: simples parsers
– Implementación del DOM (Document ObjectModel).• Documento completo en memoria, ap
esar que se requiera nada mas una parte.• Se lee el documento y se genera un árbol
con sus nodos representando elementos, atributos y datos.
– System.Xml.XmlDocument (Load)– System.Xml.XmlNode (Name, Value, ChildNodes)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
155155
Streams y documentos XML (21)• Soporte a bajo nivel: simples parsers
– Implementación alternativa:• Mantiene en memoria solo partes del
documento.• Para lectura:
– System.Xml.XmlTextReader– System.Xml.XmlValidatingReader
• Para escritura:– System.Xml.XmlTextWriter
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
156156
Mecanismos de callback (1)• Objeto A crea objeto B y hace llamadas a métodos de
B. Objeto B hace llamadas a funciones en su creador, para notificar que algo interesante ha sucedido (eventoevento). – Disparar, señalar o levantar un evento.
• Mecanismos de callback previos:– Enviar mensajes de Windows.– “Punteros a función” para funciones de Win32.– Puntos de conexión en COM.
• Mecanismos de descubrimiento:– Ninguno para mensajes de Windows.– Documentación escasa para API Win32.– Librerías de tipos para COM.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
157157
Mecanismos de callback (2)• Nomenclatura: listener (receptor de eventos) es quien
desea recibir notificaciones del sender (generador de eventos).
• En .NET se utilizan los mismos assemblies para autodescripción de eventos que se generan.– Esto permite descubrir los eventos que el sender
puede disparar.– El descubrimiento puede ser en tiempo de diseño o
ejecución.• En .NET, el listener provee al sender un objeto
delegado (delegatedelegate).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
158158
Mecanismos de callback (3)
• Un delegado (intermediario) es un objeto de tipo System.Delegate (o derivados) que encapsula la dirección de una función (puntero a función) que debe ser implementada en el listener. – No se limita el mecanismo al uso de funciones
estáticas de clases sino que también se pueden invocar funciones sobre objetos individuales.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
159159
Mecanismos de callback (4)
• El delegado tiene métodos que el senderutiliza para hacer que se invoque la función en el listener.– El delegado tiene un puntero a la función en el listener.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
160160
Mecanismos de callback (5)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
161161
Mecanismos de callback (6)• Ejemplo:
– En este ejemplo, el sender se lo implementa como un componente, lo cual no es un requerimiento para emplear eventos/delegados.• Derivando de
System.ComponentModel.Component– Se elige esta opción para aprovechar las
facilidades de Visual Studio:• Poder agregar al componente a la “barra de
componentes” y visualmente agregarlo a la forma.
• Usar los wizards para que generen código por nosotros.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
162162
Mecanismos de callback (7)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
163163
Mecanismos de callback (8)• Línea 1:
– Declara un delegado llamado SomethingHappenedEventHandlerSomethingHappenedEventHandler• Esto es el nombre de un nuevo tipo ( un nuevo
tipo de delegado).– Esta línea combina la declaración del delegado
con la especificación del prototipo de la función que el delegado encapsulará y que el listenerdebe implementar. • En este caso una función:
void F(DateTime)• Estamos relacionado el delegado con el
prototipo de función que encapsula.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
164164
Mecanismos de callback (9)• Línea 2:
– Declara que el evento SomethingHappenedrequiere un delegado de tipo SomethingHappenedEventHandler.
– Especifica el delegado que el listener debe implementar.
– Se puede tener varios eventos, con diferentes nombres, que requieren el mismo tipo de delegado.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
165165
Mecanismos de callback (10)• Con ILDASM se ve el código generado:
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
166166
Mecanismos de callback (11)• La línea 1 provoca que el compilador genere la
definición (de forma anidada) del tipo llamadoSomethingHappenedEventHandler que hereda de System.MulticastDelegate.– Lo de Multicast significa que puede mantener mas de
un puntero a función (delegado), pudiendo notificarse a mas de un cliente.
• Se mencionó que el delegado tiene una función (Invoke) que el sender utiliza para hacer que se llame a la función encapsulada por el delegado.– Invoke es generada por el compilador como parte del
tipo SomethingHappenedEventHandler.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
167167
Mecanismos de callback (12)
• La línea 2 hace que el compilador genere: – La variable privada SomethingHappenedSomethingHappened de tipo
SomethingHappenedEventHandler (el rombo).
– Un método público add_SomethingHappenedque permite que los listeners se registren para recibir eventos.
– Un método públicoremove_SomethingHappened que permite que los listeners retiren su interés de recibir eventos.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
168168
Mecanismos de callback (13)
• Línea 2, sobre la variable generada: – Esta variable es el objeto que en realidad sirve
para que el sender dispare el evento. – Esta variable se inicializa en null.– Esta variable no es una referencia a un solo
delegado sino es un referencia a la cabeza de una lista entrelazada de delegados que desean ser notificados de este evento.
– Como es privada, el listener nono la puede usar directamente.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
169169
Mecanismos de callback (14)• Línea 2 también hace que se presente el
símbolo de triángulo.– Junto al triángulo se indica que el componente
dispara un evento llamado SomethingHappenedSomethingHappened..– En la misma línea del triángulo se hace referencia a
un objeto de tipo SomethingHappenedEventHandlerque es el delegado que debe proveer el listener.
• Tomar en cuenta que tenemos el mismo nombre asociado a una variable privada y al evento (rombo y triangulo).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
170170
Mecanismos de callback (15)• Línea 3:
– Para este ejemplo, el listener puede invocar esta función para que a su vez el componente dispare el evento hacia el mismo listener.
• SomethingHappened(DateTime.Now);– Da la impresión de usar el delegado como una
función, lo cual no es correcto, pues no existe ninguna función llamada SomethingHappened.
– El compilador sabe que existe una variable con una referencia a un delegado, y se encarga de generar código para usar Invoke. Algo como:SomethingHappened.Invoke(DateTime.Now);
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
171171
Mecanismos de callback (16)• Para el listener,
se crea una WinForm con un simple botón.
• Se agrega nuestro componente a la “barra de WinForms”.– Ubicar el
assembly en el directorio respectivo.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
172172
Mecanismos de callback (17)
• Se agrega el componente a la Forma.– Como no tiene GUI, se presenta en la parte inferior.– En la lista de eventos se visualiza SomethingHappened y
podemos agregar la función que procese este evento.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
173173
Mecanismos de callback (18)Visual Studio añadió:
• Visual Studio añadió la función que le indicamos en respuesta al evento; en este caso la llamamos OnEvent:
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
174174
Mecanismos de callback (19)• Para conectar la función OnEvent (nuestra
función) al evento disparado por el sender, Visual Studio agrega el siguiente código:
• Aquí se construye el delegado, que toma como argumento la función que encapsula.
• Luego se registra el interés en el evento.• La sintaxis (y por el nombre) da la idea que
estoy accediendo a la variable privada o al evento, lo que no es correcto.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
175175
Mecanismos de callback (20)• El compilador traduce la línea de código
anterior en algo como:
• El compilador de C# provee sobrecargas de los operadores += y -= para nuestro delegado.– Internamente add_XX y remove_XX utilizan las
funciones Delegate.Combine y Delegate.Removepara crear cadenas de delegados (lista entrelazada).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
176176
Mecanismos de callback (21)• Este código (que crea el delegado y usa +=)
es lo que deberíamos agregar manualmente si no tuviésemos la ayuda de Visual Studio.– Es decir, si no tuviésemos nuestro sender como un
componente.• Resumen:
– En sender solo se han agregado tres líneas para emplear los mecanismos de callback.
– En listener no ha sido mucho el código agregado.– Muchas cosas se realizan con el ambiente de
desarrollo, el compilador pero sobre todo gracias al soporte que brinda .NET
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
177177
Mecanismos de callback (22)
• Llamadas a funciones sincrónicamente.– Se invoca una función y se espera por su retorno
antes de seguir con la siguiente línea de código.– Si tengo que procesar mensajes de interfaz de
usuario, no lo puedo hacer.– Puede usarse múltiples hilos de ejecución
(threads).• No aconsejable si la aplicación es bastante
sencilla.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
178178
Mecanismos de callback (23)• Llamadas a funciones asincrónicamente.
– Se invoca una función y se retorna inmediatamente.– Esto se lo puede hacer utilizando delegados que
tiene funciones que facilitan la tarea.– BeginInvoke
• El cliente invoca la función y ésta retorna inmediatamente.
• El hilo del cliente queda libre para realizar otras operaciones (actualizar UI).
• Hace que la función se ejecute en un hilo diferente (thread parte de un pool de threads del sistema, creado para este objetivo).
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
179179
Mecanismos de callback (24)
• La función ejecutándose en el hilo secundario termina y entrega los resultados al delegado.
• EndInvoke– El cliente debe llamar esta función para recolectar el
resultado.– Si el resultado no está listo esta función se
BLOQUEA, hasta que el resultado esté disponible.– Cómo estar seguros que el resultado está listo?
• System.IAsyncResult result ;• result = DELEGADO.BeginInvoke(…) ; • result.IsCompleted; //bool
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
180180
Mecanismos de callback (25)
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
181181
Mecanismos de callback (26)• Con delegados las funciones se invocan:
– Sincrónicamente (se hizo en los ejemplos con eventos).
– Asincrónicamente (BeginInvoke + EndInvoke).– Asincrónicamente con notificación automática,
proporcionando un delegado (AsyncCallback) con la función (MyOwnCallback) a BeginInvoke.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
182182
Código Multithreading
• Era difícil escribir código debido al bajo nivel de soporte ofrecido por el Sistema Operativo (SO).
• .NET framework permite utilizar con mayor facilidad las capacidades multithreading del SO.
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
183183
Visual Studio (1): Documentación• Documentación XML.
– La idea es documentar los programas a medida que se los escribe.
– Similar a la idea de javadoc.• Procesar etiquetas especiales dentro del código fuente y
luego generar páginas HTML.– Diferente en dos aspectos:
• El procesamiento lo hace el mismo compilador, no una herramienta separada.
• Se genera XML en lugar de HTML.– El texto a procesarse se señala en comentarios especiales
“///”.• Ejemplo: /// <summary>
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
184184
Visual Studio (2): Documentación• Si se ponen tres “/”, Visual Studio genera
automáticamente lo señalado:
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
185185
Visual Studio (3): Documentación• Para generar la documentación XML:
IvIváán Bernal, n Bernal, Ph.DPh.D..httphttp://://wwwfie.epn.edu.ecwwwfie.epn.edu.ec//ibernalibernal
Escuela PolitEscuela Politéécnica Nacionalcnica NacionalQuito Quito -- EcuadorEcuador
Oct. 2004Oct. 2004--CICCCICC.NET.NET
186186
Visual Studio (4): Documentación