January 13th, 2009 Category: Programacion
27 Comments »

frameworks para las web

Es muy interesante ver que en la actualidad la mayoría de las empresas serias de desarrollo web se están volcando al uso de framework en sus desarrollos. Esto tiene una ventajas para el empleador, el empleado, y el cliente.

El empleado esta aprendiendo a desarrollar con un framework y no solo un framework sino una estructura de trabajo la cual le sirve para agregar en su currículum, el empleador consigue ahorrarse tiempo en desarrollos y en controles, y el cliente obtiene en menor tiempo y con una mejor calidad sus productos.

La explicacion es muy simple, los frameworks web actuales no son desarrollados por un equipo reducido de personas, sino que están continuamente creciendo gracias al apoyo de las comunidades virtuales.

Estos Frameworks, generalmente son open source, y están desarrollados y apoyado por grandes corporaciones, por ejemplo el caso de Symfony que tiene como Padrino a Yahoo,  que  utiliza este framework en la mayoría de sus desarrollos con PHP, como es el caso de Delicius, Yahoo Answerr y Yahoo Bookmarks. Zend Framework es apoyado por la creciente Zend Company que son los creadores del lenguaje PHP.

Estos dos son los grandes frameworks de PHP, pero hay muchos mas, muchisimos mas. La elección de cual les conviene mas, tiene que ser evaluada por la empresa, teniendo en cuenta quien le da mas o mejor de estos frameworks.

El caso de Akelos es bastante interesante, ya que su idea es construir aplicaciones en PHP al estilo Ruby On Rails, este ultimo también un gran framework y muy popular debido a la facilidad de uso y a su código bastante simple.

En la balanza aparecen muchos factores, y cada factor es importante. Yo elijo Zend Framework porque me da una flexibilidad sin atarme a ningun mecanismo. Puedo desarrollar si quiero sin implementar MVC, o incluir Zend Framework dentro de WordPress para manejar los plugins, como es el caso de este blog.

Lo mas importante, es que una empresa no tiene que preocuparse como hacer una librería para la conexion a la base de datos, o para crear a un web service, o como manejar templates dentro de su sistema, como validar formularios, etc. Y no tiene que preocuparse no porque no lo tenga que hacer, sino porque estos frameworks le brindan una solución, les dice como crear formularios, validarlos tanto del lado del cliente como del servidor, manejar distintos templates, manejar base de datos, etc, etc,etc. Y no solo soluciones del tipo “necesito conectarme a una base de la mejor manera posible”, es lo que no simplifica un framework, sino que nos brinda todo una forma de trabajo como es la division por capas MVC (Model View Controller), sino una estructura de directorios prolija, y clara. Sobre todo que hace fácil y organizable cualquier modulo o aplicacion.Ademas como el caso de Zend Framework, nos da una recomendacion de como escribir nuestro codigo, y trabajar en grupo.

Otro de los puntos a favor de un framework, es que es gratis. La empresa no tiene que poner un centavo y obtiene cientos o miles de lineas de código para que use sin ningún limite sin nada a cambio.

Recuerdo mucho tiempo haber rediseñado clases para la conexion a la abase de datos, o generar capas de abstracción para hacer ciertas funcionalidades, como el manejo de formularios. Y todo ese tiempo perdido si bien tengo que reconocer que aprendí bastante con la prueba y error (hubieron muchos errores lamentablemente), mis desarrollos hubiesen sido mejores y en menos tiempo aprovechando estos recursos.

Como dije en un post anterior de este blog, el costo de aprendizaje es mínimo, ya que no se tarda lo mismo generando código de cero, que aprender a usar un código existente que cumple lo que nosotros necesitamos.

Sobre el lenguaje de programacion a elegir para los desarrollos web, también depende de muchos factores, uno de los puntos a tener en cuenta, es  la cantidad de programadores que hay en el mercado, y lo que cobran estos programadores. Viendo estos factores PHP parece la mejor alternativa, pero Python con Django esta pisando fuerte y mas solido de lo que hizo Ruby On Rails hasta ahora.

Links Interesantes

Akelos

Zend Framework

Symfony

CakePHP

