Introducción
Desde el iniciode la programación, todo desarrollador ha buscado la
forma más eficaz y rápida para obtener un buen producto.
¿Has escuchado hablar de Turbo Pascal o Turbo C++? ¿Los utilizaste
alguna vez?
Posteriormente con el avance tecnológico las herramientas se
incrementaron y con ello la oportunidad de mejorar las aplicaciones y
servicios web.
En esta unidad revisaremos algunos de los frameworks más utilizados en
el mercado, con lo que podrás tener una idea general de lo que puedes
hacer con cada uno de ellos, así como identificar la compatibilidad con los
lenguajes de programación vistos en la unidad anterior.
3.
Frameworks
El FrameWorks esun término que proviene del inglés y significa «marco de
trabajo» o «estructura». En el ámbito de la programación, un Frameworks es un
conjunto de herramientas y librerías que se utilizan para desarrollar aplicaciones
más fácilmente y de manera más eficiente.
Un framework no es ningún software ni
herramienta que se ejecuta y que nos ofrece una
interfaz gráfica desde la que trabajar, sino que es
un conjunto de archivos y directorios que facilitan
la creación de aplicaciones, ya que incorporan
funcionalidades ya desarrolladas y probadas,
implementadas en un determinado lenguaje de
programación.
4.
En la siguienteimagen podemos ver
cómo sería la estructura de
directorios correspondiente a un
proyecto desarrollado con Symfony 2.
El objetivo principal de todo framework es facilitar las cosas a la hora de
desarrollar una aplicación, haciendo que nos centremos en el verdadero
problema y nos olvidemos de implementar funcionalidades que son de uso
común como puede ser el registro de un usuario, establecer conexión con la
base de datos, manejo de sesiones de usuario o el almacenamiento en base de
datos de contenido cacheado.
5.
¿Para qué sirveel framework?
Mejora la eficiencia: Estandariza los procesos y las metodologías, lo
que permite a los equipos trabajar de manera más eficiente y
productiva.
Acelera el tiempo de desarrollo: Al tener una estructura clara y
establecida, el desarrollo de proyectos se acelera, lo que permite
alcanzar los objetivos más rápidamente.
Facilita la colaboración: Permite a los equipos trabajar juntos de
manera más efectiva, lo que mejora la colaboración y la comunicación.
Mejora la calidad: Al tener un marco de trabajo claro y estandarizado,
los resultados finales son más coherentes y de mejor calidad.
6.
Aumenta laflexibilidad: Permite a los equipos adaptarse a cambios y
ajustarse a las necesidades del proyecto de manera más eficiente.
El framework es una herramienta
valiosa para los equipos y
organizaciones que buscan
mejorar su eficiencia, acelerar el
tiempo de desarrollo, facilitar la
colaboración, mejorar la calidad y
aumentar la flexibilidad en el
desarrollo de proyectos.
7.
Características de losframeworks
Algunos de los elementos y características comunes que incluyen son:
Enrutamiento: suelen proporcionar un sistema de enrutamiento que
facilita la gestión de las URL y las rutas de las páginas dentro de una
aplicación.
Plantillas: permiten crear un sitio web de manera más sencilla mediante
el uso de plantillas predefinidas o motores de plantillas que ayudan a
generar el código HTML de manera dinámica.
Controladores: a menudo utilizan el patrón de diseño MVC (modelo-
vista-controlador) o una variante de él, lo que significa que facilitan la
separación de la lógica de negocio (controlador), de la presentación
(vista) y los datos (modelo).
8.
Manejo desolicitudes y respuestas: ofrecen funciones para gestionar
solicitudes HTTP entrantes y generar respuestas HTTP, lo que simplifica
la interacción con el cliente.
Bases de datos: muchos entornos integran herramientas y
abstracciones para interactuar con bases de datos, lo que facilita el
almacenamiento y recuperación de los mismos.
Seguridad: suelen incluir mecanismos de seguridad incorporados para
proteger contra amenazas tales como los ataques de inyección SQL o
ataques de scripting entre sitios (XSS).
Sesiones y autenticación: proporcionan funciones para gestionar las
sesiones de usuario y su autenticación, lo que facilita la creación de
sistemas de inicio de sesión y control de acceso.).
9.
Middleware: permitenla inclusión de componentes de esta clase que
pueden realizar tareas adicionales como la compresión de respuestas,
el registro de solicitudes o la autenticación en el flujo de la aplicación.
API y servicios web: facilitan la creación y consumo de estas interfaces y
servicios, lo que permite la integración con otras aplicaciones y
servicios.
A continuación, te mostraré las opciones más destacadas hoy en día
debido a su utilidad.
1. React
2. Angular
3. Vue.js
4. Django
5. Flask
6. Ruby on Rails (Rails)
7. Laravel
8. Symfony
9. Spring Framework
10.Express.js
11. ASP.NET Core
12.Gin
10.
Ventajas de utilizarun Framework
El uso de un Frameworks a la hora de realizar un proyecto ofrece importantes
ventajas, ventajas ya no sólo al facilitarnos la tarea de la creación de la
aplicación, sino otras como en el mantenimiento del código, realizar
ampliaciones, etc.
a) Uso de patrones de diseño
Una de las principales ventajas es el uso de
patrones de diseño para el desarrollo de la
aplicación. El patrón más utilizado es el conocido
como Modelo – Vista – Controlador (MVC), un
modelo que divide el desarrollo en tres capas:
Modelo: Representa los datos de la aplicación.
Vista: Representa la capa presentación, como
representamos los datos a los usuarios.
Controlador: Es el encargado de procesar las
peticiones y controla el flujo de ejecución del
sistema
11.
El modelo MVCpuede ser implementado sin la necesidad de utilizar un
framework, pero la diferencia radica en que el framework nos obliga a
utilizarlo, creando de esta forma un código mucho más robusto.
Además, el uso de este tipo de utilidades nos ayuda a evitar el conocido como
“código spaghetti”, que consiste en meter funcionalidades en capas que no
corresponde, lo que con el paso de tiempo hará que nuestro código sea un
verdadero caos, hasta para nosotros mismos.
b) Estructura predefinida de la aplicación
El programador no necesita plantearse la estructura global de la aplicación, ya
que esta es proporcionada por el propio framework. Esto tiene la ventaja de
que, pasado un tiempo, si tenemos que tocar algo en la aplicación, sabremos
donde encontrar el archivo en cuestión de forma rápida.
12.
c) Código altamentetesteado
Todo el código que forma parte del framework está altamente probado, lo que
garantiza el buen funcionamiento de este. Nosotros podríamos desarrollar esas
mismas funcionalidades, pero nunca podremos garantizar ese nivel de testeo
que ofrecen los frameworks.
d) Comunidad de usuarios detrás de cada framework
La gran mayoría de los frameworks tienen detrás a una amplia comunidad de
usuarios, de los cuales muchos ayudan en su desarrollo o creando extensiones
con funcionalidades extra que podremos utilizar de forma sencilla sin tener que
desarrollarlas por nuestra cuenta.
e) Trabajo en equipo
El uso de frameworks facilita el trabajo en equipo, ya que, si todos conocen el
framework utilizado, conocerán la estructura de directorios y sabrán dónde
tienen que ir para realizar una determinada acción.
13.
Ventajas del framework
Productividad: El uso de un framework reduce el tiempo y los esfuerzos
requeridos para desarrollar una aplicación, lo que significa que los
desarrolladores pueden ser más productivos y eficientes.
Reutilización de código: El framework proporciona un conjunto de
componentes y herramientas que se pueden reutilizar en diferentes
proyectos, lo que reduce la cantidad de tiempo y esfuerzo necesarios
para desarrollar una aplicación.
Mantenibilidad: Al utilizar patrones de diseño y estructuras comunes, los
frameworks facilitan la mantenibilidad y la escalabilidad de las
aplicaciones.
Seguridad: Muchos frameworks incluyen medidas de seguridad
incorporadas para proteger las aplicaciones contra posibles amenazas,
como ataques de inyección SQL o XSS.
14.
Documentación: Lamayoría de los frameworks cuentan con una
documentación detallada y actualizada que permite a los desarrolladores
entender cómo funciona el framework y cómo utilizarlo.
Comunidad: Al utilizar un framework popular, los desarrolladores tienen
acceso a una amplia comunidad de desarrolladores y recursos en línea
que pueden ayudar con la resolución de problemas y mejorar la
aplicación.
Estándar de desarrollo: Un framework establece un estándar para el
desarrollo de software, lo que significa que los desarrolladores pueden
seguir una guía clara y unificada para crear aplicaciones.
Compatibilidad: La mayoría de los frameworks están diseñados para
trabajar con diferentes sistemas operativos y navegadores, lo que
significa que la aplicación puede ser utilizada por una amplia gama de
usuarios.
15.
Desventajas de utilizarun Framework
El uso de los framework también tiene sus limitaciones, por tanto, es bueno
conocerlas antes de embarcarse en un proyecto. Las desventajas principales son:
a) Tiempo de aprendizaje
Te llevará algún tiempo conocer cómo funcionan los frameworks y, pero la idea es
que una vez que te habitúes a ellos los siguientes proyectos tendrán una base
más definida y su puesta en marcha será más rápida.
b) Exceso de líneas de código
Muchos autores y expertos en el desarrollo de aplicaciones apuntan que los
framework utilizan muchas más líneas de código para realizar ciertas acciones ya
que suelen incluir “código basura” que nos podríamos haber ahorrado, aunque
esto no es compartido por todo el mundo.
16.
c) Limitaciones
Cuando usasun framework hay partes de él que no puedes modificar, por ello
hay que elegir uno que se adapte a lo que buscas. Además, migrar a otro
framework es complicado sin tener que reescribir todo el código.
d) Código público
Al estar disponible el framework para todo el mundo, un hacker puede estudiar
el código y encontrar debilidades, aunque es algo difícil, porque tendría que
saber qué framework estás usando. Además, algunos como Symfony son
testados continuamente para reducir al máximo los bugs.
17.
Desventajas:
Posibilidad degeneración de código innecesario para nuestra
aplicación, ya que los Frameworks tienden a generalizar la funcionalidad
de los componentes, provocando una demanda de recursos
computacionales innecesaria.
Aprendizaje costoso. El tiempo que se gana en dejar de programar
puede perderse en aprender el Frameworks si no se va a utilizar para
otros proyectos.
Alta dependencia del código fuente de la aplicación con respecto al
Framework. Además, cada Frameworks tiene su propia convención de
código, por lo que no resulta sencillo cambiar de Frameworks.
Si una librería falla, la depuración es más complicada al no conocer el
programador el código. Por eso es importante utilizar Frameworks.
18.
El Framework esuna herramienta
valiosa para los desarrolladores de
software, ya que les permite trabajar
de manera más eficiente y rápida al
proporcionar una estructura sólida y
soluciones a problemas comunes.
Al utilizar un Framework, los
desarrolladores pueden centrarse
en las funcionalidades específicas
de su aplicación y entregar
productos de calidad a sus clientes
en un plazo de tiempo más corto.
19.
¿Cómo elegir elframework a utilizar?
Si realizamos una búsqueda en internet nos aparecerá un gran número de
frameworks para utilizar, pero ¿por cuál decantarnos? Grosso modo
deberemos tener en cuenta el tipo de aplicación que vamos a desarrollar,
así como el lenguaje de programación que utilizaremos para ello. Otras
cosas que nos tenemos que plantear son:
Conocimientos del equipo. Es de suma importancia evaluar el lenguaje
con el que se siente cómodo el equipo encargado de desarrollar la
aplicación. Si los encargados de su desarrollo controlan PHP, lo más
aconsejable es decantarse por uno que haga uso de este tipo de lenguaje.
Soporte. Un punto a tener en cuenta para la elección de un framework es
ver la comunidad que hay detrás de él. Es recomendable investigar un poco
para saber si están trabajando en nuevas versiones o bien se trata de un
proyecto abandonado.
20.
Existencia deproyectos desarrollados con él. No caigamos en la
tentación de actuar como conejillos de indias y decantarnos por aquel
framework que sepamos que ha sido utilizado para la creación de algún
proyecto de éxito.
Curva de aprendizaje. Como hemos explicado, este punto es el que más
echa para atrás a las personas a la hora de utilizar un framework, de ahí
que sea muy recomendable decantarse por aquel que tenga una curva de
aprendizaje más rápida.
Soporte para el MVC. El uso de patrones de diseño es básico en una
aplicación bien estructurada, pero el uso del patrón MVC es imprescindible
para la mayoría de los proyectos. Como nota, algunos frameworks ofrecen
MVC como una alternativa, no obligando a su uso. Esto puede ser útil, por
ejemplo si quieres implementar tareas internas automatizadas, como
emailings, tareas de mantenimiento de la BBDD, etc.
21.
Framework que estédesarrollado tomando la seguridad como punto de
partida. En el mercado nos podemos encontrar framework con buenas
características pero que dejan de lado la seguridad.
22.
Un Frameworks essimilar a un API (Aplication Program Interface), aunque un
Frameworks incluye un API, librerías, un compilador y otros programas para
el desarrollo de software. Entre los Frameworks más populares tenemos
ActiveX y .NET para Windows, Cocoa para Mac OS X y FrameWork
Applications para Android.
Hay varias características que diferencia un FrameWork y una librería o
aplicación.
El FrameWork tiene un comportamiento predeterminado.
Un FrameWork puede ser ampliado por el usuario proporcionando una
funcionalidad específica.
El código del FrameWork no puede ser modificado
A diferencia de una biblioteca o aplicaciones de usuarios el flujo del
programa no es controlado por la persona sino por el FrameWork.
23.
Usar o noFramework
Esto dependerá de varios factores tales como:
Nivel de conocimientos del desarrollador.
Grado de complejidad de la aplicación a desarrollar.
Necesidades de control sobre el proceso de desarrollo
Finalmente decir que es una herramienta de la metodología ágil que permite la
reusabilidad del código e incrementa la productividad permitiendo al
programador emplear menos tiempo en la escritura de código de bajo nivel, sin
duda son útiles que si se usan debidamente y exprime su uso teniendo buen
dominio del que se seleccione será de gran ayuda en el desarrollo de
software.