ΠšΡ€Π°Ρ‚ΠΊΠΎ Π·Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ: Clean Architecture, Π ΠΎΠ±ΡŠΡ€Ρ‚ Π‘. ΠœΠ°Ρ€Ρ‚ΠΈΠ½

Π’ΠΎΠ²Π° Ρ‰Π΅ бъдС Ρ€Π°Π·ΠΊΠ°Π· Π·Π° впСчатлСнията ΠΎΡ‚ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°, ΠΊΠ°ΠΊΡ‚ΠΎ ΠΈ Ρ‰Π΅ Π±ΡŠΠ΄Π°Ρ‚ Ρ€Π°Π·Π³Π»Π΅Π΄Π°Π½ΠΈ някои понятия ΠΈ знания, ΠΊΠΎΠΈΡ‚ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π° са Π±ΠΈΠ»ΠΈ Π½Π°ΡƒΡ‡Π΅Π½ΠΈ.

АрхитСктура

ΠœΠΎΠΆΠ΅Ρ‚Π΅ Π»ΠΈ, Ρ‡Π΅Ρ‚Π΅ΠΉΠΊΠΈ Ρ‚Π°Π·ΠΈ публикация, Π΄Π° Π΄Π°Π΄Π΅Ρ‚Π΅ ясСн ΠΎΡ‚Π³ΠΎΠ²ΠΎΡ€ Π½Π° Π²ΡŠΠΏΡ€ΠΎΡΠ° ΠΊΠ°ΠΊΠ²ΠΎ Π΅ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°? Какво прСдставлява Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π² контСкста Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ ΠΈ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ? Каква роля ΠΈΠ³Ρ€Π°Π΅ тя? Има доста нСясноти ΠΎΠΊΠΎΠ»ΠΎ Ρ‚ΠΎΠ·ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½. Всичко ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ясно, Π½ΠΎ Π΅ някак абстрактно ΠΈ Π±Π΅Π· точност. ΠœΠ°Ρ€Ρ‚ΠΈΠ½ смята, ΠΈ Π°Π· съм съгласСн с Π½Π΅Π³ΠΎ, Ρ‡Π΅ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ ΠΈΠΌΠ° Π΄Π²Π΅ ΡΡŠΡΡ‚Π°Π²ΠΊΠΈ:

  1. ПовСдСниС (behavior) β€” Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈΡ‚Π΅ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π° (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΡŠΡ‚, услугата) изпълнява.
  2. АрхитСктурата β€” Ρ‚ΠΎΠ·ΠΈ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ Π² голяма стСпСн сС отнася Π΄ΠΎ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π² ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ.

Но Π΄ΠΎΡ€ΠΈ ΠΈ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ Π΄Π° изпълнява ΠΌΠ½ΠΎΠ³ΠΎ Π΄ΠΎΠ±Ρ€Π΅ Π·Π°Π΄Π°Ρ‡Π°Ρ‚Π°, Π·Π° която Π΅ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ΠΎ, Ρ‚ΠΎΠ²Π° ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Π½Π΅ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ Ρ‚ΠΎ ΠΈΠΌΠ° Π΄ΠΎΠ±Ρ€Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°. АрхитСктурата Π½Π΅ Π΅ Π·Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. АрхитСктурата Π΅ Π·Π° Π»Π΅ΠΊΠΎΡ‚Π°Ρ‚Π° Π½Π° промСнливост, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅ Π·Π° Π»Π΅ΠΊΠΎΡ‚Π°Ρ‚Π° Π½Π° внСдряванС, Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅ Π·Π° нСзависимост Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°. АрхитСктурата Π΅ Π·Π° скоростта, с която Π½ΠΎΠ² Ρ‡ΠΎΠ²Π΅ΠΊ Π² Π΅ΠΊΠΈΠΏΠ° Ρ€Π°Π·Π±ΠΈΡ€Π° Π½Π΅Ρ‰Π°Ρ‚Π°.