Ruby On Rails

Django

Codeigniter


Invitame una Cerverza


Comentar


27 Responses

Daniel 2009-01-13 12:51:13
Hola Pablo, una duda que tengo con los frameworks, especialmente con zend framework que es el que estoy aprendiendo, cuando subimos el sitio al servidor tenemos que subir toda la libreria para cada aplicacion, o hay alguna solucion mas practica para esto. Saludos y gracias por todo.

Pablo Morales 2009-01-13 13:02:30
Hola Daniel para tu problema hay varias soluciones.

En cualquier linux o derivado vos tenes un comando que se llama symlink.

Si usas esto podes tener una unica carpeta con Zend Framework, y para el resto de lso desarrollos symlinks a esa carpeta

$ ln -s ../../Zend Zend

Entradas en las blogosferas.98, Carrero 2009-01-16 05:56:45
[...] Frameworks, una opcion en el desarrollo web. vía: Pablo Morales [...]

juca 2009-01-23 21:30:52
que tal pablo queria saber si el framework permite o no el uso de ajax
Y si conoces algun libro o documentacion para iniciar con el uso del framework de zend?

Pablo Morales 2009-01-24 01:04:07
Hola Juca.

Ajax corre del lado del cliente, tranquilamente podrias usar javascripts del lado del cliente en un sistema hecho con Zend Framework.

Podes aplicar cualquier framework de javascripts, aunque tenes un componente Zend_Dojo, para la integracion con ZF y Dojo, y Zend_XJquery, para integrarlo con Jquery :)

Saludos.

Gustavo 2009-02-03 22:00:24
Comparto tu punto de vista, estuve analizando varios frameworks y me decanté por ZF. He tratado de implementarlo también en mi laburo, pero creo que (lamentablemente) tengo personas que deciden sobre las implementaciones y no tienen la más mínima idea de lo que es un framework ("el que sabe, sabe y el que no es jefe"), al punto de oir frases como "no podemos permitirnos instalar (sic) el framework porque es mucho problema para las aplicaciones existentes" o "los que programan con frameworks no me merecen mucho respeto, preferimos hacerlo todo nosotros" y otras animaladas.
Saludos !

Pablo Morales 2009-02-03 23:15:22
Hola Gustavo, entiendo de lo que hablas, por suerte en mis dos ultimos trabajos quise implementar ZF y no tuvieron ningun problema. En la ultima Easytech, tenian un framework propio muy piola, pero logre convecerlos.

Pero es dificl, y obviamente te vas a topar con gente que diga cosas como Los que programan con frameworks no merecen mucho respeto. Pero bueno trata de aprenderlo bien por tu cuenta, desarrollar lo suficiente para que el dia de maniana cuando pegues un trabajo donde si aprecien estos beneficios estes preparado ;)

Gustavo 2009-02-19 11:11:47
Otra perla más del "jefe de área":
yo: una estructura MVC facilita el mantenimiento de una aplicación web.
"jefe de área": no sabemos, hay muchos libros que dicen (sic) que el modelo MVC no sirve para web

Pablo Morales 2009-02-23 22:58:18
Sabes que muchos opinan asi, pero es mejor estas tres capas, que una capa oblea, todas las capas juntas :P

Agustin Viñao 2009-03-14 15:56:24
Hola, no se si te ha tocado trabajar con RoR, estuve desarrollando para algunos proyectos con ZF, me parecio el mejorcito para PHP, pero decir que es mejor que RoR, depende del trabajo que hallas realizado en este ultimo y te puedo decir, ahora que estoy trabajando con RoR que es unico, no permite duplicidad, las cosas se hacen muy rapido y tiene una estabilidad y facilidad que me hicieron salir de PHP despues de mas de 7 años de usarlo.

Creo que la comparacion es errada, mas cuand se plantean sobre lenguajes tan diferentes como PHP y Ruby.

Es llamativo que quienes se pasan a Ruby desde PHP, no vuelven.

La unica ventaja que veo hoy de PHP es la cantidad de hosting que hay para usarlo. En el resto de las cosas, no le veo ventaja en comparacion.

