Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

ΠœΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ ΠΈΠΌΠ° Ρ‚Π΅Π½Π΄Π΅Π½Ρ†ΠΈΡ˜Π° Π΄Π° сС ΠΌΠ΅Π½ΡƒΠ²Π° Π²ΠΎ Ρ‚Π΅ΠΊΠΎΡ‚ Π½Π° процСсот Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜, ΠΈ Π²ΠΎ ΠΎΠ΄Ρ€Π΅Π΄Π΅Π½ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Ρ‚ΠΎΡ˜ повСќС Π½Π΅ ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Π±Π°Π·Π°Ρ‚Π° ΠΌΠΎΠΆΠ΅ Π΄Π° сС ΠΈΠ·Π±Ρ€ΠΈΡˆΠ΅, Π° ΠΏΠΎΡ‚ΠΎΠ° ORM ќС создадС Π½ΠΎΠ²Π° Π²Π΅Ρ€Π·ΠΈΡ˜Π° која ќС ΠΎΠ΄Π³ΠΎΠ²Π°Ρ€Π° Π½Π° ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚, Π½ΠΎ ΠΎΠ²Π°Π° постапка ќС Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ Π³ΡƒΠ±Π΅ΡšΠ΅ Π½Π° постоСчкитС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π’Π°ΠΊΠ°, Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡ˜Π°Ρ‚Π° Π½Π° систСмот Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π΅ Π΄Π° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΠΈ Π΄Π΅ΠΊΠ°, ΠΊΠ°ΠΊΠΎ Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π° Π½Π° ΡˆΠ΅ΠΌΠ°Ρ‚Π°, Ρ‚ΠΎΡ˜ Π΅ синхронизиран со ΠΌΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π²ΠΎ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π±Π΅Π· Π³ΡƒΠ±Π΅ΡšΠ΅ Π½Π° постоСчкитС ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ.

Π’ΠΎ ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π°, Π±ΠΈ сакалС Π΄Π° ΠΏΠΎΠ³Π»Π΅Π΄Π½Π΅ΠΌΠ΅ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° овој ΠΏΡ€Π΅Π³Π»Π΅Π΄ ќС Π±ΠΈΠ΄Π΅ корисСн Π·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΠΊΠΎΠΈ сС соочСни со сличСн ΠΈΠ·Π±ΠΎΡ€.

Π—Π°Π΄Π°Ρ‡Π°

ΠΠ°ΡˆΠ°Ρ‚Π° компанија ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°Π»Π½ΠΎ Π°ΠΊΡ‚ΠΈΠ²Π½ΠΎ ја Ρ€Π°Π·Π²ΠΈΠ²Π° слСдната Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈ - Docs Security Suite (DSS). Π”Π΅Π»ΠΎΡ‚ ΠΎΠ΄ сСрвСрот Π΅ напишан Π²ΠΎ .Net Core, Π° Entity Framework Core сС користи ΠΊΠ°ΠΊΠΎ DBMS. Кога Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΠΌΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°, Π³ΠΎ користимС пристапот Code First.

ΠœΠΎΠ΄Π΅Π»ΠΎΡ‚ Π½Π° Π΄ΠΎΠΌΠ΅Π½ΠΎΡ‚ Π½Π° Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° Π΅ ΠΊΡ€Π΅ΠΈΡ€Π°Π½ ΠΎΠ΄ Π½Π΅ΠΊΠΎΠ»ΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ Π²ΠΎ исто Π²Ρ€Π΅ΠΌΠ΅ - сСкој Π΅ ΠΎΠ΄Π³ΠΎΠ²ΠΎΡ€Π΅Π½ Π·Π° ΡΠ²ΠΎΡ˜ΠΎΡ‚ Π»ΠΎΠ³ΠΈΡ‡Π΅Π½ Π΄Π΅Π» ΠΎΠ΄ систСмот.

ΠŸΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° DSS Π³ΠΎ ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡˆΠ΅ класичниот Entity Framework Migrations (EF 6) ΠΊΠ°ΠΊΠΎ систСм Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°. Π‘Π΅ΠΏΠ°ΠΊ, сС Π°ΠΊΡƒΠΌΡƒΠ»ΠΈΡ€Π°Π° Π½Π΅ΠΊΠΎΠΈ ΠΏΠΎΠΏΠ»Π°ΠΊΠΈ ΠΏΡ€ΠΎΡ‚ΠΈΠ² Π½Π΅Π³ΠΎ, Π° Π³Π»Π°Π²Π½Π°Ρ‚Π° Π΅ Π΄Π΅ΠΊΠ° Π•Π€ Π½Π΅ΠΌΠ° Ρ€Π°Π·ΡƒΠΌΠ΅Π½ пристап Π·Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ Π½Π° Π²Π΅Ρ€Π·ΠΈΠΈ. Овој Ρ„Π°ΠΊΡ‚ сè ΡƒΡˆΡ‚Π΅ Π½Π΅ Π²ΠΎΠ·Π½Π΅ΠΌΠΈΡ€ΡƒΠ²Π° ΠΊΠΎΠ³Π° Π³ΠΈ ΠΏΠΎΠΏΡ€Π°Π²Π°ΠΌΠ΅ Π³Ρ€Π΅ΡˆΠΊΠΈΡ‚Π΅ ΠΊΠ°ΠΊΠΎ Π΄Π΅Π» ΠΎΠ΄ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π°, ΠΏΠ° Π·Π°Ρ‚ΠΎΠ° Ρ€Π΅ΡˆΠΈΠ²ΠΌΠ΅ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π°Π»Ρ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Π½ΠΈ ΠΎΠΏΡ†ΠΈΠΈ.

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Π΄ΠΈΡΠΊΡƒΡΠΈΡ˜Π°Ρ‚Π°, Π±Π΅Π° Ρ„ΠΎΡ€ΠΌΠΈΡ€Π°Π½ΠΈ слСднитС Π±Π°Ρ€Π°ΡšΠ° Π·Π° систСмот Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π°Ρ‚Π°:

  1. ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ DBMS. ΠŸΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ сС MS SQL Server, PostgreSQL, Oracle, Π½ΠΎ ΠΏΠΎΡ‚Π΅Π½Ρ†ΠΈΡ˜Π°Π»Π½ΠΎ Π΅ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π° сС користат Π΄Ρ€ΡƒΠ³ΠΈ
  2. Π Π°Π±ΠΎΡ‚Π° со ORM. ΠŸΡ€Π²ΠΈΡ‡Π½ΠΎ, бСшС ΠΏΠ»Π°Π½ΠΈΡ€Π°Π½ΠΎ Π΄Π° сС користи EF Core, Π½ΠΎ Π²ΠΎ Ρ„Π°Π·Π°Ρ‚Π° Π½Π° Π΄ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°ΡšΠ΅ Π±Π΅Π²ΠΌΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π΄Ρ€ΡƒΠ³ΠΈ ORM
  3. Автоматско Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ. Π—Π΅ΠΌΠ°Ρ˜ΡœΠΈ Π³ΠΎ ΠΏΡ€Π΅Π΄Π²ΠΈΠ΄ Ρ€Π°Π·Π²ΠΎΡ˜ΠΎΡ‚ Π½Π° Code First, Π±ΠΈ сакал Π΄Π° ја ΠΈΠ·Π±Π΅Π³Π½Π°ΠΌ ΠΏΠΎΡ‚Ρ€Π΅Π±Π°Ρ‚Π° Π·Π° β€žΡ€Π°Ρ‡Π½ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅β€œ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  4. ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ Π½Π° Π²Π΅Ρ€Π·ΠΈΠΈ. Π’ΠΎ дистрибуирана Ρ€Π°Π·Π²ΠΎΡ˜Π½Π° срСдина, ΠΊΠΎΠ³Π° сС ΡΠΏΠΎΡ˜ΡƒΠ²Π°, EF Core ΠΌΠΎΠΆΠ΅ Π΄Π° страда ΠΎΠ΄ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈ. Ова станува Π·Π½Π°Ρ‡Π°Π΅Π½ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ бидСјќи Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Π΄Π΅Π»ΠΎΠ²ΠΈ ΠΎΠ΄ Π°ΠΏΠ»ΠΈΠΊΠ°Ρ†ΠΈΡ˜Π°Ρ‚Π° сС ΠΊΡ€Π΅ΠΈΡ€Π°Π½ΠΈ ΠΎΠ΄ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈ, Ρ‚Π°ΠΊΠ° ΡˆΡ‚ΠΎ ΠΌΠΎΡ€Π° Π΄Π° ΠΏΠΎΡ‚Ρ€ΠΎΡˆΠΈΡ‚Π΅ ΠΌΠ½ΠΎΠ³Ρƒ Π²Ρ€Π΅ΠΌΠ΅ Π½Π° сСкој
  5. НапрСдна Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°. Π’ΡƒΠΊΠ°, Π½ΠΈ сС Ρ‡ΠΈΠ½ΠΈ, Π½Π΅ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ ΠΎΠ±Ρ˜Π°ΡΠ½ΡƒΠ²Π°ΡšΠ΅
  6. БСсплатно. ΠšΡ€ΠΈΡ‚Π΅Ρ€ΠΈΡƒΠΌΠΎΡ‚ Π΅ условСн, бидСјќи систСмитС Π½Π΅ сС ΠΌΠ½ΠΎΠ³Ρƒ скапи ΠΈΠ»ΠΈ скапи, Π½ΠΎ ΠΈΠ΄Π΅Π°Π»Π½ΠΈ ΠΏΠΎ погодност, Π±Π΅Π²ΠΌΠ΅ ΠΏΠΎΠ΄Π³ΠΎΡ‚Π²Π΅Π½ΠΈ Π΄Π° Ρ€Π°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅

Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° ΠΌΠ°Π»ΠΎ ΠΈΡΡ‚Ρ€Π°ΠΆΡƒΠ²Π°ΡšΠ΅, слСднитС ΠΎΠΏΡ†ΠΈΠΈ Π±Π΅Π° ΠΏΡ€ΠΎΠ½Π°Ρ˜Π΄Π΅Π½ΠΈ ΠΈ Π±Π΅Π° ΠΏΠΎΠΆΠ΅Π»Π½ΠΈ Π·Π° Ρ€Π°Π·Π³Π»Π΅Π΄ΡƒΠ²Π°ΡšΠ΅:

  1. EF Основни ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  2. DBup
  3. Π’Ρ€ΠΊΠ°Π»Π΅Π·Π½Π° ΠΊΡƒΡœΠ° Π•
  4. ThinkingHome.ΠœΠΈΠ³Ρ€Π°Ρ‚ΠΎΡ€
  5. Π’Π΅Ρ‡Π΅Π½ ΠΌΠΈΠ³Ρ€Π°Ρ‚ΠΎΡ€

И сСга ΠΌΠ°Π»ΠΊΡƒ повСќС Π΄Π΅Ρ‚Π°Π»ΠΈ

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
EntityFramework Core Migrations

Π‘Π΅ΠΊΠ°ΠΊΠΎ, ΠΎΠ²Π° бСшС ΠΏΡ€Π²Π°Ρ‚Π° ΠΈ Π³Π»Π°Π²Π½Π° ΠΎΠΏΡ†ΠΈΡ˜Π° Π·Π° ΠΈΠ·Π±ΠΎΡ€. Π”ΠΎΠΌΠ°ΡˆΠ΅Π½ инструмСнт кој Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π°Π΄Π²ΠΎΡ€ ΠΎΠ΄ ΠΊΡƒΡ‚ΠΈΡ˜Π°Ρ‚Π° Π±Π΅Π· Π½ΠΈΠΊΠ°ΠΊΠ²ΠΎ Ρ‡Π΅ΠΏΠΊΠ°ΡšΠ΅ со Ρ‚Π°ΠΌΠ±ΡƒΡ€Π°. Π“ΠΎΠ»Π΅ΠΌΠ° ΠΊΠΎΠ»ΠΈΡ‡ΠΈΠ½Π° Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°, ΠΎΡ„ΠΈΡ†ΠΈΡ˜Π°Π»Π½Π° ΠΈ Π½Π΅ Ρ‚ΠΎΠ»ΠΊΡƒ, Сдноставност ΠΈΡ‚Π½. Π‘Π΅ΠΏΠ°ΠΊ, ΠΏΠΎΠΏΠ»Π°ΠΊΠΈΡ‚Π΅ Π½Π°ΠΏΡ€Π°Π²Π΅Π½ΠΈ Π·Π° класичниот EF сС исто Ρ‚Π°ΠΊΠ° доста Ρ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΈ Π·Π° EF Core.

