Arquitectura XML en .NET Framework

(Cómo aprovechar XML generando nuevas aplicaciones de alto rendimiento para representar e intercambiar datos)

 

Fecha: 04/Oct/2005 (04/10/2005)
Autor: Arbis Percy Reyes Paredes 
Email: bigpercynet@hotmail.com

http://percyreyes.blogspot.com  - http://netarticles-percyreyes.blogspot.com


...para no perder la costumbre, empecemos con la INTRODUCCIÓN

Hoy en día, todos sabemos que el WWW ha permitido comunicarnos con cualquier persona desde cualquier lugar, de esta manera el HTML supuso una revolución porque permite la comunicación entre las personas. HTML (HyperText Markup Language) es un lenguaje de marcado muy sencillo, que permite describir hipertexto, la descripción se basa en especificar en el texto la estructura lógica del contenido (títulos, párrafos de texto normal, definiciones, citas, etc) así como los diferentes efectos que se quieren dar (poner cursiva, negrita, o un gráfico determinado) y llevar la presentación final de dicho hipertexto sobre un programa especializado (como Internet Explorer, Netscape, Mosaic, opera 7.54 ... ) para poder visualizarlo.

Creo que el HTML es un invento fuera de foco, en otras palabras, es un prodigioso sistema de presentación de documentos de toda nuestra historia informática. Es gracias al HTML que he podido publicar este artículo y usted pueda estar leyéndola. Debido al gran crecimiento de Internet, los intereses comerciales y la necesidad de poder realizar páginas Web vistosas, ha dado lugar a que en poco tiempo este lenguaje haya evolucionado muy rápidamente convertiéndose en el estándar de visualización de datos. Sin embargo, HTML tiene muchas limitaciones, entre ellas: es muy rígido e inflexible, y muy limitado en cuanto no ofrece ninguna forma basada en los estándares para administrar los datos.

estandarizando el formato de datos...

¿y para qué sirve un estándar de datos? El estándar de datos sirve para escribir cualquier tipo de información en el mismo formato. Por ejemplo: transacciones comerciales, uso compartido de bases de datos,... todo esto puede escribirse en un formato plano permitiendo a las aplicaciones beneficiarse de la interoperatibilidad entre sistemas. Es precisamente aquí donde entra a tallar el XML, definiendo una representación estructural de los datos que se pueda implementar ampliamente siendo fácil de distribuir. Hoy en día se está notando en la práctica el uso de XML, aunque no totalmente, es decir, su uso aún no está generalizada, o  mejor dicho, la mayoría de desarrolladores no estamos informados acerca de la gran utilidad del XML. Pero estoy seguro que dentro de un tiempito la utilización del XML será una revolución, eso téngalo por seguro...!

Actualmente XML es en gran medida una de las tecnologías "fuertes" en las comunidades de software de estos días. Es así que,  es increíble la cantidad de información, aplicaciones y software que se ha ido generando alrededor de este nuevo estándar, estándar, que por cierto, fue aprobado en su primera especificación 1.0 alrededor del año 1998 por la W3C. Por otra parte, mientras que el desarrollo de las aplicaciones multinivel se enfocaban en crear grandes aplicaciones para su corporación, el XML está permitiendo la creación de grandes aplicaciones que pueden ser utilizadas por cualquiera y en cualquier lugar. Además, incrementa el alcance de las aplicaciones y permite la continua entrega del software. En este contexto, el software no es tanto como algo instalado de un disco, sino que es un servicio, como un evento de pago por televisión, al cual puede suscribirse mediante un medio de comunicación. Por consiguiente todo esto puede lograrse usando un estilo de programación basada en Servicios Web XML la cual representa la siguiente evolución en aplicaciones.

La tecnología actual nos facilita crear servicios web con mucha facilidad y eficiencia. Un servicio Web XML es una entidad programable que proporciona un elemento de funcionalidad determinado, como lógica de aplicación, al que se puede tener acceso desde diversos sistemas potencialmente distintos mediante estándares de Internet muy extendidos, como XML y HTTP. Los servicios Web XML dependen en gran medida de la amplia aceptación de XML y otros estándares de Internet para crear una infraestructura que posibilite el funcionamiento conjunto de aplicaciones de modo que se solucionen muchos de los problemas que antes dificultaban estos intentos.

El Lenguaje de marcado extensible (XML) es un lenguaje de programación de hipertextos que se puede utilizar para describir el contenido de un conjunto de datos y cómo se deben presentar esos datos a un dispositivo o en una página Web. Los lenguajes de marcado se originaron como medio para que los publicadores indicaran a las impresoras cómo se debía organizar el contenido de un periódico, una revista o un libro. Los lenguajes de marcado para datos electrónicos desempeñan la misma función para documentos electrónicos que se pueden mostrar en diferentes tipos de equipos electrónicos.

