Hei kaikille!
Olemme Raiffeisenbankin .NET-kehittäjien yhteisö ja haluamme puhua joukosta infrastruktuurikirjastoja, jotka perustuvat .NET Coreen mikropalveluiden nopeaan luomiseen yhdellä ekosysteemillä. He toivat sen avoimeen lähdekoodiin!
Vähän historiaa
Olipa kerran suuri monoliittinen projekti, joka vähitellen muuttui joukoksi mikropalveluita (voit lukea tämän prosessin ominaisuuksista
Aikaa kului, projekti pirstoutui vähitellen ja haluttiin luoda uusia asiakaspuolen moduuleja nykyaikaiselle JS-kehykselle ja ajaa niitä selaimessa. Aloitimme siirtymisen WCF/SOAPista REST/HTTP:hen, joten tarvitsimme uusia kirjastoja käynnistääksemme nopeasti AspNet WebApiin perustuvia palveluita. Ensimmäisen version .Net Framework 4.5:stä teki arkkitehtimme lähes polvillaan vapaa-ajallaan, mutta paketista otettuna se mahdollisti kolmerivisen palvelun käynnistämisen Program.cs:ssä, joka sisälsi valtuutuksen (NTLM), kirjaus, Swagger, Castle Windsoriin perustuva IoC/DI, mukautetut HTTP-asiakkaat, jotka välittävät erilaisia otsikoita ja mahdollistavat päästä päähän -kirjauksen koko projektin ajan. Ja koko tämä asia voidaan määrittää edelleen suoraan palvelun määritystiedostossa.
Kaikki ei kuitenkaan ollut sujuvaa: tämä kirjasto osoittautui erittäin joustamattomaksi uusien moduulien käyttöönoton suhteen. Jos esimerkiksi piti lisätä erityistä väliohjelmistoa, jouduit luomaan uuden kokoonpanon ja perimään palvelua pyörittävästä perusluokasta, mikä oli erittäin hankalaa. Onneksi tällaisia tapauksia ei ollut kovin paljon.
Dockerin ja Kubernetesin aikakausi
On tullut aika, jolloin Dockerin ja Kubernetesin aalto saavutti meidät, jota seurasimme tiiviisti: olihan se loistava tilaisuus lähteä liikkeelle teknologioiden varrella, .Net Coressa. Tämä tarkoittaa, että tarvitsemme uuden infrastruktuurin palvelujen suorittamiseen: osa kirjastoista on siirtynyt .Net Frameworkista .Net Standardiin ja .Net Coreen käytännössä ilman muutoksia, osa pienin parannuksin. Mutta ennen kaikkea halusin muokata AspNet Coren palveluiden käynnistämiseen liittyviä toimintoja.
Ensimmäinen asia, jota mietimme, oli konsepti, joka poistaisi edellisen version päähaittapuolen: joustavuuden puutteen. Tästä syystä päätettiin tehdä koko kirjastojärjestelmästä mahdollisimman itsenäinen ja modulaarinen ja koota toimivuuden edellyttämät palvelut rakentajana.
Päätavoitteena on luoda yhtenäinen lähestymistapa, joka kuvaa tietokantojen, linja-autojen ja muiden palvelujen vuorovaikutusta. Yritimme tehdä integroinnista nopeita ja kivuttomia, ja kehittäjät voivat keskittyä liiketoimintalogiikan kirjoittamiseen infrastruktuurin sijaan - se on jo valmis. Yhteinen tietovarasto auttaa parantamaan vuorovaikutuksen kokemusta tiimien sisällä: kun käytetään hyvin samanlaisia sisäisiä infrastruktuureja, on helpompi liittyä toisen tiimin kehitysprosessiin ja vaihtaa asiantuntemusta.
Ja miksi tarvitsemme avoimen lähdekoodin?
Haluamme näyttää osaamisemme kypsyyden ja saada laadukasta palautetta: pankin ulkopuolinen ihminen voi tuoda jotain itsestään. Olemme myös kiinnostuneita käytäntöjen kehittämisestä työskentelyyn mikropalvelujen ja DDD:n kanssa .NET:ssä alalla, ehkä joku haluaa ottaa haltuunsa tietyt puitteet.
Itse asiassa ViennaNET
Katsotaanpa nyt tarkemmin.
ViennaNET.WebApi.*
Tämä kirjastojoukko koostuu "juuritason" ViennaNET.WebApista, joka sisältää CompanyHostBuilder-palvelun rakentajaluokan, ja joukon konfiguraattoreita ViennaNET.WebApi.Configurators.*, joista jokaisen avulla voit lisätä ja määrittää joitain toimintoja luotuun palvelua. Konfiguraattorien joukosta löydät yhteydet lokiin, diagnostiikkaan, todennus- ja valtuutustyyppeihin, swaggeriin jne.
ViennaNET.WebApi.Runners.* sisältää myös esikonfiguroidut palvelunrakentajat. Näiden pakettien avulla et muista joka kerta, kun luot uuden palvelun, mitkä konfiguraattorit on yhdistettävä. Ne eivät kuitenkaan rajoita palvelurakentajan toimivuutta millään tavalla.
ViennaNET.Mediator.*
Kirjastot, joiden avulla voit luoda sisäisen välitysväylän käskyjä ja pyyntöjä varten palvelussa. Tämän lähestymistavan avulla voit vähentää DI-injektioiden määrää yhteen, esimerkiksi ohjaimissa. Tämän ansiosta voit lisätä pyyntöihin erilaisia sisustajia, mikä yhtenäistää niiden käsittelyä ja vähentää koodin määrää.
ViennaNET.Validation
Kokoonpano, joka sisältää joukon luokkia validointisääntöjen ja sekvenssien luomiseksi niistä. Se on erittäin kätevä toimialueen validoinnin toteuttamiseen, koska sen avulla voit kuvata jokaista liiketoimintaehtoa yksinkertaisen ja erillisen säännön muodossa.
ViennaNET.Redis
Kirjasto, jossa on kääreet kätevään työskentelyyn Rediksen kanssa muistin välimuistina.
ViennaNET.Specifications
Kokoonpano, joka sisältää luokkia, jotka toteuttavat Specification-mallin.
Tämä ei ole kaikki, mitä sarjassamme on. Voit nähdä loput
Kiitos huomiostasi, odotamme kommenttejasi ja vetopyyntöjäsi.
Lähde: will.com