И Π΅Ρ‚ΠΎ ΠΊΠ°ΠΊ Π΄Π° ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΠΌ Ρ‚Π°Π·ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°, ΠΊΠ°ΠΊ Π΄Π° сС ΠΈΠ·Π±Π°Π²ΠΈΠΌ ΠΎΡ‚ главоболията ΠΏΡ€ΠΈ ΠΌΠ°Π»ΠΊΠΈ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² изискванията ΠΎΡ‚ PM-Π° ΠΈΠ»ΠΈ ΠΎΡ‚ заинтСрСсованото Π»ΠΈΡ†Π΅: Π·Π° Ρ‚ΠΎΠ²Π° Ρ‰Π΅ Ρ€Π°Π·ΠΊΠ°ΠΆΠ΅ ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°.

Π—Π° Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΊΠ°ΠΆΠ° Π½Π΅Ρ‰ΠΎ Π·Π° Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π°, искам Π΄Π° ΠΊΠ°ΠΆΠ° ΠΌΠ°Π»ΠΊΠΎ Π·Π° сСбС си.
Π’ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° съм Strong Junior Developer, спСциализиращ сС Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° услуги Ρ‡Ρ€Π΅Π· ASP .NET CORE.

Π’Π΅Ρ‡Π΅ Π³ΠΎΠ΄ΠΈΠ½Π° работя Π² Π΅Π΄Π½Π° "галСрия" ΠΈ ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π°, Ρ‡Π΅ постСпСнно сС справям.

Π’Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π° я ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ… Π²Π΅Ρ‡Π΅ 2 ΠΏΡŠΡ‚ΠΈ ΠΈ я ΠΏΡ€Π΅ΠΏΠΎΡ€ΡŠΡ‡Π²Π°ΠΌ Π½Π° всички:

  • Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ Π½Π° Π²Π³Ρ€Π°Π΄Π΅Π½ΠΈ систСми;
  • Ρ„Ρ€ΠΎΠ½Ρ‚Π΅Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ;
  • Π±Π΅ΠΊΠ΅Π½Π΄ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈ;
  • ΠΈ Π΄ΠΎΡ€ΠΈ дСвопс спСциалисти.

Π’ΡΡŠΡ‰Π½ΠΎΡΡ‚ Π½Π° всички, ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠΎ някакъв Π½Π°Ρ‡ΠΈΠ½ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° софтуСр, ΠΈΠΌΠ°ΠΌ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ пряката Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ прилоТСния, Π±Π΅Π· Π΄Π° Π²ΠΊΠ»ΡŽΡ‡Π²Π°ΠΌΠ΅ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ; (Π²ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ Π±ΠΈ Π±ΠΈΠ»ΠΎ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ Π΄Π° Π·Π½Π°Π΅ΠΌ Π·Π°Ρ‰ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΡ†ΠΈΡ‚Π΅ понякога ΠΏΡ€Π΅ΠΊΠ°Ρ€Π²Π°Ρ‚ Π΄Π²Π° ΠΏΡŠΡ‚ΠΈ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π²Ρ€Π΅ΠΌΠ΅ Π·Π° Π·Π°Π΄Π°Ρ‡Π°), ΡΡŠΠ²Π΅Ρ‚Π²Π°ΠΌ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π°.
Π‘Π΅Π³Π° Ρ‰Π΅ ΠΎΠΏΠΈΡ‚Π°ΠΌ Π΄Π° Π°Ρ€Π³ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€Π°ΠΌ Π·Π°Ρ‰ΠΎ Ρ‚Π°ΠΊΠ° смятам.