De esta manera, el estándar de datos XML y las extensiones XML permitirán una gran variedad de nuevos usos, desde luego, todos basados en una representación estándar para el transporte de datos estructurados por todo el world wide Web, posiblemente dejando al margen las páginas HTML. Y como dicen por allí: "el XML supondrá una revolución porque va a permitir la comunicación entre las máquinas."

El HTML no indica lo que está representando, se preocupa principalmente de que eso tiene que ir con un tamaño de 2 y color verde,  poner cursiva, negrita, pero no te dice que lo que está mostrando es el nombre de un empleado o el stock de un producto. El XML hace precisamente esto: describe el contenido de lo que etiqueta .

XML y HTML (Lenguaje de marcado de hipertexto) se derivan de SGML (Lenguaje de marcado generalizado estándar). SGML es un lenguaje muy extenso y complejo que es difícil de utilizar totalmente para publicar datos en el Web. HTML es un lenguaje de marcado más sencillo y especializado que SGML, pero tiene una serie de limitaciones a la hora de trabajar con datos en el Web. XML es más reducido que SGML y más sólido que HTML, por lo que está adquiriendo gran importancia en el intercambio de datos electrónicos a través del Web o de intranets corporativas. De aquì que siempre se escucha decir: "El XML más que un HTML++ hay que considerarlo como un SGML-- optimizado para su utilización en Internet."

XML en .NET Framework

El diseño de XML para trabajar con el .NET Framework, estuvo basado en los siguiente objetivos: Compatibilidad con los estándares del W3C, extensibilidad, arquitectura conectable, rendimiento e integración estrecha con ADO.NET. XML proporciona a los programadores la capacidad de ofrecer datos estructurados desde muchas aplicaciones al sistema local con el fin de trabajar localmente con ellos. Además, por su parte, .NET Framework nos proporciona un set de clases que están categorizadas de acuerdo a sus funcionalidades ofrecidas, como lectura y escritura de documentos XML, validación de documentos XML, navegación y selección de nodos, administración de esquemas, y transformación de documentos XML.

.NET Framework ofrece la posibilidad de diseñar un conjunto integrado de clases XML e innovar en el entorno XML. Las clases XML que se suministran son elementos básicos de .NET Framework. Estas clases ofrecen una solución abierta, interoperable y compatible con estándares para superar las dificultades a las que se enfrentan actualmente los programadores. Toda esta funcionalidad se encuentra dentro del namespace system.xml.dll, entre los más usados tenemos: System.xml, System.Xml.Schema, System.Xml.XPath, System.Xml.Xsl.

Una funcionalidad muy útil que nos brinda el .NET Framework, es la posibilidad de trabajar con serialización de objetos. Todas las clases que tienen esta funcionalidad se encuentran el agrupadas en el namespace System.Xml.Serializacion. La serialización XML escribe instancias de objetos como documento XML y lee objetos a partir de  documentos XML. La serialización es usada en la programación Web en combinación con SOAP y dentro del marco del .NET  Framework XML Web Services.

Uso del XML en .NET

XML es usado en las siguientes áreas del .NET Framework:

ADO .NET Los objetos contenedores de datos son llenados y vaciados usando XML.

CONFIGURACIÓN Los valores de los archivos de configuración son almacenados en archivos XML.

REMOTING Los objetos remotos pueden ser accedidos usando SOAP para preparar y realizar la llamada.

WEB SERVICES SOAP es ciertamente un protocolo XML que los servicios web usan para el intercambio de información en un ambiente descentralizado y distribuido. Comúnmente se usa SOAP para invoar métodos de un web service dentro de una plataforma totalmente independiente.

XML PARSING El procesamiento y manipulación de documentos XML es posible mediante las APIs basadas en Stream y XMLDOM (XML Document Object Model)

XML SERIALIZACIÓN La serialización es el proceso de convertir un objeto de forma que pueda transportarse fácilmente. Por ejemplo, puede serializar un objeto y transportarlo por Internet utilizando HTTP entre un cliente y un servidor. En el otro extremo, la deserialización reconstruye el objeto a partir de la secuencia. Esto es, guardar instancias de objetos en documentos XML, como también restaurarlos a partir de ella.

NOTA cada una de estas áreas de aplicación serán detalladas como temas centrales de otros artículos.

Saliéndonos un poco del tema...

