ViennaNET: Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для backend’а

ВсСм ΠΏΡ€ΠΈΠ²Π΅Ρ‚!

ΠœΡ‹ сообщСство .NET-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ² Π Π°ΠΉΡ„Ρ„Π°ΠΉΠ·Π΅Π½Π±Π°Π½ΠΊΠ° ΠΈ ΠΌΡ‹ Ρ…ΠΎΡ‚ΠΈΠΌ Ρ€Π°ΡΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΏΡ€ΠΎ Π½Π°Π±ΠΎΡ€ инфраструктурных Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° .NET Core для быстрого создания микросСрвисов с Π΅Π΄ΠΈΠ½ΠΎΠΉ экосистСмой. Π’Ρ‹Π²Π΅Π»ΠΈ Π΅Π³ΠΎ Π² Open Source!

ViennaNET: Π½Π°Π±ΠΎΡ€ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для backend’Π°

НСмного истории

Когда-Ρ‚ΠΎ Ρƒ нас Π±Ρ‹Π» большой ΠΌΠΎΠ½ΠΎΠ»ΠΈΡ‚Π½Ρ‹ΠΉ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ постСпСнно прСвращался Π² Π½Π°Π±ΠΎΡ€ микросСрвисов (ΠΎΠ± особСнностях Π΄Π°Π½Π½ΠΎΠ³ΠΎ процСсса ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² этой ΡΡ‚Π°Ρ‚ΡŒΠ΅). Π’ процСссС ΠΌΡ‹ ΡΡ‚ΠΎΠ»ΠΊΠ½ΡƒΠ»ΠΈΡΡŒ с ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ создании Π½ΠΎΠ²Ρ‹Ρ… микросСрвисов Π½Π°ΠΌ часто ΠΏΡ€ΠΈΡ…ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ ΠΊΠΎΠΏΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ инфраструктурныС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ – Π²Ρ€ΠΎΠ΄Π΅ настройки логирования, Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π‘Π”, 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

ΠŸΡ€ΠΈΡˆΠ»ΠΎ врСмя, ΠΊΠΎΠ³Π΄Π° ΠΈ Π΄ΠΎ нас Π΄ΠΎΠΊΠ°Ρ‚ΠΈΠ»Π°ΡΡŒ Π²ΠΎΠ»Π½Π° 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

Π‘Π±ΠΎΡ€ΠΊΠ°, содСрТащая классы, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΠ°Ρ‚Ρ‚Π΅Ρ€Π½ «БпСцификация».

Π­Ρ‚ΠΎ Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ всё, Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π² нашСм Π½Π°Π±ΠΎΡ€Π΅. ΠžΡΡ‚Π°Π»ΡŒΠ½ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡ‚Ρ€Π΅Ρ‚ΡŒ Π² Ρ€Π΅ΠΏΠΎΠ·ΠΈΡ‚ΠΎΡ€ΠΈΠΈ Π½Π° GitHub. Π‘ΠΊΠΎΡ€ΠΎ планируСтся Π²Ρ‹Ρ…ΠΎΠ΄ Π² OpenSource Π½Π°ΡˆΠΈΡ… Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π±Π°Π·Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ….

Бпасибо Π·Π° Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅, ΠΆΠ΄Ρ‘ΠΌ Π²Π°ΡˆΠΈΡ… ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠ΅Π² ΠΈ pull request-ΠΎΠ².

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

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