ViennaNET: usa ka hugpong sa mga librarya alang sa backend

Hello sa tanan!

Kami usa ka komunidad sa mga .NET developers sa Raiffeisenbank ug gusto namong maghisgot bahin sa usa ka hugpong sa mga librarya sa imprastraktura base sa .NET Core alang sa dali nga paghimo og mga microservice nga adunay usa ka ekosistema. Gidala nila kini sa Open Source!

ViennaNET: usa ka hugpong sa mga librarya alang sa backend

Usa ka gamay nga kasaysayan

Kaniadto kami adunay usa ka dako nga proyekto nga monolitik, nga hinayhinay nga nahimo nga usa ka hugpong sa mga microservice (mahimo nimong mabasa ang bahin sa mga bahin sa kini nga proseso sa kini nga artikulo). Sa proseso, nasugatan namo ang problema nga sa paghimo og bag-ong mga microservice, kanunay namong kopyahon ang nagkalain-laing solusyon sa imprastraktura - sama sa pag-set up sa logging, pagtrabaho sa database, WCF, ug uban pa. Usa ka team ang nagtrabaho niini nga proyekto, ug ang tanan naanad na sa pipila ka establisado nga pamaagi sa pagtrabaho sa imprastraktura. Busa, among gibulag ang komon nga code ngadto sa usa ka bulag nga repositoryo, giputos ang mga nakolektang library sa Nuget packages ug gibutang kini sa among internal nga Nuget repository.

Milabay ang panahon, anam-anam nga nabahin ang proyekto, ug adunay tinguha sa paghimo og bag-ong mga module sa kilid sa kliyente sa modernong JS framework ug ipadagan kini sa browser. Nagsugod kami sa pagbalhin gikan sa WCF/SOAP ngadto sa REST/HTTP, mao nga nanginahanglan kami og bag-ong mga librarya aron dali nga maglunsad og mga serbisyo base sa AspNet WebApi. Ang una nga bersyon sa .Net Framework 4.5 gihimo sa among arkitekto nga hapit sa iyang mga tuhod sa iyang libre nga oras, apan sa gawas sa kahon nahimo kini nga posible nga maglunsad og serbisyo nga adunay tulo ka linya sa Program.cs nga adunay pagtugot (NTLM), logging, Swagger, IoC/DI sa base sa Castle Windsor, customized HTTP kliyente nga forward sa lain-laing mga header sa paghatag end-to-end logging sa tibuok proyekto. Ug kini nga tibuuk nga butang mahimo’g dugang nga ma-configure nga direkta sa file sa pag-configure sa serbisyo.

Bisan pa, dili tanan hapsay: kini nga librarya nahimo’g labi ka dili mabag-o sa mga termino sa pagpaila sa bag-ong mga module. Pananglitan, kung kinahanglan nimo nga idugang ang usa ka espesyal nga middleware, kinahanglan nimo nga maghimo usa ka bag-ong asembliya ug makapanunod gikan sa base nga klase nga nagpadagan sa serbisyo, nga labi ka dili kombenyente. Maayo na lang, dili kaayo daghan ang ingon nga mga kaso.

Ang panahon sa Docker ug Kubernetes

Miabot na ang panahon nga ang balod sa Docker ug Kubernetes nakaabot kanamo, nga among gibantayan pag-ayo: human sa tanan, kini usa ka dako nga kahigayunan sa pagsugod sa paglihok sa dugang subay sa mga teknolohiya, sa .Net Core. Nagpasabot kini nga magkinahanglan kami og bag-ong imprastraktura aron makadagan ang mga serbisyo: pipila ka mga librarya ang milalin gikan sa .Net Framework ngadto sa .Net Standard ug .Net Core nga halos walay mga kausaban, ang uban adunay ginagmay nga mga kalamboan. Apan labaw sa tanan gusto nakong i-rework ang functionality nga nalangkit sa paglunsad og mga serbisyo sa AspNet Core.

Ang una nga butang nga among gikonsiderar mao ang usa ka konsepto nga magtangtang sa panguna nga kakulangan sa miaging bersyon: kakulang sa pagka-flexible. Busa, nakahukom nga himoon ang tibuok sistema sa librarya nga independente ug modular kutob sa mahimo ug kolektahon ang mga serbisyo nga gikinahanglan alang sa pagpaandar isip constructor.

