﻿1
00:00:01,570 --> 00:00:02,930
‫Instructeur : Jusqu'à

2
00:00:02,930 --> 00:00:05,960
‫présent, nous avons juste écrit notre code sans

3
00:00:05,960 --> 00:00:08,670
‫trop penser à l'architecture de notre application.

4
00:00:08,670 --> 00:00:11,200
‫Ce n'était pas vraiment important jusqu'à présent, mais

5
00:00:11,200 --> 00:00:14,550
‫maintenant que notre application commence vraiment à se développer, nous devons

6
00:00:14,550 --> 00:00:15,770
‫commencer à nous

7
00:00:15,770 --> 00:00:19,400
‫inquiéter de la façon dont nous concevons ou de l'architecture du code.

8
00:00:19,400 --> 00:00:22,320
‫Et cette conférence ne sera qu'une brève

9
00:00:22,320 --> 00:00:24,010
‫introduction à l'architecture back-end.

10
00:00:24,010 --> 00:00:26,893
‫A commencer par l'architecture MVC.

11
00:00:28,410 --> 00:00:30,580
‫Ainsi, dans ce projet,

12
00:00:30,580 --> 00:00:33,420
‫nous allons utiliser une architecture largement

13
00:00:33,420 --> 00:00:36,300
‫utilisée et bien connue appelée modèle, vue,

14
00:00:36,300 --> 00:00:38,720
‫contrôleur ou MVC en abrégé.

15
00:00:38,720 --> 00:00:40,000
‫Et il

16
00:00:40,000 --> 00:00:42,660
‫existe différentes manières d'implémenter l'architecture MVC, certaines

17
00:00:42,660 --> 00:00:44,530
‫plus complexes que d'autres,

18
00:00:44,530 --> 00:00:45,840
‫mais nous allons

19
00:00:45,840 --> 00:00:48,400
‫l'implémenter ici de manière très simple.

20
00:00:48,400 --> 00:00:50,080
‫Je voulais juste vous

21
00:00:50,080 --> 00:00:52,140
‫faire savoir que si vous recherchez

22
00:00:52,140 --> 00:00:54,910
‫MVC, vous le trouverez implémenté de différentes manières.

23
00:00:54,910 --> 00:00:57,850
‫Bon, de toute façon, dans cette architecture, la

24
00:00:57,850 --> 00:00:59,620
‫couche modèle s'occupe de tout

25
00:00:59,620 --> 00:01:02,420
‫ce qui concerne les données des applications et

26
00:01:02,420 --> 00:01:04,150
‫la logique métier.

27
00:01:04,150 --> 00:01:06,360
‫Et nous allons apprendre ce que la logique métier signifie

28
00:01:06,360 --> 00:01:07,333
‫dans la diapositive suivante.

29
00:01:08,180 --> 00:01:10,820
‫Ensuite, nous avons la couche de contrôleur

30
00:01:10,820 --> 00:01:12,850
‫et la fonction des contrôleurs

31
00:01:12,850 --> 00:01:15,380
‫est de gérer la demande de l'application,

32
00:01:15,380 --> 00:01:16,780
‫d'interagir avec les

33
00:01:16,780 --> 00:01:19,500
‫modèles et de renvoyer les réponses au client.

34
00:01:19,500 --> 00:01:22,540
‫Et tout cela s'appelle la logique d'application.

35
00:01:22,540 --> 00:01:24,950
‫Enfin, la couche de vue est nécessaire

36
00:01:24,950 --> 00:01:27,880
‫si nous avons une interface graphique dans notre application.

37
00:01:27,880 --> 00:01:30,010
‫Ou en d'autres termes, si nous

38
00:01:30,010 --> 00:01:32,410
‫construisons un site Web rendu côté serveur, comme

39
00:01:32,410 --> 00:01:34,280
‫nous en avons déjà parlé.

40
00:01:34,280 --> 00:01:36,870
‫Dans ce cas, la couche de vue se

41
00:01:36,870 --> 00:01:38,981
‫compose essentiellement des modèles utilisés pour

42
00:01:38,981 --> 00:01:43,060
‫générer la vue, donc le site Web que nous allons renvoyer au client.

