Introducción a .NET
Diferencias entre ASP 3.0 y .NET
La plataforma de desarrollo, que Microsoft ha lanzado al mercado, es la apuesta de futuro de la empresa de Redmond para impulsar definitivamente las tecnologías de internet. Las diferencias encontradas entre la tecnología ASP y la tecnología .NET, se basan en los siguientes puntos:
Objetos.
CLR.
Web services.
Conclusiones.
Objetos.Cuando Microsoft decidió lanzar la tecnología ASP como parte de su arquitectura DNA, desarrollo un entorno de desarrollo para la construcción de aplicaciones de internet caracterizado por dividir el entorno de desarrollo ASP en una serie de objetos con los cuales, los desarrolladores tenían en sus manos la capacidad para desarrollar aplicaciones avanzadas.
Los objetos que caracterizan ASP son:
Application ASPError ObjectContext Request Response Server Session
En la actualidad, son cada vez mas complicadas las aplicaciones de esta naturaleza en cuanto a interoperación de múltiples componentes y manipulación de datos empleando numerosas fuentes de información. Con el paso del tiempo una idea brillante surgió sobre la comunidad de desarrolladores a continuación se sintetiza tal idea:
"Si Internet es un conjunto de Host interconectados que sirven información y servicios por que no pensar además que cada Host pueda ofrecer al resto, servicios exclusivos para una nueva generación de aplicaciones distribuidas. De esta manera tenemos como unidad atómica lógica el objeto de negocio y como unidad macro lógica al servicio".
A continuación se muestra el grafico de interoperación de los servicios web.
Para ver el gráfico seleccione la opción ¨Bajar trabajo¨ del menú superior
Como se aprecia en el grafico 1, los servicios web atienden a diferentes tipos de usuarios y los servicios pueden residir en diferentes servidores web.
Parece evidente como ASP no fue construido con ese propósito, pero otras tecnologías competidoras como J2EE, PHP o Cold Fusion tampoco ofrecían mejoras perspectivas. Con el paso del tiempo diferentes avances se han producido hasta el lanzamiento comercial de la tecnología .NET de Microsoft. La idea de .NET gira en torno a los servicios web como base para la construcción de aplicaciones basadas en tecnologías de internet para la próxima década. Por tanto el diseño de esta nueva plataforma es totalmente diferente al planteamiento de ASP ya que esta ultima se planteaba como la solucion corporativa para la construcción de aplicaciones basadas en componentes COM. Esta fue la base del famoso concepto que inundo la informática corporativa de mediados de los 90’s con la inclusión de los componentes COM y su famoso homologo JavaBeans de la tecnología JAVA™. Cabe afirmar como la tecnología de Sun Microsystems parte con bastante mas ventaja debido principalmente a la filosofía con la cual se construyo, ya que cuenta con una excelente colección de clases base y sus modulos que van añadiendo al núcleo de la tecnología. La tecnología .NET nace con una base de clases más potente que Java y con características avanzadas que iremos viendo.
La tecnología .Net divide su FrameWork en una serie de librerías de Clases con las cuales los desarrolladores pueden construir sus aplicaciones distribuidas. A continuación se muestran las diferentes librerías que componen la tecnología .NET:
Collections. IO. Security. Runtime. Configuration. Net. Services. InterOp. Diagnostics. Reflection Text. Remoting. Globalization. Threading. Serialization.
Librería de datos.
OleDb. Common. SqlClient. SQL Types.
Librería de XML.
Serialization. Schema. XSL. Xpath.
Librería de Windows.
Design. ComponentModel.
Librería de Dibujo.
Drawing2D. Printing. Imaging. Text.
Librería Web.
Discovery. Protocols. HTML Web Controls. Web Form Controls. Caching. Configuration. SessionState. Security. Tras analizar las librerías del Frame Work de .NET se puede observar como supera enormemente a ASP en todos los frentes y como ASP se ve como un elemento minúsculo en comparación con .NET.
.NET prioriza los siguientes apartados:
Tecnologías de internet mediante la librería Web. XML como vehículo transmisor de información. Incrementa la presencia de modos de tratamiento de la información mediante la librería de datos.
Nueva filosofía de construcción de formularios web.
CLR o Common Languaje Runtime constituye uno de los pilares de la tecnología .NET ya que confiere una nueva visión a sus tecnologías. Antes de .NET, los lenguajes de codificación o bien eran interpretados como era el caso de VScript o Jscript o bien eran compilados a binario como ocurre con lenguajes de programación como C++, COBOL o FORTRAN. Con la entrada de JAVA en el mercado de las tecnologías, surge el concepto de VM o Maquina Virtual ya que de esta manera, el lenguaje era compilado a un lenguaje intermedio el cual gracias a la maquina virtual podía ser ejecutado en toda maquina con una maquina virtual, de esta manera surge una de las frases mas celebres en los últimos años de la década de los 90’s:
"Escribe el codigo única vez y ejecuta todas las veces que quieras".
Microsoft adopta esta idea en .NET creando CLR. La diferencia fundamental con respecto a Java y su maquina virtual es que .NET no se limita a un único lenguaje. De esta manera acoge en su seno tecnológico a diferentes masas de desarrolladores con perfiles tecnológicos distintos, si un desarrollador viene de C, adoptara C#, si viene de Visual Basic, adoptara Visual Basic.NET, si viene de ASP puede adoptar o Visual Basic.NET o Jscript.NET. En la actualidad hay anunciados mas de 25 Lenguajes compatibles con la tecnología .NET. Un dato a destacar es el soporte de los lenguajes al paradigma de la programación orientada a objetos. Desde los inicios de la computación, el problema con el cual se encontraban los ingenieros de software era encontrar una manera para diseñar software. La propia naturaleza de la informática hace posible que un determinado problema sea resuelto de múltiples formas, uno de los primeros problemas que fue resuelto, fue la estructuración de los algoritmos y la exclusión de la sentencia GO TO en los algoritmos ya que era contrario al paradigma de la programación estructurada. Una vez superado este escollo en los años 70`s surgen diferentes iniciativas que evolucionan la ingeniería del software, una de las mas importantes fue el desarrollo de Small Talk que revoluciono el panorama con su nuevo enfoque de diseño de software, el paradigma de la programación orientada a objetos. El software desde esa fecha podría ser diseñado con dos enfoques diferentes: Como un conjunto de operaciones bien estructuradas en modulos o bien diseñado como diferentes objetos que están relacionados entre sí para solucionar un determinado problema. Con el paso del tiempo, el paradigma de la orientación a objetos se ha impuesto sobre la programación estructurada debido a sus ventajas en cuanto a diseño, seguridad, escalabilidad y reutilización.
Bien es cierto que el nuevo paradigma confiere al equipo de desarrollo una nueva formación para pensar en Objetos pero los beneficios a medio plazo son evidentes. Microsoft viendo este panorama ha obligado a la comunidad Visual Basic a cambiar a Visual Basic.NET que esta pensado para programarse en orientación a objetos.
Este mismo hecho se aprecia en Jscript.NET y C#.
CLR se caracteriza por ser independiente de sistema operativo por tanto se aprecia como Microsoft ve nuevos frentes donde expandirse o protegerse según se mire. El mercado mundial de sistemas operativos orientado al sector de microinformática esta dominado por la serie Windows. En años recientes un nuevo competidor GNU ha llegado para quedarse, Linux una reciente versión de UNIX esta comiendo mercado debido a sus ventajas heredadas de UNIX y suyas propias. Se puede apreciar como .NET podría desembarcar en Linux empleando .NET o bien podría ser un signo de debilidad del sistema Windows ante la llegada de Linux. CLR puede en un futuro implantarse en otros sistemas operativos distintos de la serie Windows como base para el desarrollo de aplicaciones de escritorio. Como se aprecia esta característica es nueva con respecto a ASP que no da soporte al desarrollo de aplicaciones de escritorio.
Los servicios web son la revolución informática de la nueva generación de aplicaciones que trabajan colaborativamente en las cuales el software esta distribuido en diferentes servidores.
La informática se inicio con programas monousuarios implantados en grandes ordenadores. Posteriormente estas primeras aplicaciones alcanzaron la capacidad de atender a diferentes usuarios. Pasaron los años y llego la arquitectura cliente–servidor, que gracias a este modelo de desarrollo, la aplicación se dividía en una parte que interaccionaba con el usuario y otra parte destinada al procesamiento de información. En este acercamiento se consiguió que cada una de las partes que constituían la aplicación pudiera residir en computadoras distintas. Con el paso del tiempo, la computación aumento y llego la era de las aplicaciones distribuidas en las cuales los procesos se realizaban en diferentes unidades. De este paso surgió la tecnología Internet para solventar las problemáticas asociadas a fallo de aplicación centralizado. Véase documentación acerca de los orígenes de Internet.
Como punto final a esta cronología, los web services son un paso adelante en la computación ya que de esta forma un ordenador ya no se considerara como un núcleo de computo sino como un repositorio de servicios de n aplicaciones distribuidas por internet. Para comprender este concepto pondremos el ejemplo siguiente:
Imaginemos el supuesto de un servidor X que da 2 servicios, el servicio A y el servicio B. También nos dan el caso de que tenemos otro servidor Y que ofrece el servicio C y el servicio D. Por ultimo también analizamos el servidor Z que da 2 servicios el servicio E y el servicio F.
Imaginar que el servidor W ofrece una aplicación on-line que se compone de su servicio principal G y de la interoperacion con A, B, C, D, por tanto se da que los servicios A, B, C, D dan servicio a G independiente de su localización en G pero también están disponibles para el resto de internet si así se ha diseñado.Por tanto viendo los datos anteriores vemos que las posibilidades combinatorias son grandes y sobre todo por primera vez y de manera mas transparente que con el uso de componentes, el uso del software se hace mas reutilizable ya que diferentes servicios pueden ser utilizados como componentes en una aplicación.
Microsoft para conseguir este propósito con su tecnología .NET emplea como protocolo de comunicación, una aplicación XML, llamada SOAP.
¿Qué es SOAP? Son las siglas de Simple Object Access Protocol. Este protocolo deriva de un protocolo creado por David Winer, XML-RPC en 1998. En su sitio web, Userland, http://ww.userland.com se puede encontrar multitud de documentación acerca de este primer protocolo de comunicación bajo http mediante XML. Con este protocolo se podian realizar RPC o remote procedure calls, es decir, podiamos bien en cliente o servidor realizar peticiones mediante http a un servidor web. Los mensajes debían tener un formato determinado empleando XML para encapsular los parámetros de la petición. Con el paso del tiempo el proyecto iniciado por David Winer interesó a Importantes multinacionales entre las que se encuentran IBM y Microsoft y de este interés por XML-RPC se desarrollo SOAP.
SOAP es un protocolo mas completo que XML-RPC pero cabe decir que mas complejo.
La siguiente tabla comparativa muestra las diferencias entre ambos protocolos:
Caracteristicas | XML-RPC | SOAP |
Escalarares básicos. | yes | yes |
Estructuras. | yes | yes |
Arrays. | yes | yes |
Estructuras nombradas y Arrays. | no | yes |
Manejo de fallos. | yes | yes |
Curva de aprendizaje. | yes | no |
Conjunto de caracteres. | no | yes (US-ASCII, UTF-8, UTF-16) |
Tipos de datos definidos por usuario. | no | yes |
Requiere entendimiento del cliente. | no | yes |
Instrucciones de procesamiento Espeficicas. | no | yes |
A continuación se muestra un ejemplo de SOAP:
POST /StockQuote HTTP/1.1
Host: www.stockquoteserver.com
Content-Type: text/xml; charset="utf-8"
Content-Length: nnnn
SOAPAction: "http://example.org/2001/06/quotes"
<env:Envelope xmlns:env="http://www.w3.org/2001/06/soap-envelope">
<env:Body>
<m:GetLastTradePrice
env:encodingStyle="http://www.w3.org/2001/06/soap-encoding"
xmlns:m="http://example.org/2001/06/quotes">
<symbol>DIS</symbol>
</m:GetLastTradePrice>
</env:Body>
</env:Envelope>
En próximos artículos mostraremos la construcción de web services empleando tecnología .NET de Microsoft.
Tras el análisis de las 2 tecnologías de Microsoft, se puede comprobar como ASP 3.0 tiene un digno sucesor, pero hay que darse cuenta que no es simplemente una actualización de la tecnología para desarrollo de aplicaciones web, sino que es un nuevo enfoque de computo para el desarrollo de software. .NET supone un digno adversario para J2EE y como se puede comprobar en diferentes blue prints, supera esta ultima en algunos aspectos.
Si profundizamos en cuanto a todas las características que atesora, se aprecia como adquiere de la tecnología de JAVA muchas de sus funcionalidades pero con acceso mas sencillo y con la facilidad de poder emplear diferentes lenguajes de codificación pero sin perder potencia de diseño ya que los principales: C#, Visual Basic.NET y Jscript.NET son orientados a objetos. Además gracias a su nuevo modo de desarrollo de formularios web empleando los controles web se puede concluir diciendo que en conjunto el desarrollo de cliente a nivel funcional, no en términos estéticos es mas poderoso que los mejores clientes de Flash MX. Por tanto toda la estrategia de Macromedia con su plataforma MX esta en peligro.
En próximos artículos describiremos como funciona la clave tecnológica de .NET que son los servicios web y como funciona SOAP, WSDL. Además realizaremos una serie de ejemplos prácticos para el desarrollo de servicios web.
Direcciones de interés para más información:
http://www.topxml.comhttp://www.oreilly.com/catalog/progxmlrpc/
http://xmlrpc.usefulinc.com/ http://xmlhack.com/ http://www.byte.com/heller/2001/09/ http://www.xmlrpc.com/http://scottandrew.com/xml-rpc/test-mirror.html
http://www.ashleyit.com/rs http://www.oreilly.com/catalog/webservess/index.html
http://www.google.com/apis/download.html
http://www.w3schools.com/default.asp http://www.webreference.com/js/column107/
http://msdn.microsoft.com/vstudio/productinfo/default.asp
Juan Antonio Breña Moral.