Π’Π°ΠΊΠ°, прСдноститС Π·Π° EF Core сС истакнати:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π½Π° Microsoft, Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°, Π²ΠΊΠ»ΡƒΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ ΠΈ Π½Π° руски, ΠΎΠ³Ρ€ΠΎΠΌΠ½Π° Π·Π°Π΅Π΄Π½ΠΈΡ†Π°
  • Автоматско Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ Π²Ρ€Π· основа Π½Π° CodeFirst
  • Π’ΠΎ спорСдба со EF 6, EF Core повСќС Π½Π΅ складира слика ΠΎΠ΄ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Кога Ρ€Π°Π±ΠΎΡ‚ΠΈΡ‚Π΅ со EF Core Π²ΠΎ Code First, повСќС Π½Π΅ Π΅ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎ Π΄Π° сС распорСдува Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
  • Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ Ρ‚Π°Π½Ρ†ΡƒΠ²Π°ΠΌΠ΅ ΠΎΠ΄ Code First, ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π΄Π° сС ΠΈΠ·Π²Ρ€ΡˆΠΈ Π΅Π΄Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π΄ΠΎ ситС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ Π΄Π°Π²Π°Ρ‚Π΅Π»ΠΈ Π½Π° пристап Π΄ΠΎ ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
  • Π’ΠΎ однос Π½Π° ΠΏΡ€ΠΎΠ²Π°Ρ˜Π΄Π΅Ρ€ΠΈΡ‚Π΅, PostgreSQL Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½, Oracle Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ ΠΈΡ‚Π½., ΠΈΡ‚Π½., ΠΏΠ° Π΄ΡƒΡ€ΠΈ ΠΈ MS SQL Server 

И, исто Ρ‚Π°ΠΊΠ°, нСдостатоцитС:

  • Π Π΅ΡˆΠ°Π²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΡ‚ остана Π½Π° исто Π½ΠΈΠ²ΠΎ. НСопходно Π΅ Π΄Π° сС Ρ€Π΅Π΄Π°Ρ‚ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ ΠΈ Π΄Π° сС Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π°Ρ‚ снимкитС ΠΎΠ΄ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
  • Зависност ΠΎΠ΄ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅ Π½Π° ΠΊΠΎΠΈ сС Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°Π°Ρ‚ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅

DbUp

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
dbup.github.io

DbUp Π΅ .NET Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° која Π΅ инсталирана ΠΎΠ΄ NuGet ΠΈ ΠΏΠΎΠΌΠ°Π³Π° Π΄Π° сС ΠΏΠΎΡ‚Ρ‚ΠΈΠΊΠ½Π°Ρ‚ ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π½Π° SQL Server. Π“ΠΈ слСди ΠΊΠΎΠΈ скрипти Π·Π° ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ сС вСќС ΠΈΠ·Π²Ρ€ΡˆΠ΅Π½ΠΈ ΠΈ Π³ΠΈ ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π° ΠΎΠ½ΠΈΠ΅ ΡˆΡ‚ΠΎ сС Π½Π΅ΠΎΠΏΡ…ΠΎΠ΄Π½ΠΈ Π·Π° Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°Ρ‚Π° ΠΏΡ€ΠΎΠΈΠ·Π»Π΅Π·Π΅ ΠΎΠ΄ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ Π·Π° ΠΌΠΎΡ‚ΠΎΡ€ Π·Π° Π±Π»ΠΎΠ³ΠΈΡ€Π°ΡšΠ΅ со ΠΎΡ‚Π²ΠΎΡ€Π΅Π½ ΠΊΠΎΠ΄ Π½Π° ASP.NET ΠΈ постои ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π° Π½Π° MIT, Π° ΠΊΠΎΠ΄ΠΎΡ‚ Π΅ Π½Π° GitHub. ΠœΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ сС опишани со ΠΊΠΎΡ€ΠΈΡΡ‚Π΅ΡšΠ΅ Π½Π° T-SQL.

