Llançament del marc per a la creació d'aplicacions de xarxa ErgoFramework 2.2

La següent versió d'ErgoFramework 2.2 va tenir lloc, implementant la pila de xarxa completa d'Erlang i la seva biblioteca OTP en l'idioma Go. El marc proporciona al desenvolupador eines flexibles del món d'Erlang per crear solucions distribuïdes en llenguatge Go utilitzant patrons de disseny de propòsit general preparats gen.Application, gen.Supervisor i gen.Server, així com d'altres especialitzats - gen. Stage (pub/sub distribuït), gen. Saga (transaccions distribuïdes, una implementació del patró de disseny SAGA) i gen.Raft (una implementació del protocol Raft).

A més, el marc proporciona una funcionalitat de proxy amb xifratge d'extrem a extrem, que no està disponible a Erlang/OTP i Elixir. Com que el llenguatge Go no té un anàleg directe del procés Erlang, el marc utilitza goroutines com a base per a gen.Server amb un embolcall de "recuperació" per gestionar situacions d'excepció. El codi del projecte es distribueix sota la llicència MIT.

La pila de xarxa a ErgoFramework implementa completament l'especificació DIST del protocol Erlang. Això vol dir que les aplicacions escrites sobre la base d'ErgoFramework funcionen de manera nativa amb qualsevol aplicació escrita en els llenguatges de programació Erlang o Elixir (un exemple d'interacció amb un node Erlang). També val la pena assenyalar que el patró de disseny gen.Stage s'implementa segons l'especificació Elixir GenStage i és totalment compatible amb ella (exemple d'implementació).

A la nova versió:

  • S'han afegit noves plantilles
    • gen.Web és un patró de disseny de la passarel·la de l'API web (també conegut com a backend per a frontend). Exemple.
    • gen.TCP és una plantilla que us permet implementar un grup d'acceptadors de connexió TCP amb el mínim esforç per escriure codi. Exemple.
    • gen.UDP: semblant a la plantilla gen.TCP, només per al protocol UDP. Exemple.
  • S'ha proposat una nova funcionalitat d'esdeveniments amb la implementació d'un bus d'esdeveniments senzill dins d'un node, que permet crear mecanismes d'intercanvi d'esdeveniments (pub/sub) entre processos locals. Exemple.
  • S'ha afegit suport per al registre de tipus, que permet la serialització/deserialització automàtica dels missatges en un tipus de dades natiu de Golang. Això vol dir que ja no cal que utilitzeu etf.TermIntoStruct per a cada missatge rebut. Els tipus registrats es transformaran automàticament al tipus especificat, la qual cosa accelera significativament el rendiment de l'intercanvi de missatges entre nodes distribuïts.

Font: opennet.ru

Afegeix comentari