Release av ramverket för att skapa nätverksapplikationer ErgoFramework 2.2

Nästa version av ErgoFramework 2.2 ägde rum, och implementerade hela Erlang-nätverksstacken och dess OTP-bibliotek i Go-språket. Ramverket förser utvecklaren med flexibla verktyg från Erlangs värld för att skapa distribuerade lösningar i Go-språket med hjälp av färdiga generella designmönster gen.Application, gen.Supervisor och gen.Server, såväl som specialiserade sådana - gen. Stage (distribuerad pub/sub), gen. Saga (distribuerade transaktioner, en implementering av SAGA-designmönstret) och gen.Raft (en implementering av Raft-protokollet).

Dessutom ger ramverket proxyfunktionalitet med end-to-end-kryptering, vilket inte är tillgängligt i Erlang/OTP och Elixir. Eftersom Go-språket inte har en direkt analog till Erlang-processen, använder ramverket goroutiner som grund för gen.Server med ett "återställnings"-omslag för att hantera undantagssituationer. Projektkoden distribueras under MIT-licensen.

Nätverksstacken i ErgoFramework implementerar fullt ut DIST-specifikationen för Erlang-protokollet. Detta innebär att applikationer skrivna på basis av ErgoFramework fungerar inbyggt med alla applikationer skrivna i programmeringsspråken Erlang eller Elixir (ett exempel på interaktion med en Erlang-nod). Det är också värt att notera att gen.Stage-designmönstret är implementerat enligt Elixir GenStage-specifikationen och är helt kompatibelt med det (implementeringsexempel).

I den nya utgåvan:

  • Nya mallar har lagts till
    • gen.Web är ett Web API Gateway (även känd som Backend For Frontend) designmönster. Exempel.
    • gen.TCP är en mall som låter dig implementera en pool av TCP-anslutningsacceptorer med minimal ansträngning för att skriva kod. Exempel.
    • gen.UDP - liknande gen.TCP-mallen, endast för UDP-protokollet. Exempel.
  • En ny händelsefunktion har föreslagits med implementeringen av en enkel händelsebuss inuti en nod, som låter dig skapa mekanismer för utbyte av händelser (pub/sub) mellan lokala processer. Exempel.
  • Lagt till stöd för typregistrering, vilket tillåter automatisk serialisering/deserialisering av meddelanden till en inbyggd Golang-datatyp. Det betyder att du inte längre behöver använda etf.TermIntoStruct för varje meddelande som tas emot. Registrerade typer kommer att omvandlas till den angivna typen automatiskt, vilket avsevärt påskyndar prestandan för meddelandeutbyte mellan distribuerade noder.

Källa: opennet.ru

Lägg en kommentar