Según Gutierrez (2016), el concepto de Framework se emplea en muchos ámbitos del desarrollo de sistemas software, no solo en el ámbito de aplicaciones Web. Pueden encontrarse Framework para el desarrollo de aplicaciones médicas, de visión por computador, para el desarrollo de juegos, y para muchos otros ámbitos. En general, el término Framework, se refiere a una estructura software compuesta de componentes personalizables e intercambiables para el desarrollo de una aplicación. En otras palabras, un Framework se puede considerar como una aplicación genérica incompleta y configurable a la que pueden añadírsele las últimas piezas para construir una aplicación concreta.
Un Framework tiene básicamente los siguientes objetivos: acelerar el proceso de desarrollo, reutilizar código ya existente y promover buenas prácticas de desarrollo, como el uso de patrones, la documentación del código, entre otros. Un Framework Web, por tanto, puede definirse como un conjunto de componentes (por ejemplo clases en java y descriptores y archivos de configuración en XML) que componen un diseño reutilizable que facilita y agiliza el desarrollo de sistemas Web.
La mayoría de los Framework web tienen como filosofía hacer la vida del programador web mucho más fácil y sencilla a la hora de implementar una aplicación o página web, por eso es muy común actualmente que la mayoría de desarrolladores utilicen rameworks para sus actividades diarias de desarrollo pues, además de ser una tendencia, también ayuda en la reducción de tiempo que se toma a la hora de llevar a cabo un proyecto.
Además de estas ya nombradas ventajas se puede llegar a proporcionar sitios web más dinámicos e interactivos con el usuario final, quien en realidad va a usar el sitio con más frecuencia
Existen varios tipos de framework Web: orientados a la interfaz de usuario, a la publicación de documentos, al control de eventos y algunos que incluyen varios elementos como Tapestry. La mayoría de frameworks Web se encargan de ofrecer una capa de controladores de acuerdo con el patrón MVC o con el modelo 2 de
37
Servlets y JSP, ofreciendo mecanismos para facilitar la integración con otras herramientas para la implementación de las capas de negocio y presentación.
3.6.1. Django
Framework web de Python de alto nivel que es usado por los desarrolladores web que desean un amplio modelo de escalabilidad y una manera más rápida y ágil de programar aplicativos web. Es construido por desarrolladores con amplia experiencia y al ser un Framework se encarga de la mayoría de las tareas que pueden llegar a ser un poco molestas tales como hacer consultas SQL, y demás procesos de fondo que algunos desarrolladores web prefieren que sean apoyados directamente por un Framework.
Además de esto, Django es un Framework muy veloz, pues puede procesar solicitudes mucho más rápido que algunos de sus contendores haciendo el trabajo mucho más fácil. Una de sus características a destacar es que es Open Source, lo que trae una ventaja y es que hay una comunidad detrás de él construyéndolo y mejorándolo constantemente.
Puede notarse que la autenticación de usuarios Django la crea por sí mismo, incorporando un gran modelo de seguridad al separar en inicio de sesión de administrador y de clientes, eso al ser una ventaja también sirve para optimizar tiempos de implementación, pues los desarrolladores web tardan menos tiempo en crear módulos con Django ya que este Framework trae librerías que sirven para la mayoría de cosas que se necesitan en una página web.
Django trabaja totalmente integrado con Python. Si se desea tener un óptimo desarrollo puede usarse en distribuciones Linux para mejorar su uso aunque trabaja muy bien en plataformas Windows, es de fácil instalación y de fácil manejo, quizás una de las mayores ventajas que tiene Django en comparación con un desarrollo limpio como PHP, es que en Django los modelos de bases de datos, las consultas, las inserciones en las tablas o las modificaciones de las mismas se hacen de una manera mucho más sencilla y rápida que en un desarrollo manual, esto otorga mucha facilidad a la hora de desarrollar algún proyecto web que tenga un motor de base de datos y que constantemente se esté almacenando o haciendo peticiones a la misma(Django, 2016).
38
class Vehiculo(models.Model):
nombre = models.CharField(max_length=15,help_text="Este campo es el nombre del vehiculo que el usario le puso")
placa = models.CharField(max_length=6,help_text="Placa del vehiculo") TIPO = (
('m', 'Moto'), ('c', 'Carro'), )
tipo = models.CharField(max_length=1, choices=TIPO) hora = models.TimeField(null=True, blank=True) usuario = models.ForeignKey(Usuario)
Aquí se puede observar la manera como se define una clase creando un modelo de datos, puede notarse que en los campos “nombre” y “placa” se le restringe el número de caracteres y se le agrega un texto de ayuda, en el campo “tipo” el administrador podrá elegir entre las opciones Moto y Carro definidas anteriormente, el campo “hora” se define como un tipo de dato de tiempo y se indica que ese campo puede llegar a estar vacío y por lo tanto no es obligatorio, y al final la respectiva relación con la tabla Usuario
3.6.2. Django Push Notification
Es una aplicación (Plugin) para Django, que permite enviar desde un Web Service previamente configurado notificaciones de inserción a los dispositivos móviles. Estas notificaciones se envían mediante estos tres modelos CGM, APN y WNS. Los modelos comparten ciertos atributos iguales como:
Name (opcional): Un nombre para el dispositivo.
Active (por defecto es true): Un valor booleano que determina si el dispositivo notificaciones se enviarán.
User (opcional): Una clave externa a auth.user, si desea vincular el dispositivo a un usuario específico.
Device id (opcional): Un UUID para el dispositivo obtenido de Android / iOS / API de Windows, si lo desea para identificar de manera única.
Registration id (requerido): El ID de registro GCM o el token de APN para el dispositivo.
Además de estas opciones ya mencionadas, también implementa un panel de administración que puede configurarse para enviar notificaciones individualmente o empaquetadas a varios usuarios al tiempo, esto hace que la aplicación sea
39
bastante poderosa y de una fuerte aplicación a la hora de integrar una aplicación móvil con una aplicación web desarrollada, en este caso en Django.
GCM1 le permite al servidor donde se encuentra la aplicación web enviar un
mensaje a varios dispositivos móviles donde se encuentre instalada la respectiva aplicación móvil. Basado en el modelo de publicación / suscripción, la mensajería es compatible con las suscripciones ilimitadas por aplicación. Los desarrolladores de la aplicación web pueden elegir cualquier nombre que coincida con la expresión regular, "/topics/[a-zA-Z0-9-_.~%]+" (Leclanche, 2016).
Nota: gcm_send_bulk_message esto debe ser utilizado al enviar mensajes a los clientes que tienen activo el servicio de las notificaciones, y establecer el primer parámetro a un valor distinto de Ninguno se traducirá en un error 400 de HTTP. Además de esto Django Push Notification cuenta el soporte y la integración a Django 3.4 y 3.5 haciendo así más sencillo el desarrollo de las diferentes aplicaciones web integradas con las aplicaciones móviles para enviar notificaciones a los usuarios que tengan activado este servicio o a los que por defecto se les envía notificaciones del sistema.