Кои сС прСдноститС:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° Π³ΠΎΠ»Π΅ΠΌ Π±Ρ€ΠΎΡ˜ DBMS (MS SQL Server, PstgreSQL, MySQL)
  • Π‘ΠΈΠ΄Π΅Ρ˜ΡœΠΈ скриптитС сС напишани Π²ΠΎ T-SQL, Ρ‚ΠΈΠ΅ ΠΈΠ·Π³Π»Π΅Π΄Π°Π°Ρ‚ ΠΏΡ€ΠΈΠ»ΠΈΡ‡Π½ΠΎ Сдноставно
  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ исто Ρ‚Π°ΠΊΠ° сС Ρ€Π΅ΡˆΠ°Π²Π°Π°Ρ‚ со помош Π½Π° SQL

И Π»ΠΎΡˆΠΈΡ‚Π΅ страни:

  • Π‘ΠΎ сСта разновидност Π½Π° ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΈ DBMS, Oracle Π½Π΅ Π΅ Π΅Π΄Π΅Π½ ΠΎΠ΄ Π½ΠΈΠ²
  • НС ΠΊΠΎΠΌΡƒΠ½ΠΈΡ†ΠΈΡ€Π° со ORM
  • Π Π°Ρ‡Π½ΠΎ ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ T-SQL скрипти Π½Π΅ Π΅ ΠΎΠ½Π° ΠΊΠΎΠ½ ΡˆΡ‚ΠΎ сС стрСмСвмС
  • Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π°Ρ‚Π° ΠΈ Π·Π°Π΅Π΄Π½ΠΈΡ†Π°Ρ‚Π° сС Ρ‚ΠΎΠ»ΠΊΡƒ, ΠΈΠ°ΠΊΠΎ Π²ΠΎ однос Π½Π° ΠΏΠΈΡˆΡƒΠ²Π°ΡšΠ΅Ρ‚ΠΎ SQL скрипти ΠΌΠΎΠΆΠ΅Π±ΠΈ Π½Π΅ сС ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈ.

Π’Ρ€ΠΊΠ°Π»Π΅Π·Π½Π° ΠΊΡƒΡœΠ° Π•

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
github.com/chucknorris/roundhouse

Оваа Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΡƒΠΏΡ€Π°Π²ΡƒΠ²Π°ΡšΠ΅ со ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π°, дистрибуирана ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° Apache 2.0, ΠΊΠ°ΠΊΠΎ ΠΈ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π°, Ρ€Π°Π±ΠΎΡ‚ΠΈ Π½Π° ΠΌΠΎΡ‚ΠΎΡ€ΠΎΡ‚ Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° T-SQL. ΠžΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ΅Ρ€ΠΈΡ‚Π΅ ΡΡ‚Π°Π²ΠΈΡ˜Π° ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ Π½Π° Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ Π½Π° Ρ‚Π΅Ρ…Π½ΠΈΡ‡ΠΊΠΈΡ‚Π΅ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΈ Π²ΠΎ врска со ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°Ρ‚Π° Π·Π° DBMS, намСсто Π΄Π° создадат ΡƒΠ΄ΠΎΠ±Π΅Π½ процСс Π½Π° Ρ€Π°Π·Π²ΠΎΡ˜.

ΠŸΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΈ:

  • Π“ΠΈ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΡƒΠ²Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ DBMS (Π²ΠΊΠ»ΡƒΡ‡ΡƒΠ²Π°Ρ˜ΡœΠΈ Oracle)

Конс:

  • Oracle (ΠΊΠ°ΠΊΠΎ ΠΈ Access, ΡˆΡ‚ΠΎ Π΅ ΠΈΡ€Π΅Π»Π΅Π²Π°Π½Ρ‚Π½ΠΎ Π·Π° нас) Π½Π΅ Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ Π½Π° .NET Core, само Π½Π° .NET Full Framework
  • НС Ρ€Π°Π±ΠΎΡ‚ΠΈ со ORM
  • Има ΡƒΡˆΡ‚Π΅ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° ΠΎΠ΄ ΠΏΡ€Π΅Ρ‚Ρ…ΠΎΠ΄Π½Π°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ°
  • ΠŸΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ - ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ сС напишани со скрипти

