4.- Bibliotecas Principales


4.1.- Base Class Library (BCL)

Base Class Library


Como ya se menciono, la Base Class Library constituye los fundamentos de la .NET Framework Class Library, ya que provee la mayor parte de las funcionalidades elementales que pueden necesitarse para construir una  aplicación o servicio. En la imagen se pueden apreciar los namespaces más importantes que componen la BCL.

4.2.- ADO.NET

Acceso a Datos: ADO.NET

ADO.NET es un subconjunto de la .NET Framework Class Library, que contiene todas las funcionalidades necesarias para conectarse e interactuar con dos tipos de repositorios permamentes de información:

1)       Bases de Datos, como Microsoft SQL Server (clases del namespace System.Data, que se encuentran compiladas en System.data.dll)

2)       Archivos XML (clases del namespace System.XML, que se encuentran compiladas en System.Xml.dll)

Acceso a Bases de Datos Relacionales Escenario Conectado:

·         Un entorno conectado es uno en el cual los usuarios están constantemente conectados a la fuente de datos

·          Ventajas:

-          Mayor seguridad

-          Mejor control de concurrencia

-          Los datos se mantienen actualizados

  •  Desventajas:

-          Se requiere una conexión constante (consume recursos del servidor)

-          Escalabilidad

En la actualidad se plantean dos tipos de escenarios de acceso a bases de datos relacionales. El primero de ellos es el que se conoce como “Escenario Conectado”, ya que en él se requiere una conexión física establecida con el servidor de datos durante todo momento para poder efectuar cualquier consulta o actualización sobre los datos.

Esto tiene algunas ventajas y también sus desventajas.

Algunas Ventajas:

          Al haber una única conexión a la base de datos por usuario, o incluso a veces por aplicación, establecida permanentemente, puede llegar a resultar más sencillo administrar la seguridad y el acceso al servidor de datos. Lo mismo ocurre con el control de concurrencia: en un escenario donde múltiples usuarios se estuvieran conectando y desconectando permanentemente para realizar distintas acciones, este control sería más difícil de llevar.

          Siempre la aplicación tiene acceso a los datos actualizados

Algunas Desventajas:

          Se requiere una conexión abierta todo el tiempo con el servidor de base de datos, lo cual consume recursos innecesariamente si no se la está utilizando.

La escalabilidad del acceso a los datos se ve limitada por la cantidad de conexiones establecidas simultáneamente contra el servidor de base de datos.

Acceso a Bases de Datos Relacionales Escenario Desconectado:

·         En un entorno desconectado, una parte de los datos del repositorio central se copia y modifica en forma local, para luego sincronizarse con éste.

  • Ventajas

-          Se puede trabajar en forma independiente

-          Mayor escalabilidad y performance

  •  Desventajas

-          Los datos no están sinconizados

-          Resolución manual de conflictos

El segundo escenario de acceso a bases de datos relacionales se conoce como “Escenario Desconectado”, ya que en él una parte de los datos del servidor central se copia localmente y puede luego ser consultada y actualizada sin contar con una conexión abierta. Luego si se desea puede establecerse una conexión con el servidor de base de datos para sincronizar los cambios efectuados sobre la copia local y actualizar los datos. Este tipo de funcionalidad es particularmente útil para escenarios de usuarios móviles, que salen de su oficina con una laptop, un SmartPhone o una PocketPC y desean poder continuar trabajando por más que no tengan conectividad física con el servidor de base de datos ubicado en la red interna de la empresa.

Algunas ventajas que provee un escenario de acceso a datos desconectado son:

          La posibilidad de trabajar sobre los datos independientemente del resto de los usuarios de la aplicación

          Mayor escalabilidad en el acceso a datos y utlización más óptima de recursos del servidor, ya que se mantiene en un mínimo indispensable la cantidad y duración de conexiones abiertas.

          Mayor performance, al trabajar con una copia local de los datos.

Algunas Desventajas:

          Puede ocurrir que en un momento dado un usuario no esté accediendo a los datos más actualizados del repositorio central

          Al momento de sincronizar los cambios efectuados localmente contra el repositorio central pueden surgir conflictos, los cuales deben ser resueltos manualmente.

ADO.NET soporta el acceso a datos tanto en escenarios conectados como desconectados.

ADO.NET - Arquitectura

La arquitectura de ADO.NET está basada en el concepto de proveedores de acceso a datos, siendo un proveedor un conjunto de clases que permiten conectarse a una base de datos, ejecutar un comando sobre ella y tener acceso a los resultados de su ejecución, tanto de forma conectada como desconectada.

ADO.NET- Proveedores de Acceso a Datos:

·         SQL Server/Access (System.Data.SqlClient)

·         OLE DB (System.Data.OleDb)

·         ODBC (System.Data.Odbc)

·         Oracle (System.Data.OracleClient)

·         Otros provistos por terceros (MySQL, PostgreSQL, DB2, etc..)

Los proveedores de acceso a datos ADO.NET (conocidos como “Managed Data Providers”) representan conjuntos específicos de clases que permiten conectarse e interactuar con una base de datos, cada uno utilizando un protocolo particular. El .NET Framework incluye cuatro proveedores de acceso a datos, que en conjunto le permiten conectarse e interactuar virtualmente con cualquier base de datos existente en la actualidad:

          Data Provider For SQL Server: es el proveedor de acceso nativo a servidores de bases de datos Microsoft SQL Server 7.0 o superior, y Microsoft Access. Al conectarse via protocolos nativos de bajo nivel, povee la alternativa más performante para conexiones contra estos motores de bases de datos. Sus clases se encuentran en el namespace System.Data.SqlClient.

          Data Provider For OLE DB: es el proveedor de acceso a datos que permite interactuar via el protocolo estándar OLE DB con cualquier repositorio de datos que lo soporte. Sus clases se encuentran en el namespace System.Data.OleDb.

          Data Provider For ODBC: es el proveedor de acceso a datos que permite interactuar via el protocolo estándar ODBC con cualquier repositorio de datos que lo soporte. Sus clases se encuentran en el namespace System.Data.Odbc.

          Data Porvider For Oracle: es el proveedor de acceso nativo a bases de datos Oracle, desarrollado por Microsoft utilizando las herramientas de conectividad de Oracle. De esta forma puede lograrse un acceso más performante a bases de datos Oracle desde aplicaciones .NET que utilizando ODBC u OLE DB. Sus clases se encuentran en el namespace System.Data.OracleClient, y están compiladas en un assembly diferente al resto: System.Data.OracleClient.dll.

ADO.NET provee una arquitectura extensible, posibilitando que terceras partes creen sus propios proveedores de acceso nativo para aplicaciones .NET. Algunos ejemplos de esto son:

          Data Provider For DB2, desarrollado por IBM

          Oracle Data Provider For .NET, desarrollado por Oracle

          Providers de acceso nativo a bases de datos OpenSource, como MySQL y PostgreSQL

Es importante volver a destacar que utilizando estos proveedores de acceso a datos cualquier aplicación .NET puede utilizar casi cualquier base de datos relacional existente en la actualidad como respositorio de información persistente (esto incluye, además de MS SQL Server, a IBM DB2, Oracle, Sybase, Informix, TeraData, MySQL y PostgreSQL, entre otras).

ADO.NET – Clases más comunes

En la imágen se pueden apreciar las clases más comunes que componen a todos los proveedores de acceso a datos de ADO.NET. Nótese que algunos nombres empiezan con las letras “Xxx”: esto se debe a que los nombres de esas clases varían según el proveedor específico que se esté utilizando. Por ejemplo, la clase que representa una conexión con la base de datos usando el Data Provider For Sql Server es “SqlConnection”, mientras que si usamos el Data Provider For Oracle podemos obtener la misma funcionalidad de la clase “OracleConnection”. Mas allá del ejemplo, pasemos a describir cada una de estas clases y su funcionalidad:

        XxxConnection: representa una conexión. Almacena, entre otras cosas, el string de conexión (connection string), y permite conectarse y desconectarse con una base de datos.

        XxxCommand: permite almacenar y ejecutar una instrucción SQL contra una base de datos, enviando parámetros de entrada y recibiendo parámetros de salida.

Estas dos clases se utilizan tanto en escenarios conectados como desconectados.

        XxxDataReader: permite acceder a los resultados de la ejecución de un comando contra la base de datos de manera read-only (sólo lectura), forward-only (sólo hacia adelante). Esta clase se utiliza en escenarios conectados, ya que no es posible operar sobre los registros de un DataReader estando desconectado de la fuente de datos.

XxxDataAdapter y DataSet: en conjunto, estas clases constituyen el corazón del soporte a escenarios desconectados de ADO.NET. El DataSet es una representación en memoria de una base de datos relacional, que permite almacenar un conjunto de datos obtenidos mediante un DataAdapter. El DataAdapter actúa como intermediario entre la base de datos y el DataSet local desconectado. Una vez que el DataSet se encuentra lleno con los datos que se necesitan para trabajar, la conexión con la base de datos puede cerrarse sin problemas y los datos pueden ser modificados localmente. Por último, el DataAdapter provee un mecanismo para sincronizar los cambios locales contra el servidor de base de datos. Nótese que la clase System.Data.DataSet no tiene el prefijo Xxx, ya que es independiente del proveedor de acceso a datos utilizado.

ADO.NET – DataSet