Няколко Π΄ΡƒΠΌΠΈ Π·Π° Π°Π²Ρ‚ΠΎΡ€Π° Π½Π° Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π° (Π·Π°Ρ‰ΠΎΡ‚ΠΎ Π·Π° ΠΌΠ΅Π½ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΡŠΡ‚ Π½Π° ΠΏΠΈΡˆΠ΅Ρ‰ΠΈΡ ΠΈΠ³Ρ€Π°Π΅ голяма роля). Мисля, Ρ‡Π΅ Ρ‰Π΅ ΠΌΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅, ΠΌΠ°ΠΊΠ°Ρ€ Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ Π²ΠΈΠ½Π°Π³ΠΈ Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½ΠΎ, Π½ΠΎ Π°ΠΊΠΎ Π°Π²Ρ‚ΠΎΡ€ΠΈΡ‚Π΅Ρ‚Π΅Π½ Ρ‡ΠΎΠ²Π΅ΠΊ Π² сфСрата ΠΊΠ°ΠΆΠ΅ Π½Π΅Ρ‰ΠΎ β€” Π²ΠΈΠ΅ проявяватС ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π΄ΠΎΠ²Π΅Ρ€ΠΈΠ΅ към ΠΊΠ°Π·Π°Π½ΠΎΡ‚ΠΎ ΠΎΡ‚ Π½Π΅Π³ΠΎ. НапримСр, мисля, Ρ‡Π΅ Ρ‰Π΅ повярватС ΠΏΠΎΠ²Π΅Ρ‡Π΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΠ·Π°Ρ‚Π°, поставСна ΠΎΡ‚ Π»Π΅ΠΊΠ°Ρ€, ΠΎΡ‚ΠΊΠΎΠ»ΠΊΠΎΡ‚ΠΎ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΠ·Π°Ρ‚Π° ΠΎΡ‚ някой ΠΎΡ‚ Ρ‚ΡŠΠ»ΠΏΠ°Ρ‚Π° (ΠΊΠΎΠΉΡ‚ΠΎ Π΅ Ρ‚ΡŠΡ€ΡΠΈΠ» симптоми Π² ΠΈΠ½Ρ‚Π΅Ρ€Π½Π΅Ρ‚).

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

Π—Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°

Зависимости

ΠŸΡ€Π΅Π΄ΠΈ Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π°, ΠΏΡ€ΠΎΡ‡Π΅Ρ‚ΠΎΡ… доста статии Π½Π° ΡΡŠΡ‰ΠΈΡ Π₯Π°Π±ΡŠΡ€, ΠΊΡŠΠ΄Π΅Ρ‚ΠΎ чСсто сС появявашС Π΄ΡƒΠΌΠ°Ρ‚Π° "зависимост". Какво Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠΉ ΠΎΡ‚ ΠΊΠΎΠ³ΠΎ Π΅ зависим, ΠΊΠ°ΠΊΠ²ΠΎ Ρ‚ΠΎΡ‡Π½ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° "завися" ΠΈ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ клас ΠΌΠΎΠΆΠ΅ Π΄Π° зависи ΠΎΡ‚ Π΄Ρ€ΡƒΠ³?

И Ρ‚Π°ΠΊΠ°, ΠΏΠΎ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° усвоих Π΄Π²Π° ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°:

Зависимост β€” Ρ‚Π΅Ρ€ΠΌΠΈΠ½, Π·Π½Π°Ρ‡Π΅Ρ‰, Ρ‡Π΅ някой клас (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, услуга) Π·Π½Π°Π΅ Π·Π° Π΄Ρ€ΡƒΠ³ клас (ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚, услуга), ΠΈ Ρ‚ΠΎΠ²Π° Π·Π½Π°Π½ΠΈΠ΅ Π² ΠΊΠΎΠ΄Π° Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ (сСга дТавиститС, ΡˆΠ°Ρ€ΠΏΠΈΡΡ‚ΠΈΡ‚Π΅ ΠΈ ΡΠΈΡˆΠ½ΠΈΡ†ΠΈΡ‚Π΅ Ρ‰Π΅ ΠΌΠ΅ Ρ€Π°Π·Π±Π΅Ρ€Π°Ρ‚) с ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ ΠΈΠΌΠΏΠΎΡ€Ρ‚ Π½Π° пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π°. Π‘ Π΄Ρ€ΡƒΠ³ΠΈ Π΄ΡƒΠΌΠΈ: ΠΈΠΌΠ°Ρ‚Π΅ клас А с пространство ΠΎΡ‚ ΠΈΠΌΠ΅Π½Π° Default.Classes ΠΈ клас B Another.Classes. Π’Π°ΠΊΠ°, Π°ΠΊΠΎ Π² сорс ΠΊΠΎΠ΄Π° Π½Π° клас А Ρ„ΠΈΠ³ΡƒΡ€ΠΈΡ€Π° using Another.Classes; β€” Ρ‚ΠΎ Ρ‚ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ клас А зависи ΠΎΡ‚ клас B.
Π—Π° Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ ΠΏΠΎ схСмата, къдС Π΅ зависимият клас ΠΈ къдС Π½Π΅ Π΅ β€” Π³Π»Π΅Π΄Π°ΠΉΡ‚Π΅ посоката Π½Π° стрСлката: Π² 1) стрСлката Ρ‰Π΅ сочи ΠΎΡ‚ клас А Π² посока Π½Π° клас B. Π’ΠΎΠ²Π° ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ клас B Π΅ ΠΏΠΎ-нСзависим ΠΎΡ‚ клас А. И измСнСнията Π² клас А няма Π΄Π° нанСсат "Π²Ρ€Π΅Π΄Π°" Π½Π° клас B.

