ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ Π³Π»Π°Π²Π½ΠΎΠΌ: Clean Architecture, Robert C. Martin

Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ рассказ ΠΎ Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠΈ ΠΎ ΠΊΠ½ΠΈΠ³Π΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄ΡƒΡ‚ рассмотрСны Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ понятия ΠΈ знания, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, благодаря этой ΠΊΠ½ΠΈΠ³Π΅, Π±Ρ‹Π»ΠΈ ΠΈΠ·ΡƒΡ‡Π΅Π½Ρ‹

АрхитСктура

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ Π²Ρ‹, читая эту ΠΏΡƒΠ±Π»ΠΈΠΊΠ°Ρ†ΠΈΡŽ, Π΄Π°Ρ‚ΡŒ Ρ‡Π΅Ρ‚ΠΊΠΈΠΉ ΠΎΡ‚Π²Π΅Ρ‚ Π½Π° вопрос, Ρ‡Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°? Π§Ρ‚ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π² контСкстС программирования ΠΈ проСктирования? ΠšΠ°ΠΊΡƒΡŽ Ρ€ΠΎΠ»ΡŒ ΠΎΠ½Π° ΠΈΠ³Ρ€Π°Π΅Ρ‚? Достаточно ΠΌΠ½ΠΎΠ³ΠΎ нСясностСй Π΅ΡΡ‚ΡŒ Π² этом Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π΅. И Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ всС понятно, Π½ΠΎ ΠΊΠ°ΠΊ-Ρ‚ΠΎ абстрактно, ΠΈ Π±Π΅Π· точности. ΠœΠ°Ρ€Ρ‚ΠΈΠ½ считаСт, ΠΈ я с Π½ΠΈΠΌ солидарСн, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Π²Π΅ ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ…:

  1. ПовСдСниС (behavior) β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, сСрвис) выполняСт.
  2. АрхитСктура β€” этот Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π² большСй ΠΌΠ΅Ρ€Π΅ ΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ прилоТСния.

Но Π΄Π°ΠΆΠ΅, Ссли ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΎΡ‡Π΅Π½ΡŒ Ρ…ΠΎΡ€ΠΎΡˆΠΎ выполняСт Π·Π°Π΄Π°Ρ‡Ρƒ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΎΠ½Π° Π΄ΠΎΠ»ΠΆΠ½Π° Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒ, это совсСм Π½Π΅ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ. АрхитСктура β€” это Π½Π΅ ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ прилоТСния. АрхитСктура β€” это ΠΎ лСгкости измСняСмости, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” это ΠΎ лСгкости развСртывания, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° β€” это ΠΎ нСзависимости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ. АрхитСктура β€” это ΠΎ скорости, с ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½ΠΎΠ²ΠΎΠΌΡƒ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΡƒ Π² ΠΊΠΎΠΌΠ°Π½Π΄Π΅

И Π²ΠΎΡ‚ ΠΊΠ°ΠΊ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ эту Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ, ΠΊΠ°ΠΊ избавится ΠΎΡ‚ Π³ΠΎΠ»ΠΎΠ²Π½ΠΎΠΉ Π±ΠΎΠ»ΠΈ ΠΏΡ€ΠΈ малСньком ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΎΡ‚ PM’а, ΠΈΠ»ΠΈ ΠΎΡ‚ стСйкхолдСра: ΠΎΠ± этом ΠΈ ΠΏΠΎΠ²Π΅Π΄Π°Π΅Ρ‚ ΠΊΠ½ΠΈΠ³Π°

Об Π°Π²Ρ‚ΠΎΡ€Π°Ρ…

ΠŸΠ΅Ρ€Π΅Π΄ Ρ‚Π΅ΠΌ, ΠΊΠ°ΠΊ Ρ‡Ρ‚ΠΎ-Π»ΠΈΠ±ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎΠ± этой ΠΊΠ½ΠΈΠ³Π΅, я Ρ…ΠΎΡ‡Ρƒ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ сСбС.
На Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ я Strong Junior Developer, ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉΡΡ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сСрвисов посрСдством ASP .NET CORE’а.

