Wydanie frameworka do tworzenia aplikacji sieciowych ErgoFramework 2.2

Nastąpiło kolejne wydanie ErgoFramework 2.2, implementujące kompletny stos sieciowy Erlang i jego bibliotekę OTP w języku Go. Framework udostępnia programiście elastyczne narzędzia ze świata Erlanga do tworzenia rozwiązań rozproszonych w języku Go z wykorzystaniem gotowych wzorców projektowych ogólnego przeznaczenia gen.Application, gen.Supervisor i gen.Server, a także specjalistycznych - gen. Stage (rozproszony pub/sub), gen. Saga (transakcje rozproszone, implementacja wzorca projektowego SAGA) i gen.Raft (implementacja protokołu Raft).

Ponadto platforma zapewnia funkcjonalność proxy z kompleksowym szyfrowaniem, która nie jest dostępna w Erlang/OTP i Elixir. Ponieważ język Go nie ma bezpośredniego odpowiednika procesu Erlang, framework wykorzystuje goroutines jako podstawę dla gen.Server z opakowaniem „recover” do obsługi sytuacji wyjątkowych. Kod projektu jest rozpowszechniany na licencji MIT.

Stos sieciowy w ErgoFramework w pełni implementuje specyfikację DIST protokołu Erlang. Oznacza to, że aplikacje napisane w oparciu o ErgoFramework działają natywnie z dowolnymi aplikacjami napisanymi w językach programowania Erlang lub Elixir (przykład interakcji z węzłem Erlang). Warto również dodać, że wzorzec projektowy gen.Stage jest zaimplementowany zgodnie ze specyfikacją Elixir GenStage i jest z nią w pełni kompatybilny (przykład wdrożenia).

W nowym wydaniu:

  • Dodano nowe szablony
    • gen.Web to wzorzec projektowy Web API Gateway (znany również jako Backend For Frontend). Przykład.
    • gen.TCP to szablon, który pozwala zaimplementować pulę akceptorów połączeń TCP przy minimalnym wysiłku w pisaniu kodu. Przykład.
    • gen.UDP - podobny do szablonu gen.TCP, tylko dla protokołu UDP. Przykład.
  • Zaproponowano nową funkcjonalność Events wraz z implementacją prostej szyny zdarzeń wewnątrz węzła, która pozwala na tworzenie mechanizmów wymiany zdarzeń (pub/sub) pomiędzy procesami lokalnymi. Przykład.
  • Dodano obsługę rejestracji typów, która umożliwia automatyczną serializację/deserializację wiadomości do natywnego typu danych Golang. Oznacza to, że nie musisz już używać etf.TermIntoStruct dla każdej otrzymanej wiadomości. Zarejestrowane typy zostaną automatycznie przekształcone na określony typ, co znacznie przyspiesza realizację wymiany komunikatów pomiędzy rozproszonymi węzłami.

Źródło: opennet.ru

Dodaj komentarz