Algo que vale la pena mencionar, aunque no forma parte del .NET Framework, son el grupo de clases administradas definidas como extensiones XML para SQL Server. Un conocimiento global de la funcionalidad XML en SQL Server significa tratar el acceso a esa funcionalidad mediante T-SQL, los esquemas y plantillas XML, y el protocolo de transferencia de hipertexto (HTTP). Todo esto es muy importante porque XML promete revolucionar el modo en que las bases de datos y los programadores web implementan el acceso y la manipulación de datos en sus soluciones.

Aprender la funcionalidad XML requiere saber las características XML disponibles en las distintas versiones de SQL Server: versión Web 1, versión web 2, y la "versión" Web Services ToolKit. El Web Services ToolKit se basa en SqlXML 3.0 e incluye el paquete de instalación. Por otra parte, Microsoft relata que las características introducidas en SQLXML 1.0 y SQLXML 2.0 se incluyen en el paquete de instalación de SQLXML 3.0.

Referencia: Xtensible Markup Language y Visual Basic .NET

Características de la funcionalidad XML en SQL Server 

  1. Posibilidad de acceder a SQL Server vía HTTP.
  2. Soporte para esquemas XRD(XML-Data Reduced).
  3. Recuperación y escritura de datos XML, usando la cláusula FRO XML de la sentencia SELECT de T-SQL.
  4. Uso de Updategram, los cuales permiten la manipulación de datos basada en transacciones utilizando XML.
  5. XML Bulk load dirigido a trasladar cantidades enormes de datos basados en XML a SQl Server.
  6.  Posibilidad de definir mediante un parámetro el retorno de datos binarios desde un origen de datos SQL Server.
  7. Funcionalidad totalmente adaptada al estándar XSD, es decir, en conformidad con la definición de esquema W3C conocido como XML Schema Definition(XSD).
  8. El formato del lado del cliente permite que se formatee el XML de los conjuntos de filas SQL Server en el servidor IIS en lugar de en el servidor de base de datos.

regresando al tema...

System.Xml Namespace

El estudio de este espacio de nombres es la parte central de este artículo. System.Xml tiene un conjunto completo de clases XML para análisis, validación y manipulación de datos XML mediante sistemas de lectura, sistemas de escritura y componentes compatibles con el W3C DOM.

Entre los estándares soportados por el .NET Framework en conformidad con la W3C tenemos: XML 1.0, XML namespaces,  XML Schema, DOM Level 1 - Level 2, XPath, XSLT, SOAP 1.1. Estas tecnologías están totalmente integradas para el .NET Framework. A continuación se describe una referencia de estos estándares y las normas que admiten.

Dentro del .NET Framework se encuentran también las consultas XPath (XML Path Language) y las transformaciones XSLT (Extensible Stylesheet Language Transformations).

Entre las clases principales del espacio de nombres XML tenemos:

XmlTextReader Proporciona acceso rápido de lectura, sin almacenamiento en caché y con desplazamiento sólo hacia delante a datos XML. Además puede leer datos de diferentes procedencias, como un objeto de secuencia, un objetoTextReader y una dirección URL que identifica la ubicación de un archivo local o de un sitio Web. XmlTextReader usa XmlResolver para localizar recursos externos, tales como las DTD, de forma que pueda comprobarlos para ver si su formato es correcto.
XmlValidatingReader Proporciona validación de esquemas DTD, XDR y XSD. Esta clase implementa la clase XmlReader y proporciona compatibilidad para la validación de datos. Utilice la propiedad Schemas para que el lector realice las validaciones con los archivos de esquema almacenados en la caché de un objeto XmlSchemaCollection. La propiedad ValidationType especifica el tipo de validación que debe realizar el lector. Cuando la propiedad se establece en ValidationType.None, se crea un lector que no valida.
XmlTextWriter Proporciona una forma rápida y de desplazamiento sólo hacia delante para generar código XML. Representa un sistema de escritura que proporciona un medio rápido, sin almacenamiento en caché y con desplazamiento sólo hacia delante para generar secuencias o archivos con datos XML que satisface las recomendaciones relativas a espacios de nombres en XML y Extensible Markup Language (XML) 1.0 del Consorcio W3C.
XmlDocument Implementa las especificaciones W3C Document Object Model level 1 Core y Core DOM Level 2. DOM es la representación en forma de árbol en memoria (caché) de un documento XML y posibilita la exploración y edición del documento. Dado que XmlDocument implementa la interfaz IXPathNavigable, también se puede utilizar como documento de origen de la clase XslTransform. La clase XmlDataDocument extiende XmlDocument y permite que los datos estructurados se almacenen, recuperen y manipulen mediante un DataSet relacional. Esta clase permite que los componentes combinen vistas XML y relacionales de los datos subyacentes. 
XmlDataDocument Proporciona una implementación de un objeto XmlDocument que se puede asociar a un objeto DataSet. Los datos XML estructurados se pueden ver y manipular simultáneamente a través de la representación relacional del objeto DataSet o de la representación de árbol del objeto XmlDataDocument. Esta clase extiende XmlDocument. Permite cargar datos relacionales o datos XML y manipularlos utilizando Document Object Model (DOM) del Consorcio W3C. DOM presenta los datos como una jerarquía de objetos de nodo. Dado que XmlDataDocument implementa la interfaz IXPathNavigable, también se puede utilizar como documento de origen de la clase XslTransform. XmlDataDocument tiene una relación estrecha con la clase DataSet que proporciona una vista relacional de los datos XML cargados. Los cambios efectuados en XmlDataDocument se reflejan en DataSet y viceversaLa clase XPathDocument proporciona una caché rápida y de alto rendimiento con el fin de procesar documentos XML para XSLT.
 XslTransform

