﻿1
00:00:01,570 --> 00:00:02,930
‫Instructor: Hasta este

2
00:00:02,930 --> 00:00:05,960
‫momento, acabamos de escribir nuestro código sin pensar

3
00:00:05,960 --> 00:00:08,670
‫mucho en la arquitectura de nuestra aplicación.

4
00:00:08,670 --> 00:00:11,200
‫No era realmente importante hasta ahora, pero

5
00:00:11,200 --> 00:00:14,550
‫ahora que nuestra aplicación realmente está comenzando a crecer, debemos

6
00:00:14,550 --> 00:00:15,770
‫comenzar a preocuparnos

7
00:00:15,770 --> 00:00:19,400
‫por la forma en que diseñamos o la arquitectura de código.

8
00:00:19,400 --> 00:00:22,320
‫Y esta conferencia será solo una breve introducción a

9
00:00:22,320 --> 00:00:24,010
‫la arquitectura de back-end.

10
00:00:24,010 --> 00:00:26,893
‫Comenzando con la arquitectura MVC.

11
00:00:28,410 --> 00:00:30,580
‫Entonces, en este

12
00:00:30,580 --> 00:00:33,420
‫proyecto, usaremos una arquitectura ampliamente

13
00:00:33,420 --> 00:00:36,300
‫utilizada y conocida llamada modelo, vista,

14
00:00:36,300 --> 00:00:38,720
‫controlador o MVC para abreviar.

15
00:00:38,720 --> 00:00:40,000
‫Y hay

16
00:00:40,000 --> 00:00:42,660
‫diferentes formas de implementar la arquitectura MVC,

17
00:00:42,660 --> 00:00:44,530
‫algunas más complejas que otras,

18
00:00:44,530 --> 00:00:45,840
‫pero las vamos a

19
00:00:45,840 --> 00:00:48,400
‫implementar de una manera muy sencilla aquí.

20
00:00:48,400 --> 00:00:50,080
‫Solo quería hacerle saber

21
00:00:50,080 --> 00:00:52,140
‫que si busca en Google

22
00:00:52,140 --> 00:00:54,910
‫MVC, lo encontrará implementado de diferentes maneras.

23
00:00:54,910 --> 00:00:57,850
‫Bien, de todos modos, en esta arquitectura, la capa

24
00:00:57,850 --> 00:00:59,620
‫del modelo se ocupa de todo

25
00:00:59,620 --> 00:01:02,420
‫lo relacionado con los datos de las aplicaciones

26
00:01:02,420 --> 00:01:04,150
‫y la lógica empresarial.

27
00:01:04,150 --> 00:01:06,360
‫Y aprenderemos qué significa la lógica empresarial en

28
00:01:06,360 --> 00:01:07,333
‫la siguiente diapositiva.

29
00:01:08,180 --> 00:01:10,820
‫A continuación, tenemos la capa de controlador

30
00:01:10,820 --> 00:01:12,850
‫y la función de los

31
00:01:12,850 --> 00:01:15,380
‫controladores es manejar la solicitud de la

32
00:01:15,380 --> 00:01:16,780
‫aplicación, interactuar con

33
00:01:16,780 --> 00:01:19,500
‫los modelos y enviar respuestas al cliente.

34
00:01:19,500 --> 00:01:22,540
‫Y todo eso se llama lógica de aplicación.

35
00:01:22,540 --> 00:01:24,950
‫Finalmente, la capa de vista es

36
00:01:24,950 --> 00:01:27,880
‫necesaria si tenemos una interfaz gráfica en nuestra aplicación.

37
00:01:27,880 --> 00:01:30,010
‫O en otras palabras, si estamos

38
00:01:30,010 --> 00:01:32,410
‫construyendo un sitio web renderizado del lado

39
00:01:32,410 --> 00:01:34,280
‫del servidor, como hablamos antes.

40
00:01:34,280 --> 00:01:36,870
‫En este caso, la capa de vista consiste básicamente

41
00:01:36,870 --> 00:01:38,981
‫en las plantillas utilizadas para generar la

42
00:01:38,981 --> 00:01:43,060
‫vista, por lo que el sitio web que vamos a enviar de vuelta al cliente.