Π― ΡƒΠΆΠ΅ Π³ΠΎΠ΄ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽ Π½Π° ΠΎΠ΄Π½ΠΎΠΉ β€œΠ³Π°Π»Π΅Ρ€ΠΊΠ΅β€, ΠΈ Π²Ρ€ΠΎΠ΄Π΅ Π±Ρ‹ ΠΏΠΎ Ρ‡ΡƒΡ‚ΡŒ-Ρ‡ΡƒΡ‚ΡŒ ΡΠΏΡ€Π°Π²Π»ΡΡŽΡΡŒ

ΠšΠ½ΠΈΠ³Ρƒ я эту ΡƒΠΆΠ΅ ΠΏΡ€ΠΎΡ‡Π΅Π» 2 Ρ€Π°Π·Π°, ΠΈ ΠΊ Ρ‡Ρ‚Π΅Π½ΠΈΡŽ Ρ€Π΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡƒΡŽ всСм:

  • Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌ embeded систСм;
  • Ρ„Ρ€ΠΎΠ½Ρ‚-эндщикам;
  • бэк-эндщикам;
  • ΠΈ Π΄Π°ΠΆΠ΅ дСвопсам.

Π’ΠΎΠΎΠ±Ρ‰Π΅ΠΌ всСм, ΠΊΡ‚ΠΎ Ρ…ΠΎΡ‚ΡŒ ΠΊΠ°ΠΊ Ρ‚ΠΎ связан с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ ΠŸΠ—, имССтся Π² Π²ΠΈΠ΄Ρƒ нСпосрСдствСнной Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΎΠΉ Ρ€Π°Π·Π½Ρ‹Ρ… Ρ‚Π°ΠΌ Π‘Π΅ΠΉΠ»ΠΎΠ² ΠΈ ΠŸΠœβ€™ΠΎΠ² сюда Π½Π΅ ΡƒΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅ΠΌ (хотя Ρ‚ΠΎΠΆΠ΅ Π±Ρ‹Π»ΠΎ Π±Ρ‹ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π·Π½Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄Π΅Π² Π±Ρ‹Π²Π°Π΅Ρ‚ Ρ‚Ρ€Π°Ρ‚ΠΈΡ‚ Π² 2 Ρ€Π°Π·Π° большС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Π·Π°Π΄Π°Ρ‡Ρƒ), ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽ ΠΏΡ€ΠΎΡ‡Π΅ΡΡ‚ΡŒ эту ΠΊΠ½ΠΈΠ³Ρƒ.
И сСйчас я ΠΏΠΎΠΏΡ€ΠΎΠ±ΡƒΡŽ Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ я Ρ‚Π°ΠΊ ΡΡ‡ΠΈΡ‚Π°ΡŽ

НСмного ΠΎΠ± Π°Π²Ρ‚ΠΎΡ€Π΅ этой ΠΊΠ½ΠΈΠ³ΠΈ ( ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ для мСня Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚ ΠΏΠΈΡˆΡƒΡ‰Π΅Π³ΠΎ ΠΈΠ³Ρ€Π°Π΅Ρ‚ Π±ΠΎΠ»ΡŒΡˆΡƒΡŽ Ρ€ΠΎΠ»ΡŒ). Π― Π΄ΡƒΠΌΠ°ΡŽ Π²Ρ‹ мСня ΠΏΠΎΠΉΠΌΠ΅Ρ‚Π΅, Ρ…ΠΎΡ‚ΡŒ это Π½Π΅ всСгда ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΠΎ, Π½ΠΎ Ссли Π²Π°ΠΌ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π½Ρ‹ΠΉ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ Π² сфСрС β€” Π²Ρ‹ проявляСтС Π½Π°ΠΌΠ½ΠΎΠ³ΠΎ большС довСрия ΠΊ сказанному ΠΈΠΌ. НапримСр, я Π΄ΡƒΠΌΠ°ΡŽ Π²Ρ‹ большС ΠΏΠΎΠ²Π΅Ρ€ΠΈΡ‚Π΅ Π² Π΄ΠΈΠ°Π³Π½ΠΎΠ·, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²Π°ΠΌ ставит Π²Ρ€Π°Ρ‡, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΎΡ‚ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΈΠ· Ρ‚ΠΎΠ»ΠΏΡ‹ (ΠΏΠΎΠ³ΡƒΠ³Π»ΠΈΠ²ΡˆΠΈΠΉ симптомы)