corresponde a un procesador XSLT compatible con la especificación W3C XSLT 1.0 con el fin de transformar documentos XML. Los objetos XslTransform sólo proporcionan seguridad para la ejecución de subprocesos en caso de operaciones de transformación. En otro tipo de operaciones, no se garantiza la seguridad en la ejecución de subprocesos. Hay que asegurarse de no llamar a otros métodos en el objeto durante las operaciones de carga.

XPathNavigator

Proporciona un modelo de datos W3C XPath 1.0 sobre un almacén con un modelo de desplazamiento de tipo cursor. La clase XPathNavigator resulta de utilidad para ejecutar consultas de XPath. Un conjunto de nodos se puede seleccionar desde cualquier almacén que implemente la clase IXPathNavigable. Puede llamar al método CreateNavigator como se define en IXPathNavigable para devolver un XPathNavigator y usarlo para las consultas de XPath. Entre las clases que ya implementan IXPathNavigable se incluyen XPathDocument, XmlDocument, XmlDataDocument y XmlNode.

XmlSchema

Proporcionan un conjunto de clases que se pueden examinar y que reflejan directamente la especificación W3C XSD. Proporcionan la capacidad de crear esquemas XSD mediante programación. Contiene la definición de un esquema. Todos los elementos del lenguaje de definición de esquemas XML (XSD) son entradas secundarias del elemento schema. Representa el elemento schema del Consorcio W3C.

XmlSchemaCollection Proporciona una biblioteca de esquemas XDR y XSD. Estos esquemas, almacenados en memoria, proporcionan validación rápida en tiempo de análisis para el objeto XmlValidatingReader. Los esquemas se cargan utilizando el método Add, momento en el que el esquema se asocia a la dirección URI de un espacio de nombres. Para los esquemas XML, normalmente será la propiedad targetNamespace del esquema.Aunque esta clase almacena tanto esquemas XML como esquemas XDR, los métodos y propiedades que toman o devuelven XmlSchema sólo se aplican a esquemas XML.
XmlResolver Resuelve los recursos XML externos designados por un identificador URI.
XmlSignificantWhitespace Representa el espacio en blanco entre marcas en un modo de contenido mixto o espacio en blanco dentro del ámbito xml:space= "preserve". También se hace referencia a esto como espacio en blanco significativo.
XmlConvert Codifica y descodifica nombres XML y proporciona métodos de conversión entre tipos de Common Language Runtime y tipos de esquemas del lenguaje de definición de esquemas XML (esquemas XSD). Cuando se convierten tipos de datos, los valores devueltos no dependen de la configuración regional.
XmlNode Representa un único nodo del documento XML.
XmlNodeList Representa una colección ordenada de nodos.
XmlNodeReader Representa un lector que proporciona acceso rápido a datos XML, sin almacenamiento en caché y con desplazamiento sólo hacia delante en un XmlNode.

Todas estas clases, como también las interfaces(IHasXmlNode, IXmlLineInfo), delegados (XmlNodeChangedEventHandler) y enumeraciones(EntityHandling, XmlTokenizedType, Formatting, XmlNodeChangedAction, ReadState, etc.) encapsuladas en este espacios de nombres, serán motivo de análisis(de otros artículos) a lo largo de todo este proceso de estudio de la Arquitectura de XML en .NET Framework. Por ahora basta con esta parte teórica, la cual espero haya sido asimilado con sumo cuidado para que, de esta manera, más adelante pueda aprovechar las distintas funcionalidades de estas clases, las cuales serán detalladas mediante ejemplos sencillos, prácticos y divertidos.

Nos vemos, en los siguientes artículos.

MÇP - P€®©¥ R€¥€$™

Saludos desde Trujillo - Perú.

Por favor, califica este artículo en PanoramaBox, así me animarás a continuar colaborando contigo...


ir al índice del Guille