43
00:01:43,060 --> 00:01:45,690
‫Et c'est la logique de présentation.

44
00:01:45,690 --> 00:01:48,500
‫Pour l'instant, nous ne faisons que construire une API,

45
00:01:48,500 --> 00:01:51,780
‫donc nous ne sommes pas encore vraiment préoccupés par les vues.

46
00:01:51,780 --> 00:01:54,180
‫C'est pour un peu plus tard dans le cours.

47
00:01:54,180 --> 00:01:57,650
‫Ainsi, l'utilisation d'un modèle ou d'une architecture comme celle-ci nous

48
00:01:57,650 --> 00:02:00,430
‫permet d'écrire une application plus modulaire, qui

49
00:02:00,430 --> 00:02:03,180
‫sera beaucoup plus facile à maintenir à

50
00:02:03,180 --> 00:02:04,550
‫l'échelle, si nécessaire.

51
00:02:04,550 --> 00:02:06,200
‫Et nous pourrions aller encore

52
00:02:06,200 --> 00:02:08,730
‫plus loin et ajouter ici plus de couches d'abstraction.

53
00:02:08,730 --> 00:02:11,170
‫Mais dans ce genre d'application plus

54
00:02:11,170 --> 00:02:14,643
‫petite, l'architecture MVC est plus que suffisante pour nos besoins.

55
00:02:15,520 --> 00:02:17,635
‫Maintenant, tout cela peut

56
00:02:17,635 --> 00:02:21,700
‫sembler un peu abstrait, alors examinons MVC dans le contexte

57
00:02:21,700 --> 00:02:24,510
‫de notre application et le cycle requête-réponse.

58
00:02:24,510 --> 00:02:28,050
‫Comme toujours, tout commence par une demande.

59
00:02:28,050 --> 00:02:30,760
‫Cette demande touchera l'un de nos routeurs, car

60
00:02:30,760 --> 00:02:33,410
‫rappelez-vous que nous avons plusieurs routeurs.

61
00:02:33,410 --> 00:02:35,330
‫Fondamentalement, un pour chaque

62
00:02:35,330 --> 00:02:38,390
‫ressource, comme les visites, les utilisateurs, etc.

63
00:02:38,390 --> 00:02:41,520
‫Maintenant, le but du routeur est de déléguer la

64
00:02:41,520 --> 00:02:43,360
‫requête à la fonction

65
00:02:43,360 --> 00:02:46,310
‫de gestionnaire appropriée, qui sera dans l'un des contrôleurs.

66
00:02:46,310 --> 00:02:48,420
‫Et encore une fois, il y

67
00:02:48,420 --> 00:02:50,320
‫aura un contrôleur pour chacune

68
00:02:50,320 --> 00:02:54,530
‫de nos ressources, pour garder ces différentes parties de l'application bien séparées.

69
00:02:54,530 --> 00:02:57,090
‫Ensuite, en fonction de la demande entrante, le

70
00:02:57,090 --> 00:02:59,360
‫contrôleur peut avoir besoin d'interagir avec l'un

71
00:02:59,360 --> 00:03:01,010
‫des modèles, par exemple pour

72
00:03:01,010 --> 00:03:02,330
‫récupérer un certain

73
00:03:02,330 --> 00:03:04,460
‫document de la base de données

74
00:03:04,460 --> 00:03:06,490
‫ou pour en créer un nouveau.

75
00:03:06,490 --> 00:03:10,350
‫Une fois de plus, il existe un fichier modèle pour chaque ressource.

76
00:03:10,350 --> 00:03:12,560
‫Après avoir obtenu les données

77
00:03:12,560 --> 00:03:15,760
‫du modèle, le contrôleur peut alors être prêt à

78
00:03:15,760 --> 00:03:19,320
‫renvoyer une réponse au client, par exemple, contenant ces données.

79
00:03:19,320 --> 00:03:22,240
‫Maintenant, au cas où nous voudrions réellement restituer un site

80
00:03:22,240 --> 00:03:24,100
‫Web, il reste une étape supplémentaire.

81
00:03:24,100 --> 00:03:26,950
‫Dans ce cas, après avoir récupéré les données du

