Wydanie frameworka do tworzenia aplikacji sieciowych ErgoFramework 2.2

Nastąpiła kolejna aktualizacja ErgoFramework 2.2, która implementuje pełny stos sieciowy Erlang oraz jego bibliotekę OTP w języku Go. Framework oferuje programistom elastyczne narzędzia z ekosystemu Erlang do tworzenia rozproszonych rozwiązań w języku Go za pomocą gotowych szablonów projektowania ogólnego przeznaczenia gen.Application, gen.Supervisor i gen.Server, a także szablonów specjalistycznych — gen.Stage (rozproszona wymiana wiadomości), gen.Saga (rozproszone transakcje, realizacja wzorca projektowego SAGA) oraz gen.Raft (implementacja protokołu Raft).

Ponadto framework oferuje funkcjonalność proxy z możliwością end-to-end szyfrowania, niedostępną w Erlang/OTP i Elixir. Ponieważ w języku Go nie ma bezpośredniego odpowiednika procesu Erlang, w frameworku wykorzystuje się goroutine jako podstawę dla gen.Server z dodatkową obsługą 'recover' do możliwości obsługi sytuacji wyjątkowych. Kod projektu jest udostępniany na licencji MIT.

Stos sieciowy w ErgoFramework w pełni realizuje specyfikację protokołu DIST Erlang. Oznacza to, że aplikacje napisane w ErgoFramework natywnie współpracują z jakimikolwiek aplikacjami napisanymi w językach programowania Erlang lub Elixir (przykład interakcji z węzłem Erlang). Warto także zauważyć, że wzorzec projektowy gen.Stage jest realizowany zgodnie ze specyfikacją Elixir GenStage i jest z nim w pełni zgodny (przykład realizacji).

W nowym wydaniu:

  • Dodano nowe szablony
    • gen.Web — wzorzec projektowy Web API Gateway (znany również jako Backend For Frontend). Przykład.
    • gen.TCP — wzorzec, który pozwala na implementację puli akceptorów połączeń TCP z minimalnym wysiłkiem w pisaniu kodu. Przykład.
    • gen.UDP — analogiczny do szablonu gen.TCP, ale dla protokołu UDP. Przykład.
  • Zapewniono nową funkcjonalność Events z realizacją prostego szeregowego kranu wydarzeń wewnątrz węzła, która umożliwia tworzenie mechanizmów wymiany wydarzeń (pub/sub) pomiędzy lokalnymi procesami. Przykład.
  • Dodano wsparcie dla rejestracji typów, co pozwala na automatyczne przeprowadzanie serializacji/deserializacji wiadomości do natywnego typu danych Golang. Oznacza to, że nie trzeba już używać etf.TermIntoStruct dla każdej otrzymanej wiadomości. Zarejestrowane typy będą automatycznie konwertowane na zadany typ, co znacznie zwiększa wydajność wymiany wiadomości między rozproszonymi węzłami.

Źródło: opennet.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster