‫Instructor: Hasta este
‫momento, acabamos de escribir nuestro código sin pensar
‫mucho en la arquitectura de nuestra aplicación.
‫No era realmente importante hasta ahora, pero
‫ahora que nuestra aplicación realmente está comenzando a crecer, debemos
‫comenzar a preocuparnos
‫por la forma en que diseñamos o la arquitectura de código.
‫Y esta conferencia será solo una breve introducción a
‫la arquitectura de back-end.
‫Comenzando con la arquitectura MVC.
‫Entonces, en este
‫proyecto, usaremos una arquitectura ampliamente
‫utilizada y conocida llamada modelo, vista,
‫controlador o MVC para abreviar.
‫Y hay
‫diferentes formas de implementar la arquitectura MVC,
‫algunas más complejas que otras,
‫pero las vamos a
‫implementar de una manera muy sencilla aquí.
‫Solo quería hacerle saber
‫que si busca en Google
‫MVC, lo encontrará implementado de diferentes maneras.
‫Bien, de todos modos, en esta arquitectura, la capa
‫del modelo se ocupa de todo
‫lo relacionado con los datos de las aplicaciones
‫y la lógica empresarial.
‫Y aprenderemos qué significa la lógica empresarial en
‫la siguiente diapositiva.
‫A continuación, tenemos la capa de controlador
‫y la función de los
‫controladores es manejar la solicitud de la
‫aplicación, interactuar con
‫los modelos y enviar respuestas al cliente.
‫Y todo eso se llama lógica de aplicación.
‫Finalmente, la capa de vista es
‫necesaria si tenemos una interfaz gráfica en nuestra aplicación.
‫O en otras palabras, si estamos
‫construyendo un sitio web renderizado del lado
‫del servidor, como hablamos antes.
‫En este caso, la capa de vista consiste básicamente
‫en las plantillas utilizadas para generar la
‫vista, por lo que el sitio web que vamos a enviar de vuelta al cliente.
‫Y esa es la lógica de la presentación.
‫Sin embargo, por ahora, solo estamos construyendo una API,
‫por lo que todavía no estamos realmente preocupados por las vistas.
‫Eso es un poco más adelante en el curso.
‫Entonces, usar un patrón o una arquitectura como esta nos
‫permite escribir una aplicación más modular, que será
‫mucho más fácil de mantener a escala,
‫según sea necesario.
‫Y podríamos llevarlo aún más
‫lejos y agregar más capas de abstracción aquí.
‫Pero en este tipo de aplicación más
‫pequeña, la arquitectura MVC es más que suficiente para nuestras necesidades.
‫Ahora, todo esto puede sonar un
‫poco abstracto, así que echemos un vistazo a MVC en el contexto
‫de nuestra aplicación y el ciclo de solicitud-respuesta.
‫Entonces, como siempre, todo comienza con una solicitud.
‫Esa solicitud llegará a uno de nuestros
‫enrutadores, porque recuerde, tenemos varios enrutadores.
‫Básicamente, uno para
‫cada recurso, como recorridos, usuarios, etc.
‫Ahora el objetivo del enrutador es delegar la solicitud
‫a la función del
‫controlador correcto, que estará en uno de los controladores.
‫Y nuevamente, habrá un controlador para
‫cada uno de nuestros
‫recursos, para mantener estas diferentes partes de la aplicación bien separadas.
‫Luego, dependiendo de la solicitud entrante, es posible
‫que el controlador deba interactuar con uno
‫de los modelos, por ejemplo,
‫para recuperar un
‫determinado documento de la base de
‫datos o para crear uno nuevo.
‫Una vez más, hay un archivo de modelo para cada recurso.
‫Después de obtener los datos
‫del modelo, el controlador podría estar listo para enviar
‫una respuesta al cliente, por ejemplo, que contenga esos datos.
‫Ahora, en caso de que queramos realmente renderizar un sitio
‫web, hay un paso más involucrado.
‫En este caso, después de obtener los datos del
‫modelo, el controlador seleccionará
‫una de las plantillas de vista e inyectará los datos en ella.
‫Ese sitio web renderizado se enviará de
‫vuelta como respuesta.
‫En la capa de vista en una
‫aplicación Express, generalmente hay una plantilla de vista para cada página.
‫Como una página de descripción general del recorrido,
‫una página de detalles del recorrido o una página de inicio de sesión.
‫En el ejemplo de nuestra última aplicación, por supuesto.
‫Entonces, esa es una descripción general amplia de la arquitectura
‫que vamos a implementar en este proyecto.
‫Ahora para terminar, permítanme entrar en
‫un poco más de detalle sobre el modelo y el controlador.
‫Entonces, uno de los grandes objetivos de MVC
‫es separar la lógica empresarial
‫de la lógica de la aplicación.
‫Escuchará sobre este tipo de lógica todo el
‫tiempo cuando navegue por Stack
‫Overflow, o algún sitio como ese.
‫Pero, ¿qué son estos tipos de lógica en realidad?
‫Bueno, la diferencia es un poco obstinada, pero esta es
‫mi opinión: Entonces, la lógica de
‫la aplicación es todo el código que solo se
‫preocupa por la implementación
‫de la aplicación y no
‫el problema comercial subyacente que en
‫realidad estamos tratando de resolver con la aplicación. .
‫Como mostrar y vender
‫visitas guiadas, gestionar existencias en un
‫supermercado u organizar una biblioteca, por ejemplo.
‫Entonces, nuevamente, la lógica de la
‫aplicación es la lógica que hace que la aplicación realmente funcione.
‫Por ejemplo, una gran parte de la lógica de la aplicación en
‫Express tiene que ver con la gestión de solicitudes y respuestas.
‫Entonces, en cierto sentido, también podemos decir
‫que la lógica de la aplicación tiene más que ver con aspectos técnicos.
‫Además, si tenemos vistas en nuestra aplicación, la
‫lógica de la aplicación sirve
‫como puente entre el modelo y las capas de
‫vista para que nunca mezclemos la
‫lógica empresarial con la lógica de presentación.
‫¿Está bien?
‫Ahora, sobre la lógica
‫empresarial, es todo el código el que realmente resuelve el
‫problema empresarial que nos propusimos resolver.
‫Digamos de nuevo que nuestro objetivo es mostrar tours a los
‫clientes y luego venderlos.
‫Y el código que está directamente relacionado con las reglas comerciales,
‫con el funcionamiento del
‫negocio y las necesidades del negocio, es la lógica empresarial.
‫Ahora, si eso todavía suena un poco demasiado filosófico, algunos
‫ejemplos en el contexto de nuestra última aplicación son crear
‫nuevos recorridos en la base de datos de la aplicación, verificar
‫si la contraseña de un usuario es correcta cuando inicia sesión, validar los
‫datos de entrada del usuario o
‫asegurarse de que solo los usuarios quien haya comprado un determinado
‫tour puede revisarlo.
‫Entonces, todo esto tiene que ver con el negocio en sí,
‫y por eso es parte de la lógica empresarial.
‫Ahora, debemos tener en cuenta
‫que la lógica de la aplicación y
‫la lógica empresarial son casi imposibles de separar por completo y,
‫por lo tanto, a veces se superpondrán.
‫Pero debemos hacer nuestro
‫mejor esfuerzo para mantener la lógica de la aplicación
‫en nuestros controladores y la lógica empresarial en nuestros modelos.
‫E incluso existe esta filosofía
‫de modelos gordos, controladores delgados, que
‫dice que debemos
‫descargar tanta lógica como sea posible en los
‫modelos, para mantener los controladores lo más simples y ajustados posible.
‫Por lo tanto, un modelo pesado tendrá tanta lógica
‫de negocios como podamos descargar,
‫y un controlador delgado tendrá la menor lógica posible, de
‫modo que el controlador
‫es principalmente para administrar las solicitudes y respuestas de
‫la aplicación.
‫¿Okey?
‫Por lo tanto, ahora tenga todo esto en cuenta
‫a medida que avanzamos y avanzamos en la construcción de nuestras aplicaciones.