Hello kila mtu!
Sisi ni jumuiya ya wasanidi wa .NET katika Raiffeisenbank na tunataka kuzungumza kuhusu seti ya maktaba za miundombinu kulingana na .NET Core kwa kuunda huduma ndogo kwa haraka kwa mfumo ikolojia mmoja. Waliileta kwa Open Source!
kidogo ya historia
Wakati mmoja tulikuwa na mradi mkubwa wa monolithic, ambao polepole ukageuka kuwa seti ya huduma ndogo (unaweza kusoma juu ya sifa za mchakato huu katika
Muda ulipita, mradi uligawanyika polepole, na kulikuwa na hamu ya kuunda moduli mpya za upande wa mteja kwenye mfumo wa kisasa wa JS na kuziendesha kwenye kivinjari. Tulianza kuhama kutoka WCF/SOAP hadi REST/HTTP, kwa hivyo tulihitaji maktaba mpya ili kuzindua huduma haraka kulingana na AspNet WebApi. Toleo la kwanza kwenye .Net Framework 4.5 lilifanywa na mbunifu wetu karibu na magoti yake wakati wake wa bure, lakini nje ya sanduku ilifanya iwezekane kuzindua huduma na mistari mitatu katika Program.cs iliyokuwa na idhini (NTLM), ukataji miti, Swagger, IoC/DI kulingana na Castle Windsor, wateja walioboreshwa wa HTTP ambao husambaza vichwa mbalimbali ili kutoa ukataji wa miti kutoka mwisho hadi mwisho katika mradi mzima. Na jambo hili lote linaweza kusanidiwa zaidi moja kwa moja kwenye faili ya usanidi wa huduma.
Walakini, sio kila kitu kilikuwa laini: maktaba hii iligeuka kuwa isiyobadilika sana katika suala la kuanzisha moduli mpya. Kwa mfano, ikiwa unahitaji kuongeza vifaa maalum vya kati, ilibidi uunde mkusanyiko mpya na urithi kutoka kwa darasa la msingi linaloendesha huduma, ambayo ilikuwa ngumu sana. Kwa bahati nzuri, hakukuwa na kesi nyingi kama hizo.
Enzi ya Docker na Kubernetes
Wakati umefika ambapo wimbi la Docker na Kubernetes lilitufikia, ambalo tulitazama kwa karibu: baada ya yote, ilikuwa nafasi nzuri ya kuanza kusonga zaidi pamoja na teknolojia, katika .Net Core. Hii ina maana kwamba tutahitaji miundombinu mipya ili kuendesha huduma: baadhi ya maktaba zimehama kutoka .Net Framework hadi .Net Standard na .Net Core kivitendo bila mabadiliko, baadhi zikiwa na maboresho madogo. Lakini zaidi ya yote nilitaka kurekebisha utendaji unaohusishwa na uzinduzi wa huduma kwenye AspNet Core.
Jambo la kwanza tulilozingatia ni dhana ambayo ingeondoa drawback kuu ya toleo la awali: ukosefu wa kubadilika. Kwa hivyo, iliamuliwa kufanya mfumo mzima wa maktaba kuwa huru na wa kawaida iwezekanavyo na kukusanya huduma zinazohitajika kwa utendaji kama mjenzi.
Lengo kuu ni kuunda mbinu ya umoja inayoelezea jinsi ya kuingiliana na hifadhidata, mabasi na huduma zingine. Tulijaribu kufanya ushirikiano haraka na usio na uchungu, na watengenezaji wanaweza kuzingatia kuandika mantiki ya biashara badala ya miundombinu - tayari iko tayari. Hazina ya pamoja husaidia kuboresha matumizi ya mwingiliano ndani ya timu: wakati miundo mbinu ya ndani inayofanana sana inatumiwa, ni rahisi kujiunga na mchakato wa uundaji wa timu nyingine na kubadilishana utaalamu.
Na kwa nini tunahitaji Open Source?
Tunataka kuonyesha ukomavu wa utaalam wetu na kupokea maoni ya hali ya juu: mtu aliye nje ya benki ataweza kujiletea kitu. Pia tunavutiwa na uundaji wa mazoea ya kufanya kazi na huduma ndogo na DDD kwenye .NET kwenye tasnia; labda mtu atataka kuchukua sehemu fulani za mfumo.
Kwa kweli, ViennaNET
Sasa hebu tuangalie kwa karibu.
ViennaNET.WebApi.*
Seti hii ya maktaba inajumuisha "mzizi" ViennaNET.WebApi, iliyo na darasa la wajenzi kwa huduma ya CompanyHostBuilder, na seti ya visanidi ViennaNET.WebApi.Configurators.*, ambayo kila moja inakuruhusu kuongeza na kusanidi utendakazi fulani kwa iliyoundwa. huduma. Miongoni mwa wasanidi unaweza kupata viunganisho vya ukataji miti, uchunguzi, uthibitishaji na aina za idhini, swagger, nk.
ViennaNET.WebApi.Runners.* pia ina vijenzi vya huduma vilivyosanidiwa awali. Vifurushi hivi hukuruhusu kukumbuka kila wakati unapounda huduma mpya ambayo visanidi vinahitaji kuunganishwa. Hata hivyo, hawana kikomo utendaji wa wajenzi wa huduma kwa njia yoyote.
ViennaNET.Mediator.*
Maktaba zinazokuruhusu kuunda basi la kati la ndani kwa amri na maombi ndani ya huduma. Njia hii inakuwezesha kupunguza idadi ya sindano za DI kwa moja, kwa mfano, katika vidhibiti. Kutokana na hili, unaweza kuongeza mapambo mbalimbali kwa maombi, ambayo huunganisha usindikaji wao na kupunguza kiasi cha kanuni.
ViennaNET.Uthibitishaji
Mkutano ulio na seti ya madarasa ya kuunda sheria za uthibitishaji na mlolongo kutoka kwao. Ni rahisi sana kwa kutekeleza uthibitishaji wa kikoa, kwani inakuwezesha kuelezea kila hali ya biashara kwa namna ya utawala rahisi na tofauti.
ViennaNET.Redis
Maktaba iliyo na vifuniko kwa kazi rahisi na Redis kama kache ya kumbukumbu.
Vielelezo vya ViennaNET
Mkusanyiko ulio na madarasa yanayotekeleza muundo wa Uainisho.
Hii sio yote yaliyo kwenye seti yetu. Unaweza kuona wengine
Asante kwa umakini wako, tunatarajia maoni yako na maombi ya kuvuta.
Chanzo: mapenzi.com