43
00:01:43,060 --> 00:01:45,690
‫Y esa es la lógica de la presentación.

44
00:01:45,690 --> 00:01:48,500
‫Sin embargo, por ahora, solo estamos construyendo una API,

45
00:01:48,500 --> 00:01:51,780
‫por lo que todavía no estamos realmente preocupados por las vistas.

46
00:01:51,780 --> 00:01:54,180
‫Eso es un poco más adelante en el curso.

47
00:01:54,180 --> 00:01:57,650
‫Entonces, usar un patrón o una arquitectura como esta nos

48
00:01:57,650 --> 00:02:00,430
‫permite escribir una aplicación más modular, que será

49
00:02:00,430 --> 00:02:03,180
‫mucho más fácil de mantener a escala,

50
00:02:03,180 --> 00:02:04,550
‫según sea necesario.

51
00:02:04,550 --> 00:02:06,200
‫Y podríamos llevarlo aún más

52
00:02:06,200 --> 00:02:08,730
‫lejos y agregar más capas de abstracción aquí.

53
00:02:08,730 --> 00:02:11,170
‫Pero en este tipo de aplicación más

54
00:02:11,170 --> 00:02:14,643
‫pequeña, la arquitectura MVC es más que suficiente para nuestras necesidades.

55
00:02:15,520 --> 00:02:17,635
‫Ahora, todo esto puede sonar un

56
00:02:17,635 --> 00:02:21,700
‫poco abstracto, así que echemos un vistazo a MVC en el contexto

57
00:02:21,700 --> 00:02:24,510
‫de nuestra aplicación y el ciclo de solicitud-respuesta.

58
00:02:24,510 --> 00:02:28,050
‫Entonces, como siempre, todo comienza con una solicitud.

59
00:02:28,050 --> 00:02:30,760
‫Esa solicitud llegará a uno de nuestros

60
00:02:30,760 --> 00:02:33,410
‫enrutadores, porque recuerde, tenemos varios enrutadores.

61
00:02:33,410 --> 00:02:35,330
‫Básicamente, uno para

62
00:02:35,330 --> 00:02:38,390
‫cada recurso, como recorridos, usuarios, etc.

63
00:02:38,390 --> 00:02:41,520
‫Ahora el objetivo del enrutador es delegar la solicitud

64
00:02:41,520 --> 00:02:43,360
‫a la función del

65
00:02:43,360 --> 00:02:46,310
‫controlador correcto, que estará en uno de los controladores.

66
00:02:46,310 --> 00:02:48,420
‫Y nuevamente, habrá un controlador para

67
00:02:48,420 --> 00:02:50,320
‫cada uno de nuestros

68
00:02:50,320 --> 00:02:54,530
‫recursos, para mantener estas diferentes partes de la aplicación bien separadas.

69
00:02:54,530 --> 00:02:57,090
‫Luego, dependiendo de la solicitud entrante, es posible

70
00:02:57,090 --> 00:02:59,360
‫que el controlador deba interactuar con uno

71
00:02:59,360 --> 00:03:01,010
‫de los modelos, por ejemplo,

72
00:03:01,010 --> 00:03:02,330
‫para recuperar un

73
00:03:02,330 --> 00:03:04,460
‫determinado documento de la base de

74
00:03:04,460 --> 00:03:06,490
‫datos o para crear uno nuevo.

75
00:03:06,490 --> 00:03:10,350
‫Una vez más, hay un archivo de modelo para cada recurso.

76
00:03:10,350 --> 00:03:12,560
‫Después de obtener los datos

77
00:03:12,560 --> 00:03:15,760
‫del modelo, el controlador podría estar listo para enviar

78
00:03:15,760 --> 00:03:19,320
‫una respuesta al cliente, por ejemplo, que contenga esos datos.

79
00:03:19,320 --> 00:03:22,240
‫Ahora, en caso de que queramos realmente renderizar un sitio

80
00:03:22,240 --> 00:03:24,100
‫web, hay un paso más involucrado.

81
00:03:24,100 --> 00:03:26,950
‫En este caso, después de obtener los datos del

82
00:03:26,950 --> 00:03:28,490
‫modelo, el controlador seleccionará

83
00:03:28,490 --> 00:03:32,200
‫una de las plantillas de vista e inyectará los datos en ella.

84
00:03:32,200 --> 00:03:34,900
‫Ese sitio web renderizado se enviará de

85
00:03:34,900 --> 00:03:36,670
‫vuelta como respuesta.

86
00:03:36,670 --> 00:03:38,860
‫En la capa de vista en una

87
00:03:38,860 --> 00:03:41,990
‫aplicación Express, generalmente hay una plantilla de vista para cada página.

88
00:03:41,990 --> 00:03:43,760
‫Como una página de descripción general del recorrido,

89
00:03:43,760 --> 00:03:46,580
‫una página de detalles del recorrido o una página de inicio de sesión.

90
00:03:46,580 --> 00:03:49,470
‫En el ejemplo de nuestra última aplicación, por supuesto.

91
00:03:49,470 --> 00:03:52,630
‫Entonces, esa es una descripción general amplia de la arquitectura

92
00:03:52,630 --> 00:03:54,930
‫que vamos a implementar en este proyecto.

93
00:03:55,940 --> 00:03:58,050
‫Ahora para terminar, permítanme entrar en

94
00:03:58,050 --> 00:04:01,320
‫un poco más de detalle sobre el modelo y el controlador.

95
00:04:01,320 --> 00:04:04,110
‫Entonces, uno de los grandes objetivos de MVC

96
00:04:04,110 --> 00:04:05,970
‫es separar la lógica empresarial

97
00:04:05,970 --> 00:04:08,010
‫de la lógica de la aplicación.

98
00:04:08,010 --> 00:04:10,590
‫Escuchará sobre este tipo de lógica todo el

99
00:04:10,590 --> 00:04:12,420
‫tiempo cuando navegue por Stack

100
00:04:12,420 --> 00:04:14,260
‫Overflow, o algún sitio como ese.

101
00:04:14,260 --> 00:04:17,650
‫Pero, ¿qué son estos tipos de lógica en realidad?

102
00:04:17,650 --> 00:04:20,670
‫Bueno, la diferencia es un poco obstinada, pero esta es

103
00:04:20,670 --> 00:04:22,730
‫mi opinión: Entonces, la lógica de

104
00:04:22,730 --> 00:04:25,590
‫la aplicación es todo el código que solo se

105
00:04:25,590 --> 00:04:27,340
‫preocupa por la implementación

106
00:04:27,340 --> 00:04:29,120
‫de la aplicación y no

107
00:04:29,120 --> 00:04:31,060
‫el problema comercial subyacente que en

108
00:04:31,060 --> 00:04:33,890
‫realidad estamos tratando de resolver con la aplicación. .

109
00:04:33,890 --> 00:04:35,930
‫Como mostrar y vender

110
00:04:35,930 --> 00:04:38,160
‫visitas guiadas, gestionar existencias en un

111
00:04:38,160 --> 00:04:40,830
‫supermercado u organizar una biblioteca, por ejemplo.

112
00:04:40,830 --> 00:04:42,670
‫Entonces, nuevamente, la lógica de la

113
00:04:42,670 --> 00:04:45,470
‫aplicación es la lógica que hace que la aplicación realmente funcione.

114
00:04:45,470 --> 00:04:49,100
‫Por ejemplo, una gran parte de la lógica de la aplicación en

115
00:04:49,100 --> 00:04:52,490
‫Express tiene que ver con la gestión de solicitudes y respuestas.

116
00:04:52,490 --> 00:04:54,600
‫Entonces, en cierto sentido, también podemos decir

117
00:04:54,600 --> 00:04:58,100
‫que la lógica de la aplicación tiene más que ver con aspectos técnicos.

118
00:04:58,100 --> 00:05:00,490
‫Además, si tenemos vistas en nuestra aplicación, la

119
00:05:00,490 --> 00:05:02,280
‫lógica de la aplicación sirve

120
00:05:02,280 --> 00:05:04,980
‫como puente entre el modelo y las capas de

121
00:05:04,980 --> 00:05:06,893
‫vista para que nunca mezclemos la

122
00:05:06,893 --> 00:05:08,920
‫lógica empresarial con la lógica de presentación.

