БпСстСтС 15% ΠΎΡ‚ всички хостинг услуги

ВСствай умСнията си ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈ ΠžΡ‚ΡΡ‚ΡŠΠΏΠΊΠ° Π·Π° всСки хостинг ΠΏΠ»Π°Π½

Π˜Π·ΠΏΠΎΠ»Π·Π²Π°ΠΉΡ‚Π΅ ΠΊΠΎΠ΄: Skills Π—Π° Π½Π°Ρ‡Π°Π»ΠΎ
Заглавия
Администрация

Какво Π΅ MVC? Пълно тСхничСско Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΡΡ‚Π²ΠΎ Π·Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Model-View-Controller

MVC (Model-View-Controller) Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅Π½ шаблон Π·Π° софтуСр, ΠΊΠΎΠΉΡ‚ΠΎ раздСля ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Ρ‚Ρ€ΠΈ ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ, Π²Π·Π°ΠΈΠΌΠΎΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° β€” Model (Π΄Π°Π½Π½ΠΈ ΠΈ бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°), View (ΠΏΡ€Π΅Π·Π΅Π½Ρ‚Π°Ρ†ΠΈΠΎΠ½Π΅Π½ слой) ΠΈ Controller (ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° заявки ΠΈ оркСстратор). Π’ΠΎΠ²Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ позволява Π½Π° Π΅ΠΊΠΈΠΏΠΈΡ‚Π΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π΄Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚, тСстват ΠΈ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚ всСки слой нСзависимо, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ MVC доминиращия структурСн шаблон Π² ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ ΡƒΠ΅Π± Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅, Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Laravel, Django, Ruby on Rails ΠΈ ASP.NET Core.

Π’ основата си MVC отговаря Π½Π° Ρ„ΡƒΠ½Π΄Π°ΠΌΠ΅Π½Ρ‚Π°Π»Π΅Π½ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π΅Π½ Π²ΡŠΠΏΡ€ΠΎΡ: ΠΊΠ°ΠΊ Π΄Π° ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‚ΠΈΡ‚Π΅ срива Π½Π° нарастваща ΠΊΠΎΠ΄ΠΎΠ²Π° Π±Π°Π·Π° ΠΏΠΎΠ΄ собствСното си Ρ‚Π΅Π³Π»ΠΎ? Π§Ρ€Π΅Π· Π½Π°Π»Π°Π³Π°Π½Π΅ Π½Π° строги Π³Ρ€Π°Π½ΠΈΡ†ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° потрСбитСлския интСрфСйс ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ, MVC Π΄Π°Π²Π° Π½Π° Π΅ΠΊΠΈΠΏΠΈΡ‚Π΅ повторяСм, ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ ΠΏΠ»Π°Π½, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·Π΄ΡŠΡ€ΠΆΠ° Π³ΠΎΠ΄ΠΈΠ½ΠΈ Π½Π° добавянС Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ смяна Π½Π° Π΅ΠΊΠΈΠΏΠΈ.

Π’Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° Π½Π° MVC обяснСни

Model

Model Π΅ авторитСтният ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ Π½Π° истина Π·Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΈ бизнСс ΠΏΡ€Π°Π²ΠΈΠ»Π°Ρ‚Π° Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π’ΠΎΠΉ Π΅ напълно нСзависим ΠΎΡ‚ потрСбитСлския интСрфСйс. НСговитС отговорности Π²ΠΊΠ»ΡŽΡ‡Π²Π°Ρ‚:

  • Заявки ΠΈ Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ към ΠΈ ΠΎΡ‚ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ (SQL, NoSQL ΠΈΠ»ΠΈ абстрахирани Ρ‡Ρ€Π΅Π· ORM)
  • ΠŸΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π° Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ (Π½Π°ΠΏΡ€. Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€Π°Π½Π΅, Ρ‡Π΅ ΠΎΠ±Ρ‰Π°Ρ‚Π° сума Π½Π° ΠΏΠΎΡ€ΡŠΡ‡ΠΊΠ° Π½Π΅ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС ΠΎΡ‚Ρ€ΠΈΡ†Π°Ρ‚Π΅Π»Π½Π°)
  • УвСдомяванС Π½Π° Π½Π°Π±Π»ΡŽΠ΄Π°Ρ‚Π΅Π»ΠΈ β€” ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ View ΠΈΠ»ΠΈ посрСдничСски слой β€” ΠΊΠΎΠ³Π°Ρ‚ΠΎ Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎΡ‚ΠΎ ΠΌΡƒ ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅ сС ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ
  • ΠšΠ°ΠΏΡΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π°, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС тСствана Π² пълна изолация ΠΎΡ‚ HTTP ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈΡ‚Π΅

ΠšΡ€ΠΈΡ‚ΠΈΡ‡Π΅Π½ нюанс, ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‰ΠΈ обяснСния пропускат: Model Π½Π΅ Π΅ просто ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π½Π° Ρ‚Π°Π±Π»ΠΈΡ†Π° Π² Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’ Π΄ΠΎΠ±Ρ€Π΅ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π° систСма, слоят Model ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½Π°ΠΉ-Π±ΠΎΠ³Π°Ρ‚Π°Ρ‚Π° Π»ΠΎΠ³ΠΈΠΊΠ° Π² цялото ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. АнСмичнитС ΠΌΠΎΠ΄Π΅Π»ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ правят Π½ΠΈΡ‰ΠΎ Π΄Ρ€ΡƒΠ³ΠΎ освСн Π΄Π° ΡΡŠΠ΄ΡŠΡ€ΠΆΠ°Ρ‚ getter/setter свойства, са ΠΏΡ€ΠΈΠ·Π½Π°Ρ‚ Π°Π½Ρ‚ΠΈΡˆΠ°Π±Π»ΠΎΠ½, ΠΊΠΎΠΉΡ‚ΠΎ Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Ρ€Π°Π·Π΄ΡƒΡ‚ΠΈ Controllers.

View

View Π΅ прСзСнтационният слой. Π’ΠΎΠΉ ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ‚ Model (Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΈΠ»ΠΈ Ρ‡Ρ€Π΅Π· Controller, Π² зависимост ΠΎΡ‚ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ°) ΠΈ Π³ΠΈ Ρ€Π΅Π½Π΄ΠΈΡ€Π° Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π΅ΠΌ ΠΎΡ‚ крайния ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π» β€” ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΎ HTML, JSON, XML ΠΈΠ»ΠΈ Π΄ΡŠΡ€Π²ΠΎ ΠΎΡ‚ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ Π½Π° Π½Π°Ρ‚ΠΈΠ²Π΅Π½ потрСбитСлски интСрфСйс.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ ограничСния, ΠΊΠΎΠΈΡ‚ΠΎ опрСдСлят Π΄ΠΎΠ±Ρ€Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Π½ View:

  • НС ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° Π½ΠΈΠΊΠ°ΠΊΠ²Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°
  • НС ΠΏΡ€Π°Π²ΠΈ заявки Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ към Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ
  • МоТС Π΄Π° бъдС Π·Π°ΠΌΠ΅Π½Π΅Π½ Π±Π΅Π· Π΄Π° сС докосват Model ΠΈΠ»ΠΈ Controller
  • МоТС Π΄Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π° Π² мноТСство Ρ„ΠΎΡ€ΠΌΠΈ Π·Π° Π΅Π΄Π½ΠΈ ΠΈ ΡΡŠΡ‰ΠΈ Π΄Π°Π½Π½ΠΈ (Π½Π°ΠΏΡ€. HTML страница, JSON API ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ ΠΈ PDF Скспорт, всички управлявани ΠΎΡ‚ Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Model)

