Sveiki visiem!
MÄs esam Raiffeisenbank .NET izstrÄdÄtÄju kopiena, un mÄs vÄlamies runÄt par infrastruktÅ«ras bibliotÄku kopu, kuras pamatÄ ir .NET Core, lai Ätri izveidotu mikropakalpojumus ar vienu ekosistÄmu. ViÅi to atveda uz atvÄrtÄ pirmkoda versiju!
Nedaudz vÄstures
KÄdreiz mums bija liels monolÄ«ts projekts, kas pamazÄm pÄrtapa par mikropakalpojumu komplektu (par Ŕī procesa iezÄ«mÄm var lasÄ«t
GÄja laiks, projekts pamazÄm sadrumstalojÄs, un radÄs vÄlme izveidot jaunus klienta puses moduļus uz moderna JS ietvara un palaist tos pÄrlÅ«kprogrammÄ. MÄs sÄkÄm pÄriet no WCF/SOAP uz REST/HTTP, tÄpÄc mums bija vajadzÄ«gas jaunas bibliotÄkas, lai Ätri palaistu pakalpojumus, kuru pamatÄ ir AspNet WebApi. Pirmo versiju .Net Framework 4.5 mÅ«su arhitekts brÄ«vajÄ laikÄ izveidoja gandrÄ«z uz ceļiem, taÄu tÄ Ä¼Äva palaist pakalpojumu ar trÄ«s rindiÅÄm programmÄ Program.cs, kas satur autorizÄciju (NTLM), reÄ£istrÄÅ”ana, Swagger, IoC/DI, pamatojoties uz Castle Windsor, pielÄgoti HTTP klienti, kas pÄrsÅ«ta dažÄdas galvenes, lai nodroÅ”inÄtu pilnÄ«gu reÄ£istrÄÅ”anu visÄ projektÄ. Un visu Å”o lietu var tÄlÄk konfigurÄt tieÅ”i pakalpojuma konfigurÄcijas failÄ.
TomÄr ne viss bija gludi: Ŕī bibliotÄka izrÄdÄ«jÄs ÄrkÄrtÄ«gi neelastÄ«ga jaunu moduļu ievieÅ”anas ziÅÄ. PiemÄram, ja jums bija jÄpievieno Ä«paÅ”a starpprogrammatÅ«ra, jums bija jÄizveido jauns komplekts un jÄpÄrmanto no bÄzes klases, kurÄ darbojas pakalpojums, kas bija ÄrkÄrtÄ«gi neÄrti. Par laimi, Å”Ädu gadÄ«jumu nebija Ä«paÅ”i daudz.
Dokera un Kubernetes laikmets
Ir pienÄcis laiks, kad mÅ«s sasniedza Docker un Kubernetes vilnis, ko mÄs uzmanÄ«gi vÄrojÄm: galu galÄ tÄ bija lieliska iespÄja sÄkt virzÄ«ties tÄlÄk pa tehnoloÄ£ijÄm .Net Core. Tas nozÄ«mÄ, ka pakalpojumu darbinÄÅ”anai mums bÅ«s nepiecieÅ”ama jauna infrastruktÅ«ra: dažas bibliotÄkas ir migrÄjuÅ”as no .Net Framework uz .Net Standard un .Net Core praktiski bez izmaiÅÄm, dažas ar nelieliem uzlabojumiem. Bet galvenokÄrt es gribÄju pÄrveidot funkcionalitÄti, kas saistÄ«ta ar pakalpojumu palaiÅ”anu AspNet Core.
PirmÄ lieta, ko mÄs apsvÄrÄm, bija koncepcija, kas novÄrstu iepriekÅ”ÄjÄs versijas galveno trÅ«kumu: elastÄ«bas trÅ«kumu. TÄpÄc tika nolemts visu bibliotÄkas sistÄmu padarÄ«t pÄc iespÄjas neatkarÄ«gÄku un modulÄrÄku un funkcionalitÄtei nepiecieÅ”amos pakalpojumus komplektÄt kÄ konstruktoru.
Galvenais mÄrÄ·is ir izveidot vienotu pieeju, kas apraksta, kÄ mijiedarboties ar datu bÄzÄm, autobusiem un citiem pakalpojumiem. MÄs centÄmies padarÄ«t integrÄciju Ätru un nesÄpÄ«gu, un izstrÄdÄtÄji varÄja koncentrÄties uz biznesa loÄ£ikas rakstÄ«Å”anu, nevis infrastruktÅ«ru - tÄ jau ir gatava. KopÄ«gs repozitorijs palÄ«dz uzlabot mijiedarbÄ«bas pieredzi komandÄs: ja tiek izmantota ļoti lÄ«dzÄ«ga iekÅ”ÄjÄ infrastruktÅ«ra, ir vieglÄk pievienoties citas komandas izstrÄdes procesam un apmainÄ«ties ar zinÄÅ”anÄm.
Un kÄpÄc mums ir nepiecieÅ”ams atvÄrtais avots?
MÄs vÄlamies parÄdÄ«t savas pieredzes briedumu un saÅemt kvalitatÄ«vu atgriezenisko saiti: cilvÄks Ärpus bankas varÄs kaut ko atnest no sevis. MÅ«s interesÄ arÄ« prakses attÄ«stÄ«ba darbam ar mikropakalpojumiem un DDD uz .NET Å”ajÄ nozarÄ, iespÄjams, kÄds vÄlÄsies pÄrÅemt atseviŔķas ietvara daļas.
PatiesÄ«bÄ ViennaNET
Tagad paskatÄ«simies tuvÄk.
ViennaNET.WebApi.*
Å is bibliotÄku komplekts sastÄv no āsaknesā ViennaNET.WebApi, kas satur CompanyHostBuilder pakalpojuma veidotÄju klasi, un konfiguratoru komplektu ViennaNET.WebApi.Configurators.*, no kuriem katrs ļauj pievienot un konfigurÄt kÄdu funkcionalitÄti izveidotajam. apkalpoÅ”ana. Starp konfiguratoriem varat atrast savienojumus reÄ£istrÄÅ”anai, diagnostikai, autentifikÄcijas un autorizÄcijas veidiem, swagger utt.
ViennaNET.WebApi.Runners.* satur arÄ« iepriekÅ” konfigurÄtus pakalpojumu veidotÄjus. Å Ä«s pakotnes ļauj neatcerÄties katru reizi, kad veidojat jaunu pakalpojumu, kuri konfiguratori ir jÄpievieno. TomÄr tie nekÄdÄ veidÄ neierobežo pakalpojumu veidotÄja funkcionalitÄti.
ViennaNET.Mediator.*
BibliotÄkas, kas ļauj izveidot iekÅ”Äju starpnieku kopni komandÄm un pieprasÄ«jumiem pakalpojumÄ. Å Ä« pieeja ļauj samazinÄt DI injekciju skaitu lÄ«dz vienai, piemÄram, kontrolieros. Pateicoties tam, pieprasÄ«jumiem var pievienot dažÄdus dekoratorus, kas vieno to apstrÄdi un samazina koda daudzumu.
ViennaNET.ValidÄcija
MontÄža, kas satur klaÅ”u kopu, lai izveidotu validÄcijas noteikumus un secÄ«bas no tÄm. Tas ir ļoti Ärti domÄna validÄcijas ievieÅ”anai, jo ļauj aprakstÄ«t katru biznesa nosacÄ«jumu vienkÄrÅ”a un atseviŔķa noteikuma veidÄ.
ViennaNET.RÄdis
BibliotÄka ar iesaiÅojumiem Ärtam darbam ar Redis kÄ keÅ”atmiÅu atmiÅÄ.
ViennaNET.SpecifikÄcijas
Asambleja, kurÄ ir klases, kas Ä«steno specifikÄcijas modeli.
Tas nav viss, kas ir mÅ«su komplektÄ. PÄrÄjo var redzÄt
Paldies par uzmanÄ«bu, gaidÄ«sim jÅ«su komentÄrus un pieprasÄ«jumus.
Avots: www.habr.com