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!
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 í
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.
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
Þakka þér fyrir athygli þína, við hlökkum til athugasemda þinna og dragbeiðna.
Heimild: www.habr.com