Controller

Controller дСйства ΠΊΠ°Ρ‚ΠΎ Ρ€Π΅Π³ΡƒΠ»Π°Ρ‚ΠΎΡ€ Π½Π° Ρ‚Ρ€Π°Ρ„ΠΈΠΊΠ° ΠΌΠ΅ΠΆΠ΄Ρƒ Model ΠΈ View. ΠšΠΎΠ³Π°Ρ‚ΠΎ потрСбитСлско дСйствиС задСйства HTTP заявка (ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎ Π²Ρ…ΠΎΠ΄Π½ΠΎ ΡΡŠΠ±ΠΈΡ‚ΠΈΠ΅), Controller:

  1. ΠŸΠΎΠ»ΡƒΡ‡Π°Π²Π° ΠΈ Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π° входящата заявка
  2. Извиква подходящитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° Model Π·Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅ ΠΈΠ»ΠΈ промяна Π½Π° Π΄Π°Π½Π½ΠΈ
  3. ΠŸΡ€Π΅Π΄Π°Π²Π° ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ‚Π΅ Π΄Π°Π½Π½ΠΈ Π½Π° правилния View Π·Π° Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½Π΅
  4. Π’Ρ€ΡŠΡ‰Π° рСндирания ΠΈΠ·Ρ…ΠΎΠ΄ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°

Най-чСстата Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Π° Π³Ρ€Π΅ΡˆΠΊΠ° Π² MVC ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ‚Π΅ Π΅ Π°Π½Ρ‚ΠΈΡˆΠ°Π±Π»ΠΎΠ½ΡŠΡ‚ Fat Controller β€” Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π°Π½Π΅ Π½Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° Π² Controllers, Π·Π°Ρ‰ΠΎΡ‚ΠΎ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΡƒΠ΄ΠΎΠ±Π½ΠΎ. Π’ΠΎΠ²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΠ΄ΠΊΠΎΠΏΠ°Π²Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° отговорноститС, ΠΊΠΎΠ΅Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈ MVC Ρ†Π΅Π½Π΅Π½. Controllers трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ Ρ‚ΡŠΠ½ΠΊΠΈ оркСстратори, Π° Π½Π΅ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π° Π½Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°.

Как Ρ€Π°Π±ΠΎΡ‚ΠΈ MVC: Π¦ΠΈΠΊΡŠΠ»ΡŠΡ‚ заявка-ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° точния ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ Π΅ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° отстраняванС Π½Π° Π³Ρ€Π΅ΡˆΠΊΠΈ ΠΈ Π·Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° тСстируСми систСми.

Π‘Ρ‚ΡŠΠΏΠΊΠ° ΠΏΠΎ ΡΡ‚ΡŠΠΏΠΊΠ° ΠΏΠΎΡ‚ΠΎΠΊ Π·Π° Ρ‚ΠΈΠΏΠΈΡ‡Π½ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° HTTP формуляр:

  1. ΠŸΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΡΡ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° формуляр β€” Π±Ρ€Π°ΡƒΠ·ΡŠΡ€ΡŠΡ‚ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° HTTP POST заявка към URL.
  2. Π ΡƒΡ‚Π΅Ρ€ΡŠΡ‚ (чСсто считан Π·Π° част ΠΎΡ‚ слоя Controller) ΡΡŠΠΏΠΎΡΡ‚Π°Π²Ρ URL с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ дСйствиС Π½Π° Controller.
  3. Controller ΠΏΠΎΠ»ΡƒΡ‡Π°Π²Π° заявката, ΠΈΠ·Π²Π»ΠΈΡ‡Π° ΠΈ санира Π²Ρ…ΠΎΠ΄Π½ΠΈΡ‚Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ.
  4. Controller ΠΈΠ·Π²ΠΈΠΊΠ²Π° Π΅Π΄ΠΈΠ½ ΠΈΠ»ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π½Π° Model β€” Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ `Order::create($validatedData)`.
  5. Model изпълнява бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π°, взаимодСйства с Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ ΠΈ Π²Ρ€ΡŠΡ‰Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΈΠ»ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° ΠΈΠ·ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅.
  6. Controller ΠΏΡ€Π΅Π΄Π°Π²Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚Π° Π½Π° шаблон Π½Π° View.
  7. View Ρ€Π΅Π½Π΄ΠΈΡ€Π° финалния HTML (ΠΈΠ»ΠΈ JSON) ΠΈ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΡŠΡ‚ сС ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π½Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π°.

Π’ΠΎΠ·ΠΈ Ρ†ΠΈΠΊΡŠΠ» Π΅ синхронСн Π² Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½ΠΈΡ‚Π΅ MVC ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ. Π’ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈΡ‚Π΅ Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅ (Π½Π°ΠΏΡ€. React с MVC Π±Π΅ΠΊΠ΅Π½Π΄ ΠΎΡ‚ страна Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π°), слоят View ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС частично Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ ΠΈ управляван ΠΎΡ‚ асинхронни Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅Ρ‚ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ въвСТда Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΈΡ‚Π΅ MVVM ΠΈ MVP, Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ ΠΏΠΎ-Π΄ΠΎΠ»Ρƒ.

MVC срСщу ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ шаблони

Π Π°Π·Π±ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° мястото Π½Π° MVC спрямо Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄Π½ΠΈ Π΅ ΠΎΡ‚ ΡΡŠΡ‰Π΅ΡΡ‚Π²Π΅Π½ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅.

ШаблонПълно Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ΠšΠ»ΡŽΡ‡ΠΎΠ²Π° Ρ€Π°Π·Π»ΠΈΠΊΠ° ΠΎΡ‚ MVCНай-подходящ Π·Π°
MVCModel-View-ControllerΠ‘Π°Π·ΠΎΠ² шаблон; Controller ΠΌΠ΅Π΄ΠΈΠΈΡ€Π° цСлия ΠΏΠΎΡ‚ΠΎΠΊΠ‘ΡŠΡ€Π²ΡŠΡ€Π½ΠΎ Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½ΠΈ ΡƒΠ΅Π± прилоТСния, REST API
MVPModel-View-PresenterPresenter ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° цялата Π»ΠΎΠ³ΠΈΠΊΠ° Π½Π° View; View Π΅ пасивСнAndroid (наслСдСн), WinForms, UI фокусиран Π²ΡŠΡ€Ρ…Ρƒ тСстируСмост
MVVMModel-View-ViewModelViewModel ΠΈΠ·Π»Π°Π³Π° наблюдаСмо ΡΡŠΡΡ‚ΠΎΡΠ½ΠΈΠ΅; двупосочно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈReact, Angular, Vue, WPF, ΠΌΠΎΠ±ΠΈΠ»Π½ΠΈ прилоТСния
MVAModel-View-AdapterAdapter напълно раздСля Model ΠΈ ViewΠ‘Π»ΠΎΠΆΠ½ΠΈ UI систСми, изискващи строги интСрфСйсни Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈ
Flux/ReduxЕднопосочСн ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈΠ•Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΎ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅; ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½ΠΈ дСйствия; Π±Π΅Π· двупосочно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ΠœΠ°Ρ‰Π°Π±Π½ΠΈ Сдностранични прилоТСния

Π Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ MVC ΠΈ MVVM Π΅ особСно Π²Π°ΠΆΠ½ΠΎ Π·Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‰ΠΈ ΡΡŠΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΈ JavaScript Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ΠΈ. Π€Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅ ΠΊΠ°Ρ‚ΠΎ Vue.js ΠΈ Angular ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ MVVM сСмантика, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ API, ΠΊΠΎΠΉΡ‚ΠΎ Ρ‚Π΅ консумират, чСсто Π΅ структуриран ΠΊΠ°Ρ‚ΠΎ MVC. Π₯ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈΡ‚Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ са ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈ ΠΈ Π»Π΅Π³ΠΈΡ‚ΠΈΠΌΠ½ΠΈ.

ΠŸΡ€Π΅Π΄ΠΈΠΌΡΡ‚Π²Π° Π½Π° MVC

Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° отговорноститС

MVC Π½Π°Π»Π°Π³Π° Ρ‚Π²ΡŠΡ€Π΄Π° Π³Ρ€Π°Π½ΠΈΡ†Π° ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ, прСзСнтацията ΠΈ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π° Π½Π° ΠΏΠΎΡ‚ΠΎΠΊΠ°. Π’ΠΎΠ²Π° Π½Π΅ Π΅ просто ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎ ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Π½ΠΈΠ΅ β€” Ρ‚ΠΎ ΠΈΠΌΠ° ΠΏΡ€Π΅ΠΊΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΈ послСдствия:

  • UI Π΄ΠΈΠ·Π°ΠΉΠ½Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€Π°Ρ‚ шаблони, Π±Π΅Π· Π΄Π° докосват Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ Ρ€Π΅Π΄ бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°
  • Π‘Π΅ΠΊΠ΅Π½Π΄ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€ΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Ρ€Π΅Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈΡ€Π°Ρ‚ заявки към Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Π±Π΅Π· Π΄Π° Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‚ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄Π°
  • ΠšΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈΡ‚Π΅ Π½Π° сигурността Π² Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π·Π° Π²Π°Π»ΠΈΠ΄ΠΈΡ€Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π² Model Π½Π΅ изискват ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² View

НСзависима тСстируСмост

Въй ΠΊΠ°Ρ‚ΠΎ Model ΡΡŠΠ΄ΡŠΡ€ΠΆΠ° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° ΠΈ няма зависимост ΠΎΡ‚ HTTP ΠΈΠ»ΠΈ UI Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅, Ρ‚ΠΎΠΉ ΠΌΠΎΠΆΠ΅ Π΄Π° бъдС тСстван с Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈ тСстовС Ρ‡Ρ€Π΅Π· чисти извиквания Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Controllers ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ тСствани Ρ‡Ρ€Π΅Π· ΠΈΠΌΠΈΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° зависимоститС Π½Π° Model. Views ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ тСствани със снимкови ΠΈΠ»ΠΈ ΠΈΠ½Ρ‚Π΅Π³Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΈ тСстовС. Π’Π°Π·ΠΈ многослойна тСстируСмост Π΅ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Π½Π°ΠΉ-силнитС практичСски прСдимства Π½Π° MVC ΠΈ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ° CI/CD ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€ΠΈ.

ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½Π° използваСмост Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ

Π•Π΄ΠΈΠ½ Model ΠΌΠΎΠΆΠ΅ Π΄Π° обслуТва мноТСство Views. ΠŸΠΎΠΌΠΈΡΠ»Π΅Ρ‚Π΅ Π·Π° ΠΌΠΎΠ΄Π΅Π» `Product`, ΠΊΠΎΠΉΡ‚ΠΎ Π·Π°Ρ…Ρ€Π°Π½Π²Π° HTML страница с ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚, JSON ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ°, консумирана ΠΎΡ‚ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΈ XML Ρ„ΠΈΠΉΠ΄ Π·Π° Π°Π³Ρ€Π΅Π³Π°Ρ‚ΠΎΡ€ Π·Π° сравнСниС Π½Π° Ρ†Π΅Π½ΠΈ β€” всичко Ρ‚ΠΎΠ²Π° Π±Π΅Π· Π΄ΡƒΠ±Π»ΠΈΡ€Π°Π½Π΅ Π½Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°. Π’ΠΎΠ²Π° Π΅ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π΅Π½, високостойностСн сцСнарий Π·Π° ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, ΠΊΠΎΠΉΡ‚ΠΎ спСстява Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π² ΠΌΠ°Ρ‰Π°Π±.

ΠŸΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси Π·Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°

Π•ΠΊΠΈΠΏΠΈΡ‚Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° раздСлят Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚Π° ΠΏΠΎ Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° MVC. Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ работят Π²ΡŠΡ€Ρ…Ρƒ Views ΠΈ CSS, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ Π±Π΅ΠΊΠ΅Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‚ Models ΠΈ Controllers Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ. Π’ΠΎΠ·ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΡŠΠΌ Π΅ особСно Ρ†Π΅Π½Π΅Π½ Π² ΠΏΠΎ-Π³ΠΎΠ»Π΅ΠΌΠΈ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ намалява ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ ΠΏΡ€ΠΈ сливанС Π² систСмитС Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° вСрсиитС.

Зрялост Π½Π° СкосистСмата ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅

MVC Π΅ основополагащият шаблон Π½Π° Π½Π°ΠΉ-ΠΈΠ·ΠΏΠΈΡ‚Π°Π½ΠΈΡ‚Π΅ ΡƒΠ΅Π± Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅ Π² ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅. Laravel (PHP), Django (Python), Ruby on Rails, ASP.NET Core (C#), Spring MVC (Java) ΠΈ Express.js (Node.js) всички ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°Ρ‚ MVC ΠΈΠ»ΠΈ близък Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. Π˜Π·Π±ΠΎΡ€ΡŠΡ‚ Π½Π° MVC ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ дСсСтилСтия знания Π½Π° общността, ΠΊΠΎΡ€Π΅ΠΊΡ†ΠΈΠΈ Π½Π° сигурността, ORM инструмСнти ΠΈ докумСнтация Π·Π° внСдряванС.

ΠŸΡ€ΠΈ внСдряванС Π½Π° някой ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅, основната инфраструктура Π΅ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° Π²Π°ΠΆΠ½Π°, ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π½Π° ΠΊΠΎΠ΄Π°. Π‘Ρ€Π΅Π΄Π° Π·Π° VPS Π₯остинг Π²ΠΈ Π΄Π°Π²Π° пълСн ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ вСрсиитС Π½Π° PHP, Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»Π½ΠΈΡ‚Π΅ срСди Π½Π° Python ΠΈ конфигурацията Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° β€” ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΎ ΠΏΡ€ΠΈ изпълнСниС Π½Π° спСцифични Π·Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° зависимости, ΠΊΠΎΠΈΡ‚ΠΎ сподСлСнитС срСди Π½Π΅ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Ρ‚.

ΠΠ΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π½Π° MVC

Π”ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ Π·Π° прости прилоТСния

Π—Π° Сдностранична ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°, статичСн ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ² сайт ΠΈΠ»ΠΈ инструмСнт, управляван ΠΎΡ‚ скриптовС, MVC въвСТда структурни Ρ€Π°Π·Ρ…ΠΎΠ΄ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ носят Π½ΠΈΠΊΠ°ΠΊΠ²Π° Π²ΡŠΠ·Π²Ρ€Π°Ρ‰Π°Π΅ΠΌΠΎΡΡ‚. Π‘ΡŠΠ·Π΄Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Model, View ΠΈ Controller Π·Π° формуляр Π·Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚, ΠΊΠΎΠΉΡ‚ΠΎ ΠΈΠ·ΠΏΡ€Π°Ρ‰Π° Π΅Π΄ΠΈΠ½ ΠΈΠΌΠ΅ΠΉΠ», Π΅ ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Π° цСрСмония Π±Π΅Π· ΠΈΠ½ΠΆΠ΅Π½Π΅Ρ€Π½Π° стойност. По-прости шаблони β€” Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° функция-ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ, Π±Π΅Π·ΡΡŠΡ€Π²ΡŠΡ€Π½Π° ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° ΠΈΠ»ΠΈ Π΄ΠΎΡ€ΠΈ статична HTML страница β€” са ΠΏΠΎ-подходящи.

По-ΡΡ‚Ρ€ΡŠΠΌΠ½Π° ΠΊΡ€ΠΈΠ²Π° Π½Π° въвСТданС

MVC изисква Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π΄Π° усвоят Ρ€ΡƒΡ‚ΠΈΡ€Π°Π½Π΅, ΠΆΠΈΠ·Π½Π΅Π½ΠΈ Ρ†ΠΈΠΊΠ»ΠΈ Π½Π° заявки, ORM Ρ€Π΅Π»Π°Ρ†ΠΈΠΈ, шаблонни машини ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π·Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° отговорноститС, ΠΏΡ€Π΅Π΄ΠΈ Π΄Π° Π½Π°ΠΏΠΈΡˆΠ°Ρ‚ Π½ΠΈΡ‚ΠΎ Π΅Π΄ΠΈΠ½ ΠΏΡ€ΠΎΠ΄ΡƒΠΊΡ‚ΠΈΠ²Π΅Π½ Ρ€Π΅Π΄ ΠΊΠΎΠ΄. ΠœΠ»Π°Π΄ΡˆΠΈΡ‚Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ чСсто Π½Π°Ρ€ΡƒΡˆΠ°Π²Π°Ρ‚ Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° MVC ΠΏΠΎΠ΄ натиска Π½Π° ΠΊΡ€Π°ΠΉΠ½ΠΈ сроковС, създавайки Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ Π±ΡŠΡ€ΠΊΠΎΡ‚ΠΈΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€Π°Ρ‚ слоТността Π½Π° MVC с Π½ΠΈΡ‚ΠΎ Π΅Π΄Π½ΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎΠ²ΠΈΡ‚Π΅ прСдимства.

РазпространСниС Π½Π° шаблонСн ΠΊΠΎΠ΄

ВсСки Π½ΠΎΠ² рСсурс Π² ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ MVC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ изисква ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ Ρ‚Ρ€ΠΈ Ρ„Π°ΠΉΠ»Π°: Model, View (чСсто мноТСство) ΠΈ Controller. Π’ Π³ΠΎΠ»Π΅ΠΌΠΈ прилоТСния с дСсСтки ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Ρ‚ΠΎΠ²Π° сС ΡƒΠΌΠ½ΠΎΠΆΠ°Π²Π° Π΄ΠΎ стотици Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅. Π‘Π΅Π· дисциплинирани ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈ Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅ ΠΈ структура Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈΡ‚Π΅, навигацията сС ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π° Π² ΠΊΠΎΠ³Π½ΠΈΡ‚ΠΈΠ²Π½Π° тСТСст.

Риск ΠΎΡ‚ Fat Controller

ΠšΠ°ΠΊΡ‚ΠΎ бСшС отбСлязано ΠΏΠΎ-Π³ΠΎΡ€Π΅, Controllers са Π½Π°ΠΉ-злоупотрСбяваният слой Π² MVC систСмитС. ΠšΠΎΠ³Π°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ Π½Π΅ са сигурни Π΄Π°Π»ΠΈ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΈΠ½Π°Π΄Π»Π΅ΠΆΠΈ Π½Π° Model ΠΈΠ»ΠΈ Controller, тя ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ΠΈΠ²Π° Π² Controller. Π‘ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ Π½Π° Π²Ρ€Π΅ΠΌΠ΅Ρ‚ΠΎ, Controllers Π½Π°Ρ‚Ρ€ΡƒΠΏΠ²Π°Ρ‚ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ Π·Π° автСнтикация, ΠΈΠ·ΠΏΡ€Π°Ρ‰Π°Π½Π΅ Π½Π° ΠΈΠΌΠ΅ΠΉΠ»ΠΈ, извиквания Π·Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° плащания ΠΈ Π»ΠΎΠ³Π²Π°Π½Π΅ β€” ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π°ΠΉΠΊΠΈ сС Π² нСтСстируСми ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚ΠΈ. НалаганСто Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈ Controllers изисква ΠΈΠ·Ρ€ΠΈΡ‡Π½ΠΈ стандарти Π½Π° Π΅ΠΊΠΈΠΏΠ° ΠΈ дисциплина ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π°.

Π‘Π²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° View ΠΈ Controller

Π’ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅, Controllers са тясно ΠΎΠ±Π²ΡŠΡ€Π·Π°Π½ΠΈ с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΈ шаблони Π½Π° View ΠΏΠΎ конвСнция Π·Π° ΠΈΠΌΠ΅Π½ΡƒΠ²Π°Π½Π΅. Π”ΠΎΠΊΠ°Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° намалява конфигурацията, Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π°Π²Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π°. Замяната Π½Π° View с Ρ€Π°Π·Π»ΠΈΡ‡Π½Π° стратСгия Π·Π° Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½Π΅ (Π½Π°ΠΏΡ€. ΠΏΡ€Π΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ ΠΎΡ‚ ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½ HTML към JSON API) чСсто изисква прСструктуриранС Π½Π° Controller, ΠΊΠΎΠ΅Ρ‚ΠΎ Ρ‚Π΅ΠΎΡ€Π΅Ρ‚ΠΈΡ‡Π½ΠΎ трябва Π΄Π° бъдС само загриТСност Π½Π° слоя View.

Π‘ΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΡ Π·Π° производитСлност

АбстрактнитС слоСвС Π½Π° MVC Π²ΡŠΠ²Π΅ΠΆΠ΄Π°Ρ‚ ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΠΌΠΎ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π² сравнСниС с Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° с Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€. ΠžΠ±Π΅ΠΊΡ‚Π½ΠΎ-Ρ€Π΅Π»Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΡ‚ΠΎ ΡΡŠΠΏΠΎΡΡ‚Π°Π²ΡΠ½Π΅ Π² Model, ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° шаблони Π² View ΠΈ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° middleware Π² Controller добавят латСнтност. Π—Π° прилоТСния с висока пропускатСлна способност, ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‰ΠΈ хиляди заявки Π² сСкунда, Ρ‚ΠΎΠ²Π° Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ трябва Π΄Π° бъдС адрСсирано Ρ‡Ρ€Π΅Π· стратСгии Π·Π° ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ (ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΠΊΠΎΠ΄, ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈ ΠΎΡ‚ заявки, CDN слоСвС), Π° Π½Π΅ Ρ‡Ρ€Π΅Π· изоставянС Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π°.

Π—Π° прилоТСния, изискващи постоянна висока производитСлност ΠΏΡ€ΠΈ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅, ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π²Π°ΡˆΠ΅Ρ‚ΠΎ MVC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Dedicated Server Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° с ΡˆΡƒΠΌΠ½ΠΈΡ съсСд, ΠΏΡ€ΠΈΡΡŠΡ‰ Π½Π° сподСлСнитС срСди, ΠΈ Π²ΠΈ Π΄Π°Π²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π΅Π½ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π²ΡŠΡ€Ρ…Ρƒ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈΡ‚Π΅ Π·Π° настройка Π½Π° ΡΡŠΡ€Π²ΡŠΡ€Π° ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΈ Π½Π° PHP-FPM ΠΏΡƒΠ», Nginx Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси ΠΈ обСдиняванС Π½Π° Π²Ρ€ΡŠΠ·ΠΊΠΈ към Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ.

Π Π΅Π°Π»Π½ΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ Π½Π° MVC Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅

Laravel (PHP)

Laravel ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° MVC с Eloquent ORM ΠΊΠ°Ρ‚ΠΎ слой Model, Blade ΡˆΠ°Π±Π»ΠΎΠ½ΠΈΡ€Π°Π½Π΅ ΠΊΠ°Ρ‚ΠΎ слой View ΠΈ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π½ΠΈ ΠΎΡ‚ artisan Controllers. НСговият ΠΊΠΎΠ½Ρ‚Π΅ΠΉΠ½Π΅Ρ€ Π·Π° услуги ΠΈ систСма Π·Π° ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° зависимости правят лСсно ΠΏΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°Π½Π΅Ρ‚ΠΎ Π½Π° Ρ‚ΡŠΠ½ΠΊΠΈ Controllers Ρ‡Ρ€Π΅Π· ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅ Π½Π° класовС услуги. Laravel Π΅ Π½Π°ΠΉ-ΡˆΠΈΡ€ΠΎΠΊΠΎ внСдрСният PHP MVC Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ ΠΈ Ρ€Π°Π·ΠΏΠΎΠ»Π°Π³Π° с ΠΎΠ±ΡˆΠΈΡ€Π½Π° докумСнтация Π·Π° шаблони Π·Π° производствСно внСдряванС.

Django (Python)

Django тСхничСски ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° шаблон MTV (Model-Template-View), ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ Django β€žView” Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»Π½ΠΎ Π΅ΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½Ρ‚Π΅Π½ Π½Π° Controller Π² MVC, Π° β€žTemplate” ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²Π° Π½Π° View Π² MVC. Π Π°Π·Π³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡ‡Π½ΠΎ, Π° Π½Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ. ORM Π½Π° Django Π΅ срСд Π½Π°ΠΉ-ΠΌΠΎΡ‰Π½ΠΈΡ‚Π΅ Π² ΠΊΠΎΠΉ Π΄Π° Π΅ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ, Π° нСговият административСн интСрфСйс Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° CRUD Views Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚ Π΄Π΅Ρ„ΠΈΠ½ΠΈΡ†ΠΈΠΈΡ‚Π΅ Π½Π° Model β€” Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½ΠΎ прСдимство Π·Π° производитСлността.

Ruby on Rails

Rails Π΅ ΠΏΠΈΠΎΠ½Π΅Ρ€ Π½Π° конвСнцията Π½Π°Π΄ конфигурацията Π² MVC Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅. НСговото скСлС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π° пълни MVC стСковС ΠΎΡ‚ Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π° ΠΊΠΎΠΌΠ°Π½Π΄Π°. ActiveRecord (слоят Model) Π΅ особСно ΠΈΠ·Ρ€Π°Π·ΠΈΡ‚Π΅Π»Π΅Π½. ΠœΠ½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Rails Π·Π° структурата ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Π΅ΠΊΠΈΠΏΠΈΡ‚Π΅ ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π°Ρ‚ ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π² Π΄Π΅Π±Π°Ρ‚ΠΈΡ€Π°Π½Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π² ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π·Π° смСтка Π½Π° Π³ΡŠΠ²ΠΊΠ°Π²ΠΎΡΡ‚Ρ‚Π°, ΠΊΠΎΠ³Π°Ρ‚ΠΎ ΠΊΠΎΠ½Π²Π΅Π½Ρ†ΠΈΠΈΡ‚Π΅ Π½Π° Rails Π²Π»ΠΈΠ·Π°Ρ‚ Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с изискванията Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

ASP.NET Core MVC

Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡΡ‚Π° Π½Π° Microsoft Π΅ силно Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½Π°, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ Ρ‚ΠΈΠΏΠΎΠ²Π°Ρ‚Π° систСма Π½Π° C# Π·Π° Π½Π°Π»Π°Π³Π°Π½Π΅ Π½Π° Π΄ΠΎΠ³ΠΎΠ²ΠΎΡ€ΠΈΡ‚Π΅ Model-View-Controller ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅, Π° Π½Π΅ ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° изпълнСниС. Π’ΠΎΠ²Π° Π΅Π»ΠΈΠΌΠΈΠ½ΠΈΡ€Π° Ρ†Π΅Π»ΠΈ ΠΊΠ°Ρ‚Π΅Π³ΠΎΡ€ΠΈΠΈ Π³Ρ€Π΅ΡˆΠΊΠΈ, ΠΎΠ±ΠΈΡ‡Π°ΠΉΠ½ΠΈ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ Ρ‚ΠΈΠΏΠΈΠ·ΠΈΡ€Π°Π½ΠΈΡ‚Π΅ MVC Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅. Tag Helpers ΠΈ Razor Pages ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Ρ‚ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ стратСгии Π·Π° Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½Π΅ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° ΡΡŠΡ‰Π°Ρ‚Π° СкосистСма.

MVC Π² API-first ΠΈ Π±Π΅Π·Π³Π»Π°Π²ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ

Π—Π½Π°Ρ‡ΠΈΡ‚Π΅Π»Π½Π° Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡ Π² ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° MVC Π΅ ΡˆΠ°Π±Π»ΠΎΠ½ΡŠΡ‚ headless MVC, ΠΏΡ€ΠΈ ΠΊΠΎΠΉΡ‚ΠΎ слоят View Π΅ изцяло Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΎΡ‚ слой Π·Π° JSON сСриализация. Controller Π²Ρ€ΡŠΡ‰Π° структурирани Π΄Π°Π½Π½ΠΈ вмСсто Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½ HTML, Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΎ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (React, Vue, ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅) ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° прСзСнтацията.

Π’ Ρ‚Π°Π·ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°:

  • Π‘Π»ΠΎΠ΅Π²Π΅Ρ‚Π΅ Model ΠΈ Controller остават ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ‡Π½ΠΈ с традиционния MVC
  • Блоят View сС ΠΏΡ€Π΅Π²Ρ€ΡŠΡ‰Π° Π² сСриализатор (Π½Π°ΠΏΡ€. Django REST Framework сСриализатори, Laravel API Resources)
  • Π€Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΡŠΡ‚ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° собствСн MVVM шаблон нСзависимо

Π’ΠΎΠ²Π° раздСлянС Π²Π΅Ρ‡Π΅ Π΅ доминиращият шаблон Π·Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Ρ‰ΠΈ Π΅Π΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, Ρ‚ΡŠΠΉ ΠΊΠ°Ρ‚ΠΎ ΠΈ Π΄Π²Π°Ρ‚Π° ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π° консумират Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ MVC API Π±Π΅ΠΊΠ΅Π½Π΄.

Π—Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΈ headless MVC Π±Π΅ΠΊΠ΅Π½Π΄ΠΈ Π·Π°Π΅Π΄Π½ΠΎ с Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ внСдрявания, ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎΡ‚ΠΎ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° SSL Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ. Всяка API ΠΊΡ€Π°ΠΉΠ½Π° Ρ‚ΠΎΡ‡ΠΊΠ° трябва Π΄Π° сС обслуТва Ρ‡Ρ€Π΅Π· HTTPS β€” SSL Π‘Π΅Ρ€Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΈ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ осигурСни ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎ подновявани, ΠΏΡ€Π΅Π΄ΠΈ ΠΊΠ°ΠΊΡŠΠ²Ρ‚ΠΎ ΠΈ Π΄Π° Π΅ производствСн Ρ‚Ρ€Π°Ρ„ΠΈΠΊ Π΄Π° достигнС Π²Π°ΡˆΠ΅Ρ‚ΠΎ MVC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅.

MVC ΠΈ микроуслуги

Π’ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈΡ‚Π΅ Π½Π° микроуслуги, MVC сС ΠΏΡ€ΠΈΠ»Π°Π³Π° Π½Π° Π½ΠΈΠ²ΠΎ услуга, Π° Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Всяка микроуслуга ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° собствСна MVC структура Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ, Π΄ΠΎΠΊΠ°Ρ‚ΠΎ слоят Π·Π° комуникация ΠΌΠ΅ΠΆΠ΄Ρƒ услугитС (REST, gRPC, опашки Π·Π° ΡΡŠΠΎΠ±Ρ‰Π΅Π½ΠΈΡ) Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°Π΄ абстракцията Π½Π° MVC. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ прСдимствата Π½Π° MVC β€” тСстируСмост, Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° отговорноститС, ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½Π° използваСмост β€” сС ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Ρ‚ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΏΡ€Π΅Π· Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° услугитС.

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΎΡ‚ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΎ ΡΡŠΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π΅, Ρ‡Π΅ Models Π² контСкста Π½Π° микроуслуги прСдставляват ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈ Π΄ΠΎΠΌΠ΅ΠΉΠ½ контСксти, Π° Π½Π΅ Π³Π»ΠΎΠ±Π°Π»Π½ΠΈ схСми Π½Π° Π΄Π°Π½Π½ΠΈ. МодСл `User` Π² услуга Π·Π° автСнтикация ΠΈ ΠΌΠΎΠ΄Π΅Π» `User` Π² услуга Π·Π° Ρ„Π°ΠΊΡ‚ΡƒΡ€ΠΈΡ€Π°Π½Π΅ са ΡƒΠΌΠΈΡˆΠ»Π΅Π½ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ с Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ отговорности.

Π˜Π·Π±ΠΎΡ€ Π½Π° ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° хостинг срСда Π·Π° MVC прилоТСния

MVC Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅ ΠΈΠΌΠ°Ρ‚ спСцифични изисквания към инфраструктурата, ΠΊΠΎΠΈΡ‚ΠΎ сС Ρ€Π°Π·Π»ΠΈΡ‡Π°Π²Π°Ρ‚ ΠΎΡ‚ статичнитС сайтовС ΠΈΠ»ΠΈ проститС PHP скриптовС:

  • Π£ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° процСси: PHP-FPM, Gunicorn, Puma ΠΈΠ»ΠΈ Kestrel трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π°Π½ΠΈ с подходящ Π±Ρ€ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ процСси
  • ΠŸΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π½Π° срСдата: Π˜Π΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΈ Π΄Π°Π½Π½ΠΈ Π·Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ, API ΠΊΠ»ΡŽΡ‡ΠΎΠ²Π΅ ΠΈ Ρ‚Π°ΠΉΠ½ΠΈ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ трябва Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΈΠ½ΠΆΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½ΠΈ сигурно
  • Π”ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π°Ρ‚Π° систСма: ΠšΠΎΠΌΠΏΠΈΠ»ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π°ΠΊΡ‚ΠΈΠ²ΠΈ (Webpack, Vite), записванСто Π½Π° Π»ΠΎΠ³ΠΎΠ²Π΅ ΠΈ ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° кСша изискват Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΎΡ€ΠΈΠΈ с ΠΏΡ€Π°Π²ΠΎ Π½Π° запис
  • Π‘Π²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ с Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ: Π’Ρ€ΡŠΠ·ΠΊΠΈ с ниска латСнтност към PostgreSQL, MySQL ΠΈΠ»ΠΈ Redis са ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ Π·Π° производитСлността Π½Π° ORM

VPS с cPanel осигурява управлявана срСда, която ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° ΠΌΠ½ΠΎΠ³ΠΎ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Ρ‡Ρ€Π΅Π· Π³Ρ€Π°Ρ„ΠΈΡ‡Π΅Π½ интСрфСйс, ΠΊΠ°Ρ‚ΠΎ ΡΡŠΡ‰Π΅Π²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Π·Π°ΠΏΠ°Π·Π²Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π½Π° root Π½ΠΈΠ²ΠΎ Π·Π° спСцифична Π·Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° конфигурация. Π—Π° Π΅ΠΊΠΈΠΏΠΈ, ΠΏΡ€Π΅Π΄ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‰ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ само Ρ‡Ρ€Π΅Π· CLI, ΠΏΠ»Π°Π½ Π·Π° VPS Π₯остинг с пълСн SSH Π΄ΠΎΡΡ‚ΡŠΠΏ ΠΈ Π±Π΅Π· Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅ ΠΎΡ‚ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Π½ ΠΏΠ°Π½Π΅Π» Π΅ ΠΏΠΎ-производитСлният ΠΈΠ·Π±ΠΎΡ€.

Π—Π° Π΅ΠΊΠΈΠΏΠΈ, Π½ΡƒΠΆΠ΄Π°Π΅Ρ‰ΠΈ сС ΠΎΡ‚ доставка Π½Π° Ρ‚Ρ€Π°Π½Π·Π°ΠΊΡ†ΠΈΠΎΠ½Π½ΠΈ ΠΈΠΌΠ΅ΠΉΠ»ΠΈ, ΠΈΠ½Ρ‚Π΅Π³Ρ€ΠΈΡ€Π°Π½Π° с тяхното MVC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ (формуляри Π·Π° ΠΊΠΎΠ½Ρ‚Π°ΠΊΡ‚, рСгистрация Π½Π° ΠΏΠΎΡ‚Ρ€Π΅Π±ΠΈΡ‚Π΅Π»ΠΈ, Π½ΡƒΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€ΠΎΠ»ΠΈ), ΡΡŠΡ‡Π΅Ρ‚Π°Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° вашия ΡΡŠΡ€Π²ΡŠΡ€ Π½Π° прилоТСния с dedicated услуга Π·Π° ИмСйл Π₯остинг осигурява Π½Π°Π΄Π΅ΠΆΠ΄Π½Π° доставка ΠΈ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π° конфигурация Π½Π° SPF/DKIM β€” Π½Π΅Ρ‰ΠΎ, ΠΊΠΎΠ΅Ρ‚ΠΎ ΡΡŠΡ€Π²ΡŠΡ€ΠΈΡ‚Π΅ Π½Π° прилоТСния Π½Π΅ трябва Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π°Ρ‚ Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ.

ВСхничСска ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Π·Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: Кога Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ MVC

Π‘Ρ†Π΅Π½Π°Ρ€ΠΈΠΉMVC подходящ Π»ΠΈ Π΅?ΠŸΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡ΠΈΡ‚Π΅Π»Π½Π° Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π°
ΠœΠ°Ρ‰Π°Π±Π½ΠΎ ΡƒΠ΅Π± ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ с мноТСство Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΠ”Π°β€”
REST API с ΠΎΡ‚Π΄Π΅Π»Π΅Π½ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ ΠΊΠ»ΠΈΠ΅Π½Ρ‚Π”Π° (headless MVC)β€”
ΠŸΡ€ΠΎΡΡ‚ статичСн ΠΌΠ°Ρ€ΠΊΠ΅Ρ‚ΠΈΠ½Π³ΠΎΠ² сайтНСБтатичСн HTML / SSG
Едностранична ΠΏΠΎΠΌΠΎΡ‰Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ° с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π½Π° логикаНСЕдиничСн ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ / Π±Π΅Π·ΡΡŠΡ€Π²ΡŠΡ€Π½Π° функция
Π‘Π΅ΠΊΠ΅Π½Π΄ Π·Π° ΠΌΠΎΠ±ΠΈΠ»Π½ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Π”Π° (API-first MVC)β€”
ΠœΠΈΠΊΡ€ΠΎΡƒΡΠ»ΡƒΠ³Π° с ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ Π΄ΠΎΠΌΠ΅ΠΉΠ½ контСкстДа—
Π‘ΡŠΡ€Π· ΠΏΡ€ΠΎΡ‚ΠΎΡ‚ΠΈΠΏ / MVP с 1 Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ‘ΠΈΡ‚ΡƒΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠœΠΈΠΊΡ€ΠΎ-Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ (Flask, Sinatra, Express)
ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π² Ρ€Π΅Π°Π»Π½ΠΎ Π²Ρ€Π΅ΠΌΠ΅ (Ρ‡Π°Ρ‚, Ρ‚Π°Π±Π»ΠΎ Π½Π° ΠΆΠΈΠ²ΠΎ)ЧастичноMVC Π±Π΅ΠΊΠ΅Π½Π΄ + WebSocket слой

ΠšΠ»ΡŽΡ‡ΠΎΠ²ΠΈ тСхничСски ΠΈΠ·Π²ΠΎΠ΄ΠΈ

  • ΠŸΠΎΠ΄Π΄ΡŠΡ€ΠΆΠ°ΠΉΡ‚Π΅ Controllers Ρ‚ΡŠΠ½ΠΊΠΈ. Ако ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° Controller надвишава 20–30 Ρ€Π΅Π΄Π°, ΠΈΠ·Π²Π»Π΅Ρ‡Π΅Ρ‚Π΅ Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π² клас услуга ΠΈΠ»ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π° Model. Π’ΠΎΠ²Π° Π΅ СдинствСната Π½Π°ΠΉ-Π²ΡŠΠ·Π΄Π΅ΠΉΡΡ‚Π²Π°Ρ‰Π° MVC дисциплина.
  • Model = Π΄ΠΎΠΌΠ΅ΠΉΠ½ Π»ΠΎΠ³ΠΈΠΊΠ°, Π° Π½Π΅ само Ρ€Π΅Π΄ΠΎΠ²Π΅ ΠΎΡ‚ Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ. Π’Ρ€Π΅Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ слоя Model ΠΊΠ°Ρ‚ΠΎ Π΄ΠΎΠΌ Π½Π° всички бизнСс ΠΏΡ€Π°Π²ΠΈΠ»Π°. АнСмичнитС ΠΌΠΎΠ΄Π΅Π»ΠΈ са ΠΏΡ€ΠΈΠ·Π½Π°ΠΊ Π·Π° лош Π΄ΠΈΠ·Π°ΠΉΠ½.
  • ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Views Π·Π° Π΅Π΄ΠΈΠ½ Model Π΅ функция, Π° Π½Π΅ ΠΊΡ€Π°Π΅Π½ случай. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ Π²Π°ΡˆΠΈΡ‚Π΅ Models ΠΈ Controllers Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ View-агностични ΠΎΡ‚ самото Π½Π°Ρ‡Π°Π»ΠΎ.
  • MVC Π½Π΅ прСдотвратява ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ с производитСлността β€” Ρ‚ΠΎΠΉ Π³ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π°. Π˜ΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° заявки, eager loading (прСдотвратяванС Π½Π° N+1 заявки) ΠΈ HTTP ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° Π½ΠΈΠ²ΠΎ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ.
  • ВСствайтС Model ΠΏΡŠΡ€Π²ΠΎ, Π²ΠΈΠ½Π°Π³ΠΈ. Π•Π΄ΠΈΠ½ΠΈΡ‡Π½ΠΈΡ‚Π΅ тСстовС Π·Π° Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° Π½Π° Model са тСстовСтС с Π½Π°ΠΉ-висока ROI Π² ΠΊΠΎΠ΅ Π΄Π° Π΅ MVC ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π‘Π»Π΅Π΄Π²Π°Ρ‚ тСстовСтС Π·Π° Controller ΠΈ View.
  • Π—Π° headless Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€ΠΈ, Ρ‚Ρ€Π΅Ρ‚ΠΈΡ€Π°ΠΉΡ‚Π΅ сСриализаторитС ΠΊΠ°Ρ‚ΠΎ вашия слой View. ΠŸΡ€ΠΈΠ»Π°Π³Π°ΠΉΡ‚Π΅ ΡΡŠΡ‰Π°Ρ‚Π° дисциплина β€” Π½ΠΈΠΊΠ°ΠΊΠ²Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° Π² сСриализаторитС β€” която Π±ΠΈΡ…Ρ‚Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠΈΠ»ΠΈ към HTML шаблони.
  • НалагайтС Π³Ρ€Π°Π½ΠΈΡ†ΠΈΡ‚Π΅ Π½Π° MVC ΠΏΡ€ΠΈ ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π°. АрхитСктурното ΠΎΡ‚ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΠ΅ сС случва постСпСнно. Π•Π΄ΠΈΠ½ΠΈΡ‡Π½Π° ΠΏΠΎΠ»ΠΈΡ‚ΠΈΠΊΠ° Π·Π° ΠΏΡ€Π΅Π³Π»Π΅Π΄ Π½Π° ΠΊΠΎΠ΄Π°, която ΠΌΠ°Ρ€ΠΊΠΈΡ€Π° бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° Π² Controllers, прСдотвратява Π³ΠΎΠ΄ΠΈΠ½ΠΈ тСхничСски дълг.

ЧСсто Π·Π°Π΄Π°Π²Π°Π½ΠΈ Π²ΡŠΠΏΡ€ΠΎΡΠΈ

Каква Π΅ Ρ€Π°Π·Π»ΠΈΠΊΠ°Ρ‚Π° ΠΌΠ΅ΠΆΠ΄Ρƒ MVC ΠΈ MVVM?

Π’ MVC, Controller ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° потрСбитСлския Π²Ρ…ΠΎΠ΄ ΠΈ Π°ΠΊΡ‚ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€Π° ΠΈ Model, ΠΈ View. Π’ MVVM, ViewModel ΠΈΠ·Π»Π°Π³Π° наблюдаСми ΠΏΠΎΡ‚ΠΎΡ†ΠΈ ΠΎΡ‚ Π΄Π°Π½Π½ΠΈ ΠΈ View сС ΡΠ²ΡŠΡ€Π·Π²Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚Π½ΠΎ с тях, позволявайки двупосочно ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π±Π΅Π· ΠΈΠ·Ρ€ΠΈΡ‡Π½Π° мСдиация ΠΎΡ‚ Controller. MVVM Π΅ ΠΏΠΎ-подходящ Π·Π° Ρ€Π΅Π°ΠΊΡ‚ΠΈΠ²Π½ΠΈ Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠΎΠ²Π΅; MVC Π΅ ΠΏΠΎ-подходящ Π·Π° ΡΡŠΡ€Π²ΡŠΡ€Π½ΠΎ Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½ΠΈ прилоТСния ΠΈ REST API.

МоТС ли MVC да сС използва за REST API бСз слой View?

Π”Π°. Π’ API-first MVC, слоят View Π΅ Π·Π°ΠΌΠ΅Π½Π΅Π½ ΠΎΡ‚ слой Π·Π° сСриализация, ΠΊΠΎΠΉΡ‚ΠΎ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ²Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ Π½Π° Model Π² JSON ΠΈΠ»ΠΈ XML. Controller Π²Ρ€ΡŠΡ‰Π° сСриализирани ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ΠΈ вмСсто Ρ€Π΅Π½Π΄ΠΈΡ€Π°Π½ΠΈ шаблони. Π’ΠΎΠ²Π° Π΅ стандартният шаблон Π² Laravel API Resources, Django REST Framework ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅Ρ‚Π΅ `respond_to` Π½Π° Rails.

Какво причинява Π°Π½Ρ‚ΠΈΡˆΠ°Π±Π»ΠΎΠ½Π° Fat Controller ΠΈ ΠΊΠ°ΠΊ Π΄Π° Π³ΠΎ ΠΏΠΎΠΏΡ€Π°Π²ΠΈΡ‚Π΅?

Fat Controllers са Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ ΠΎΡ‚ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ, поставящи бизнСс Π»ΠΎΠ³ΠΈΠΊΠ° Π² ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈΡ‚Π΅ Π½Π° Controller, Π·Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΠΎΠΉ Π΅ Π½Π°ΠΉ-Π΄ΠΎΡΡ‚ΡŠΠΏΠ½Π°Ρ‚Π° Π²Ρ…ΠΎΠ΄Π½Π° Ρ‚ΠΎΡ‡ΠΊΠ°. Π Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΅ Π΄Π° сС Π²ΡŠΠ²Π΅Π΄Π°Ρ‚ класовС услуги ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ Π·Π° случаи Π½Π° ΡƒΠΏΠΎΡ‚Ρ€Π΅Π±Π°, към ΠΊΠΎΠΈΡ‚ΠΎ Controllers Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Ρ‚. Controller трябва Π΄Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚Π²Π° само парсиранСто Π½Π° заявки, Π΄Π΅Π»Π΅Π³ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€Π° β€” Π½ΠΈΠΊΠΎΠ³Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

ΠŸΠΎΠ΄Ρ…ΠΎΠ΄ΡΡ‰ Π»ΠΈ Π΅ MVC Π·Π° микроуслуги?

Π”Π°, Π½Π° Π½ΠΈΠ²ΠΎ ΠΎΡ‚Π΄Π΅Π»Π½Π° услуга. Всяка микроуслуга ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚ΠΈΡ€Π° MVC Π²ΡŠΡ‚Ρ€Π΅ΡˆΠ½ΠΎ, Π·Π° Π΄Π° ΠΎΡ€Π³Π°Π½ΠΈΠ·ΠΈΡ€Π° собствСния си ΠΊΠΎΠ΄. Π¨Π°Π±Π»ΠΎΠ½ΡŠΡ‚ MVC Π½Π΅ Π²Π»ΠΈΠ·Π° Π² ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ с ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ Π½Π° микроуслугитС; Ρ‚ΠΎΠΉ просто Ρ€Π°Π±ΠΎΡ‚ΠΈ Π² Ρ€Π°ΠΌΠΊΠΈΡ‚Π΅ Π½Π° Π³Ρ€Π°Π½ΠΈΡ†Π°Ρ‚Π° Π½Π° услугата, Π° Π½Π΅ Π² цялата систСма.

Кой MVC Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ ΠΈΠΌΠ° Π½Π°ΠΉ-Π΄ΠΎΠ±Ρ€Π° производитСлност Π·Π° прилоТСния с висок Ρ‚Ρ€Π°Ρ„ΠΈΠΊ?

ΠŸΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»Π½ΠΎΡΡ‚Ρ‚Π° Π½Π° Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ° зависи силно ΠΎΡ‚ конфигурацията Π½Π° инфраструктурата, Π° Π½Π΅ ΠΎΡ‚ самия Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ. ASP.NET Core MVC ΠΈ Spring MVC (Java) постигат Π½Π°ΠΉ-висока пропускатСлна способност Π² Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊΠΎΠ²Π΅Ρ‚Π΅. Laravel ΠΈ Django ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π³ΠΈ настигнат с ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° ΠΎΠΏΠΊΠΎΠ΄ (OPcache), ΠΊΠ΅ΡˆΠΈΡ€Π°Π½Π΅ Π½Π° заявки (Redis) ΠΈ Ρ…ΠΎΡ€ΠΈΠ·ΠΎΠ½Ρ‚Π°Π»Π½ΠΎ ΠΌΠ°Ρ‰Π°Π±ΠΈΡ€Π°Π½Π΅. Вясното място Π² ΠΏΠΎΠ²Π΅Ρ‡Π΅Ρ‚ΠΎ MVC прилоТСния Π΅ СфСктивността Π½Π° заявкитС към Π±Π°Π·Π°Ρ‚Π° Π΄Π°Π½Π½ΠΈ, Π° Π½Π΅ Π½Π°Ρ‚ΠΎΠ²Π°Ρ€Π²Π°Π½Π΅Ρ‚ΠΎ ΠΎΡ‚ Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊΠ°.