El ataque de los Frameworks

Visita este artí­culo en http://www.estadobeta.com/2005/11/20/el-ataque-de-los-frameworks/

Por Ismael en Desarrollo, PHP, Patrones de diseño, artículos, tendencias web

Los frameworks suelen ser implementaciones de patrones de diseño conocidos, aderezados con funciones que asisten al desarrollador.

¿Qué es un Framework?

Un framework en el contexto de la programación es un set de funciones o código genérico que realiza tareas comunes y frecuentes en todo tipo de aplicaciones (creación de objetos, conexión a base de datos, limpieza de strings, etc). Esto brinda una base sólida sobre la cual desarrollar aplicaciones concretas y permite obviar los componentes más triviales y genéricos del desarrollo.

En general, los frameworks son construidos en base a lenguajes orientados a objetos. Esto permite una mejor modularización de los componentes y óptima reutilización de código. Además, en la mayoría de los casos un framework implementará uno o más patrones de diseño de software que aseguren la escalabilidad del producto. Un patrón de diseño es un set de metodologías probadas para resolver problemas comunes en el diseño de aplicaciones. Una convención, si se quiere, que facilita la comprensión de la arquitectura de la aplicación.

Hace mucho existen “frameworks” que facilitan el desarrollo de aplicaciones en diversos ambientes y lenguajes de programación. En el mundo de Java existe Struts, un ambiente muy estable y poderoso, y la iniciativa .NET de Microsoft es una especie de super-framework inspirado en Java. En general, sin embargo, la complejidad de estos ambientes ha relegado el uso de frameworks al desarrollo de aplicaciones grandes y costosas.

Los frameworks y la Web

En el mundo de las “aplicaciones web” menores, habitado por diseñadores gráficos, programadores autodidactas, bajos presupuestos y agendas apretadas, es tradición el uso de lenguajes “de scripting” o interpretados como Perl, Asp o PHP diseñados para transar la potencia de lenguajes de más bajo nivel por mayor facilidad de uso y flexibilidad. Esto permite el rápido desarrollo de aplicaciones, pero al mismo tiempo tiende a producir código de difícil mantención y poco eficiente.

El uso de frameworks en la construcción de aplicaciones pequeñas fue históricamente escaso hasta recientemente cuando, en medio de la “revolución web 2.0″, una compañía de 5 personas lanzó BaseCamp, un servicio de administración de proyectos basado en web y construído sobre Rails, un framework de desarrollo web para el poco conocido pero increíblemente versátil lenguaje “Ruby“.

Rails (más conocido como Ruby on Rails) permite crear aplicaciones web con asombrosa facilidad. Esto, porque el framework ya viene con librerías y funciones que abstraen casi toda la complejidad de trabajar con bases de datos, definir clases e instanciar objetos. Parte de esto se debe a que Ruby es natívamente orientado a objetos (a diferencia de PHP o VBScript) y diseñado para escribir el mínimo de líneas de código posible. Pero la magia de Ruby on Rails está en Rails, el framework, y en su uso inteligente de patrones de diseño conocidos.

En el ámbito del desarrollo para la web, los patrones de diseño más utilizados son aquellos que se centran en separar la presentación (páginas html, css) de la lógica o backend. Esto porque un típico equipo de desarrollo consiste en programadores por un lado y diseñadores por el otro. Separando efectívamente las tareas de cada uno mediante una arquitectura estándar comprendida por todos -un patrón de diseño- facilita enórmemente el trabajo del equipo.
De estos patrones, el más popular es MVC (Modelo Vista Controlador), muy conocido en el mundo de Java y el implementado por Ruby on Rails.

Como su nombre lo dice, MVC consiste en separar lo mejor posible las capas de Modelo (los objetos que interactuan con la base de datos y efectúan los procesos pesados o “lógica de negocios”), la Vista (la presentación final de los datos procesados al cliente, comúnmente en formato HTML) y el Controlador (la capa que se encarga de recibir el input del usuario, delegar el trabajo a los Modelos apropiados e invocar las Vistas que correspondan).