Π ΠΎΠ±Π΅Ρ€Ρ‚ ΠœΠ°Ρ€Ρ‚ΠΈΠ½ β€” ΠΎΠ½ ΠΆΠ΅ Анкл Π‘ΠΎΠ± (дядюшка Π‘ΠΎΠ±) β€” Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² сфСрС программирования, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Ρ€Π°Π·Π½Ρ‹Ρ… систСм (ΠΎΡ‚ вСбсСрвисов Π΄ΠΎ Π΅ΠΌΠ±Π΅Π΄ΠΈΡ‚ систСм), с 1970 Π³ΠΎΠ΄Π°. являСтся тСхничСским ΠΊΠΎΠ½ΡΡƒΠ»ΡŒΡ‚Π°Π½Ρ‚ΠΎΠΌ ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, писал Π² Ρ€Π°Π·Π½Ρ‹Π΅ тСхничСскиС ΠΆΡƒΡ€Π½Π°Π»Ρ‹, сам ΠΏΠΎ сСбС ΠΎΡ‡Π΅Π½ΡŒ ΠΎΠΏΡ‹Ρ‚Π½Ρ‹ΠΉ программист, ΠΈ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΈΠ³Ρ€Π°Π» ΠΎΠ΄Π½Ρƒ ΠΈΠ· ΠΊΠ»ΡŽΡ‡Π΅Π²Ρ‹Ρ… Ρ€ΠΎΠ»Π΅ΠΉ ΠΏΡ€ΠΈ созданиС всСм извСстных SOLID ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² (ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ). Π’Π°ΠΊ ΠΆΠ΅, хочСтся Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΌΠ½Π΅ эту ΠΊΠ½ΠΈΠ³Ρƒ посовСтовал ΠΌΠΎΠΉ Ρ‚ΠΈΠΌΠ»ΠΈΠ΄ с 15+ ΠΎΠΏΡ‹Ρ‚ΠΎΠΌ Ρ€Π°Π±ΠΎΡ‚Ρ‹

О книгС

Зависимости

ΠŸΠ΅Ρ€Π΅Π΄ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ½ΠΈΠ³ΠΈ, я достаточно ΠΌΠ½ΠΎΠ³ΠΎ статССк Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ Π₯Π°Π±Ρ€Π΅ Ρ‡ΠΈΡ‚Π°Π», Π³Π΄Π΅ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Π»ΠΎ Ρ‚Π°ΠΊΠΎΠ΅ слово, ΠΊΠ°ΠΊ β€œΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒβ€. Π§Ρ‚ΠΎ это Ρ‚Π°ΠΊΠΎΠ΅, ΠΊΡ‚ΠΎ ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ зависим, Ρ‡Ρ‚ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚ β€œΠ·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒβ€, ΠΈ ΠΊΠ°ΠΊ ΠΊΠ°ΠΊΠΎΠΉ Ρ‚ΠΎ класс ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ-Ρ‚ΠΎ?

И Π²ΠΎΡ‚ ΠΏΠΎ ΠΌΠ΅Ρ€Π΅ прочтСния ΠΊΠ½ΠΈΠ³ΠΈ я усвоил Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°:

Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ β€” это Ρ‚Π΅Ρ€ΠΌΠΈΠ½, Π·Π½Π°Ρ‡Π°Ρ‰ΠΈΠΉ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΊΠΎΠΉ-Ρ‚ΠΎ класс (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, сСрвис) Π·Π½Π°Π΅Ρ‚ ΠΎ ΠΊΠ°ΠΊΠΎΠΌ-Ρ‚ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΌ классС (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π΅, сСрвисС), ΠΈ это Π·Π½Π°Π½ΠΈΠ΅ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΊΠΎΠ΄Π° опрСдСляСтся (сСйчас дТависты, ΡˆΠ°Ρ€ΠΏΠΈΡΡ‚Ρ‹, сишники мСня ΠΏΠΎΠΉΠΌΡƒΡ‚) ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½Ρ‹ΠΌ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΎΠΌ нСймспСйса. Π˜Π½Ρ‹ΠΌΠΈ словами: Π΅ΡΡ‚ΡŒ Ρƒ вас класс А с нСймспСйсом Default.Classes ΠΈ класс B Another.Classes. Π’Π°ΠΊ Π²ΠΎΡ‚, Ссли Π² сорс ΠΊΠΎΠ΄Π΅ класса А Π±ΡƒΠ΄Π΅Ρ‚ Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ using Another.Classes; β€” Ρ‚ΠΎ это Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ класс А зависит ΠΎΡ‚ класса B.
Π§Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎ схСмС, Π³Π΄Π΅ зависимый класс, Π° Π³Π΄Π΅ Π½Π΅Ρ‚ β€” смотритС Π½Π° Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ стрСлки: Π² 1) стрСлка Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠΊΠ°Π·Ρ‹Π²Π°Ρ‚ΡŒ ΠΎΡ‚ класса А Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ класса B. Π­Ρ‚ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚, Ρ‡Ρ‚ΠΎ класс B Π±ΠΎΠ»Π΅Π΅ нСзависимый, Ρ‡Π΅ΠΌ класс А. И измСнСния Π² классС А, Π½ΠΈΠΊΠ°ΠΊΠΎΠ³ΠΎ β€œΡƒΡ‰Π΅Ρ€Π±Π°β€ классу B Π½Π΅ нанСсут

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ Π³Π»Π°Π²Π½ΠΎΠΌ: Clean Architecture, Robert C. Martin

SOLID

Одной ΠΈΠ· основной ΠΏΡ€ΠΈΡ‡ΠΈΠ½Ρ‹, которая Π±Ρ‹Π»Π° для мСня ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ этой ΠΊΠ½ΠΈΠ³ΠΈ β€” это объяснСниС SОLID ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΎΠ² ΠΈΠ· пСрвоисточника, ΠΏΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ дядя Π ΠΎΠ± Ρ€Π°Π·Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π» эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, благодаря Π΅ΠΌΡƒ ΠΌΡ‹ ΡΠ»Ρ‹ΡˆΠΈΠΌ это Π½Π°Π·Π²Π°Π½ΠΈΠ΅ β€” SOLID.
Для Ρ‚Π΅Ρ…, ΠΊΡ‚ΠΎ Π½Π΅ Π² курсС β€” эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ говорят ΠΈ ΡΠΎΠ²Π΅Ρ‚ΡƒΡŽΡ‚ Π΄ΠΈΠ·Π°ΠΉΠ½ΠΈΡ‚ΡŒ свои прилоТСния Π² соотвСтствии с 5 ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ:

S β€” SRP (Single responsibility principle)
O β€” OCP (Open-closed principle)
L β€” LSP (Liskov substitution principle)
I β€” ISP (Interface segregation principle)
D β€” DIP (Dependency Inversion principle)

ВсС эти ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½Ρ‹ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ классов ΠΈ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ², Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² ΠΈ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Π»Π΅Π΅Ρ€ΠΎΠ² (сСрвисов).

Если Π²Ρ‹ считаСтС Ρ‡Ρ‚ΠΎ Single responsibility principle β€” это ΠΏΡ€ΠΎ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ класс, ΠΈΠ»ΠΈ ΠΆΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Π΄ΠΎΠ»ΠΆΠ΅Π½ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ ΠΎΠ΄Π½ΠΎ β€” Ρ‚ΠΎ Π²Π°ΠΌ ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ…ΠΎΡ‚ΡŒ Π±Ρ‹ Π³Π»Π°Π²Ρƒ ΠΏΡ€ΠΎ Π‘ΠΎΠ»ΠΈΠ΄. Ибо Ρ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΄Π°Π½ΠΎ Π²Ρ‹ΡˆΠ΅ β€” это слСдствиС, Π½ΠΎ Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ самого ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ°

О Dependency Inversion

ОсобоС Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ Ρ…ΠΎΡ‡Ρƒ ΠΎΠ±Ρ€Π°Ρ‚ΠΈΡ‚ΡŒ Π½Π° объяснСниС Dependency Inversion Principle (Ρ‚ΠΎΡ‚, Ρ‡Ρ‚ΠΎ D ΠΈΠ· SOLID’a). По Ρ…ΠΎΠ΄Ρƒ прочтСния ΠΊΠ½ΠΈΠ³ΠΈ, я ΠΏΠΎΠ½ΠΈΠΌΠ°Π», это Π½Π΅ просто ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, это Π΅Ρ‰Ρ‘ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈ инструмСнт, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… зависимостСй, ΠΈ Π΄Π΅Π»Π°Ρ‚ΡŒ, ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, бизнСс Π»ΠΎΠ³ΠΈΠΊΡƒ (DOMAIN) нСзависимой ΠΎΡ‚ Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Data access layer’а (DAL’a)

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ Π³Π»Π°Π²Π½ΠΎΠΌ: Clean Architecture, Robert C. Martin

Π₯ΠΎΡ‚ΡŒ сам ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° ряду с ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹ΠΌΠΈ Π² Π‘ΠžΠ›Π˜Π” Π·Π½Π°Ρ‡ΠΈΡ‚ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ Π½Π΅ Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ, сам ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π½Π° протяТСнии всСй ΠΊΠ½ΠΈΠ³ΠΈ, ΠΈ это ΠΎΠ΄ΠΈΠ½ ΠΈΠ· основных ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΈ ΠΌΠ΅Π½ΡΡ‚ΡŒ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π°ΡˆΠΈΡ… зависимостСй, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ кстати ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΈ DDD

О принятии Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ

ΠžΡ‡Π΅Π½ΡŒ часто Π² ΠΊΠ½ΠΈΠ³Π΅ Π±ΡƒΠ΄Π΅Ρ‚ упоминаСтся ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ ΠΎ принятии Π²Π°ΠΆΠ½Ρ‹Ρ… Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ: ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΡƒΡŽ Π‘Π” ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ Ρ„Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΡƒΡŽ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ ΠΏΠΎΠ΄ΠΊΠ»ΡŽΡ‡Π°Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ поисковой Π΄Π²ΠΈΠΆΠΎΠΊ ΠΈ Ρ‚.Π΄

Π’Π°ΠΊ Π²ΠΎΡ‚, Π°Π²Ρ‚ΠΎΡ€ считаСт: Π²Ρ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ КАК ΠœΠžΠ–ΠΠž ΠœΠ•ΠΠ¬Π¨Π• ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ³ΠΎ Ρ€ΠΎΠ΄Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Ибо requirements ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ, ограничСния ΠΏΠΎ perfomance’у Ρ‚ΠΎΠΆΠ΅, сама повСдСнчСская ΡΠΎΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ ΠΈΠΌΠ΅Π΅Ρ‚ Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡŽ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ. Π’ процСссС Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ ΠΊΠ°ΠΊΠ΅-Ρ‚ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚ΡŒΡΡ ΠΌΠ΅Π½Π΅Π΅ эффСктивным Π½Π΅ΠΆΠ΅Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅, ΠΌΠ΅Π½Π΅Π΅ ΡƒΠ΄ΠΎΠ±Π½Ρ‹ΠΌ Π½Π΅ΠΆΠ΅Π»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. И сила Ρ‚Π²ΠΎΠ΅ΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ, насколько быстро ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½Π½ΠΎ Ρ‚Ρ‹ смоТСшь Π·Π°ΠΌΠ΅Π½ΠΈΡ‚ΡŒ ΠΎΠ΄Π½Ρƒ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΡŽ Π½Π° Π΄Ρ€ΡƒΠ³ΡƒΡŽ (ΠΎΠ± этом кстати Ρ‚Π²Π΅Ρ€Π΄ΠΈΡ‚ OCP).

НапримСр, Π²Π½Π΅Π·Π°ΠΏΠ½ΠΎ, Π²Ρ‹ Ρ€Π΅ΡˆΠΈΡ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ вмСсто Postgresql MongoDb, ΠΈΠ»ΠΈ Π²ΠΎΠΎΠ±Ρ‰Π΅ Ρ„Π°ΠΉΠ»ΠΈΠΊΠΈ, ΠΈΠ»ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ mock’нутыС Π΄Π°Π½Π½Ρ‹Π΅, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌΠΈ Π±ΡƒΠ΄ΡƒΡ‚ производится Π² памяти. И ΠΏΡ€ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… условиях β€” это ΠΌΠΎΠΆΠ΅Ρ‚ Π·Π°ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΠΎΡ‡Ρ‚ΠΈ всю Π»ΠΎΠ³ΠΈΠΊΡƒ.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ‚Π°ΠΊΠΈΡ… ситуаций Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π»ΠΎ, ΠΌΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ максимально Π΄Π°Π»Π΅ΠΊΠΎ ΠΎΡ‚ΠΎΠ΄Π²ΠΈΠ³Π°Ρ‚ΡŒ врСмя принятия Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Один ΠΈΠ· этих ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΎΠ² β€” абстракция.