ΠšΡ€Π°Ρ‚ΠΊΠΎ Π·Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ: Clean Architecture, Π ΠΎΠ±ΡŠΡ€Ρ‚ Π‘. ΠœΠ°Ρ€Ρ‚ΠΈΠ½

SOLID

Π•Π΄Π½Π° ΠΎΡ‚ основнитС ΠΏΡ€ΠΈΡ‡ΠΈΠ½ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠ΅ Π½Π°ΠΊΠ°Ρ€Π°Ρ…Π° Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π° Ρ‚Π°Π·ΠΈ ΠΊΠ½ΠΈΠ³Π° β€” Π΅ обяснСниСто Π½Π° ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈΡ‚Π΅ SОLID ΠΎΡ‚ ΠΏΡŠΡ€Π²ΠΈΡ ΠΈΠ·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ, Π·Π°Ρ‰ΠΎΡ‚ΠΎ дядо Π ΠΎΠ± Π΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π²Π°Π» Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΊΠ°ΠΆΠ΅, Ρ‡Π΅ Π±Π»Π°Π³ΠΎΠ΄Π°Ρ€Π΅Π½ΠΈΠ΅ Π½Π° Π½Π΅Π³ΠΎ Ρ‡ΡƒΠ²Π°ΠΌΠ΅ Ρ‚ΠΎΠ²Π° Π½Π°ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ β€” SOLID.
Π—Π° Ρ‚Π΅Π·ΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са Π² Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ β€” Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ говорят ΠΈ ΡΡŠΠ²Π΅Ρ‚Π²Π°Ρ‚ Π΄Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€Π°Ρ‚Π΅ прилоТСнията си Π² ΡΡŠΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΈΠ΅ с 5 ΠΏΡ€Π°Π²ΠΈΠ»Π°:

S β€” SRP (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π°Ρ‚Π° отговорност)
O β€” OCP (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° отворСност ΠΈ затворСност)
L β€” LSP (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° замСстванС Π½Π° Лисков)
I β€” ISP (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° раздСлянС Π½Π° интСрфСйса)
D β€” DIP (ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π° инвСрсия Π½Π° зависимоститС)

Всички Ρ‚Π΅Π·ΠΈ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΠΈ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° Π±ΡŠΠ΄Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ класовС ΠΈ ΠΎΠ±Π΅ΠΊΡ‚ΠΈ, Π½Π° Π½ΠΈΠ²ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ ΠΈ Π½Π° Π½ΠΈΠ²ΠΎ слоСвС (услуги).