Los frameworks, entonces, suelen ser implementaciones de patrones de diseño conocidos, aderezados con funciones que asisten al desarrollador. Con la aparición de Ruby on Rails, muchas comunidades de desarrolladores -especialmente la de PHP- se han entusiasmado y estan apareciendo decenas de frameworks para ese lenguage. Los más recientes, como Solar o Cerebral Cortex, aprovechan el avanzado modelo de clases y objetos de PHP5, la última versión.

¿Necesito un Framework?

Pero un framework, a veces, puede ser más de lo que se necesita para ciertos proyectos. Siendo plataformas genéricas diseñadas para casi cualquier tipo de desarrollo, para un proyecto pequeño o urgente la cantidad de opciones y dificultad de instalación de un framework pueden ser abrumadores (la mayoría de los frameworks que he visto para PHP requieren actualizaciones de PEAR, lo que no siempre es posible en servidores compartidos). De cualquier modo, un frameworks es la forma en que un desarrollador decide solucionar sus proyectos, un ambiente de trabajo. En esencia un framework es la aplicación rigurosa de los principios básicos que hacen la diferencia entre un programa bien construído y uno malo: economía, modularización, separación de tareas. Incluso si decides no ocupar un framework existente, aplicando estos principios a tu trabajo tarde o temprano terminarás creando el tuyo propio.

Algunos recursos

En este link encontrarán una lista de Frameworks Open Source y temas relacionados que he encontrado, para PHP 4 y 5. Además recomiendo este breve tutorial que muestra una sencilla implementación del patrón MVC en PHP4 (en inglés).