Ang panguna nga katuyoan mao ang paghimo usa ka hiniusa nga pamaagi nga naghulagway kung giunsa ang pakigsulti sa mga database, bus ug uban pang mga serbisyo. Gisulayan namon nga himuon nga dali ug wala’y sakit ang mga panagsama, ug mahimo’g magkonsentrar ang mga developer sa pagsulat sa lohika sa negosyo kaysa sa imprastraktura - andam na kini. Ang usa ka komon nga repository makatabang sa pagpalambo sa kasinatian sa interaksyon sa sulod sa mga team: kung ang susama kaayo nga internal nga mga imprastraktura gigamit, mas sayon ​​ang pag-apil sa proseso sa pagpalambo sa laing team ug pagbayloay og kahanas.

Ug nganong kinahanglan nato ang Open Source?

Gusto namon nga ipakita ang pagkahamtong sa among kahanas ug makadawat og taas nga kalidad nga feedback: ang usa ka tawo sa gawas sa bangko makahimo sa pagdala sa ilang kaugalingon. Interesado usab kami sa pagpalambo sa mga gawi sa pagtrabaho kauban ang mga microservice ug DDD sa .NET sa industriya, tingali adunay gusto nga mopuli sa pipila ka bahin sa balangkas.

Sa tinuud, ViennaNET

Karon atong tan-awon pag-ayo. Ang tibuok nga source code gibutang dinhi.

ViennaNET.WebApi.*

Kini nga hugpong sa mga librarya naglangkob sa "gamut" nga ViennaNET.WebApi, nga adunay sulud nga magtutukod nga klase alang sa serbisyo sa CompanyHostBuilder, ug usa ka hugpong sa mga configurator nga ViennaNET.WebApi.Configurators.*, ang matag usa niini nagtugot kanimo sa pagdugang ug pag-configure sa pipila nga mga gamit sa gibuhat. serbisyo. Lakip sa mga configurator makit-an nimo ang mga koneksyon alang sa pag-log, diagnostic, pag-authenticate ug mga tipo sa pagtugot, swagger, ug uban pa.

Ang ViennaNET.WebApi.Runners.* naglakip usab sa pre-configured service builders. Gitugotan ka niini nga mga pakete nga dili nimo mahinumduman sa matag higayon nga maghimo ka usa ka bag-ong serbisyo nga kinahanglan nga konektado sa mga configurator. Bisan pa, wala nila gilimitahan ang pagpaandar sa tigtukod sa serbisyo sa bisan unsang paagi.

ViennaNET.Mediator.*

Mga librarya nga nagtugot kanimo sa paghimo og internal nga intermediary bus alang sa mga sugo ug mga hangyo sulod sa usa ka serbisyo. Kini nga pamaagi nagtugot kanimo sa pagpakunhod sa gidaghanon sa DI injection ngadto sa usa, pananglitan, sa mga controller. Tungod niini, mahimo nimong idugang ang lainlaing mga dekorador sa mga hangyo, nga naghiusa sa ilang pagproseso ug pagkunhod sa kantidad sa code.

ViennaNET.Pagpamatuod

Usa ka asembliya nga adunay usa ka hugpong sa mga klase alang sa paghimo sa mga lagda sa pag-validate ug mga han-ay gikan kanila. Kini sayon ​​​​kaayo alang sa pagpatuman sa validation sa domain, tungod kay kini nagtugot kanimo sa paghulagway sa matag kondisyon sa negosyo sa porma sa usa ka yano ug bulag nga lagda.

ViennaNET.Redis

Usa ka librarya nga adunay mga wrapper alang sa sayon ​​​​nga trabaho uban sa Redis isip in-memory cache.

ViennaNET.Specifications

Usa ka asembliya nga adunay mga klase nga nagpatuman sa sumbanan sa Pagtino.

Dili lang kini ang naa sa among set. Makita nimo ang uban sa GitHub repository. Nagplano kami nga buhian ang among mga librarya alang sa pagtrabaho kauban ang mga database sa OpenSource sa dili madugay.

Salamat sa imong pagtagad, nagpaabut kami sa imong mga komento ug mga hangyo sa pagbitad.

Source: www.habr.com

Idugang sa usa ka comment