Veröffentlichung des Frameworks zur Erstellung von Netzwerkanwendungen ErgoFramework 2.2

Die nächste Veröffentlichung von ErgoFramework 2.2 erfolgte und implementierte den gesamten Erlang-Netzwerk-Stack und seine OTP-Bibliothek in der Go-Sprache. Das Framework bietet dem Entwickler flexible Tools aus der Erlang-Welt zum Erstellen verteilter Lösungen in der Go-Sprache unter Verwendung vorgefertigter allgemeiner Entwurfsmuster gen.Application, gen.Supervisor und gen.Server sowie spezieller – gen. Stage (verteiltes Pub/Sub), gen. Saga (verteilte Transaktionen, eine Implementierung des SAGA-Entwurfsmusters) und gen.Raft (eine Implementierung des Raft-Protokolls).

Darüber hinaus bietet das Framework Proxy-Funktionalität mit Ende-zu-Ende-Verschlüsselung, die in Erlang/OTP und Elixir nicht verfügbar ist. Da die Go-Sprache kein direktes Analogon zum Erlang-Prozess hat, verwendet das Framework Goroutinen als Grundlage für gen.Server mit einem „Recover“-Wrapper zur Behandlung von Ausnahmesituationen. Der Projektcode wird unter der MIT-Lizenz vertrieben.

Der Netzwerkstapel in ErgoFramework implementiert die DIST-Spezifikation des Erlang-Protokolls vollständig. Dies bedeutet, dass auf der Basis von ErgoFramework geschriebene Anwendungen nativ mit allen Anwendungen funktionieren, die in den Programmiersprachen Erlang oder Elixir geschrieben sind (ein Beispiel für die Interaktion mit einem Erlang-Knoten). Erwähnenswert ist auch, dass das gen.Stage-Entwurfsmuster gemäß der Elixir GenStage-Spezifikation implementiert ist und vollständig mit dieser kompatibel ist (Implementierungsbeispiel).

In der neuen Version:

  • Neue Vorlagen hinzugefügt
    • gen.Web ist ein Web-API-Gateway-Entwurfsmuster (auch bekannt als Backend für Frontend). Beispiel.
    • gen.TCP ist eine Vorlage, mit der Sie mit minimalem Aufwand beim Schreiben von Code einen Pool von TCP-Verbindungsakzeptoren implementieren können. Beispiel.
    • gen.UDP – ähnlich der gen.TCP-Vorlage, nur für das UDP-Protokoll. Beispiel.
  • Mit der Implementierung eines einfachen Ereignisbusses innerhalb eines Knotens wurde eine neue Ereignisfunktionalität vorgeschlagen, mit der Sie Mechanismen zum Austausch von Ereignissen (Pub/Sub) zwischen lokalen Prozessen erstellen können. Beispiel.
  • Unterstützung für die Typregistrierung hinzugefügt, die eine automatische Serialisierung/Deserialisierung von Nachrichten in einen nativen Golang-Datentyp ermöglicht. Dies bedeutet, dass Sie etf.TermIntoStruct nicht mehr für jede empfangene Nachricht verwenden müssen. Registrierte Typen werden automatisch in den angegebenen Typ umgewandelt, was die Leistung des Nachrichtenaustauschs zwischen verteilten Knoten erheblich beschleunigt.

Source: opennet.ru

Kommentar hinzufügen