123
00:05:08,920 --> 00:05:10,120
‫¿Está bien?

124
00:05:10,120 --> 00:05:12,000
‫Ahora, sobre la lógica

125
00:05:12,000 --> 00:05:15,370
‫empresarial, es todo el código el que realmente resuelve el

126
00:05:15,370 --> 00:05:17,490
‫problema empresarial que nos propusimos resolver.

127
00:05:17,490 --> 00:05:21,340
‫Digamos de nuevo que nuestro objetivo es mostrar tours a los

128
00:05:21,340 --> 00:05:22,920
‫clientes y luego venderlos.

129
00:05:22,920 --> 00:05:26,491
‫Y el código que está directamente relacionado con las reglas comerciales,

130
00:05:26,491 --> 00:05:28,210
‫con el funcionamiento del

131
00:05:28,210 --> 00:05:31,440
‫negocio y las necesidades del negocio, es la lógica empresarial.

132
00:05:31,440 --> 00:05:34,580
‫Ahora, si eso todavía suena un poco demasiado filosófico, algunos

133
00:05:34,580 --> 00:05:37,810
‫ejemplos en el contexto de nuestra última aplicación son crear

134
00:05:37,810 --> 00:05:41,160
‫nuevos recorridos en la base de datos de la aplicación, verificar

135
00:05:41,160 --> 00:05:45,270
‫si la contraseña de un usuario es correcta cuando inicia sesión, validar los

136
00:05:45,270 --> 00:05:47,320
‫datos de entrada del usuario o

137
00:05:47,320 --> 00:05:50,860
‫asegurarse de que solo los usuarios quien haya comprado un determinado

138
00:05:50,860 --> 00:05:52,220
‫tour puede revisarlo.

139
00:05:52,220 --> 00:05:55,490
‫Entonces, todo esto tiene que ver con el negocio en sí,

140
00:05:55,490 --> 00:05:58,200
‫y por eso es parte de la lógica empresarial.

141
00:05:58,200 --> 00:06:00,090
‫Ahora, debemos tener en cuenta

142
00:06:00,090 --> 00:06:02,320
‫que la lógica de la aplicación y

143
00:06:02,320 --> 00:06:05,480
‫la lógica empresarial son casi imposibles de separar por completo y,

144
00:06:05,480 --> 00:06:07,670
‫por lo tanto, a veces se superpondrán.

145
00:06:07,670 --> 00:06:09,360
‫Pero debemos hacer nuestro

146
00:06:09,360 --> 00:06:12,200
‫mejor esfuerzo para mantener la lógica de la aplicación

147
00:06:12,200 --> 00:06:15,440
‫en nuestros controladores y la lógica empresarial en nuestros modelos.

148
00:06:15,440 --> 00:06:17,260
‫E incluso existe esta filosofía

149
00:06:17,260 --> 00:06:19,400
‫de modelos gordos, controladores delgados, que

150
00:06:19,400 --> 00:06:21,170
‫dice que debemos

151
00:06:21,170 --> 00:06:24,140
‫descargar tanta lógica como sea posible en los

152
00:06:24,140 --> 00:06:28,180
‫modelos, para mantener los controladores lo más simples y ajustados posible.

153
00:06:28,180 --> 00:06:31,450
‫Por lo tanto, un modelo pesado tendrá tanta lógica

154
00:06:31,450 --> 00:06:33,210
‫de negocios como podamos descargar,

155
00:06:33,210 --> 00:06:36,700
‫y un controlador delgado tendrá la menor lógica posible, de

156
00:06:36,700 --> 00:06:38,210
‫modo que el controlador

157
00:06:38,210 --> 00:06:41,410
‫es principalmente para administrar las solicitudes y respuestas de

158
00:06:41,410 --> 00:06:42,500
‫la aplicación.

159
00:06:42,500 --> 00:06:43,440
‫¿Okey?

160
00:06:43,440 --> 00:06:46,060
‫Por lo tanto, ahora tenga todo esto en cuenta

161
00:06:46,060 --> 00:06:49,193
‫a medida que avanzamos y avanzamos en la construcción de nuestras aplicaciones.

