Den senaste versionen av ErgoFramework 2.2 har slĂ€ppts, som implementerar hela nĂ€tverksstegen för Erlang och dess OTP-bibliotek i Go. Ramverket erbjuder utvecklaren ett flexibelt verktyg frĂ„n Erlang-vĂ€rlden för att skapa distribuerade lösningar i Go med hjĂ€lp av fĂ€rdiga designmönster för allmĂ€nt bruk gen.Application, gen.Supervisor och gen.Server, samt specialiserade â gen.Stage (distribuerad pub/sub), gen.Saga (distribuerade transaktioner, implementering av designmönstret SAGA) och gen.Raft (implementering av Raft-protokollet).
Dessutom erbjuder ramverket proxyfunktionalitet med end-to-end-kryptering, vilket inte Àr tillgÀngligt i Erlang/OTP och Elixir. Eftersom det inte finns en direkt motsvarighet till Erlang-processer i Go, anvÀnds goroutine som grund för gen.Server med en 'recover'-inpackning för att hantera undantagsförhÄllanden. Projektkoden distribueras under MIT-licensen.
NÀtverkssteget i ErgoFramework implementerar helt specifikationen för DIST-protokollet i Erlang. Det betyder att applikationer som skrivits med ErgoFramework fungerar nativt med alla applikationer skrivna i programmeringssprÄken Erlang eller Elixir (exempel pÄ interaktion med en Erlang-nod). Det Àr ocksÄ vÀrt att nÀmna att designmönstret gen.Stage har implementerats enligt specifikationen för Elixir GenStage och Àr helt kompatibelt med den (implementeringsexempel).
I den nya utgÄvan:
- Nya mönster har lagts till
- gen.Web â designmönster för Web API Gateway (Ă€ven kĂ€nt som Backend For Frontend). Exempel.
- gen.TCP â ett mönster som gör det möjligt att implementera en pool av TCP-anslutningsacceptorer med minimala anstrĂ€ngningar i kodningen. Exempel.
- gen.UDP â liknar mönstret gen.TCP, men för UDP-protokollet. Exempel.
- En ny funktionalitet för Events har föreslagits med en enkel hÀndelsebuss inuti noden, vilket gör det möjligt att skapa mekanismer för hÀndelseutbyte (pub/sub) mellan lokala processer. Exempel.
- Stöd för typregistrering har lagts till, vilket gör det möjligt att automatiskt utföra serialisering/deserialisering av meddelanden till den nativa datatypen Golang. Detta betyder att det inte lÀngre behövs anvÀnda etf.TermIntoStruct för varje mottaget meddelande. Registrerade typer kommer att omvandlas automatiskt till den angivna typen, vilket avsevÀrt ökar prestandan för meddelandeutbyte mellan distribuerade noder.
KĂ€lla: opennet.ru
