sábado, 1 de agosto de 2009

Jugando con Jquery y basuras varias :-)

Estoy tratando de implementar un minúscula app que me permita gestionar, posiciones georeferenciadas (nada del otro mundo) pero con la salvedad que quiero que esta sea de carácter muy simple en todo sentido, sobre todo en usabilidad.

Arquitectura:

Desde hace algún tiempo estoy exponiendo servicios RestFul (sin la utilización de frameworks MVC) pensé en utilizar ASP.Net MVC pero la verdad es que no tenía mucho sentido cuando finalmente voy a terminar haciendo lo mismo "exponiendo servicios Rest" así que deseche esa idea y seguí utilizando WCF (Windows Communication Foundation)

Una de las muchas cosas que me agradan de estos servicios Rest es que:

- Respetan el paradigma HTTP (request/response) sacando el máximo provecho del mismo.

- Conceptualmente son muy claros, ordenados y directos (no hay que ser muy astuto para entenderlos)

- Siempre permiten por su naturaleza de servicio, que si a un alguien, no le gusta, le incomoda mi supuesto de presentación (HTML CSS JS), pues bien, se puede idear su propio concepto de presentación, con la tecnología que más le acomode (Adobe FLEX, MS$ Silverlight, JavaFX, MS WinForm... cualquier ""cosa"" que permita hacer un http request.)

- al revés, si a un alguien no le acomoda cierta tecnología de servidor... puede reconstruir la exposición de servicios, una vez más con la tecnologías que más le acomode y esto sin desechar las presentaciones ya creadas. (A bajo nivel, a alto nivel, da igual... mientras respete el estándar)

Sin ir muy lejos, tal como ya mencione, hoy trabajo con lo que propone MS$ (las "reglas" de MS$ específicamente WCF), sin embargo tengo una implementación con Java Restlet (GlassFish) "No J2EE" y tratando de simplicar aun mas (intento con Python CherryPy "Web Server Gateway Interface" (WSGI) y LightHTTP)

Una novedad de este desarrollo es que utilizo dos implementaciones de patrones para NHibernate que no había utilizado con anterioridad UnitOfWork quien es el encargado de gestionar la session "session per request" y Repository. Quien maneja modelo de dominio con una serie de métodos genéricos ya definidos .. Que luego vuelvo a envolver con lo que he llamado manager y una interfaz CRUD que me supone orden. (Otro Repository)






Presentación:

A grandes rasgos y sin entrar en mucho detalle o polémica (existe gente a favor y gente en contra) reemplace ExtJS por Jquery pudiendo así volver a un concepto no tan acabado o de alto nivel acerca de mi presentación en HTML CSS JS sino algo más directo y simple...

También he cambiado la forma en la que estructuro la presentación ... no quiero tener solo widgets bien modelados y estructurados, Sino que además un modelo que signifique algo .. Acá por ejemplo he vuelto a ocupar un concepto muy antiguo pero no menos útil... clases proxy centralizadas.

Por utltimo y ya para terminar de escribir jeje ya a bajo nivel intento crear mi propia abstracción sobre Javascript...algo sencillo que me permita definir clases y herencia simple...(OOP with JS) utilizando el prototype de Javascript (sin utilizar un framework claro esta :-)).... mi mejor referencia ... es ExtJS Core, OL (Openlayer) y Proj4JS ...estos dos ultimos poseen "tipos base" genericos que trabajan mas menos de la misma manera ..almenos ya manejo mis propios eventos, que me interesan en particular para encapsular las llamadas Asyncronicas XHR ... (es decir las clases proxy)

Entonces resumiendo:

- Microsoft WCF (MS FrameWork 3.5 SP1) (IIS7) RestFul services
- Log4Net
- NHibernate - Persistencia
- Extencion Spatial para NHibernate
- Patron UnitOfWork & Repository para NHibernate.
- PostgreSQL / PostGIS

y en presentación:

- HTML limpio (table-less)
- CSS
- JavaScript
- Jquery
- Jquery.ui
- Jqgrid
- Jq.select
- Proj4JS
- Json2
- Google API V2/V3 (cree dos provedores para manejar ambas API)
* en V3 los marker no son DnD :-S

- Servicio de Geocodificacion de Ultramap

En 3-4 días (fin de semana aburrido) aun no está del todo terminado, pero el resultado final (que es lo que importa) se ve más menos así:







1 comentario:

Andrés Iturralde dijo...

notaaable! monstro! suelte el codigo eso si po, no sea cagado! :P!