ΠžΡ‚ΡΡ‹Π»ΠΊΠΈ Π½Π° DDD

DDD β€” Domain Driven Design β€” ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ сСрвисов с слоТной бизнСс Π»ΠΎΠ³ΠΈΠΊΠΎΠΉ, критичСской ΠΊ измСнСниям, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½Π½Ρ‹ΠΉ Π½Π° максимальной ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ руководящих долТностСй ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (PMs, Sale managers etc), с рядовыми Π³Ρ€Π΅Π±Ρ†Π°ΠΌΠΈ. Π’ΠΎ Π΅ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π±Ρ‹ ΠΌΠ΅ΠΆΠ΄Ρƒ всС Ρ‡Π»Π΅Π½Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π±Ρ‹Π» ubiquitous language, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΠΎΠ³ ΠΏΠΎΠ½ΡΡ‚ΡŒ Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ, ΠΈ Ρ‡Ρ‚ΠΎΠ±Ρ‹ всС мыслили Π² ΠΎΠ΄Π½ΠΎΠΌ domain’С с ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌΠ΅ ΠΆΠ΅ бизнСс ΠΏΡ€Π°Π²ΠΈΠ»Π°ΠΌΠΈ.

Если Π²Ρ‹ β€” ΠΏΡ€ΠΈΠ²Π΅Ρ€ΠΆΠ΅Π½Π΅Ρ† DDD, ΠΈΠ»ΠΈ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΎΠ²Ρ‹ΠΌ, ΠΈΠ»ΠΈ Π²Ρ‹ Ρ‡Ρ‚ΠΎ-Ρ‚ΠΎ Π² этом Π½Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Π΅Ρ‚Π΅, Π½ΠΎ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°Ρ‚ΡŒ β€” ΠΊΠ½ΠΈΠ³Π° ΠΎΠ±ΡΠ·Π°Ρ‚Π΅Π»ΡŒΠ½Π° ΠΊ ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΡŽ, особСнно вторая Ρ‡Π°ΡΡ‚ΡŒ ΠΊΠ½ΠΈΠ³ΠΈ.

Π—Π΄Π΅ΡΡŒ Π°Π²Ρ‚ΠΎΡ€ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ ΠΎ сущСствованиС Dependency Rule, ΠΈ ΠΏΠΎΡ‡Π΅ΠΌΡƒ, слСдуя Π΅ΠΌΡƒ β€” Π²Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚Π΅ ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½ΡƒΡŽ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ прилоТСния. ΠŸΠΎΡ‡Π΅ΠΌΡƒ зависимости Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚ΡŒ Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ ΠΊ High Policy ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌ, ΠΏΠΎΡ‡Π΅ΠΌΡƒ Π΄ΠΎΠΌΠ΅Π½ (High Policy ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚) Π΄ΠΎΠ»ΠΆΠ΅Π½ Π±Ρ‹Ρ‚ΡŒ нСзависим ΠΎΡ‚ инфраструктуры ΠΈ ΠΊΠ°ΠΊ это упростит Π²Π°ΠΌ Π΄Π΅ΠΏΠ»ΠΎΠΉΠΌΠ΅Π½Ρ‚ ΠΈ Π΄Π΅Π²Π΅Π»ΠΎΠΏΠΈΠ½Π³

ΠšΠΎΡ€ΠΎΡ‚ΠΊΠΎ ΠΎ Π³Π»Π°Π²Π½ΠΎΠΌ: Clean Architecture, Robert C. Martin

АбстрагированиС

Дядя Π ΠΎΠ±, Ρ‚Π°ΠΊΠΆΠ΅ рассказываСт ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊ Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π½Π°Π²Ρ€Π΅Π΄ΠΈΡ‚ΡŒ вашСй систСмС, ΠΈ Π½Π΅ Π΄Π°Ρ‚ΡŒ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΠΎΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π±Π΅Π· Π±ΠΎΠ»ΠΈ Π² дальнСйшСм.

ΠŸΠΎΠΌΠ½ΠΈΡ‚Π΅!
Π‘Π” β€” это Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
ΠšΠ»ΠΈΠ΅Π½Ρ‚Ρ‹ (Web, Mobile, etc) β€” Π΄Π΅Ρ‚Π°Π»ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ
Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€ΠΊΠΈ β€” это Π΄Π΅Ρ‚Π°Π»ΡŒ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ

ΠžΡ‚ этого всСго Π½ΡƒΠΆΠ½ΠΎ максимально Π°Π±ΡΡ‚Ρ€Π°Π³ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΈ Π½Π΅ Π·Π°Π²ΠΈΡΠ΅Ρ‚ΡŒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π²Ρ‹ΡˆΠ΅ описанный Dependency Inversion с интСрфСйсами ΠΈ абстракциями, Dependency Rule ΠΈ ΠΏΡ€ΠΎΡ‡ΠΈΠ΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹

ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ построСния ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ

Π­Ρ‚ΠΎΡ‚ Ρ€Π°Π·Π΄Π΅Π» ΠΌΠ½Π΅ понравился особо сильно, ΠΊΠ°ΠΊ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΡƒ сСрвисов Π½Π° ASP .NET CORE’С. Ибо здСсь Ρ€Π°ΡΡΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΎ мСтодологиях построСния Π΅Π΄ΠΈΠ½ΠΎΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ сСрвиса ΠΈΠ· Π³ΠΎΡ‚ΠΎΠ²Ρ‹Ρ… ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ².

Π ΠΎΠ±Π΅Ρ€Ρ‚ описал 4 Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… схСмы раздСлСния слоСв.

Он Π΄Π°Π» ΠΏΠΎΠ½ΡΡ‚ΡŒ ΠΏΠΎΡ‡Π΅ΠΌΡƒ Ρ‚Π°ΠΊ часто ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌ 3-Ρ… слоСвой Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹: UI (controllers), Services (Domain), DAL (Database) β€” достаточно ΠΏΠ»ΠΎΡ… ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ. Π― Π²ΠΈΠ΄Π΅Π» Π½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΠ², Π½ΠΎ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΌ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎ-сСрвисС, Π½Π° бэк-эндС, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Ρ‚Ρ€Π΅Ρ…-слоСвая Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°.

Π’Π°ΠΊ ΠΆΠ΅, достаточно часто, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΎΠ΄ΠΈΠ½-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-ΠΎΠ΄ΠΈΠ½-сСрвис. Π’ Ρ†Π΅Π»ΠΎΠΌ ΠΎΠ½ΠΈ ΠΎΠ±Π΅ Π½Π΅ΠΏΠ»ΠΎΡ…ΠΈΠ΅, Π½ΠΎ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ достаточно ΠΌΠ½ΠΎΠ³ΠΎ минусов, Π² сравнСнии ΠΊ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, ΠΊΠ°ΠΊ строится Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° ΠΏΡ€ΠΈ использовании DDD, особСнно ΠΏΡ€ΠΈ критичСских ΠΊ измСнСнию, ΠΈ слоТных сСрвисов.

Π’ ΠΎΠ±Ρ‰Π΅ΠΌ, Π²ΠΎΡ‚ ΠΈ подошСл ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ этот ΠΎΠ±Π·ΠΎΡ€ Π½Π° ΠΊΠ½ΠΈΠ³Ρƒ. Π‘Π°ΠΌΠ° ΠΊΠ½ΠΈΠ³Π° ΠΌΠ½Π΅ ΠΎΡ‡Π΅Π½ΡŒ ΠΏΠΎΠ½Ρ€Π°Π²ΠΈΠ»Π°ΡΡŒ, Π½Π΅ ТалСю ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½Π½ΠΎΠΌ, спасибо Π°Π²Ρ‚ΠΎΡ€Ρƒ. Π’Π°ΠΌ, Π΄ΠΎΡ€ΠΎΠ³ΠΈΠ΅ Ρ‡ΠΈΡ‚Π°Ρ‚Π΅Π»ΠΈ, спасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, Π½Π΅ судитС строго β€” эта публикация, основанная Π½Π° Π²ΠΏΠ΅Ρ‡Π°Ρ‚Π»Π΅Π½ΠΈΠΈ ΠΎΡ‚ ΠΊΠ½ΠΈΠ³ΠΈ ΠΈ ΠΌΠΎΠ΅ΠΌ Π»ΠΈΡ‡Π½ΠΎΠΌ энтузиазмС

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: habr.com

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