Pablo Morales 2009-03-14 18:21:33
Hola Agustin. Tanto Ruby On Rails como Akelos estan hechos para desarrollar aplicaciones rapidas al estilo web 2.0, nose porque te asombra la comparacion en ningun momento dije que era mejor o peor, sino que era del estilo. RoR no es un lengauje es un Framework, no tuve la suerte de desarrollar nada en Ruby.

Saludos.

Agustin Viñao 2009-03-15 10:45:30
Pablo, entiendo tu punto de vista, pero algo que generalmente confunden es la parte de "... estan hechos para desarrollar aplicaciones rapidas al estilo web 2.0 ...", eso no es asi, lo que tienen de "desarrollo rapido" es que se hace mucho incapie en DRY (Don't repeat yourself) cuestion que resume mucho la codificacion y que el lenguaje Ruby permite simplificar de forma muy sencilla cosas que en otros lenguajes lleva mas lineas de codigo.
Sin ir mas lejos, webs como paginas amarillas de UK o Twitter estan hechas sobre RoR y no creo que se les pueda llamar aplicaciones sencillas que se busco un desarrollo rapido.
Por ultimo, el gran problema de esto es no terminar como evangelizadores de los lenguajes o frameworks. Es muy dificil la discusion sin caer en fanatismos.

Pablo Morales 2009-03-15 12:03:04
Twitter me parece una aplicacion sencilla. Despues de todo es un micro bloging. Sin embargo debe estar compuestas por varios subsistemas.

Actualmente estoy desarrollando con Flex + Action Scripts + PureMVC, pero apenas termine voy a meterme un poco con Ruby, para probar lo que me decis.

En algun momento me puse a leer un poco, recuerdo que me costo mucho instalar todo lo necesario en mi debian, y en el centos, de mi servidor. Pero voy a seguir probando.

Saludos, y gracias por los comentarios

Gustavo 2009-03-26 12:11:28
Agustín, muy a tu pesar, en el blog de twitter definen a RoR como "best framework for a rapidly evolving web application". Es más, hicieron un replanteo de RoR por problemas de escabilidad (http://blog.twitter.com/2007/06/under-hood-at-twitter.html), invirtiendo mucho en trabajos de ingenieria detrás para mantener el uso de RoR (http://blog.twitter.com/2009/01/building-on-open-source.html). Creo que los principales frameworks de los lenguajes de script (php, ruby, groovy, python) son un medio, y no un fin, dependiendo siempre del proyecto y los requerimientos, y las capacidades de análisis de los programadores.

Agustin Viñao 2009-03-26 13:19:13
Gustavo, si lees bien el caso de twitter, hablaron que desde un principio no pudieron anticipar el crecimiento que tuvieron, y que se vieron sobrepasados y tuvieron que innovar en rails para solucionarlos. Pero el tema de twitter fue tomado por mucha gente muy mal para desprestigiar a RoR. Tanto que salio mismo twitter a decir que no cambiaban RoR.
Como dije antes, nadie viene a evangelizar al respecto de que lenguajes usar.
Creo que para hablar de comparaciones la unica forma util es haber trabajado con ellos. Y como marque antes, algo que me llama la atencion es que quienes empezaron a usar RoR no quieren salir del framework.
Los temas de escalabilidad, o de grandes desarrollos que tantos se discuten me parece que no son para los casos generales. Una web que se desarrolla para un cliente como los que se manejan en desarrollos chicos, uno de mis puntos de eleccion es que sea en un lenguaje que me de la mayor facilidad de mantener los codigos fuentes, y convengamos que PHP sin un buen framework permite ser muy desprolijo, cosa que con ROR no me pasa.

Pero como dije, para hablar de los frameworks o los lenguajes hay que haber trabajado en ellos. Y mucha gente habla de RoR sin haber escrito una linea en ese framework.

Pablo Morales 2009-03-26 13:37:41
Creo que cualquier persona que empieza con PHP y toca otro lenguaje automaticamente se encanta. Porque realmente php es muy limitado en muchos aspectos. Pero siempre se dijo que RoR tenia problemas de escalabilidad.

Pero como vos decis, no hay que quedarse con ningun lenguaje o framework, hay que tratar de buscar la mejor herramienta para aumentar la productividad, el rendimiento, y porque no la diversion.

Gustavo 2009-03-26 14:27:14
sin llegar a hacer un flame aqui: "convengamos que PHP sin un buen framework permite ser muy desprolijo, cosa que con ROR no me pasa.": RoR es un framework, no un lenguaje, por lo que no puedes compararlo con PHP. En todo caso, lo compararia con CakePHP.
Y si he programado en RoR, y probe otros como Django o Struts 2.
En claro, RoR me parece un gran framework, que hizo un gran aporte a lo que ya existia (sino hay que mirar hacia Grails de Java), solo que hay que reconocer las ventajas y desventajas de cada uno para saber elegir.

Agustin Viñao 2009-03-26 14:30:57
Perdon gustavo, tenes razon, cambi el RoR por Ruby.

Ruby es orientado a objetos totalmente, PHP permite la orientacion a objetos que es distinto.

Pero como dije, es cuestion de lo que uno busca como programador, a mi hoy en dia me sirve mas que halla menos programadores ruby/ror porque eso indica que tengo mas trabajo.

Gustavo 2009-03-26 14:36:06
Estamos de acuerdo...:)

Hernandez 2009-03-30 13:36:28
Muy buenos dias Pablo, resulto ser muy interesante su espacio y le felicito :), le agradeceria y a la vez seria muy
grato si podriamos realizar intercambio de enlaces. Nuestra pagina para que ustedes nos enlacen es http://www.easycreate.es/ titulo: Programa de gestion inmobiliaria
y nuestra web para intercambios es http://www.easycreate.es/links.asp
Espero su respuesta, muchas gracias

Kirochi 2009-08-14 03:52:38
oe muy bueno el blog, estoy haciendo mi tesis en ZF soy principiante en esto de los Frameworks, kirochi@hotmail.com es mi correo, si quiere me agregas serias de gran ayuda para ciertas consultas

Francizco 2009-12-06 02:39:10
Hola Pablo, me entretuve mucho leyendo tu blog, aunque hace poco tiempo he ingresado al mundo de los frameworks y he empezado con Codeigniter y estoy muy satisfecho con los resultados , pero luego en mi curva de aprendizaje pienso revisar Zend y extender mis conocimientos.
Actualmente estoy definiendo mi tema de tesis y la estoy pensando hacer utilizando un framework, que mas posibles sea codeigniter porque ya lo he estado usando.
Así que si tuvieras unas recomendaciones para aplicar a un desarrollo Web para una sustentación de tesis utilizando un framework o alguma información te lo agradecería si la compartes...
Y felicidades por el blog

Pablo Morales 2009-12-06 22:08:47
Hola Francisco mi experincia con codeigniter no es la misma que ZF,

Con CodeIgniter trabaje poco , algunos parches de algun sistema. En uno de los proyectos que estoy trabajando ahora tiene CI y esta bastante bien. No se que info necesitas pero cualquier cosa que necesites podes preguntar

Saludos.

Francizco 2009-12-10 19:54:47
Gracias Pablo por contestarme, como te decía, estoy recopilando información sobre qué aplicativo se podría desarrollar utilizando un Framework de programación cualesquiera, no sobre el uso de Codeigniter sino sobre el planteamiento de una aplicación desarrollada íntegramente con un Framework y que sea factible de presentar como proyecto de Tesis. Ahí te dejo mi correo fran1824@hotmail.com para cualquier ayuda que me puedas brindar.

Pablo Morales 2009-12-11 10:12:01
Con Zend Framework podes hacer cualquier sistema web.

Cualquier cosa.


Lo mejor es que podes hacer algo super simple como un sistema mucho mas complejo.

Podes usarlo dentro de una estructura MVC, como en un .php sin usar MVC

Zend Framework – INICIO « Oscar Viana's Weblog 2010-05-10 13:46:39
[...] http://blog.pablo-morales.com/2009/01/frameworks-una-opcion-en-el-desarrollo-web/ [...]

Windows7 Update 2010-08-22 06:05:57
thank you for posting this one up..it is very interesting