Ако смятатС, Ρ‡Π΅ ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡ‡Π½Π°Ρ‚Π° отговорност ΠΎΠ·Π½Π°Ρ‡Π°Π²Π°, Ρ‡Π΅ клас ΠΈΠ»ΠΈ ΠΌΠΎΠ΄ΡƒΠ» трябва Π΄Π° ΠΏΡ€Π°Π²ΠΈ само Π΅Π΄Π½ΠΎ Π½Π΅Ρ‰ΠΎ β€” Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½ΠΎ трябва Π΄Π° ΠΏΡ€ΠΎΡ‡Π΅Ρ‚Π΅Ρ‚Π΅ ΠΏΠΎΠ½Π΅ Π³Π»Π°Π²Π° Π·Π° SOLID. Π—Π°Ρ‰ΠΎΡ‚ΠΎ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ, Π΄Π°Π΄Π΅Π½ΠΎ ΠΏΠΎ-Π³ΠΎΡ€Π΅ β€” Π΅ слСдствиС, Π½ΠΎ Π½Π΅ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° самия ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ.

Π—Π° Π˜Π½Π²Π΅Ρ€ΡΠΈΡ Π½Π° зависимоститС

ОсобСно Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ искам Π΄Π° отдСля Π½Π° обяснСниСто Π½Π° ΠŸΡ€ΠΈΠ½Ρ†ΠΈΠΏΠ° Π½Π° инвСрсия Π½Π° зависимоститС (Ρ‚ΠΎΠ·ΠΈ, ΠΊΠΎΠΉΡ‚ΠΎ Π΅ D ΠΎΡ‚ SOLID). Π’ Ρ…ΠΎΠ΄Π° Π½Π° Ρ‡Π΅Ρ‚Π΅Π½Π΅Ρ‚ΠΎ Π½Π° ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° ΠΎΡΡŠΠ·Π½Π°Π²Π°Ρ…, Ρ‡Π΅ Ρ‚ΠΎΠ²Π° Π½Π΅ Π΅ просто ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ, Π° ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ ΠΈ инструмСнт, с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° ΠΊΠΎΠΉΡ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ посоката Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ зависимости ΠΈ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°Ρ‚Π° (DOMAIN) нСзависима ΠΎΡ‚ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ Π½Π° рСализацията Π½Π° слоя Π·Π° Π΄ΠΎΡΡ‚ΡŠΠΏ Π΄ΠΎ Π΄Π°Π½Π½ΠΈ (DAL).

ΠšΡ€Π°Ρ‚ΠΊΠΎ Π·Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ: Clean Architecture, Π ΠΎΠ±ΡŠΡ€Ρ‚ Π‘. ΠœΠ°Ρ€Ρ‚ΠΈΠ½

Π’ΡŠΠΏΡ€Π΅ΠΊΠΈ Ρ‡Π΅ самият ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ Π½Π°Ρ€Π΅Π΄ с останалитС Π² SOLID ΠΎΠ·Π½Π°Ρ‡Π°Π²Π° ΠΌΠ°Π»ΠΊΠΎ Π½Π΅ Ρ‚ΠΎΠ²Π°, ΠΊΠΎΠ΅Ρ‚ΠΎ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ, самият ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΏΡ€Π΅Π· цялата ΠΊΠ½ΠΈΠ³Π°, ΠΈ Ρ‚ΠΎΠ²Π° Π΅ Π΅Π΄ΠΈΠ½ ΠΎΡ‚ основнитС ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΈΠ½Π²Π΅Ρ€Ρ‚ΠΈΡ€Π°Π½Π΅ ΠΈ промяна Π½Π° посоката Π½Π° Π²Π°ΡˆΠΈΡ‚Π΅ зависимости, ΠΊΠΎΠΉΡ‚ΠΎ, ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ, сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² DDD.

Π—Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ

Много чСсто Π² ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Ρ‰Π΅ сС спомСнава ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡŠΡ‚ Π·Π° Π²Π·Π΅ΠΌΠ°Π½Π΅ Π½Π° Π²Π°ΠΆΠ½ΠΈ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ: ΠΊΠ°ΠΊΠ²Π° Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, какъв Ρ„Ρ€Π΅ΠΉΠΌΡƒΡŠΡ€ΠΊ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°, ΠΊΠ°ΠΊΠ²Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π΄Π° Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅, ΠΊΠ°ΠΊΠ²ΠΎ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΊΠ°Ρ‚ΠΎ Ρ‚ΡŠΡ€ΡΠ°Ρ‡ΠΊΠ° ΠΈ Ρ‚.Π½.