ThinkingHome.ΠœΠΈΠ³Ρ€Π°Ρ‚ΠΎΡ€

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Алатка Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΡˆΠ΅ΠΌΠ°Ρ‚Π° Π½Π° Π²Π΅Ρ€Π·ΠΈΠΎΠ½ΠΈΡ€Π°Π½Π° Π±Π°Π·Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ Π΄ΠΎ ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° .NET Core, дистрибуирана ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° MIT. Π‘Π°ΠΌΠΈΠΎΡ‚ Ρ€Π°Π·Π²ΠΈΠ²Π°Ρ‡ ΠΏΠΈΡˆΡƒΠ²Π°ΡˆΠ΅ Π·Π° Π½Π΅Π³ΠΎΠ²Π°Ρ‚Π° најнова Π²Π΅Ρ€Π·ΠΈΡ˜Π° ΠΏΡ€Π΅Π΄ рСчиси Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°.

ΠŸΠΎΠ·ΠΈΡ‚ΠΈΠ²Π½ΠΈ:

  • Π”ΠΈΠ·Π°Ρ˜Π½ΠΈΡ€Π°Π½ Π·Π° .NET Core
  • Π‘ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ Ρ€Π°Π·Π³Ρ€Π°Π½Π΅Ρ‚Π° Π½ΠΈΠ·Π° Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  • Π‘ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½Π° Π΅Π²ΠΈΠ΄Π΅Π½Ρ†ΠΈΡ˜Π° Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π°

Конс:

  • ПослСдно Π°ΠΆΡƒΡ€ΠΈΡ€Π°Π½ΠΎ ΠΏΡ€Π΅Π΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°. ΠžΡ‡ΠΈΠ³Π»Π΅Π΄Π½ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π½Π΅ Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½
  • НС Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΠΆΠ°Π½ΠΎ ΠΎΠ΄ Oracle (Π²ΠΎ написот сС Π½Π°Π²Π΅Π΄ΡƒΠ²Π° Π΄Π΅ΠΊΠ° ΠΎΠ²Π° сС Π΄ΠΎΠ»ΠΆΠΈ Π½Π° нСдостатокот Π½Π° стабилна ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ˜Π° Π·Π° .NET Core - Π½ΠΎ ΠΎΠ²Π° Π΅ ΠΏΡ€Π΅Π΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°)
  • НСма автоматско Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ

Π“Π΅Π½Π΅Ρ€Π°Π»Π½ΠΎ, ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ ΠΈΠ·Π³Π»Π΅Π΄Π° Π²Π΅Ρ‚ΡƒΠ²Π°Ρ‡ΠΊΠΈ, особСно Π°ΠΊΠΎ Ρ‚Ρ€Π΅Π±Π° Π΄Π° сС Ρ€Π°Π·Π²ΠΈΠ²Π°, Π½ΠΎ Ρ‚Ρ€Π΅Π±Π°ΡˆΠ΅ Π΄Π° донСсСмС ΠΎΠ΄Π»ΡƒΠΊΠ° ΠΎΠ²Π΄Π΅ ΠΈ сСга.

Π’Π΅Ρ‡Π΅Π½ ΠΌΠΈΠ³Ρ€Π°Ρ‚ΠΎΡ€

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ
github.com/fluentmigrator/fluentmigrator

ΠΠ°Ρ˜ΠΏΠΎΠΏΡƒΠ»Π°Ρ€Π½Π°Ρ‚Π° Π°Π»Π°Ρ‚ΠΊΠ° Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° со Π³ΠΎΠ»Π΅ΠΌΠ° Π°Ρ€ΠΌΠΈΡ˜Π° Ρ„Π°Π½ΠΎΠ²ΠΈ. Дистрибуиран ΠΏΠΎΠ΄ Π»ΠΈΡ†Π΅Π½Ρ†Π°Ρ‚Π° Apache 2.0. Како ΡˆΡ‚ΠΎ Π΅ Π½Π°Π²Π΅Π΄Π΅Π½ΠΎ Π²ΠΎ описот, Ρ‚ΠΎΠ° Π΅ Ρ€Π°ΠΌΠΊΠ° Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π·Π° .NET, слична Π½Π° Ruby on Rails Migrations. ΠŸΡ€ΠΎΠΌΠ΅Π½ΠΈΡ‚Π΅ Π²ΠΎ ΡˆΠ΅ΠΌΠ°Ρ‚Π° Π½Π° Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ сС опишани Π²ΠΎ класитС C#.

