ΠΡΠ΅ΠΌ ΠΏΡΠΈΠ²Π΅Ρ!
ΠΡ ΡΠΎΠΎΠ±ΡΠ΅ΡΡΠ²ΠΎ .NET-ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² Π Π°ΠΉΡΡΠ°ΠΉΠ·Π΅Π½Π±Π°Π½ΠΊΠ° ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΡΠ°ΡΡΠΊΠ°Π·Π°ΡΡ ΠΏΡΠΎ Π½Π°Π±ΠΎΡ ΠΈΠ½ΡΡΠ°ΡΡΡΡΠΊΡΡΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ Π½Π° .NET Core Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΡΠ²Π΅Π»ΠΈ Π΅Π³ΠΎ Π² Open Source!
ΠΠ΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΡΡΠΎΡΠΈΠΈ
ΠΠΎΠ³Π΄Π°-ΡΠΎ Ρ Π½Π°Ρ Π±ΡΠ» Π±ΠΎΠ»ΡΡΠΎΠΉ ΠΌΠΎΠ½ΠΎΠ»ΠΈΡΠ½ΡΠΉ ΠΏΡΠΎΠ΅ΠΊΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π»ΡΡ Π² Π½Π°Π±ΠΎΡ ΠΌΠΈΠΊΡΠΎΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (ΠΎΠ± ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΡΡ
Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΎΡΠΈΡΠ°ΡΡ Π²
ΠΡΠ΅ΠΌΡ ΡΠ»ΠΎ, ΠΏΡΠΎΠ΅ΠΊΡ ΠΏΠΎΠ½Π΅ΠΌΠ½ΠΎΠ³Ρ Π΄ΡΠΎΠ±ΠΈΠ»ΡΡ, ΠΏΠΎΡΠ²ΠΈΠ»ΠΎΡΡ ΠΆΠ΅Π»Π°Π½ΠΈΠ΅ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΠ΅ ΠΌΠΎΠ΄ΡΠ»ΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΡΠΊΠΎΠΉ ΡΠ°ΡΡΠΈ Π½Π° ΡΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ Js-ΡΡΠ΅ΠΉΠΌΠ²ΠΎΡΠΊΠ΅ ΠΈ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΈΡ Π² Π±ΡΠ°ΡΠ·Π΅ΡΠ΅. ΠΡ Π½Π°ΡΠ°Π»ΠΈ ΠΏΠ΅ΡΠ΅Ρ ΠΎΠ΄ΠΈΡΡ Ρ WCF/SOAP Π½Π° REST/HTTP, ΠΏΠΎΡΡΠΎΠΌΡ Π½Π°ΠΌ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈΡΡ Π½ΠΎΠ²ΡΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Π΄Π»Ρ Π±ΡΡΡΡΠΎΠ³ΠΎ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π½Π° Π±Π°Π·Π΅ AspNet WebApi. ΠΠ΅ΡΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ Π½Π° .Net Framework 4.5 Π±ΡΠ»Π° ΡΠ΄Π΅Π»Π°Π½Π° Π½Π°ΡΠΈΠΌ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΠΎΡΠΎΠΌ ΡΡΡΡ Π»ΠΈ Π½Π΅ Π½Π° ΠΊΠΎΠ»Π΅Π½ΠΊΠ΅ Π² ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ΅ Π²ΡΠ΅ΠΌΡ, Π½ΠΎ ΠΎΠ½Π° ΡΠΆΠ΅ ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ»Π° ΡΡΠ΅ΠΌΡ ΡΡΡΠΎΡΠΊΠ°ΠΌΠΈ Π² Program.cs Π·Π°ΠΏΡΡΡΠΈΡΡ ΡΠ΅ΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΎΠ΄Π΅ΡΠΆΠ°Π» Π°Π²ΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (NTLM), Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Swagger, IoC/DI Π½Π° Π±Π°Π·Π΅ Castle Windsor, Π½Π°ΡΡΡΠΎΠ΅Π½Π½ΡΡ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΠΎΠ², ΠΏΡΠΎΠ±ΡΠ°ΡΡΠ²Π°ΡΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ Π΄Π»Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΡΠΊΠ²ΠΎΠ·Π½ΠΎΠ³ΠΎ Π»ΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΏΡΠΎΠ΅ΠΊΡΠ΅. Π Π²ΡΡ ΡΡΠΎ Π΄Π΅Π»ΠΎ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ»ΠΎ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠΎΠ²Π°ΡΡ ΡΠΆΠ΅ Π² Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² ΡΠ°ΠΉΠ»Π΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠ΅ΡΠ²ΠΈΡΠ°.
ΠΠ΄Π½Π°ΠΊΠΎ Π½Π΅ Π²ΡΡ Π±ΡΠ»ΠΎ Π³Π»Π°Π΄ΠΊΠΎ: Π΄Π°Π½Π½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° ΠΏΠΎΠ»ΡΡΠΈΠ»Π°ΡΡ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅Π³ΠΈΠ±ΠΊΠΎΠΉ Π² ΠΏΠ»Π°Π½Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΉ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π΅ΡΠ»ΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΎΡΡ Π΄ΠΎΠ±Π°Π²ΠΈΡΡ ΠΊΠ°ΠΊΠΎΠ΅-Π½ΠΈΠ±ΡΠ΄Ρ ΠΎΡΠΎΠ±ΠΎΠ΅ middleware, ΡΠΎ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ Π½ΠΎΠ²ΡΡ ΡΠ±ΠΎΡΠΊΡ ΠΈ Π½Π°ΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΡΡΡ ΠΎΡ Π±Π°Π·ΠΎΠ²ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ°, Π·Π°ΠΏΡΡΠΊΠ°ΡΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²ΠΈΡ, ΡΡΠΎ Π±ΡΠ»ΠΎ ΠΊΡΠ°ΠΉΠ½Π΅ Π½Π΅ΡΠ΄ΠΎΠ±Π½ΠΎ. Π ΡΡΠ°ΡΡΡΡ, ΡΠ°ΠΊΠΈΡ ΡΠ»ΡΡΠ°Π΅Π² Π±ΡΠ»ΠΎ Π½Π΅ ΠΎΡΠ΅Π½Ρ ΠΌΠ½ΠΎΠ³ΠΎ.
ΠΠΏΠΎΡ Π° Docker ΠΈ Kubernetes
ΠΡΠΈΡΠ»ΠΎ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° ΠΈ Π΄ΠΎ Π½Π°Ρ Π΄ΠΎΠΊΠ°ΡΠΈΠ»Π°ΡΡ Π²ΠΎΠ»Π½Π° c 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