All language subtitles for 006 Intro to Back-End Architecture_ MVC, Types of Logic, and More_Downloadly.ir_en

af Afrikaans
ak Akan
sq Albanian
am Amharic
ar Arabic
hy Armenian
az Azerbaijani
eu Basque
be Belarusian
bem Bemba
bn Bengali
bh Bihari
bs Bosnian
br Breton
bg Bulgarian
km Cambodian
ca Catalan
chr Cherokee
ny Chichewa
zh-CN Chinese (Simplified)
zh-TW Chinese (Traditional)
co Corsican
hr Croatian
cs Czech
da Danish
nl Dutch
en English
eo Esperanto
et Estonian
ee Ewe
fo Faroese
tl Filipino
fi Finnish
fr French
fy Frisian
gaa Ga
gl Galician
ka Georgian
de German
el Greek
gn Guarani
gu Gujarati
ht Haitian Creole
ha Hausa
haw Hawaiian
iw Hebrew
hi Hindi
hu Hungarian
is Icelandic
ig Igbo
id Indonesian
ia Interlingua
ga Irish
it Italian
ja Japanese
jw Javanese
kn Kannada
kk Kazakh
rw Kinyarwanda
rn Kirundi
kg Kongo
ko Korean
kri Krio (Sierra Leone)
ku Kurdish
ckb Kurdish (Soranî)
ky Kyrgyz
lo Laothian
la Latin
lv Latvian
ln Lingala
lt Lithuanian
loz Lozi
lg Luganda
ach Luo
mk Macedonian
mg Malagasy
ms Malay
ml Malayalam
mt Maltese
mi Maori
mr Marathi
mfe Mauritian Creole
mo Moldavian
mn Mongolian
sr-ME Montenegrin
ne Nepali
pcm Nigerian Pidgin
nso Northern Sotho
no Norwegian
nn Norwegian (Nynorsk)
oc Occitan
or Oriya
om Oromo
ps Pashto
fa Persian Download
pl Polish
pt-BR Portuguese (Brazil)
pt-PT Portuguese (Portugal)
pa Punjabi
qu Quechua
ro Romanian
rm Romansh
nyn Runyakitara
ru Russian
gd Scots Gaelic
sr Serbian
sh Serbo-Croatian
st Sesotho
tn Setswana
crs Seychellois Creole
sn Shona
sd Sindhi
si Sinhalese
sk Slovak
sl Slovenian
so Somali
es Spanish
es-419 Spanish (Latin American)
su Sundanese
sw Swahili
sv Swedish
tg Tajik
ta Tamil
tt Tatar
te Telugu
th Thai
ti Tigrinya
to Tonga
lua Tshiluba
tum Tumbuka
tr Turkish
tk Turkmen
tw Twi
ug Uighur
uk Ukrainian
ur Urdu
uz Uzbek
vi Vietnamese
cy Welsh
wo Wolof
xh Xhosa
yi Yiddish
yo Yoruba
zu Zulu
Would you like to inspect the original subtitles? These are the user uploaded subtitles that are being translated: 1 00:00:01,569 --> 00:00:02,930 Up until this point, 2 00:00:02,930 --> 00:00:05,960 we have just written our code without thinking much 3 00:00:05,960 --> 00:00:08,670 about our application architecture. 4 00:00:08,670 --> 00:00:11,200 It wasn't really important until now, 5 00:00:11,200 --> 00:00:14,550 but now that our app is really starting to grow, 6 00:00:14,550 --> 00:00:15,770 we need to start worrying 7 00:00:15,770 --> 00:00:19,400 about the way that we design, or code architecture. 8 00:00:19,400 --> 00:00:22,320 And this lecture will just be a brief introduction 9 00:00:22,320 --> 00:00:24,010 to back-end architecture. 10 00:00:24,010 --> 00:00:26,893 Starting with the MVC architecture. 11 00:00:28,410 --> 00:00:30,580 So, in this project, we're going to use 12 00:00:30,580 --> 00:00:33,420 a widely used and well known architecture 13 00:00:33,420 --> 00:00:36,300 called the model, view, controller 14 00:00:36,300 --> 00:00:38,720 or MVC for short. 15 00:00:38,720 --> 00:00:40,000 And there are different ways 16 00:00:40,000 --> 00:00:42,660 of implementing the MVC architecture, 17 00:00:42,660 --> 00:00:44,530 some more complex than others, 18 00:00:44,530 --> 00:00:45,840 but we're going to implement it 19 00:00:45,840 --> 00:00:48,400 in a very straightforward way here. 20 00:00:48,400 --> 00:00:50,080 I just wanted to let you know that 21 00:00:50,080 --> 00:00:52,140 if you Google around for MVC, 22 00:00:52,140 --> 00:00:54,910 you'll find it implemented in some different ways. 23 00:00:54,910 --> 00:00:57,850 Okay, anyway, in this architecture, 24 00:00:57,850 --> 00:00:59,620 the model layer is concerned 25 00:00:59,620 --> 00:01:02,420 with everything about applications data, 26 00:01:02,420 --> 00:01:04,150 and the business logic. 27 00:01:04,150 --> 00:01:06,360 And we're going to learn what business logic means 28 00:01:06,360 --> 00:01:07,333 in the next slide. 29 00:01:08,180 --> 00:01:10,820 Next up, we have the controller layer 30 00:01:10,820 --> 00:01:12,850 and the function of the controllers 31 00:01:12,850 --> 00:01:15,380 is to handle the application's request, 32 00:01:15,380 --> 00:01:16,780 interact with models, 33 00:01:16,780 --> 00:01:19,500 and send back responses to the client. 34 00:01:19,500 --> 00:01:22,540 And all that is called the application logic. 35 00:01:22,540 --> 00:01:24,950 Finally, the view layer is necessary 36 00:01:24,950 --> 00:01:27,880 if we have a graphical interface in our app. 37 00:01:27,880 --> 00:01:30,010 Or in other words, if we're building 38 00:01:30,010 --> 00:01:32,410 a server-side rendered website, 39 00:01:32,410 --> 00:01:34,280 as we talked about before. 40 00:01:34,280 --> 00:01:36,870 In this case, the view layer consists basically 41 00:01:36,870 --> 00:01:38,981 of the templates used to generate the view, 42 00:01:38,981 --> 00:01:43,060 so the website that we're going to send back to the client. 43 00:01:43,060 --> 00:01:45,690 And that is the presentation logic. 44 00:01:45,690 --> 00:01:48,500 For now, we're just building an API though, 45 00:01:48,500 --> 00:01:51,780 so we're not really concerned about views just yet. 46 00:01:51,780 --> 00:01:54,180 That's for a bit later in the course. 47 00:01:54,180 --> 00:01:57,650 So using a pattern, or an architecture like this 48 00:01:57,650 --> 00:02:00,430 allows us to write a more modular application, 49 00:02:00,430 --> 00:02:03,180 which is going to be way easier to maintain in scale, 50 00:02:03,180 --> 00:02:04,550 as necessary. 51 00:02:04,550 --> 00:02:06,200 And we could take it even further, 52 00:02:06,200 --> 00:02:08,729 and add more layers of abstraction here. 53 00:02:08,729 --> 00:02:11,170 But in this kind of smaller application, 54 00:02:11,170 --> 00:02:14,643 the MVC architecture is more than enough for our needs. 55 00:02:15,520 --> 00:02:17,635 Now, all this may sound a bit abstract, 56 00:02:17,635 --> 00:02:21,700 so let's take a look at MVC in the context of our app, 57 00:02:21,700 --> 00:02:24,510 and the request-response cycle. 58 00:02:24,510 --> 00:02:28,050 So as always, it all starts with a request. 59 00:02:28,050 --> 00:02:30,760 That request will hit one of our routers, 60 00:02:30,760 --> 00:02:33,410 because remember, we have multiple routers. 61 00:02:33,410 --> 00:02:35,330 Basically, one for each resource, 62 00:02:35,330 --> 00:02:38,390 like tours, users, et cetera. 63 00:02:38,390 --> 00:02:41,520 Now the goal of the router is to delegate the request 64 00:02:41,520 --> 00:02:43,360 to the correct handler function, 65 00:02:43,360 --> 00:02:46,310 which will be in one of the controllers. 66 00:02:46,310 --> 00:02:48,420 And again, there will be one controller 67 00:02:48,420 --> 00:02:50,320 for each of our resources, 68 00:02:50,320 --> 00:02:54,530 to keep these different parts of the app nicely separated. 69 00:02:54,530 --> 00:02:57,090 Then, depending on the incoming request, 70 00:02:57,090 --> 00:02:59,360 the controller might need to interact 71 00:02:59,360 --> 00:03:01,010 with one of the models, 72 00:03:01,010 --> 00:03:02,330 for example to retrieve 73 00:03:02,330 --> 00:03:04,460 a certain document from the database, 74 00:03:04,460 --> 00:03:06,490 or to create a new one. 75 00:03:06,490 --> 00:03:10,350 Once more, there is one model file for each resource. 76 00:03:10,350 --> 00:03:12,560 After getting the data from the model, 77 00:03:12,560 --> 00:03:15,760 the controller might then be ready to send back a response 78 00:03:15,760 --> 00:03:19,320 to the client, for example, containing that data. 79 00:03:19,320 --> 00:03:22,240 Now, in case we want to actually render a website, 80 00:03:22,240 --> 00:03:24,100 there is one more step involved. 81 00:03:24,100 --> 00:03:26,950 In this case, after getting the data from the model, 82 00:03:26,950 --> 00:03:28,490 the controller will then select 83 00:03:28,490 --> 00:03:32,200 one of the view templates and inject the data into it. 84 00:03:32,200 --> 00:03:34,900 That rendered website will then be sent back 85 00:03:34,900 --> 00:03:36,670 as the response. 86 00:03:36,670 --> 00:03:38,860 In the view layer in an Express app 87 00:03:38,860 --> 00:03:41,990 there is usually one view template for each page. 88 00:03:41,990 --> 00:03:43,760 Like a tour overview page, 89 00:03:43,760 --> 00:03:46,580 a tour detail page, or a login page. 90 00:03:46,580 --> 00:03:49,470 In the example of our latest app of course. 91 00:03:49,470 --> 00:03:52,630 So, that is a broad overview of the architecture 92 00:03:52,630 --> 00:03:54,930 that we're going to implement in this project. 93 00:03:55,940 --> 00:03:58,050 Now to finish, let me just go into 94 00:03:58,050 --> 00:04:01,320 a bit more detail on model and controller. 95 00:04:01,320 --> 00:04:04,110 So, one of the big goals of MVC 96 00:04:04,110 --> 00:04:05,970 is to separate business logic 97 00:04:05,970 --> 00:04:08,010 from application logic. 98 00:04:08,010 --> 00:04:10,590 You'll hear about these types of logic all the time 99 00:04:10,590 --> 00:04:12,420 when you browse Stack Overflow, 100 00:04:12,420 --> 00:04:14,260 or some site like that. 101 00:04:14,260 --> 00:04:17,649 But what are these types of logic actually? 102 00:04:17,649 --> 00:04:20,670 Well, the difference is a bit opinionated, 103 00:04:20,670 --> 00:04:22,730 but this is my take on it: 104 00:04:22,730 --> 00:04:25,590 So, application logic is all the code 105 00:04:25,590 --> 00:04:27,340 that is only concerned about 106 00:04:27,340 --> 00:04:29,120 the application's implementation 107 00:04:29,120 --> 00:04:31,060 and not the underlying business problem 108 00:04:31,060 --> 00:04:33,890 that we're actually trying to solve with the application. 109 00:04:33,890 --> 00:04:35,930 Like showing and selling tours, 110 00:04:35,930 --> 00:04:38,160 managing stock in a supermarket, 111 00:04:38,160 --> 00:04:40,830 or organizing a library, for example. 112 00:04:40,830 --> 00:04:42,670 So again, application logic 113 00:04:42,670 --> 00:04:45,470 is the logic that makes the app actually work. 114 00:04:45,470 --> 00:04:49,100 For example, a big part of application logic in Express, 115 00:04:49,100 --> 00:04:52,490 is all about managing requests and responses. 116 00:04:52,490 --> 00:04:54,600 So, in a sense, we can also say 117 00:04:54,600 --> 00:04:58,100 that application logic is more about technical stuff. 118 00:04:58,100 --> 00:05:00,490 Also, if we have views in our app, 119 00:05:00,490 --> 00:05:02,280 the application logic serves 120 00:05:02,280 --> 00:05:04,980 as a bridge between model and view layers 121 00:05:04,980 --> 00:05:06,893 So that we never mix business logic 122 00:05:06,893 --> 00:05:08,920 with presentation logic. 123 00:05:08,920 --> 00:05:10,120 All right? 124 00:05:10,120 --> 00:05:12,000 Now, about business logic, 125 00:05:12,000 --> 00:05:15,370 it's all the code that actually solves the business problem 126 00:05:15,370 --> 00:05:17,490 that we set out to solve. 127 00:05:17,490 --> 00:05:21,340 Let's say again, that our goal is to show tours to customers 128 00:05:21,340 --> 00:05:22,920 and then sell them. 129 00:05:22,920 --> 00:05:26,491 And the code that is directly related to the business rules, 130 00:05:26,491 --> 00:05:28,210 to how the business works, 131 00:05:28,210 --> 00:05:31,440 and the business needs, is business logic. 132 00:05:31,440 --> 00:05:34,580 Now if that still sounds a bit too philosophical, 133 00:05:34,580 --> 00:05:37,810 some examples in the context of our latest app 134 00:05:37,810 --> 00:05:41,160 are creating new tours in the app's database, 135 00:05:41,160 --> 00:05:45,270 checking if a user's password is correct when he logs in, 136 00:05:45,270 --> 00:05:47,320 validating user input data, 137 00:05:47,320 --> 00:05:50,860 or ensuring that only users who bought a certain tour 138 00:05:50,860 --> 00:05:52,220 can review it. 139 00:05:52,220 --> 00:05:55,490 So all this stuff is concerned with the business itself, 140 00:05:55,490 --> 00:05:58,200 and so it's part of the business logic. 141 00:05:58,200 --> 00:06:00,090 Now, we need to keep in mind that 142 00:06:00,090 --> 00:06:02,320 application logic and business logic 143 00:06:02,320 --> 00:06:05,480 are almost impossible to completely separate, 144 00:06:05,480 --> 00:06:07,670 and so sometimes they will overlap. 145 00:06:07,670 --> 00:06:09,360 But we should do our best efforts 146 00:06:09,360 --> 00:06:12,200 to keep the application logic in our controllers 147 00:06:12,200 --> 00:06:15,440 and business logic in our models. 148 00:06:15,440 --> 00:06:17,260 And there is even this philosophy of 149 00:06:17,260 --> 00:06:19,400 fat models, thin controllers, 150 00:06:19,400 --> 00:06:21,170 which says we should offload 151 00:06:21,170 --> 00:06:24,140 as much logic as possible into the models, 152 00:06:24,140 --> 00:06:28,180 to keep the controllers as simple and lean as possible. 153 00:06:28,180 --> 00:06:31,450 So a fat model will have as much business logic 154 00:06:31,450 --> 00:06:33,210 as we can offload to it, 155 00:06:33,210 --> 00:06:36,700 and a thin controller will have as little logic as possible, 156 00:06:36,700 --> 00:06:38,210 so that the controller is 157 00:06:38,210 --> 00:06:41,410 really mostly for managing the application's requests 158 00:06:41,410 --> 00:06:42,500 and responses. 159 00:06:42,500 --> 00:06:43,440 Okay? 160 00:06:43,440 --> 00:06:46,060 So, now keep all this in mind as we move on 161 00:06:46,060 --> 00:06:49,193 and progress into building our applications. 12413

Can't find what you're looking for?
Get subtitles in any language from opensubtitles.com, and translate them here.