Π’ΡƒΠΊΠ° ΠΈΠΌΠ° прСдности:

  • ΠŸΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ° Π·Π° ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΈΡ‚Π΅ DBMS
  • .NET Core ΠΏΠΎΠ΄Π΄Ρ€ΡˆΠΊΠ°
  • Π“ΠΎΠ»Π΅ΠΌΠ° Ρ€Π°Π·Π²ΠΈΠ΅Π½Π° Π·Π°Π΅Π΄Π½ΠΈΡ†Π°
  • ΠšΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ ΠΏΠΎΠΌΠ΅Ρ“Ρƒ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅ сС Ρ€Π΅ΡˆΠ°Π²Π°Π°Ρ‚ послСдоватСлно - сС ΠΎΠ΄Ρ€Π΅Π΄ΡƒΠ²Π° рСдослСдот Π½Π° ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈΡ‚Π΅. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΎ, Π°ΠΊΠΎ сС појави ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ ΠΎΠΊΠΎΠ»Ρƒ Π΅Π΄Π΅Π½ Π΅Π½Ρ‚ΠΈΡ‚Π΅Ρ‚, ΠΏΡ€ΠΈ ΡΠΏΠΎΡ˜ΡƒΠ²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ΄ΠΎΡ‚, Ρ‚ΠΎΡ˜ сС Ρ€Π΅ΡˆΠ°Π²Π° Π½Π° ист Π½Π°Ρ‡ΠΈΠ½ ΠΊΠ°ΠΊΠΎ ΠΈ Π²ΠΎ остатокот ΠΎΠ΄ ΠΊΠΎΠ΄ΠΎΡ‚
  • ΠŸΠΎΡΡ‚ΠΎΡ˜Π°Ρ‚ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈ ΠΊΠΎΠΈ сС ΠΈΠ·Π²Ρ€ΡˆΡƒΠ²Π°Π°Ρ‚ ΠΏΠΎ ΡƒΡΠΏΠ΅ΡˆΠ½Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π°. И Ρ‚ΠΈΠ΅ ΠΌΠΎΠΆΠ°Ρ‚ Π΄Π° носат сСрвисни Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.ΠŸΠΎΡΠ»Π΅Π΄Π½ΠΎΡ‚ΠΎ Π°ΠΆΡƒΡ€ΠΈΡ€Π°ΡšΠ΅ бСшС ΠΏΡ€Π΅Π΄ Π΅Π΄Π΅Π½ мСсСц, односно ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΎΡ‚ Π΅ ΠΆΠΈΠ²

Π¨Ρ‚ΠΎ сС однСсува Π΄ΠΎ минуситС, Π΅Π²Π΅ Π³ΠΈ:

  • НСма автоматско Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ
  • НСма врска со EF ΠΌΠΎΠ΄Π΅Π»ΠΈΡ‚Π΅
  • НСма снимки ΠΎΠ΄ Π±Π°Π·Π°Ρ‚Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

Кој бСшС Π½Π°ΡˆΠΈΠΎΡ‚ ΠΈΠ·Π±ΠΎΡ€?

Π‘ΠΏΠΎΡ€Π΅Π΄Π±Π° ΠΈ ΠΈΠ·Π±ΠΎΡ€ Π½Π° систСми Π·Π° ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΡ˜Π° Π½Π° ΠΏΠΎΠ΄Π°Ρ‚ΠΎΡ†ΠΈ

ЖСстокитС Π΄Π΅Π±Π°Ρ‚ΠΈ сС Π²Ρ€Ρ‚Π΅Π° ΠΎΠΊΠΎΠ»Ρƒ Π΄Π²Π° ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΈ - автоматско Π³Π΅Π½Π΅Ρ€ΠΈΡ€Π°ΡšΠ΅ ΠΌΠΈΠ³Ρ€Π°Ρ†ΠΈΠΈ ΠΈ Ρ€Π°Π·ΡƒΠΌΠ½ΠΎ Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅. Π”Ρ€ΡƒΠ³ΠΈΡ‚Π΅ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ Π±Π΅Π° ΠΌΠ½ΠΎΠ³Ρƒ ΠΏΠΎΠΌΠ°Π»ΠΊΡƒ Π·Π°ΡΡ‚Ρ€Π°ΡˆΡƒΠ²Π°Ρ‡ΠΊΠΈ. Како Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ Π½Π° Ρ‚ΠΎΠ°, Π²Ρ€Π· основа Π½Π° Ρ€Π΅Π·ΡƒΠ»Ρ‚Π°Ρ‚ΠΈΡ‚Π΅ ΠΎΠ΄ Π΄ΠΈΡΠΊΡƒΡΠΈΡ˜Π°Ρ‚Π°, Ρ‚ΠΈΠΌΠΎΡ‚ ΠΎΠ΄Π»ΡƒΡ‡ΠΈ Π΄Π° Π³ΠΎ користи Fluent Migrator Π²ΠΎ Π½ΠΎΠ²ΠΈΠΎΡ‚ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚. Π—Π°Ρ‚ΠΎΠ° ΡˆΡ‚ΠΎ Ρ€Π΅ΡˆΠ°Π²Π°ΡšΠ΅Ρ‚ΠΎ Π½Π° ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΈΡ‚Π΅ Π²ΠΎ ΠΈΠ΄Π½ΠΈΠ½Π° ќС донСсС ΠΌΠ½ΠΎΠ³Ρƒ повСќС ΠΏΡ€ΠΈΠ΄ΠΎΠ±ΠΈΠ²ΠΊΠΈ.

Наоди

Π‘Π΅ Ρ€Π°Π·Π±ΠΈΡ€Π°, Π½Π΅ΠΌΠ° ΡΠΎΠ²Ρ€ΡˆΠ΅Π½ΠΈ Π°Π»Π°Ρ‚ΠΊΠΈ. Π—Π°Ρ‚ΠΎΠ° ΠΌΠΎΡ€Π°Π²ΠΌΠ΅ Π΄Π° Π³ΠΈ Π΄Π°Π΄Π΅ΠΌΠ΅ ΠΏΡ€ΠΈΠΎΡ€ΠΈΡ‚Π΅Ρ‚ΠΈΡ‚Π΅ Π½Π° Π½Π°ΡˆΠΈΡ‚Π΅ β€žΠΆΠ΅Π»Π±ΠΈβ€œ Π·Π° Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΠΌΠ΅ ΠΈΠ·Π±ΠΎΡ€. ΠœΠ΅Ρ“ΡƒΡ‚ΠΎΠ°, Π·Π° Π΄Ρ€ΡƒΠ³ΠΈ Ρ‚ΠΈΠΌΠΎΠ²ΠΈ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ, Π΄Ρ€ΡƒΠ³ΠΈ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΈ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΠΈΠ΄Π°Ρ‚ ΠΎΠ΄Π»ΡƒΡ‡ΡƒΠ²Π°Ρ‡ΠΊΠΈ. Π‘Π΅ Π½Π°Π΄Π΅Π²Π°ΠΌΠ΅ Π΄Π΅ΠΊΠ° ΠΎΠ²Π°Π° ΡΡ‚Π°Ρ‚ΠΈΡ˜Π° ќС Π²ΠΈ ΠΏΠΎΠΌΠΎΠ³Π½Π΅ Π΄Π° Π½Π°ΠΏΡ€Π°Π²ΠΈΡ‚Π΅ ΠΈΠ·Π±ΠΎΡ€.

Π˜Π·Π²ΠΎΡ€: www.habr.com

Π”ΠΎΠ΄Π°Π΄Π΅Ρ‚Π΅ ΠΊΠΎΠΌΠ΅Π½Ρ‚Π°Ρ€