Como ya se ha mencionado, el DataSet es una representación residente en memoria de datos relacionales, independiente de la base de datos y del protocolo utilizado para interactuar con la misma. Un DataSet, al igual que una base de datos, está compuesto por un conjunto de tablas (colección de clases “DataTable”), cada una de las cuales está compuesta a su vez por un conjunto de filas (colección de clases “DataRow”) y columnas (colección de clases “DataColumn”). Dentro de un DataSet pueden establecerse relaciones entre DataTables, y hasta restricciones de integridad referencial (Claves Primarias y Foráneas). Internamente, los DataSets representan toda su estructura y datos contenidos en formato XML.

ADO.NET es el sucesor de ADO (ActiveX Data Objects), la biblioteca de acceso a datos de la plataforma COM. Si bien ADO soporta sólo escenarios conectados, puede resultar útil hacer una analogía de las clases más comunes utilizadas en ADO con respecto a sus nuevas versiones en ADO.NET:

          La clase Connection de ADO tiene su paralelo en las clases XxxConnection de los distintos proveedores de ADO.NET

          La clase Command de ADO tiene su paralelo en las clases XxxCommand de los distintos proveedores de ADO.NET

          La clase Recordset de ADO dejó de existir como tal en ADO.NET. En su lugar existen en ADO.NET las clases XxxDataReader (es lo más parecido a un Recordset read-only forward-only de ADO), y las nuevas clases DataSet y XxxDataAdapter para escenarios desconectados.

ADO.NET – Accediendo a Datos Conectado


·         En un escenario conectado, los recursos se mantienen en el servidor hasta que la conexión se cierra

·         1) Abrir Conexión

·         2) Ejecutar Comando

·         3) Procesar Filas en DataReader

·         4) Cerrar Reader

·         5) Cerrar Conexión

ADO.NET – Accediendo a Datos Desconectado


·         En un escenario desconectado, los recursos no se mantienen en el servidor mientras los datos se procesan

·         1) Abrir Conexión

·         2) Llenar DataSet mediante DataAdapter

·         3) Cerrar Conexión

·         4) Procesar DataSet

·         5) Abrir Conexión

·         6) Actualizar fuente de datos mediante DataAdapter

·         7) Cerrar Conexión

ADO.NET – Soporte a XML


Las clases que se muestran en la diapositiva ilustran una parte del extenso soporte a XML provisto por el .NET Framework, que va desde la simple lectura de un documento XML a su navegación, búsqueda y transformaciones complejas.

          XmlReader – clase abstracta cuyo propósito es proveer un mecanismo de lectura forward-only de un documento XML. Tiene tres clases derivadas:

          XmlTextReader – utilizada para leer datos de un documento XML o un stream. Se utiliza normalmente cuando la performance de lectura es un factor clave y todo el sobreprocesamiento de DOM debe evitarse.

          XmlValidatingReader – similar a XmlTextReader, pero pensada para validaciones DOM.

          XmlNodeReader – permite leer datos de un nodo XML.

          XmlTextWriter  permite que datos XML puedan ser escritos a un archivo XML o a un stream, y puede además proveer mecanismos de validación para asegurar que sólo datos XML válidos y bien formados sean escritos.

          XmlDocument – esta es una clase compleja que actúa como un contenedor de datos XML, representando en un modelo de objetos en memoria toda la esctructura de un documento XML. Esto permite tener facilidades de navegación y edición, pero a un cierto costo de performance y consumo de recursos.

          DocumentNavigator – permite navegar libremente la estructura de un documento XML una vez que ha sido cargado dentro de una instancia de la clase XmlDocument.

 

4.3.- Windows Forms


El namespace System.Windows.Forms contiene las clases necesarias para crear aplicaciones basadas en formularios y ventanas de Windows, que aprovechan al máximo todas las posibilidades que el sistema operativo Windows tiene para ofrecer en términos de interfaz de usuario. Entre estas clases podemos encontrar además formularios, cuadros de diálogo y controls gráficos necesarios para construir una interfaz de usuario rica.

4.4.- ASP.NET


ASP.NET es un subconjunto de la .NET Framework Class Library que contiene las funcionalidades necesarias para desarrollar aplicaciones y servicios Web, y sus clases se encuentran dentro del namespace System.Web. ASP.NET no es sólo la nueva versión de su predecesor, ASP, sino que provee un nuevo modelo unificado de programación orientada a objetos que permite hacer uso de todos los servicios y facilidades del .NET Framework programando en cualquier lenguaje compatible con la plataforma. Por otra parte, nuevos servicios a nivel de infraestructura (seguridad, performance, estabilidad, configuración, instalación, mantenimiento) hacen que ASP.NET sea ideal para construir aplicaciones web de porte empresarial y misión crítica.


Comments