Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Cod. 1728.61 PLATAFORMA .NET Y SERVICIOS WEB Biblioteca de Clases Base (BCL) Agustín Cernuda del Río guti@lsi.uniovi.es Dpto. de Informática OOTLab - Laboratorio de Tecnologías de Orientación a Objetos http://www.ootlab.uniovi.es Recordatorio: estructura del .NET Framework (I) • Desarrollo de aplicaciones Requisitos comunes de infraestructura • Necesidades de infraestructura se agravan en aplicaciones distribuidas • .NET Framework: plataforma para ofrecer una solución común y unificada a esos requisitos Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Recordatorio: estructura del .NET Framework (II) • El .NET Framework consta de: – Un entorno de ejecución: el CLR (Common Language Runtime) – Una biblioteca de clases base: la BCL (Base Class Library) – Una plataforma de aplicaciones web (ASP.NET, servicios web) Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Recordatorio: estructura del .NET Framework (III) VB C++ C# J# … CLS (Common Language Specification) Windows Forms ASP .NET Servicios web, formularios BCL (Base Class Library) CLR (Common Language Runtime) Sistema operativo Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Papel de la BCL (I) • ¿Para qué una biblioteca? – Ofrecer una base sobre la que construir aplicaciones – Esta base es totalmente OO (a diferencia de API tradicionales) – Dar soporte al CTS (Common Type System) • La BCL funciona en estrecha colaboración con el CLR Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Papel de la BCL (II) • Entre otros fines, permite: – Representar los tipos y excepciones básicos – Encapsular estructuras de datos – Realizar E/S – Acceder a datos – IGU, XML, diagnóstico y monitorización, atributos y reflectividad, COM/COM+, compilación... • Incluye clases, clases abstractas e interfaces Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Características generales de la BCL • Enorme colección de clases gestionadas (managed) • Accesibles por cualquier lenguaje que soporte el CTS y el CLS • No es necesario usar el API de Windows o similares • Se pretende que sean fáciles de usar • Referencia a null: si se invoca a un método, se genera System.NullReferenceException Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Características generales de la BCL: Sincronización y multitarea • Todos los miembros estáticos y públicos de BCL (métodos, propiedades y campos) soportan la concurrencia • Se pueden invocar sin que aparezcan condiciones de carrera, interbloqueos, etc. • Los demás elementos de la BCL pueden o no soportar multitarea (ver documentación en cada caso) Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Acceso a las clases de la BCL • Dentro de .NET es frecuente derivar de ellas • Accesibles por cualquier lenguaje que se adhiera al CTS y al CLS • Accesibles desde código nativo (a través de COM) Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Namespaces (espacios de nombres) • Recordatorio – Una forma de organizar las clases (evitar que se agoten los nombres, entre otras cosas) – Al definir tipos, se puede indicar en qué espacio de nombres están • Todas las clases de BCL están organizadas en espacios de nombres Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab El espacio de nombres System (I) System.Web Services Description Discovery Protocols UI HtmlControls WebControls Caching Configuration Security SessionState System.Windows.Forms Design ComponentModel System.Drawing Drawing2D Imaging System.Data OleDb Common Printing Text System.Xml SqlClient SQLTypes XSLT XPath Serialization System Collections Configuration Diagnostics Globalization IO Net Reflection Resources Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Security ServiceProcess Text Threading Runtime InteropServices Remoting Serialization Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab El espacio de nombres System (II) • Es la raíz de los tipos básicos – Object – Byte, Char, Int32, String... • Ejemplo: Manejando un byte como un objeto System.Byte b = new System.Byte(); Console.WriteLine(b.ToString()); Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab El espacio de nombres System (III) • Además, contiene muchos espacios de nombres de segundo nivel – System.Configuration: acceso a ficheros de configuración – System.Data: Acceso a datos (ADO.NET) – System.Xml: Procesamiento de XML • System.Xml.Serialization: serialización de objetos a XML (y al revés) – System.Diagnostics: Acceso a registro de eventos, procesos del sistema, contadores de rendimiento, depuradores... Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab El espacio de nombres System (IV) – System.Timers: Generación de eventos (temporización) – System.Globalization: Recursos para la internacionalización de aplicaciones – System.Net: Acceso a red (incluye soporte para diversos protocolos) – System.Collections: Colecciones de objetos, como listas, colas, arrays, tablas hash, diccionarios... – System.IO: Entrada y salida básica. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab El espacio de nombres System (V) – System.Text: Codificación de caracteres, conversión de caracteres, manipulación de cadenas. – System.Text.RegularExpressions: Soporte para expresiones regulares – System.Threading: Soporte para programación multihilo, sincronización, etc. – System.Reflection: Metadatos, uso dinámico de tipos – System.Drawing: Gráficos 2D, acceso al GDI. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab El espacio de nombres System (VI) – System.Runtime.CompilerServices: Soporte para compiladores – System.Runtime.InteropServices: Interoperabilidad con COM – System.Runtime.Serialization: Serialización, incluyendo la serialización de tipo binario y SOAP. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Xml • Soporte para XML – Clases que representan el documento, elementos, atributos... – Posibilidad de cargar un fichero de texto (o un string) con XML – Creación dinámica de los nodos – Lo que constituye el documento se puede modificar en memoria • Soporte para XSLT – Transformación de documentos XML Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Diagnostics • EventLog – Escribir en el registro de eventos de sistema, leer los eventos, manipular registros de eventos... – Se puede iterar por los eventos • Process – Monitorizar procesos del sistema – Incluso en otras máquinas – Crear y detener procesos • Otros – Monitorizar (performance counters) – Depuración y trazas Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Net • • • Ofrece acceso a la red Implementa muchos protocolos básicos Gran sencillez de uso – Comparación con sockets y otros recursos • Clases para: – Transacciones HTTP, descarga de ficheros – DNS – Cookies – Gestión de direcciones Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Collections (I) • ArrayList: Array dinámico – Implementa la interfaz IList • BitArray: Array de bits • CollectionBase – Clase abstracta – Base para las colecciones • HashTable – Implementa: IDictionary, ICollection, IEnumerable, ISerializable,etc. Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Collections (II) • Se definen varias interfaces – ICollection: Métodos de tamaño, enumeración, etc. – IDictionary: Colección de pares clave-valor – IEnumerable / IEnumerator: Permite iterar sobre una colección – IList: Colección de objetos a los que se puede acceder mediante un índice – IHashCodeProvider: Función hash para un objeto Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.IO • El CLR no tiene instrucciones intrínsecas para E/S • Se apoya completamente en la funcionalidad de la BCL • 30 clases: – Almacenamiento (ficheros binarios, de texto, streams...) – Gestión de directorios (Directory, DirectoryInfo) – Excepciones relacionadas (FileNotFound, FileLoad...) Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Text • System.Text – Codificación ASCII,Unicode,UTF-7,UTF-8 – Codificación y descodificación mediante algoritmos del usuario • Clases abstractas • System.Text.RegularExpressions – Clases para acceder al motor de expresiones regulares de .NET – No sólo verificar el emparejamiento, sino saber qué subcadena lo cumplió Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab System.Threading • Interlocked – Protección de variables compartidas (operaciones atómicas) – Incremento, decremento, asignación • • • Eventos, monitores, mutex... Gestión de hilos (threads) Ejecución de métodos en intervalos de tiempo Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Otros espacios de nombres (I) • Además de System y sus espacios de segundo nivel, existen otros espacios de nombres incluidos en BCL • Se agrupan bajo el espacio Microsoft • Son: – Microsoft.CSharp – Microsoft.JScript – Microsoft.VisualBasic – Microsoft.Vsa – Microsoft.Win32 Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab Otros espacios de nombres (II) • Microsoft.CSharp – Contiene clases para la compilación y generación de código en C# – Existen otras similares: Microsoft.JScript, Microsoft.VisualBasic • Microsoft.Vsa – Integrar lenguajes de scripting en las aplicaciones, y ejecutar el código • Microsoft.Win32 – Manipular eventos del SO y el registry Cursos de Verano 2002 UNIVERSIDAD DE OVIEDO Biblioteca de Clases Base (BCL) Agustín Cernuda del Río OOTLab