82
00:03:26,950 --> 00:03:28,490
‫modèle, le contrôleur sélectionnera

83
00:03:28,490 --> 00:03:32,200
‫alors l'un des modèles de vue et y injectera les données.

84
00:03:32,200 --> 00:03:34,900
‫Ce site Web rendu sera ensuite renvoyé

85
00:03:34,900 --> 00:03:36,670
‫en tant que réponse.

86
00:03:36,670 --> 00:03:38,860
‫Dans la couche de vue d'une application

87
00:03:38,860 --> 00:03:41,990
‫Express, il existe généralement un modèle de vue pour chaque page.

88
00:03:41,990 --> 00:03:43,760
‫Comme une page de présentation d'une

89
00:03:43,760 --> 00:03:46,580
‫visite, une page de détails de visite ou une page de connexion.

90
00:03:46,580 --> 00:03:49,470
‫Dans l'exemple de notre dernière application bien sûr.

91
00:03:49,470 --> 00:03:52,630
‫Voilà donc une vue d'ensemble de l'architecture que nous

92
00:03:52,630 --> 00:03:54,930
‫allons implémenter dans ce projet.

93
00:03:55,940 --> 00:03:58,050
‫Maintenant, pour finir, permettez-moi d'entrer un

94
00:03:58,050 --> 00:04:01,320
‫peu plus dans les détails sur le modèle et le contrôleur.

95
00:04:01,320 --> 00:04:04,110
‫Ainsi, l'un des grands objectifs de MVC est

96
00:04:04,110 --> 00:04:05,970
‫de séparer la logique

97
00:04:05,970 --> 00:04:08,010
‫métier de la logique applicative.

98
00:04:08,010 --> 00:04:10,590
‫Vous entendrez parler de ces types de logique tout

99
00:04:10,590 --> 00:04:12,420
‫le temps lorsque vous parcourez

100
00:04:12,420 --> 00:04:14,260
‫Stack Overflow ou un site comme celui-ci.

101
00:04:14,260 --> 00:04:17,650
‫Mais quels sont ces types de logique en fait ?

102
00:04:17,650 --> 00:04:20,670
‫Eh bien, la différence est un peu opiniâtre, mais

103
00:04:20,670 --> 00:04:22,730
‫voici mon point de vue :

104
00:04:22,730 --> 00:04:25,590
‫ainsi, la logique de l'application est tout le code

105
00:04:25,590 --> 00:04:27,340
‫qui ne concerne que

106
00:04:27,340 --> 00:04:29,120
‫l'implémentation de l'application et non

107
00:04:29,120 --> 00:04:31,060
‫le problème commercial sous-jacent que

108
00:04:31,060 --> 00:04:33,890
‫nous essayons réellement de résoudre avec l'application .

109
00:04:33,890 --> 00:04:35,930
‫Comme montrer et vendre

110
00:04:35,930 --> 00:04:38,160
‫des visites, gérer le stock d'un

111
00:04:38,160 --> 00:04:40,830
‫supermarché ou organiser une bibliothèque, par exemple.

112
00:04:40,830 --> 00:04:42,670
‫Encore une fois, la logique de

113
00:04:42,670 --> 00:04:45,470
‫l'application est la logique qui fait que l'application fonctionne réellement.

114
00:04:45,470 --> 00:04:49,100
‫Par exemple, une grande partie de la logique d'application dans

115
00:04:49,100 --> 00:04:52,490
‫Express concerne la gestion des demandes et des réponses.

116
00:04:52,490 --> 00:04:54,600
‫Donc, dans un sens, on

117
00:04:54,600 --> 00:04:58,100
‫peut aussi dire que la logique d'application est plus technique.

118
00:04:58,100 --> 00:05:00,490
‫De plus, si nous avons des vues dans notre

119
00:05:00,490 --> 00:05:02,280
‫application, la logique de l'application

120
00:05:02,280 --> 00:05:04,980
‫sert de pont entre les couches de modèle et de

121
00:05:04,980 --> 00:05:06,893
‫vue afin que nous ne mélangeions jamais

122
00:05:06,893 --> 00:05:08,920
‫la logique métier avec la logique de présentation.

123
00:05:08,920 --> 00:05:10,120
‫D'accord?

124
00:05:10,120 --> 00:05:12,000
‫Maintenant, à propos de la

125
00:05:12,000 --> 00:05:15,370
‫logique métier, c'est tout le code qui résout réellement le problème

126
00:05:15,370 --> 00:05:17,490
‫métier que nous avons décidé de résoudre.

127
00:05:17,490 --> 00:05:21,340
‫Disons encore une fois que notre objectif est de montrer des visites aux clients

128
00:05:21,340 --> 00:05:22,920
‫et de les vendre ensuite.

129
00:05:22,920 --> 00:05:26,491
‫Et le code qui est directement lié aux règles métier,

130
00:05:26,491 --> 00:05:28,210
‫au fonctionnement de l'entreprise

131
00:05:28,210 --> 00:05:31,440
‫et aux besoins de l'entreprise est la logique métier.

132
00:05:31,440 --> 00:05:34,580
‫Maintenant, si cela semble encore un peu trop philosophique, quelques

133
00:05:34,580 --> 00:05:37,810
‫exemples dans le contexte de notre dernière application sont de

134
00:05:37,810 --> 00:05:41,160
‫créer de nouvelles visites dans la base de données de l'application,

135
00:05:41,160 --> 00:05:45,270
‫de vérifier si le mot de passe d'un utilisateur est correct lorsqu'il se connecte,

136
00:05:45,270 --> 00:05:47,320
‫de valider les données d'entrée de l'utilisateur

137
00:05:47,320 --> 00:05:50,860
‫ou de s'assurer que seuls les utilisateurs qui a acheté un certain

138
00:05:50,860 --> 00:05:52,220
‫tour peut l'examiner.

139
00:05:52,220 --> 00:05:55,490
‫Donc, tout cela concerne l'entreprise elle-même, et cela fait

140
00:05:55,490 --> 00:05:58,200
‫donc partie de la logique commerciale.

141
00:05:58,200 --> 00:06:00,090
‫Maintenant, nous devons garder

142
00:06:00,090 --> 00:06:02,320
‫à l'esprit que la logique applicative et

143
00:06:02,320 --> 00:06:05,480
‫la logique métier sont presque impossibles à séparer complètement,

144
00:06:05,480 --> 00:06:07,670
‫et donc parfois elles se chevauchent.

145
00:06:07,670 --> 00:06:09,360
‫Mais nous devons faire

146
00:06:09,360 --> 00:06:12,200
‫de notre mieux pour conserver la logique applicative

147
00:06:12,200 --> 00:06:15,440
‫dans nos contrôleurs et la logique métier dans nos modèles.

148
00:06:15,440 --> 00:06:17,260
‫Et il y a même cette

149
00:06:17,260 --> 00:06:19,400
‫philosophie des gros modèles, des contrôleurs

150
00:06:19,400 --> 00:06:21,170
‫minces, qui dit que

151
00:06:21,170 --> 00:06:24,140
‫nous devrions décharger autant de logique que possible dans

152
00:06:24,140 --> 00:06:28,180
‫les modèles, pour garder les contrôleurs aussi simples et légers que possible.

153
00:06:28,180 --> 00:06:31,450
‫Ainsi, un gros modèle aura autant de logique métier que

154
00:06:31,450 --> 00:06:33,210
‫nous pouvons lui en décharger,

155
00:06:33,210 --> 00:06:36,700
‫et un contrôleur léger aura aussi peu de logique que possible,

156
00:06:36,700 --> 00:06:38,210
‫de sorte que le contrôleur

157
00:06:38,210 --> 00:06:41,410
‫sert principalement à gérer les demandes et les réponses

158
00:06:41,410 --> 00:06:42,500
‫de l'application.

159
00:06:42,500 --> 00:06:43,440
‫D'accord?

160
00:06:43,440 --> 00:06:46,060
‫Alors, maintenant, gardez tout cela à l'esprit pendant

161
00:06:46,060 --> 00:06:49,193
‫que nous avançons et progressons dans la création de nos applications.

