ΠΠ΄ΡΠ°Π²Π΅ΠΉΡΠ΅ Π½Π° Π²ΡΠΈΡΠΊΠΈ!
ΠΠΈΠ΅ ΡΠΌΠ΅ ΠΎΠ±ΡΠ½ΠΎΡΡ ΠΎΡ .NET ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈ Π½Π° Π Π°ΠΉΡΠ°ΠΉΠ·Π΅Π½Π±Π°Π½ΠΊ ΠΈ ΠΈΡΠΊΠ°ΠΌΠ΅ Π΄Π° ΡΠ°Π·ΠΊΠ°ΠΆΠ΅ΠΌ Π·Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π½Π° .NET Core Π·Π° Π±ΡΡΠ·ΠΎ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ Ρ Π΅Π΄ΠΈΠ½Π½Π° Π΅ΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠ°. ΠΡΠ±Π»ΠΈΠΊΡΠ²Π°Ρ ΠΌΠ΅ Π³ΠΎ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄!
ΠΠ°Π»ΠΊΠΎ ΠΈΡΡΠΎΡΠΈΡ
ΠΡΠ΅Π΄ΠΈ Π²ΡΠ΅ΠΌΠ΅ ΠΈΠΌΠ°Ρ ΠΌΠ΅ Π³ΠΎΠ»ΡΠΌ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ΅Π½ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ΅ ΠΏΡΠ΅Π²ΡΡΠ½Π° Π² Π½Π°Π±ΠΎΡ ΠΎΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ (Π·Π° ΠΎΡΠΎΠ±Π΅Π½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠΎΠ·ΠΈ ΠΏΡΠΎΡΠ΅Ρ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΏΡΠΎΡΠ΅ΡΠ΅ΡΠ΅ Π² ). Π ΠΏΡΠΎΡΠ΅ΡΠ° ΡΠ΅ ΡΠ±Π»ΡΡΠΊΠ°Ρ ΠΌΠ΅ Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°, ΡΠ΅ ΠΏΡΠΈ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π½ΠΎΠ²ΠΈ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ ΡΠ΅ΡΡΠΎ ΡΠ΅ Π½Π°Π»Π°Π³Π°ΡΠ΅ Π΄Π° ΠΊΠΎΠΏΠΈΡΠ°ΠΌΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡ β ΠΊΠ°ΡΠΎ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ Π·Π° Π»ΠΎΠ³Π²Π°Π½Π΅, ΡΠ°Π±ΠΎΡΠ° Ρ ΠΠ, WCF ΠΈ Ρ.Π½. ΠΠΎ ΡΠΎΠ·ΠΈ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠ°Π±ΠΎΡΠ΅ΡΠ΅ Π΅Π΄ΠΈΠ½ Π΅ΠΊΠΈΠΏ ΠΈ Π²ΡΠΈΡΠΊΠΈ Π²Π΅ΡΠ΅ ΡΠ²ΠΈΠΊΠ½Π°Ρ Π° Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°. ΠΠ°ΡΠΎΠ²Π° ΠΎΡΠ΄Π΅Π»ΠΈΡ ΠΌΠ΅ ΠΎΠ±ΡΠΈΡ ΠΊΠΎΠ΄ Π² ΠΎΡΠ΄Π΅Π»Π΅Π½ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ, ΡΡΠ±ΡΠ°Π½ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Ρ ΠΌΠ΅ Π² Nuget ΠΏΠ°ΠΊΠ΅ΡΠΈ ΠΈ Π³ΠΈ ΠΏΠΎΡΡΠ°Π²ΠΈΡ ΠΌΠ΅ Π² Π½Π°ΡΠ΅ΡΠΎ Π²ΡΡΡΠ΅ΡΠ½ΠΎ Nuget Ρ ΡΠ°Π½ΠΈΠ»ΠΈΡΠ΅.
ΠΡΠ΅ΠΌΠ΅ΡΠΎ ΠΌΠΈΠ½Π°Π²Π°ΡΠ΅, ΠΏΡΠΎΠ΅ΠΊΡΡΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΡΠ΅ Π΄Π΅Π»Π΅ΡΠ΅, ΠΏΠΎΡΠ²ΠΈ ΡΠ΅ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ΡΠΎ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ Π½ΠΎΠ²ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ Π·Π° ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠ°ΡΠ° ΡΠ°ΡΡ Π½Π° ΡΡΠ²ΡΠ΅ΠΌΠ΅Π½Π΅Π½ Js ΡΡΠ΅ΠΉΠΌΡΠΎΡΠΊ ΠΈ Π΄Π° Π³ΠΈ ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ Π² Π±ΡΠ°ΡΠ·ΡΡΠ°. ΠΠ°ΠΏΠΎΡΠ½Π°Ρ ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°ΠΌΠ΅ ΠΎΡ WCF/SOAP Π½Π° REST/HTTP, Π·Π°ΡΠΎΠ²Π° Π½ΠΈ Π±ΡΡ Π° Π½ΡΠΆΠ½ΠΈ Π½ΠΎΠ²ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° Π±ΡΡΠ·ΠΎ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° AspNet WebApi. ΠΡΡΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π½Π° .Net Framework 4.5 Π±Π΅ΡΠ΅ Π½Π°ΠΏΡΠ°Π²Π΅Π½Π° ΠΎΡ Π½Π°ΡΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡ ΠΏΠΎΡΡΠΈ Π½Π° ΠΊΡΠ°ΠΊ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΡΠΎ ΠΌΡ Π²ΡΠ΅ΠΌΠ΅, Π½ΠΎ Π²Π΅ΡΠ΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ΅ Ρ ΡΡΠΈ ΡΠ΅Π΄Π° Π² Program.cs Π΄Π° ΡΡΠ°ΡΡΠΈΡΠ°ΠΌΠ΅ ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΡΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°ΡΠ΅ Π°Π²ΡΠ΅Π½ΡΠΈΠΊΠ°ΡΠΈΡ (NTLM), Π»ΠΎΠ³Π²Π°Π½Π΅, Swagger, IoC/DI Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° Castle Windsor, Π½Π°ΡΡΡΠΎΠ΅Π½ΠΈ HTTP ΠΊΠ»ΠΈΠ΅Π½ΡΠΈ, ΠΏΡΠ΅Ρ Π²ΡΡΠ»ΡΡΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π·Π°Π³Π»Π°Π²ΠΈΡ Π·Π° ΠΎΡΠΈΠ³ΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΊΡΠ°ΠΉΠ½ΠΎ Π»ΠΎΠ³Π²Π°Π½Π΅ Π² ΡΠ΅Π»ΠΈΡ ΠΏΡΠΎΠ΅ΠΊΡ. Π Π²ΡΠΈΡΠΊΠΎ ΡΠΎΠ²Π° ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΎ Π²Π΅ΡΠ΅ Π² ΡΠ°ΠΌΠΈΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΎΠ½Π΅Π½ ΡΠ°ΠΉΠ» Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°.
ΠΠΎ Π½Π΅ Π²ΡΠΈΡΠΊΠΎ Π±Π΅ΡΠ΅ Π³Π»Π°Π΄ΠΊΠΎ: ΡΠ°Π·ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΡΠ΅ ΠΎΠΊΠ°Π·Π° ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΠΏΡΠΈΠ³ΠΎΠ΄Π½Π° Π·Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠ²ΠΈ ΠΌΠΎΠ΄ΡΠ»ΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π°ΠΊΠΎ ΡΡΡΠ±Π²Π°ΡΠ΅ Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΠΌ Π½ΡΠΊΠ°ΠΊΠ²ΠΎ ΡΠΏΠ΅ΡΠΈΠ°Π»Π½ΠΎ middleware, ΡΠ΅ Π½Π°Π»Π°Π³Π°ΡΠ΅ Π΄Π° ΡΡΠ·Π΄Π°Π²Π°ΠΌΠ΅ Π½ΠΎΠ²Π° ΡΠ±ΠΎΡΠΊΠ° ΠΈ Π΄Π° Π½Π°ΡΠ»Π΅Π΄ΡΠ²Π°ΠΌΠ΅ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΈΡ ΠΊΠ»Π°Ρ, ΠΊΠΎΠΉΡΠΎ ΡΡΠ°ΡΡΠΈΡΠ° ΡΡΠ»ΡΠ³Π°ΡΠ°, ΠΊΠΎΠ΅ΡΠΎ Π±Π΅ΡΠ΅ ΠΈΠ·ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. ΠΠ° ΡΠ°ΡΡΠΈΠ΅, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ ΡΠ»ΡΡΠ°ΠΈ Π½Π΅ Π±ΡΡ Π° ΠΌΠ½ΠΎΠ³ΠΎ.
ΠΠΏΠΎΡ Π°ΡΠ° Π½Π° Docker ΠΈ Kubernetes
ΠΠΎΠΉΠ΄Π΅ Π²ΡΠ΅ΠΌΠ΅ΡΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ ΠΈ Π΄ΠΎ Π½Π°Ρ Π΄ΠΎΡΡΠΈΠ³Π½Π° Π²ΡΠ»Π½Π°ΡΠ° Π½Π° Docker ΠΈ Kubernetes, Π·Π° ΠΊΠΎΡΡΠΎ Π²Π½ΠΈΠΌΠ°ΡΠ΅Π»Π½ΠΎ Π½Π°Π±Π»ΡΠ΄Π°Π²Π°Ρ ΠΌΠ΅: ΡΠΎΠ²Π° Π±Π΅ΡΠ΅ ΠΏΡΠ΅ΠΊΡΠ°ΡΠ½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π΄Π° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈΠΌ Π½Π°ΠΏΡΠ΅Π΄ Ρ ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈΡΠ΅ Π² .Net Core. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎ, ΡΠ΅ Π½ΠΈ Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π½ΠΎΠ²Π° ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ° Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ»ΡΠ³ΠΈΡΠ΅: ΡΠ°ΡΡ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈΡΠ΅ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Ρ Π° ΠΎΡ .Net Framework Π½Π° .Net Standard ΠΈ .Net Core ΠΏΠΎΡΡΠΈ Π±Π΅Π· ΠΏΡΠΎΠΌΠ΅Π½ΠΈ, Π° ΡΠ°ΡΡ Ρ ΠΌΠ°Π»ΠΊΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΠΎ Π½Π°ΠΉ-ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΠΊΠ°Ρ ΠΌΠ΅ Π΄Π° ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠΈΠΌ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ°, ΡΠ²ΡΡΠ·Π°Π½Π° Ρ ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ»ΡΠ³ΠΈ Π² AspNet Core.
ΠΡΡΠ²ΠΎΡΠΎ Π½Π΅ΡΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ°Π·Π³Π»Π΅Π΄Π°Ρ ΠΌΠ΅, Π±Π΅ΡΠ΅ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ, ΠΊΠΎΠΉΡΠΎ Π΄Π° ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π΅ ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΠΊ Π½Π° ΠΏΡΠ΅Π΄ΠΈΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡ: Π»ΠΈΠΏΡΠ°ΡΠ° Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΎΡΡ. ΠΠ°ΡΠΎΠ²Π° ΡΠ΅ΡΠΈΡ ΠΌΠ΅ Π΄Π° Π½Π°ΠΏΡΠ°Π²ΠΈΠΌ ΡΡΠ»Π°ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉ-Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠ° ΠΈ ΠΌΠΎΠ΄ΡΠ»Π½Π° ΠΈ Π΄Π° ΡΡΠ±ΠΈΡΠ°ΠΌΠ΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΡΠ»ΡΠ³ΠΈ ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΎΡ.
ΠΡΠ½ΠΎΠ²Π½Π°ΡΠ° ΡΠ΅Π» Π΅ Π΄Π° ΡΡΠ·Π΄Π°Π΄Π΅ΠΌ ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΎΠΏΠΈΡΠ²Π°Ρ ΠΊΠ°ΠΊ Π΄Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²Π°ΠΌΠ΅ Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ, ΡΠΈΠ½ΠΈ ΠΈ Π΄ΡΡΠ³ΠΈ ΡΡΠ»ΡΠ³ΠΈ. Π‘ΡΡΠ΅ΠΌΡΡ ΠΌΠ΅ ΡΠ΅ ΠΈΠ½ΡΠ΅Π³ΡΠ°ΡΠΈΠΈΡΠ΅ Π΄Π° Π±ΡΠ΄Π°Ρ Π±ΡΡΠ·ΠΈ ΠΈ Π±Π΅Π·Π±ΠΎΠ»Π΅Π·Π½Π΅Π½ΠΈ, Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΡΠΈΡΠ΅ Π΄Π° ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΡΡΡΡΠ΅Π΄ΠΎΡΠΎΡΠ°Ρ Π²ΡΡΡ Ρ Π½Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ·Π½Π΅Ρ Π»ΠΎΠ³ΠΈΠΊΠ°ΡΠ°, Π° Π½Π΅ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° β ΡΡ Π²Π΅ΡΠ΅ Π΅ Π³ΠΎΡΠΎΠ²Π°. ΠΠ±ΡΠΈΡΡ ΡΠ΅ΠΏΠΎΠ·ΠΈΡΠΎΡΠΈΠΉ ΠΏΠΎΠΌΠ°Π³Π° Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ΡΠΎ Π² Π΅ΠΊΠΈΠΏΠΈΡΠ΅: ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π²ΡΡΡΠ΅ΡΠ½ΠΈ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠΈ, ΠΏΠΎ-Π»Π΅ΡΠ½ΠΎ Π΅ Π΄Π° ΡΠ΅ Π²ΠΊΠ»ΡΡΠΈΡ Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄ΡΡΠ³ ΠΎΡΠ±ΠΎΡ ΠΈ Π΄Π° ΠΎΠ±ΠΌΠ΅Π½ΠΈΡ Π·Π½Π°Π½ΠΈΡ.
Π Π·Π°ΡΠΎ Π½ΠΈ Π΅ Open Source?
ΠΡΠΊΠ°ΠΌΠ΅ Π΄Π° Π΄Π΅ΠΌΠΎΠ½ΡΡΡΠΈΡΠ°ΠΌΠ΅ Π·ΡΠ΅Π»ΠΎΡΡ Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΡΠΈΠ·Π°ΡΠ° ΠΈ Π΄Π° ΠΏΠΎΠ»ΡΡΠΈΠΌ ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅Π½Π° ΠΎΠ±ΡΠ°ΡΠ½Π° Π²ΡΡΠ·ΠΊΠ°: ΡΠΎΠ²Π΅ΠΊ, ΠΊΠΎΠΉΡΠΎ Π΅ ΠΈΠ·Π²ΡΠ½ Π±Π°Π½ΠΊΠ°ΡΠ°, ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ½Π΅ΡΠ΅ Π½Π΅ΡΠΎ ΠΎΡ ΡΠ΅Π±Π΅ ΡΠΈ. ΠΡΠ²Π΅Π½ ΡΠΎΠ²Π° Π½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΡΠ²Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠ°ΠΊΡΠΈΠΊΠΈΡΠ΅ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΠ·ΠΈ ΠΈ DDD Π½Π° .NET Π² ΠΈΠ½Π΄ΡΡΡΡΠΈΡΡΠ°, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ Π½ΡΠΊΠΎΠΉ Π΄Π° ΠΈΡΠΊΠ° Π΄Π° Π²Π·Π΅ΠΌΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈ ΡΠ°ΡΡΠΈ ΠΎΡ ΡΡΠ΅ΠΉΠΌΡΡΡΠΊΠ° Π·Π° ΡΠ΅Π±Π΅ ΡΠΈ.
Π‘ΠΎΠ±ΡΡΠ²Π΅Π½ΠΎ, ViennaNET
Π‘Π΅Π³Π° Π½Π΅ΠΊΠ° ΡΠ°Π·Π³Π»Π΅Π΄Π°ΠΌΠ΅ Π²ΡΠΈΡΠΊΠΎ ΠΏΠΎ-ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎ. .
ViennaNET.WebApi.*
Π’ΠΎΠ·ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΡΠ΅ ΡΡΡΡΠΎΠΈ ΠΎΡ βΠΊΠΎΡΠ΅Π½Π°β ViennaNET.WebApi, ΡΡΠ΄ΡΡΠΆΠ°Ρ ΠΊΠ»Π°Ρ-ΠΏΠΎΡΡΡΠΎΠΈΡΠ΅Π» Π·Π° ΡΡΠ»ΡΠ³Π°ΡΠ° CompanyHostBuilder, ΠΈ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠΈ ViennaNET.WebApi.Configurators.*, Π²ΡΠ΅ΠΊΠΈ ΠΎΡ ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π΄ΠΎΠ±Π°Π²ΠΈΡΠ΅ ΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°ΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π² ΡΡΠ·Π΄Π°Π²Π°Π½Π°ΡΠ° ΡΡΠ»ΡΠ³Π°. Π‘ΡΠ΅Π΄ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΎΡΠΈΡΠ΅ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π½Π°ΠΌΠ΅ΡΠΈΡΠ΅ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ Π½Π° Π»ΠΎΠ³ΠΈΡΠ°Π½Π΅, Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ°, ΡΠΈΠΏΠΎΠ²Π΅ Π°ΡΡΠ΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΈ Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ, swagger ΠΈ Ρ.Π½.
Π’ΡΠΊ ViennaNET.WebApi.Runners.* Π²ΠΊΠ»ΡΡΠ²Π° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½ΠΈ ΡΡΡΠΎΠΈΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ»ΡΠ³ΠΈ. Π’Π΅Π·ΠΈ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ Π΄Π° Π½Π΅ ΡΠ΅ ΠΏΡΠΈΡΠ΅ΡΠ½ΡΠ²Π°ΡΠ΅ Π²ΡΠ΅ΠΊΠΈ ΠΏΡΡ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ·Π΄Π°Π²Π°ΡΠ΅ Π½ΠΎΠ²Π° ΡΡΠ»ΡΠ³Π°, ΠΊΠΎΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ°Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° ΡΠ²ΡΡΠΆΠ΅ΡΠ΅. Π’Π΅ Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ°Π²Π°Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡΡΠ° Π½Π° ΡΡΡΠΎΠΈΡΠ΅Π»Ρ Π½Π° ΡΡΠ»ΡΠ³ΠΈ.
ViennaNET.Mediator.*
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΡΠ΅ΡΠ΅Π½ ΠΏΠΎΡΡΠ΅Π΄Π½ΠΈΠΊ Π·Π° ΠΊΠΎΠΌΠ°Π½Π΄ΠΈ ΠΈ Π·Π°ΡΠ²ΠΊΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΡΠ»ΡΠ³Π°ΡΠ°. Π’ΠΎΠ·ΠΈ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π±ΡΠΎΡ Π½Π° DI-ΠΈΠ½ΠΆΠ΅ΠΊΡΠΈΠΈΡΠ΅ Π΄ΠΎ Π΅Π΄Π½Π°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π² ΠΊΠΎΠ½ΡΡΠΎΠ»Π΅ΡΠΈΡΠ΅. ΠΠΎΡΠ°Π΄ΠΈ ΡΠΎΠ²Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ΡΠΎ Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π΄Π΅ΠΊΠΎΡΠ°ΡΠΎΡΠΈ ΠΊΡΠΌ Π·Π°ΡΠ²ΠΊΠΈΡΠ΅, ΠΊΠΎΠ΅ΡΠΎ ΡΠ½ΠΈΡΠΈΡΠΈΡΠ° ΡΡΡ Π½Π°ΡΠ° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎΡΠΎ ΠΊΠΎΠ΄.
ViennaNET.Validation
Π‘Π±ΠΎΡΠΊΠ°, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΊΠ»Π°ΡΠΎΠ²Π΅ Π·Π° ΡΡΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° Π²Π°Π»ΠΈΠ΄ΠΈΡΠ°ΡΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π° ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ ΠΎΡ ΡΡΡ . ΠΠ½ΠΎΠ³ΠΎ ΡΠ΄ΠΎΠ±Π½Π° Π·Π° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° Π΄ΠΎΠΌΠ΅ΠΉΠ½Π½Π° Π²Π°Π»ΠΈΠ΄Π°ΡΠΈΡ, ΡΡΠΉ ΠΊΠ°ΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΎΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²ΡΡΠΊΠΎ Π±ΠΈΠ·Π½Π΅Ρ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΠΎΠ΄ ΡΠΎΡΠΌΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΡ ΠΈ ΠΎΡΠ΄Π΅Π»Π΅Π½ ΠΏΡΠ°Π²ΠΈΠ».
ViennaNET.Redis
ΠΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Ρ ΠΎΠ±Π²ΠΈΠ²ΠΊΠΈ Π·Π° ΡΠ΄ΠΎΠ±Π½ΠΎ ΡΠ°Π±ΠΎΡΠ° Ρ Redis ΠΊΠ°ΡΠΎ in-memory cache.
ViennaNET.Specifications
Π‘Π±ΠΎΡΠΊΠ°, ΡΡΠ΄ΡΡΠΆΠ°ΡΠ° ΠΊΠ»Π°ΡΠΎΠ²Π΅, ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°ΡΠΈ ΡΠ°Π±Π»ΠΎΠ½Π° βΠ‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡβ.
Π’ΠΎΠ²Π° Π½Π΅ Π΅ Π²ΡΠΈΡΠΊΠΎ, ΠΊΠΎΠ΅ΡΠΎ ΠΈΠΌΠ°ΠΌΠ΅ Π² Π½Π°ΡΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ. ΠΡΡΠ°Π½Π°Π»ΠΎΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° Π²ΠΈΠ΄ΠΈΡΠ΅ . ΠΠ»Π°Π½ΠΈΡΠ°ΠΌΠ΅ ΡΠΊΠΎΡΠΎ Π΄Π° ΠΏΡΡΠ½Π΅ΠΌ Π½Π°ΡΠΈΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π·Π° ΡΠ°Π±ΠΎΡΠ° Ρ Π±Π°Π·ΠΈ Π΄Π°Π½Π½ΠΈ Ρ ΠΎΡΠ²ΠΎΡΠ΅Π½ ΠΊΠΎΠ΄.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΠΈΠΌ Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ΡΠΎ, ΠΎΡΠ°ΠΊΠ²Π°ΠΌΠ΅ Π²Π°ΡΠΈΡΠ΅ ΠΊΠΎΠΌΠ΅Π½ΡΠ°ΡΠΈ ΠΈ pull request-ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: habr.com
