Y no me refiero al Hotel Waldorf-Astoria, sino al proyecto “Codename Astoria” de Microsoft.
Se puede decir mucho sobre Microsoft, pero no se puede decir que se duermen sobre sus laureles. Constantemente están investigando nuevas cosas, y buscando nuevas soluciones, a veces para problemas inexistentes, pero hay que admitir (y de pronto admirar) la capacidad que la empresa tiene para tirar pa’lante.
El proyecto “Astoria” no es nuevo (desde hace unos seis meses es públicamente conocido), pero si es innovativo. Se trata de (traducido de la información de Microsoft sin su permiso) “permitir que aplicaciones expongan datos como un servicio de datos que pueden ser consumidos por clientes Web dentro de una intranet y/o a través de internet. El servicio de datos utiliza consultas HTTP, y operaciones HTTP estándar como GET, POST, PUT y DELETE para hacer operaciones dentro del servicio.”
Para los interesados, todo el software necesario se puede bajar desde el sitio de Microsoft (http://www.microsoft.com/downloads/details.aspx?FamilyId=1B6F85BC-8933-4D0E-A639-934EF85ADCE1&displaylang=en) y hay un sitio con información y ejemplos en http://astoria.mslivelabs.com/Default.aspx.
Si se desean leer toda la información les deseo muy buena suerte. Si no lo desean, de lo que se trata es de los siguiente: programamos una aplicación Web que utiliza el FrameWork de Astoria; detrás de ella hay una Base de Datos (o cualquier otro proveer de datos) que le entrega dinámicamente lo que se necesita mostrar; cómo mostrar estos datos no tiene importancia para Astoria (Ajax, SilverLight, HTML, lo que se les ocurra), todo el asunto se trata de bajar y subir datos. Desde el URL de la aplicación, usando uno de los ejemplos de Microsoft, si se quieren ver los usuarios en la tabla “Customers”, se puede hacer una llamada directamente a la Base de Datos de la forma:
http://myserver/data.svc/Customers
La respuesta del servidor es en forma de XML, más o menos en la forma:
<DataService xml:base=http://myserver/data.svc>
<Customers>
<Customer uri=Customers[ALFKI]”>
…
</Custormers>
<DataService>
y si se quieren ver los datos de un solo usuario:
http://myserver/data.svc/Customer[ALFKI]
De la misma manera, para ver los pedidos del usuario, almacenados en otra tabla relacionada, el URL será:
http://myserver/data.svc/Customer[ALFKI]/Orders
Y si lo que se quiere es parametrizar la consulta para ver solo los pedidos activos, será:
http://myserver/data.svc/Customer[ALFKI]/Orders[Active eq true]
y para ordenar los resultados se puede hacer:
http://myserver/data.svc/Customer[ALFKI]/Orders[Active eq true]?$orderby=OrderDate
Ya van cogiendo la idea… Ahora imagínense que la aplicación Web crea una grilla con todos los usuarios, cada uno con un vínculo con su propio URL creado dinámicamente para hacer un Drill-Down, y la cosa va tomando forma. Y si piensan que Astoria no solo se puede utilizar para bajar datos, sino también para modificarlos, es asunto se va poniendo más interesante… y peligroso…
Hay que recalcar aquí que Astoria está en una fase muy inicial, así que hay que verlo por el momento como un experimento que tal vez en algún momento veremos aplicado en la realidad. Y, por supuesto, si alguien lo quiere utilizar para código de producción, buena suerte, y que todos los Dioses le acompañen…
Pero bueno, la cosa es cómo podríamos utilizar algo así con SharePoint… que les parece si tenemos una Librería de Documentos en un sitio de SharePoint. Librerías (y Listas) las podríamos considerar como una tabla de una Base de Datos (de una u otra forma lo es), así que podríamos ver traer todos los documentos por medio de un URL:
http://myserver/data.svc/mysitio/mylibreria
y ver los metadatos de un documento en particular con un URL de la forma:
http://myserver/data.svc/mysitio/mylibreria[mydocumento]
o los documentos que se subieron hoy:
http://myserver/data.svc/mysitio/mylibreria[Date eq DateTime.Today]
Nuestra aplicación Web se tiene que encargar de mostrar los datos de una forma consecuente (de nuevo, se trata de tráfico de datos, no de presentación de ellos) y de una forma similar se podrían editar o eliminar elementos de la Lista o Librería.
Que opinan? De una u otra forma, ya tenemos diferentes mecanismos para hacer lo mismo, desde el muy sencillo QueryString hasta el viejo y confiable sistema de SOAP WebServices. Ganamos algo? Mejoramos algo? Lo empeoramos? Que piensan al respecto…
Gustavo – http://www.gavd.net/servers/
Escriba un Comentario que me haga reir…