10 comentarios para “El ataque de los Frameworks”

  1. Gravatarjaime Oddo Dice:

    Ismael, pasé por tu blog y tomé nota de la dirección, aprovecho de invitarte a visitar “Ojo con Humos” mi blog de poesía e ilustraciones:
    http://ojoconhumos.blogspot.com/
    Se renueva diariamente…

    Agradecere cualquier ayuda para la difusión de esta publicación.
    Mas información en: http://jaimeoddo.blogspot.com/

    Un abrazo.

    Jaime Oddo

  2. GravatarEstadoBeta » Archivo » Aprende MVC en Diciembre Dice:

    […] recursos « El ataque de los Frameworks […]

  3. GravatarEstadoBeta » Archivo » Fluxiom Dice:

    […] El backend está construido con Ruby on Rails, el ya archifamoso framework de desarollo para el lenguaje Ruby. […]

  4. GravatarEstadoBeta » Archivo » MVC en pocas palabras Dice:

    […] Jonathan Snook tiene un artículo en Digital Web que explica en pocas palabras y muy claramente en qué consisten los Patrones de Diseño en general y el patrón MVC en particular, este último muy popular recientemente debido a la cantidad de frameworks MVC que han surgido. Recomiendo esta breve lectura especialmente a los lectores frecuentes de EstadoBeta ya que pronto pienso publicar una seguidilla de artículos sobre el Framework MVC que desarrollo actualmente. […]

  5. GravatarEstadoBeta » Archivo » Rasmus Lerdorf, PHP y los frameworks Dice:

    […] Rasmus Lerdorf, creador de PHP, publicó el Lunes recién pasado una nota donde recomienda no usar frameworks de desarrollo y, en general, tender hacia un estilo procedural de programación - o sea evitar el uso de clases y objetos o “desarrollo en capas”, algo por desgracia frecuente en el mundo PHP-. Estas recomendaciones parecen contravenir la tendencia actual hacia un desarrollo más estructurado y sostenible, representado por un sinnúmero de frameworks de desarrollo y una reconsideración de los lenguajes “de scripting” como PHP, Python o Ruby en el mundo “Enterprise” (donde por lo general han primado metodologías más estrictas y estructuradas como J2EE o .NET). […]

  6. GravatarEstadoBeta » Archivo » Patrones de diseño: introducción y ejemplo Dice:

    […] Este ejemplo, que muchos podrán considerar demasiado simple, delínea los conceptos básicos de un Patrón de Diseño. En el mundo real del diseño de software estos conceptos se desarrollan en soluciones mucho más sofisticadas para resolver todo tipo de problemas. Sin embargo los principios son los mismos. Patrones complejos como el popular MVC2 utilizado para separar la lógica, los datos y la interfaz de usuario en aplicaciones web e implementado por frameworks de desarrollo como Ruby on Rails, Cake PHP o Java Struts se basan en las mismas ideas básicas. Los diseñadores de interfaces también se benefician de encapsular soluciones a problemas comunes. Elementos que pueden ser complejos como los paginadores de listas, listas de noticias, barras de navegación o menus de varios niveles puden ser resueltos en soluciones generales que pueden ser luego aplicadas por los diseñadores en diversos escenarios, algo que Yahoo! está haciendo actívamente en su Biblioteca de Patrones de Diseño de Interfaces. […]

  7. GravatarEstadoBeta » Archivo » IT Corporativo, Microsoft y el mito del soporte Dice:

    […] Hablando de blogs, la comunidad Open Source tiende a estar en sintonía con lo que está pasando en la web. Esto no sólo se refiere a las últimas tecnologías sino a modelos de negocios, políticas empresariales y metodologías para aumentar la productividad. En este último punto, la instalación de metodologías de desarrollo como el Agile Software Developing y el uso extensivo de Patrones de Diseño han sido popularizados, en la web, mayoritariamente por comunidades independientes sin ataduras corporativas. Ha sido esta comunidad quien a convertido el Desarrollo Web en un subgénero serio de la ingeniería. Esto es especialmente evidente con el surgimiento de frameworks de desarrollo especialmente orientado a la construcción de aplicaciones para la Web, entre los cuales destaca Ruby on Rails por el poder expresivo de Ruby y la inteligente aplicación de la filosofía Agile Software Developing al diseño del framework. Lo mejor de todo? En tan sólo unos años de existencia, la comunidad de desarrolladores de Rails ya ha producido más módulos y plugins de los que puedes soñar en el mundo Microsoft. Si el que buscas no existe, escríbelo tu mismo y subelo a los repositorios de RubyOnRails.org […]

  8. GravatarRafa Dice:

    Por mi experiencia, los frameworks suelen ser muy útiles, pero hay que estudiar antes los pros y sobre todo, las contras que pueda tener cada framework que pensemos implantar.

    En mi caso, desarrollé una aplicación personal: FotoMovil con phpMVC, un framework similar a java struts pero para aplicaciones en PHP. La verdad es que está muy bien el framework… pero tiene una pega que en algunos casos puede ser muy seria: no soporta PHP5!!!

    Yo desconocía esa característica, y cuando actualicé mi servidor a PHP5 vinieron las desgracias… o mejor dicho, el trabajo extra. Tuve que reescribir toda la aplicación de acuerdo con un framework propio mucho más simple y de similares características.

    Al final conseguí una aplicación mucho más rápida e igualmente flexible que con phpMVC.

    Así que mirar antes de casaros con un framework las pegas que pueda tener!!

  9. GravatarEstadoBeta » Archivo » Merb: mini framework para Ruby Dice:

    […] ¿Cansado de tanto Framework? Pues la avalancha no ha terminado. Merb es un mini- framework escrito en Ruby orientado a páginas dinámicas simples y, especialmente, subida de archivos al servidor. ¿Para qué otro Framework Ruby, se preguntarán ustedes, si ya tenemos el Todopoderosos Ruby on Rails? Merb nació como una aplicación especializada en subir archivos, algo donde Rails no brilla especialmente. La idea era usar aplicaciones Merb en conjunto con aplicaciones mayores escritas en Rails. Merb, que es la combinación de un framework Ruby, el servidor Web Mongrel y el motor de templates ERB (Mongrel + ERB = “Mongrel”), toma varias convenciones de Rails (controladores, vistas ERB) y al parecer es excelente para hacer aplicaciones dinámicas simples donde no es necesario el volumen y versatilidad de Rails (por ejemplo, aplicaciones sin bases de datos o utilidades de línea de comandos para facilitar taréas en la oficina). Aunque aún está en su versión inicial, es un proyecto para seguirle la pista, especialmente porque ofrece una alternativa más estructurada a PHP. […]

  10. GravatarIvan Dice:

    este articulo me parecioo interesante y lo pienso utilizar algunas cosas en un proyecto. por dicha razon necesito tu
    apellido , si no es molestia.

Deja un comentario

XHTML: puedes usar estas etiquetas: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <code> <em> <i> <strike> <strong>