Introducción a la plataforma .NET Erich Bühler MVP
¿Qué es .NET? .NET nueva infraestructura para desarrollar aplicaciones Windows y Web Ofrece un nuevo conjunto de herramientas, superiores a las ya conocidas. Centraliza tecnologías
Microsoft .NET Clientes Soluciones Servicios Web Servidores Herramientas Soluciones Servicios Web Servidores
¿Qué es .NET? Cambios estructurales Aprendido sobre defectos de diseños e incorporado nuevas tecnologías Avanzado sobre modelos conceptuales Nuevos lenguajes o con grandes cambios
Total de desarrolladores en el mundo: 23 millones
Lenguajes package EjemploJSharp; /** * Una linda clase denominada Caja. */ public class Caja { public Caja() //TODO: La lógica del constructor aquí } public static String Peso() return("Se invocó al método Peso"); public static String Volumen() return("Se invocó al método Volumen");
Lenguajes using System; namespace EjemploCSharp { public class Caja public Caja() // TODO: Lógica del constructor aquí } public static string Peso() return("Se invocó al método Peso"); public static string Volumen() return("Se invocó al método Volumen");
Lenguajes Namespace EjemploVisualBasic Public Class Caja Public Sub New() MsgBox("Se ejecutó Constructor" & _ " de clase Caja") End Sub Public Shared Function Peso() As String Return ("Se invocó al método Peso") End Function Public Shared Function Volumen() As String Return ("Se invocó al método Volumen") End Class End Namespace
Aplicación estándar vs .NET Sistema operativo Windows (Funciones, gestión de memoria, etc.) Funciones, gestión de memoria, etc. Sistema operativo
Common Language Runtime (CLR) Primer cambio en la arquitectura CLR incluye un compilador bajo demanda que ejecuta código de múltiples lenguajes, entre ellos: C# que es una versión de C++ conteniendo las características de Java; J# para desarrolladores Java Visual Basic .NET nueva versión de VB conteniendo nueva sintaxis, orientación a objetos, y poder similar a C# Todos los lenguajes en .NET deben obedecer reglas y estándares impuestos por CLS. Entre ellos: Declaración de objetos, creación y utilización Tipos de datos Errores y administraciones de excepciones Verificación de tipos
Lenguajes .NET CLS (Common Language Specification) Requisitos mínimos para compiladores de lenguajes .NET Conjunto mínimo de funcionalidad que deben implementar Su objetivo es facilitar la interoperabilidad entre lenguajes
Lenguajes .NET CLS (II) C++ COBOL CLS VB CLR Extenciones de Fujitsu COBOL C++ COBOL CLS Extensiones administradas para C++ VB Los lenguajes no tienen que exponer toda la funcionalidad definida por CLR
Tipos de datos común CLS provee un conjunto de tipos de datos nativos que todos los lenguajes deben soportar. Los tipos incluyen Enteros (tres tipos de 16/32/64 bit) Punto flotante (dos tipos de 32/64 bit) Boolean y Char Date/Time Cruzamiento entre lenguajes es fácil Impacto sobre tipos de datos de algunos lenguajes, por ejemplo VB
Lenguaje intermedio de Microsoft Lenguajes .NET no compilan a código máquina en un comienzo. Ellos son compilados a IL. Compilador bajo demanda de CLR acepta IL y lo recompila a código máquina. Compilación ‘Just in time’ (bajo demanda) Verificación de tipos (validación) El código es seguro
Lenguaje intermedio de Microsoft Compilación Código Adm. Código fuente Compilador Ensamblado Codigo (IL) Metadatos Ejecución Compilador JIT Código máquina Cuando el método es invocado
Lenguaje intermedio de Microsoft Existen varios .NET framework .net compact framework
.NET Compact Framework Desarrollo sobre dispositivos Versión reducida de Framework .NET Diseñado para dispositivos inteligentes PocketPC y PocketPC Phone Edition SmartPhone Windows CE Mismo modelo de desarrollo que .NET Framework Misma herramienta de desarrollo Visual Studio .NET
Common Language Runtime Common Language Specification Role de Visual Studio Sistema operativo Common Language Runtime Common Language Specification VB C++ C# J# … Visual Studio .NET
Common type system IL apoya la orientación a objetos. Por lo tanto se necesita que todo tipo sea de una clase del framework (clase, estructura, o interfaz) Tipos del framework (resumen) Integer String Rectangle Long Tipos personalizados (Cliente, factura, etc)
Common type system Declaración Utilización (prop.) Utilización (métodos) Dim i As Integer i=100 i.ToString Dim r As Rectangle r.Width*r.Height r.Area Dim c As cliente c.nombre=‘Bob’ c.Quejarse (nivel) Dim f As factura f.Número = 10 f.procesar
Metadatos de tipos Un tipo debe ser auto-descriptivo. Debe exponer sus propiedades, métodos, valores aceptados, etc. Esta información es siempre escrita en el EXE o DLL como encabezado (MANIFIESTO y METADATOS)
Ensamblados Estructura de un ensamblado = manifiesto y uno o más módulos ejecutables (MSIL).
Manifiesto Describe un ensamblado y describe su contenido Incluye: Identidad del ensamblado Requerimientos de seguridad Identidad de ensamblados de dependientes Tipos expuestos por el ensamblado Información personalizada (para reflexión)
Herramienta ILDASM
Common Language Runtime Interconexión Common Language Runtime Seguimiento de ref. Componente COM IUnknown IDispatch COM Callable Wrapper IOtra Objeto IOtra Cuenta de referencias Cliente
Ensamblados Características No son componentes COM Son auto-descriptivos No se requiere del archivo de registro Ejecución lado a lado Solamente con XCOPY la aplicación queda funcional No son componentes COM Son compatibles con COM mediante wrapping
Ensamblados Herramientas para registro en COM en la consola de .NET Funcionamiento Versiones privadas vs. compartidas Versiones compartidas Gestionadas por GAC (Caché de ensamblados global o Global Assembly cache) Políticas de versión Manejo de autores mediante claves dobles
Caché de ensamblados global o GAC
Administración de memoria Recolección de basura automática de objetos Se eliminan problemas comunes de memoria El rendimiento puede no ser el mejor en aplicaciones críticas Puede forzarse la recolección Afecta a muchas de las aplicaciones actuales
Biblioteca de clases base Funcionalidades en sistemas tradicionales Diferentes bibliotecas de servicios son provistas al desarrollador mediante bibliotecas de runtime (C++), API de win32, API de bases de datos, bibliotecas estáticas/dinámicas, etc. Dependen del lenguaje y sistema operativo Se invocan dependiendo del lenguaje
Biblioteca de clases base En .NET Bibliotecas de clases Organizadas jerárquicamente Independientes del lenguaje Siguen los lineamientos de CLR
Biblioteca de clases base A las jerarquías se les llama Espacio de nombre Todo es un objeto, hasta los controles. System System.Data System.Xml System.Web Globalization Diagnostics Configuration Collections Resources Reflection Net IO Threading Text ServiceProcess Security Common OleDb SQLTypes SqlClient XPath XSLT Runtime InteropServices Remoting Serialization SessionState Caching Services Description Discovery Protocols UI HtmlControls WebControls System.Drawing Imaging Drawing2D Printing System.Windows.Forms Design ComponentModel
Ensamblados La organización de las bibliotecas de clase es similar al sistema de archivos: Cada ‘carpeta’ es un espacio de nombres Cada ‘archivo’ es un ensamblado exponiendo uno o más tipos (y su lógica) El nodo o carpeta raíz se llama ‘System’ Muchas eran antes API del sistema operativo
Windows Forms Aplicaciones de escritorio basadas en clases y herencia, nuevos controles Ajuste de controles de acuerdo a la definición Instalación mediante COPY GDI+
Características de GDI+
Auto-instalación Formulario puede residir en un ensamblado (auto-instalación) Técnicas de reflexión sobre el disco local o Internet Facilidad de distribución de la aplicación ‘en partes’
Auto-instalación Cliente Servidor Web Internet Form1 Aplicación de Windows Form2 Caché de IE
Características de la infraestructura Ofrece características de POO para todos los lenguajes Soporte para múltiples hilos de ejecución Objetos para conexión e invocación remota (por ejemplo Web Services)
Características de la infraestructura Formularios Web ADO.NET Dispositivos móviles etc.
Visual Studio .NET Una herramienta para todo Plataforma RAD de alta productividad Diseñadores visuales win, web, mobile Editores de entidades, XSD, XML Desarrollo bases de datos Depuración extremo a extremo Tecnología IntelliSense y Ayuda Dinámica Extensible y abierto Existencia de otros editores gratuitos (no MS) con menos características
Microsoft .NET Clientes Soluciones Servicios Web Servidores Herramientas Soluciones Servicios Web Servidores
© 2004 Erich R. Bühler