Π’Π°ΠΊΠ° Ρ‡Π΅, Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ смята: трябва Π΄Π° Π²Π·Π΅ΠΌΠ°Ρ‚Π΅ КАК ΠœΠžΠ–Π• ПО-ΠœΠΠ›ΠšΠž Ρ‚Π°ΠΊΠΈΠ²Π° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π—Π°Ρ‰ΠΎΡ‚ΠΎ изискванията ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС промСнят, ограничСнията ΠΏΠΎ производитСлността ΡΡŠΡ‰ΠΎ, самата повСдСнчСска ΡΡŠΡΡ‚Π°Π²ΠΊΠ° ΠΈΠΌΠ° тСндСнция Π΄Π° сС промСня. По Π²Ρ€Π΅ΠΌΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°, някоС Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·Π³Π»Π΅ΠΆΠ΄Π° ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ Π΅Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎ, ΠΏΠΎ-ΠΌΠ°Π»ΠΊΠΎ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³ΠΎ. И силата Π½Π° Π²Π°ΡˆΠ°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Ρ‰Π΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈ ΠΊΠΎΠ»ΠΊΠΎ Π±ΡŠΡ€Π·ΠΎ ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄Π° Π·Π°ΠΌΠ΅Π½ΠΈΡ‚Π΅ Π΅Π΄Π½Π° тСхнология с Π΄Ρ€ΡƒΠ³Π° (Π·Π° Ρ‚ΠΎΠ²Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π΄Ρ€ΡƒΠ³ΠΎΡ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈ OCP).

НапримСр, извСднъТ Ρ€Π΅ΡˆΠΈΡ‚Π΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ вмСсто Postgresql MongoDb, ΠΈΠ»ΠΈ ΠΈΠ·ΠΎΠ±Ρ‰ΠΎ Ρ„Π°ΠΉΠ»ΠΎΠ²Π΅, ΠΈΠ»ΠΈ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚Π΅ симулирани Π΄Π°Π½Π½ΠΈ, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ сС ΠΈΠ·Π²ΡŠΡ€ΡˆΠ²Π°Ρ‚ Π² ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. И ΠΏΡ€ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈ условия β€” Ρ‚ΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Π½Π°ΠΊΠ°Ρ€Π° Π΄Π° сС ΠΏΡ€Π΅Π½Π°ΠΏΠΈΡˆΠ΅ ΠΏΠΎΡ‡Ρ‚ΠΈ цялата Π»ΠΎΠ³ΠΈΠΊΠ°.

Π—Π° Π΄Π° ΠΈΠ·Π±Π΅Π³Π½Π΅ΠΌ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ситуации, ΠΌΠΎΠΆΠ΅ΠΌ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΌΠ΅ някои ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ, ΠΊΠΎΠΈΡ‚ΠΎ Ρ‰Π΅ ΠΎΡ‚Π»ΠΎΠΆΠ°Ρ‚ максимално Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π•Π΄ΠΈΠ½ ΠΎΡ‚ Ρ‚Π΅Π·ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ Π΅ абстракцията.

Π‘ΠΏΡ€Π°Π²ΠΊΠΈ Π·Π° DDD

DDD β€” Domain Driven Design β€” ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° услуги с слоТна бизнСс Π»ΠΎΠ³ΠΈΠΊΠ°, ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½Π° към ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅, насочСн към максималното Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅ ΠΎΡ‚ Ρ€ΡŠΠΊΠΎΠ²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° (PMs, Ρ‚ΡŠΡ€Π³ΠΎΠ²ΡΠΊΠΈ ΠΌΠ΅Π½ΠΈΠ΄ΠΆΡŠΡ€ΠΈ ΠΈ Π΄Ρ€.), Π·Π°Π΅Π΄Π½ΠΎ с ΠΎΠ±ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ‚Π΅ участници. ВоСст, Ρ†Π΅Π»Ρ‚Π° Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ всички Ρ‡Π»Π΅Π½ΠΎΠ²Π΅ Π½Π° ΠΏΡ€ΠΎΠ΅ΠΊΡ‚Π° Π΄Π° ΠΈΠΌΠ° ubiquitous language, Ρ‚Π°ΠΊΠ° Ρ‡Π΅ всСки Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅ другия ΠΈ Π΄Π° мисли Π² Π΅Π΄ΠΈΠ½ ΠΈ ΡΡŠΡ‰ Π΄ΠΎΠΌΠ΅ΠΉΠ½ с Π΅Π΄Π½ΠΈ ΠΈ ΡΡŠΡ‰ΠΈ бизнСс ΠΏΡ€Π°Π²ΠΈΠ»Π°.

Ако стС ΠΏΡ€ΠΈΠ²ΡŠΡ€ΠΆΠ΅Π½ΠΈΠΊ Π½Π° DDD, ΠΈΠ»ΠΈ искатС Π΄Π° Π±ΡŠΠ΄Π΅Ρ‚Π΅ Ρ‚Π°ΠΊΡŠΠ², ΠΈΠ»ΠΈ Π½Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°Ρ‚Π΅ Π½Π΅Ρ‰ΠΎ, Π½ΠΎ искатС Π΄Π° Ρ€Π°Π·Π±Π΅Ρ€Π΅Ρ‚Π΅ β€” ΠΊΠ½ΠΈΠ³Π°Ρ‚Π° Π΅ Π·Π°Π΄ΡŠΠ»ΠΆΠΈΡ‚Π΅Π»Π½Π° Π·Π° ΠΏΡ€ΠΎΡ‡ΠΈΡ‚, особСно Π²Ρ‚ΠΎΡ€Π°Ρ‚Π° част.

Π’ΡƒΠΊ Π°Π²Ρ‚ΠΎΡ€ΡŠΡ‚ обяснява Π·Π° ΡΡŠΡ‰Π΅ΡΡ‚Π²ΡƒΠ²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Dependency Rule ΠΈ Π·Π°Ρ‰ΠΎ, слСдвайки Π³ΠΎ, Ρ‰Π΅ ΠΈΠ·Π³Ρ€Π°Π΄ΠΈΡ‚Π΅ ΠΏΡ€Π°Π²ΠΈΠ»Π½Π°Ρ‚Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° ΠΏΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅Ρ‚ΠΎ. Π—Π°Ρ‰ΠΎ зависимоститС трябва Π΄Π° сС насочват към High Policy ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈΡ‚Π΅, Π·Π°Ρ‰ΠΎ Π΄ΠΎΠΌΠ΅ΠΉΠ½ (High Policy ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚) трябва Π΄Π° бъдС нСзависим ΠΎΡ‚ инфраструктурата ΠΈ ΠΊΠ°ΠΊ Ρ‚ΠΎΠ²Π° Ρ‰Π΅ улСсни разпространСниСто ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π°.

ΠšΡ€Π°Ρ‚ΠΊΠΎ Π·Π° Π½Π°ΠΉ-Π²Π°ΠΆΠ½ΠΎΡ‚ΠΎ: Clean Architecture, Π ΠΎΠ±ΡŠΡ€Ρ‚ Π‘. ΠœΠ°Ρ€Ρ‚ΠΈΠ½

АбстрахиранС

Π§ΠΈΡ‡ΠΎ Π ΠΎΠ± ΡΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ° Ρ€Π°Π·ΠΊΠ°Π·Π²Π° ΠΊΠ°ΠΊ Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈΡ‚Π΅ Π½Π° рСализацията ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° наврСдят Π½Π° систСмата Π²ΠΈ ΠΈ Π΄Π° ΠΏΠΎΠΏΡ€Π΅Ρ‡Π°Ρ‚ Π½Π° Π΅Π²ΠΎΠ»ΡŽΡ†ΠΈΡΡ‚Π° ΠΉ Π±Π΅Π· Π±ΠΎΠ»ΠΊΠ° Π² Π±ΡŠΠ΄Π΅Ρ‰Π΅.

ΠŸΠΎΠΌΠ½Π΅Ρ‚Π΅!
Π‘Π” β€” Ρ‚ΠΎΠ²Π° Π΅ Π΄Π΅Ρ‚Π°ΠΉΠ» Π½Π° рСализацията.
ΠšΠ»ΠΈΠ΅Π½Ρ‚ΠΈΡ‚Π΅ (Web, Mobile ΠΈ Π΄Ρ€.) β€” са Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π½Π° рСализацията.
Π€Ρ€Π΅ΠΉΠΌΠ²ΠΎΡ€Ρ†ΠΈΡ‚Π΅ β€” са Π΄Π΅Ρ‚Π°ΠΉΠ»ΠΈ Π½Π° рСализацията.

НСобходимо Π΅ максимално Π΄Π° сС абстрахиратС ΠΎΡ‚ всичко Ρ‚ΠΎΠ²Π° ΠΈ Π΄Π° Π½Π΅ зависитС, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°ΠΉΠΊΠΈ описания Dependency Inversion с интСрфСйси ΠΈ абстракции, Dependency Rule ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΠΈ.

ΠœΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡƒΠ»ΠΈ

Π’Π°Π·ΠΈ част ΠΌΠΈ харСса особСно ΠΌΠ½ΠΎΠ³ΠΎ, ΠΊΠ°Ρ‚ΠΎ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ Π½Π° услуги Π² ASP .NET CORE. Π—Π°Ρ‰ΠΎΡ‚ΠΎ Ρ‚ΡƒΠΊ сС Ρ€Π°Π·Π³Π»Π΅ΠΆΠ΄Π°Ρ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ»ΠΎΠ³ΠΈΠΈ Π·Π° ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΅Π΄ΠΈΠ½Π½Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° Π½Π° услугата ΠΎΡ‚ Π³ΠΎΡ‚ΠΎΠ²ΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΈ.

Π ΠΎΠ±Π΅Ρ€Ρ‚ описа 4 възмоТни схСми Π·Π° Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° слоСвСтС.

Π’ΠΎΠΉ ΠΏΠΎΠ΄Ρ‡Π΅Ρ€Ρ‚Π° Π·Π°Ρ‰ΠΎ Ρ‚ΠΎΠ»ΠΊΠΎΠ²Π° чСсто използваният ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π½Π° тристСпСнната Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°: UI (ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»Π΅Ρ€ΠΈ), услуги (Π΄ΠΎΠΌΠ΅ΠΉΠ½), DAL (Π±Π°Π·Π° Π΄Π°Π½Π½ΠΈ) Π΅ доста лош Π² сравнСниС с Π΄Ρ€ΡƒΠ³ΠΈΡ‚Π΅. Π’ΠΈΠΆΠ΄Π°Π» съм Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈ, Π½ΠΎ във всСки, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΌΠΈΠΊΡ€ΠΎ-сСрвиз, Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠΌΠ΅Π½Π½ΠΎ трислойната Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°.

Π‘ΡŠΡ‰ΠΎ Ρ‚Π°ΠΊΠ°, доста чСсто сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π°Ρ‚Π° Π΅Π΄ΠΈΠ½-ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚-Π΅Π΄Π½Π°-услуга. ΠšΠ°Ρ‚ΠΎ цяло ΠΈ Π΄Π²Π΅Ρ‚Π΅ Π½Π΅ са лоши, Π½ΠΎ ΠΈΠΌΠ°Ρ‚ доста Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΡŠΡ†ΠΈ Π² сравнСниС, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠ°ΠΊΡ‚ΠΎ сС ΠΈΠ·Π³Ρ€Π°ΠΆΠ΄Π° Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° с ΠΏΠΎΠΌΠΎΡ‰Ρ‚Π° Π½Π° DDD, особСно ΠΏΡ€ΠΈ ΠΊΡ€ΠΈΡ‚ΠΈΡ‡Π½ΠΈ Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ ΠΈ слоТни услуги.

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

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

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС със Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS ΠΈ VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster