Hello kulħadd!
Aħna komunità ta’ żviluppaturi .NET f’Raiffeisenbank u rridu nitkellmu dwar sett ta’ libreriji infrastrutturali bbażati fuq .NET Core biex noħolqu malajr mikroservizzi b’ekosistema waħda. Huma ġabuha għal Open Source!
Ftit storja
Darba darba kellna proġett monolitiku kbir, li gradwalment inbidel f’sett ta’ mikroservizzi (tista’ taqra dwar il-karatteristiċi ta’ dan il-proċess f’
Iż-żmien għadda, il-proġett frammentat gradwalment, u kien hemm ix-xewqa li jinħolqu moduli ġodda min-naħa tal-klijent fuq qafas JS modern u jmexxuhom fil-browser. Bdejna nimxu minn WCF/SOAP għal REST/HTTP, għalhekk kellna bżonn libreriji ġodda biex inniedu malajr servizzi bbażati fuq AspNet WebApi. L-ewwel verżjoni fuq il-.Net Framework 4.5 saret mill-perit tagħna kważi għarkupptejh fil-ħin liberu tiegħu, iżda barra mill-kaxxa għamlitha possibbli li jitnieda servizz bi tliet linji fi Program.cs li kien fih awtorizzazzjoni (NTLM), illoggjar, Swagger, IoC/DI fuq ibbażat fuq Castle Windsor, klijenti HTTP personalizzati li jgħaddu diversi headers biex jipprovdu logging minn tarf sa tarf matul il-proġett kollu. U din il-ħaġa sħiħa tista 'tiġi kkonfigurata aktar direttament fil-fajl tal-konfigurazzjoni tas-servizz.
Madankollu, mhux kollox kien bla xkiel: din il-librerija rriżulta li kienet estremament inflessibbli f'termini ta 'introduzzjoni ta' moduli ġodda. Pereżempju, jekk għandek bżonn iżżid xi middleware speċjali, kellek toħloq assemblaġġ ġdid u tirret mill-klassi bażi li tmexxi s-servizz, li kien estremament inkonvenjenti. Fortunatament, ma kienx hemm ħafna każijiet bħal dawn.
L-era ta 'Docker u Kubernetes
Wasal iż-żmien meta waslet magħna l-mewġa ta 'Docker u Kubernetes, li rajna mill-qrib: wara kollox, kien ċans kbir li nibdew nimxu aktar tul it-teknoloġiji, f'.Net Core. Dan ifisser li se jkollna bżonn infrastruttura ġdida biex inħaddmu s-servizzi: xi libreriji emigraw mill-.Net Framework għal .Net Standard u .Net Core prattikament mingħajr bidliet, xi wħud b'titjib żgħir. Imma fuq kollox ridt li naħdem mill-ġdid il-funzjonalità assoċjata mat-tnedija tas-servizzi fuq AspNet Core.
L-ewwel ħaġa li ikkunsidrajna kienet kunċett li jneħħi l-iżvantaġġ ewlieni tal-verżjoni preċedenti: in-nuqqas ta’ flessibilità. Għalhekk, ġie deċiż li s-sistema kollha tal-libreriji ssir kemm jista’ jkun indipendenti u modulari u tiġbor is-servizzi meħtieġa għall-funzjonalità bħala kostruttur.
L-għan ewlieni huwa li jinħoloq approċċ unifikat li jiddeskrivi kif jinteraġixxu ma 'databases, karozzi tal-linja u servizzi oħra. Ippruvajna nagħmlu l-integrazzjonijiet malajr u mingħajr tbatija, u l-iżviluppaturi setgħu jikkonċentraw fuq il-kitba tal-loġika tan-negozju aktar milli l-infrastruttura - diġà hija lesta. Repożitorju komuni jgħin biex titjieb l-esperjenza tal-interazzjoni fi ħdan it-timijiet: meta jintużaw infrastrutturi interni simili ħafna, ikun aktar faċli li tingħaqad mal-proċess ta’ żvilupp ta’ tim ieħor u tiskambja l-għarfien espert.
U għaliex għandna bżonn Open Source?
Irridu nuru l-maturità tal-kompetenza tagħna u nirċievu feedback ta 'kwalità għolja: persuna barra l-bank tkun tista' ġġib xi ħaġa minnha nfisha. Aħna huma interessati wkoll fl-iżvilupp ta 'prattiċi għall-ħidma ma' mikroservizzi u DDD fuq .NET fl-industrija; forsi xi ħadd ikun irid jieħu f'idejh ċerti partijiet tal-qafas.
Attwalment, ViennaNET
Issa ejja nagħtu ħarsa aktar mill-qrib.
ViennaNET.WebApi.*
Dan is-sett ta’ libreriji jikkonsisti mill-“għerq” ViennaNET.WebApi, li fih il-klassi tal-bennej għas-servizz CompanyHostBuilder, u sett ta’ konfiguraturi ViennaNET.WebApi.Configurators.*, li kull wieħed minnhom jippermettilek li żżid u tikkonfigura xi funzjonalità mal-maħluq. servizz. Fost il-konfiguraturi tista 'ssib konnessjonijiet għall-illoggjar, dijanjostiċi, tipi ta' awtentikazzjoni u awtorizzazzjoni, swagger, eċċ.
ViennaNET.WebApi.Runners.* fih ukoll bennejja tas-servizz konfigurati minn qabel. Dawn il-pakketti jippermettulek li ma tiftakarx kull darba li toħloq servizz ġdid liema konfiguraturi jeħtieġ li jiġu konnessi. Madankollu, bl-ebda mod ma jillimitaw il-funzjonalità tal-bennej tas-servizz.
ViennaNET.Medjatur.*
Libreriji li jippermettulek toħloq xarabank intermedjarju intern għall-kmandi u t-talbiet fi ħdan servizz. Dan l-approċċ jippermettilek tnaqqas in-numru ta 'injezzjonijiet DI għal waħda, pereżempju, fil-kontrolluri. Minħabba dan, tista 'żżid diversi dekoraturi mat-talbiet, li jgħaqqad l-ipproċessar tagħhom u jnaqqas l-ammont ta' kodiċi.
ViennaNET.Validazzjoni
Assemblaġġ li fih sett ta' klassijiet għall-ħolqien ta' regoli ta' validazzjoni u sekwenzi minnhom. Huwa konvenjenti ħafna għall-implimentazzjoni tal-validazzjoni tad-dominju, peress li jippermettilek tiddeskrivi kull kundizzjoni tan-negozju fil-forma ta 'regola sempliċi u separata.
ViennaNET.Redis
Librerija b'tgeżwir għal xogħol konvenjenti ma' Redis bħala cache fil-memorja.
ViennaNET.Speċifikazzjonijiet
Assemblaġġ li fih klassijiet li jimplimentaw il-mudell tal-Ispeċifikazzjoni.
Dan mhux dak kollu li hemm fis-sett tagħna. Tista 'tara l-bqija
Grazzi għall-attenzjoni tiegħek, nistennew bil-ħerqa l-kummenti tiegħek u t-talbiet tiegħek.
Sors: www.habr.com