ViennaNET: safn af bókasöfnum fyrir bakendann

Halló allir!

Við erum samfélag .NET þróunaraðila hjá Raiffeisenbank og við viljum tala um safn innviðasöfna sem byggjast á .NET Core til að búa til örþjónustur fljótt með einu vistkerfi. Þeir komu með það til Open Source!

ViennaNET: safn af bókasöfnum fyrir bakendann

Smá saga

Einu sinni vorum við með stórt einhæft verkefni, sem smám saman breyttist í safn af örþjónustum (þú getur lesið um eiginleika þessa ferlis í Þessi grein). Í því ferli lentum við í því vandamáli að við gerð nýrrar örþjónustu þurftum við oft að afrita ýmsar innviðalausnir - eins og að setja upp skráningu, vinna með gagnagrunn, WCF o.s.frv. Eitt teymi vann að þessu verkefni og allir voru búnir að venjast einhverri viðurkenndri nálgun við að vinna með innviði. Þess vegna skildum við sameiginlega kóðann í sérstaka geymslu, vöfðum söfnuðum söfnum inn í Nuget pakka og settum þá í innri Nuget geymsluna okkar.

Tíminn leið, verkefnið sundraðist smám saman og það var löngun til að búa til nýjar einingar við viðskiptavini á nútíma JS ramma og keyra þær í vafranum. Við byrjuðum að færa okkur úr WCF/SOAP yfir í REST/HTTP, svo okkur vantaði ný bókasöfn til að koma fljótt af stað þjónustu sem byggir á AspNet WebApi. Fyrsta útgáfan á .Net Framework 4.5 var gerð af arkitektinum okkar næstum á hnjánum í frítíma sínum, en úr kassanum gerði það mögulegt að setja af stað þjónustu með þremur línum í Program.cs sem innihélt leyfi (NTLM), skógarhögg, Swagger, IoC/DI á byggt á Castle Windsor, sérsniðnum HTTP viðskiptavinum sem senda ýmsa hausa til að veita end-til-enda skógarhögg í öllu verkefninu. Og allt þetta gæti verið frekar stillt beint í þjónustustillingarskránni.

Hins vegar var ekki allt með felldu: þetta bókasafn reyndist afar ósveigjanlegt hvað varðar innleiðingu á nýjum einingar. Til dæmis, ef þú þurftir að bæta við einhverjum sérstökum millibúnaði, þurftir þú að búa til nýja samsetningu og erfa frá grunnflokknum sem rekur þjónustuna, sem var afar óþægilegt. Sem betur fer voru slík tilvik ekki mjög mörg.

Tímabil Docker og Kubernetes

Sá tími er kominn að bylgja Docker og Kubernetes hefur náð til okkar, sem við höfum fylgst grannt með: þegar allt kemur til alls var þetta frábært tækifæri til að byrja lengra í tækninni, í .Net Core. Þetta þýðir að við þurfum nýjan innviði til að keyra þjónustu: sum bókasöfn hafa flutt úr .Net Framework yfir í .Net Standard og .Net Core nánast án breytinga, sum með minniháttar endurbótum. En mest af öllu vildi ég endurvinna virknina sem tengist því að opna þjónustu á AspNet Core.

Það fyrsta sem við veltum fyrir okkur var hugtak sem myndi fjarlægja helstu galla fyrri útgáfunnar: skortur á sveigjanleika. Því var ákveðið að gera allt bókasafnskerfið eins sjálfstætt og einingakennt og hægt er og setja saman þá þjónustu sem nauðsynleg er fyrir virkni sem smiður.

Meginmarkmiðið er að búa til sameinaða nálgun sem lýsir hvernig á að hafa samskipti við gagnagrunna, strætisvagna og aðra þjónustu. Við reyndum að gera samþættingar fljótlegar og sársaukalausar og verktaki gátu einbeitt sér að því að skrifa viðskiptarökfræði frekar en innviði - það er þegar tilbúið. Sameiginleg geymsla hjálpar til við að bæta upplifunina af samskiptum innan teyma: þegar mjög svipaðir innri innviðir eru notaðir er auðveldara að taka þátt í þróunarferli annars liðs og skiptast á sérfræðiþekkingu.

Og hvers vegna þurfum við Open Source?

Við viljum sýna þroska sérfræðiþekkingar okkar og fá hágæða endurgjöf: einstaklingur utan bankans mun geta komið með eitthvað af sér. Við höfum líka áhuga á að þróa starfshætti til að vinna með örþjónustu og DDD á .NET í greininni, kannski vill einhver taka yfir ákveðna hluta rammans.

Reyndar, ViennaNET

Nú skulum við skoða nánar. Fullur frumkóði er birtur hér.

ViennaNET.WebApi.*

Þetta safn af bókasöfnum samanstendur af „rót“ ViennaNET.WebApi, sem inniheldur smíðaflokkinn fyrir CompanyHostBuilder þjónustuna, og setti af stillingum ViennaNET.WebApi.Configurators.*, sem hver um sig gerir þér kleift að bæta við og stilla einhverja virkni við búið til. þjónustu. Meðal stillingar er hægt að finna tengingar fyrir skógarhögg, greiningu, auðkenningar- og heimildargerðir, swagger o.fl.

ViennaNET.WebApi.Runners.* inniheldur einnig forstillta þjónustusmiða. Þessir pakkar leyfa þér að muna ekki í hvert skipti sem þú býrð til nýja þjónustu hvaða stillingar þurfa að vera tengdir. Hins vegar takmarka þeir ekki virkni þjónustuaðilans á nokkurn hátt.

ViennaNET.Mediator.*

Bókasöfn sem gera þér kleift að búa til innri milligöngurútu fyrir skipanir og beiðnir innan þjónustu. Þessi nálgun gerir þér kleift að fækka DI inndælingum í eina, til dæmis í stýringar. Vegna þessa geturðu bætt ýmsum skreytingum við beiðnir, sem sameinar vinnslu þeirra og minnkar magn kóða.

ViennaNET.Validation

Samsetning sem inniheldur mengi flokka til að búa til löggildingarreglur og raðir úr þeim. Það er mjög þægilegt til að innleiða lénsvottun, þar sem það gerir þér kleift að lýsa hverju viðskiptaástandi í formi einfaldrar og sérstakrar reglu.

ViennaNET.Redis

Bókasafn með umbúðum fyrir þægilega vinnu með Redis sem skyndiminni í minni.

ViennaNET.Specifications

Samsetning sem inniheldur flokka sem útfæra forskriftarmynstrið.

Þetta er ekki allt sem er í settinu okkar. Þú getur séð restina í GitHub geymslunni. Við ætlum að gefa út bókasöfnin okkar til að vinna með gagnagrunna á OpenSource fljótlega.

Þakka þér fyrir athygli þína, við hlökkum til athugasemda þinna og dragbeiðna.

Heimild: www.habr.com

Bæta við athugasemd