lunes, 7 de abril de 2008

Ideas de un proyecto para un Framework Web

Actualmente me encuentro desarrollando proyectos en .Net, como saben (y si no lo saben ahora lo sabrán) soy Ingeniero Informático (está bien, todavía soy Bachiller, porque me estoy demorando en sacar el título por la bendita tesis que no logro terminar).

Al empezar a desarrollar tuve muchos problemas, pues empecé a trabajar y no había mucho de donde aprender, las primeras experiencias con el Framework de .Net fueron sinceramente traumáticas, a pesar de haber empezado mi vida laboral usando .Net 2.0 y el IDE del Visual Studio 2005, (el cual durante un buen tiempo lo he considerado el mejor IDE del mercado, solo posiblemente opacado por el Visual Studio 2008 el cual todavía no es tan difundido como el del 2005); El no conocer patrones y no tener muchas ideas de buenas prácticas terminaron por jugarnos sucio al inicio. Después de un año de trabajo sin embargo habíamos aprendido ya usar muy bien los componentes y herramientas que el Visual Studio 2005 provee...
Aprendimos a usar los TableAdapters, aprendimos a usar los Componentes orientados a Datos del .Net 2.0 como los FormViews, GridViews, Object Data Sources y otros...

Pero como no tuvimos mayor orientación nuestros primeros proyectos Web fueron algo desordenados. Después de un año volví a ver el código que hicimos para nuestro primero proyecto Web y me di cuenta que el tiempo no pasa en vano. Siento que he aprendido mucho desde aquel primer proyecto web que hice. Lo único que sin embargo me hace sentir satisfecho de ese sistema es que aún funciona!!!!, y sigue ayudando a la empresa para la que fue desarrollado.

Al tiempo pasé a otra empresa (en la que actualemente estoy) y me sugirieron (obligaron) a que aprendiera a usar NHibernate, me pusieron a cargo de un proyecto Web interno de la empresa el cual desarrollé con algo más de calma y allí pude plasmar las primeras ideas de lo que podría ser un framework util para desarrollar aplicaciones web con algo más de rapidez, teniendo un código más limpio y tratando (digo tratando porque nunca uno puede ser del todo purista, por practicidad) de seguir ciertos patrones y estándares en el desarrollo web.

Todo Buen Framework debería poder brindarle a un desarrollador lo siguiente al menos:

  1. Una buena arquitectura de desarrollo. Una separación por capas es más que indispensable, teniendo una capa de acceso a datos, una capa de lógica de negocios y una capa de presentación, además de proveer los utilitarios básicos, para las tareas más comunes. El .Net 2.0 usa el Provider Pattern en la mayoría de sus Módulos y/o Servicios que interactuan con el acceso a datos y otras APIs, tenemos por ejemplo los servicios de Membership, Role, Profile, Session State y algunos más. Basándose en esa arquitectura Davide Icardi, (www.devage.com) ha desarrollado un buen cms framework, Eucalypto, el cual es una librería de servidor que ayuda a escribir content management web sites en ASP.NET, además es OPEN SOURCE, y brinda ya un buen grupo de características muy útiles cuando se inicia el desarrollo de un sitio web. El código implementado por Davide es muy bueno y sobre el se basa mi actual trabajo, he modificado parte de su código para que se ajuste a las necesidades particulares de mi framework.
  2. Un buen framework básico para desarrollar código en Javascript. Aún cuando la tendencia actual es a escribir una menor cantidad de código Javascript en los sitios web, es siempre indispensable tener la posibilidad de hacerlo, y hacerlo bien. En este caso empecé a usar inicialmente la libreria X (www.cross-browser.com) por su simplicidad. Posteriormente basé mis librerías propias en el YUI (developer.yahoo.com/yui). Todavía mis librerías básicas se basan casi al 98% en el YUI, un 2% se basan en el ASP.Net Ajax client libraries. La verdad todavía no he podido revisar si mezclar ambas librerías impacta en el performance del sitio web, pues ambas básicamente traen lo mismos métodos y herramientas. Más adelante desarrollaré un poco más en extenso el tema de las librerias Javascript y todo lo que he escrito basandome en las librerias YUI.
  3. Buenas plantillas para el desarrollo de los layouts del sitio web basándose en al menos un 90% en puro CSS, dejando un 10% para el tema de los formularios (donde es más que indispensable por practicidad usar tablas para formatear los formularios) Buenos lugares para empezar en el tema del CSS son www.csszengarden.com, www.brunildo.org/test/ y blog.html.it/layoutgala/ la verdad este último enlace resultó ser muy bueno, e ingenioso, sobre todo porque demuestra la versatilidad del CSS.
  4. Ayudar a Escribir la menor cantidad de código posible. Esto no es necesariamente cierto siempre, en realidad debería poder acelerar la escritura de código al menos en un 80% de los casos, (haciendo alusión tácitamente a la regla del 80-20).
  5. Ser extensible. O al menos no limitar al desarrollador ni forzarlo a trabajar de una manera ajena a la que el desarrollador suele estar acostumbrado, (nuevamente al menos en un 80% de las veces). Las convenciones son siempre buenas, y en el caso del presente framework se han hecho un buen conjunto de convenciones. por ejemplo: Todas las tablas contienen campos de auditoria, los nombres de las tablas son siempre en singular y con la primera letra en mayúsculas, se usa un prefijo para nombrar a las tablas, y algunas más que detallaré a mayor profundidad conforme empiece a publicar posts.

Por lo pronto este Post me servirá de suerte de "roadmap", para poder empezar el desarrollo de mi Tema de Tesis para optar por el grado de Ingeniero y poder decir al fin... "Soy Ingeniero" aunque el título solo me sirva en Perú. Igual será una muy buena experiencia.

Mi tema de tesis... ha empezado

No hay comentarios: