Π‘Π΅ ΡΠ»ΡΡΠΈ ΡΠ»Π΅Π΄Π½ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π½Π° ErgoFramework 2.2, ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡΠΈ Π³ΠΎ ΠΊΠΎΠΌΠΏΠ»Π΅ΡΠ½ΠΈΠΎΡ ΠΌΡΠ΅ΠΆΠ΅Π½ ΡΡΠ΅ΠΊ Erlang ΠΈ Π½Π΅Π³ΠΎΠ²Π°ΡΠ° OTP Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Go. Π Π°ΠΌΠΊΠ°ΡΠ° ΠΌΡ ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° Π½Π° ΡΠ°Π·Π²ΠΈΠ²Π°ΡΠΎΡ ΡΠ»Π΅ΠΊΡΠΈΠ±ΠΈΠ»Π½ΠΈ Π°Π»Π°ΡΠΊΠΈ ΠΎΠ΄ ΡΠ²Π΅ΡΠΎΡ Π½Π° Erlang Π·Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈ ΡΠ΅ΡΠ΅Π½ΠΈΡΠ° Π½Π° ΡΠ°Π·ΠΈΠΊΠΎΡ Go ΠΊΠΎΡΠΈΡΡΠ΅ΡΡΠΈ Π³ΠΎΡΠΎΠ²ΠΈ ΠΎΠ±ΡΠ°ΡΡΠΈ Π·Π° Π΄ΠΈΠ·Π°ΡΠ½ Π·Π° ΠΎΠΏΡΡΠ° Π½Π°ΠΌΠ΅Π½Π° gen.Application, gen.Supervisor ΠΈ gen.Server, ΠΊΠ°ΠΊΠΎ ΠΈ ΡΠΏΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ - gen. Π‘ΡΠ΅Π½Π° (Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ ΠΏΠ°Π±/ΠΏΠΎΠ΄), Π³Π΅Π½.
ΠΠΎΠΊΡΠ°Ρ ΡΠΎΠ°, ΡΠ°ΠΌΠΊΠ°ΡΠ° ΠΎΠ±Π΅Π·Π±Π΅Π΄ΡΠ²Π° ΠΏΡΠΎΠΊΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ ΡΠΎ ΡΠΈΡΡΠΈΡΠ°ΡΠ΅ ΠΎΠ΄ ΠΊΡΠ°Ρ Π΄ΠΎ ΠΊΡΠ°Ρ, ΡΡΠΎ Π½Π΅ Π΅ Π΄ΠΎΡΡΠ°ΠΏΠ½ΠΎ Π²ΠΎ Erlang/OTP ΠΈ Elixir. ΠΠΈΠ΄Π΅ΡΡΠΈ ΡΠ°Π·ΠΈΠΊΠΎΡ Go Π½Π΅ΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ΅Π½ Π°Π½Π°Π»ΠΎΠ³ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡ Erlang, ΡΠ°ΠΌΠΊΠ°ΡΠ° ΠΊΠΎΡΠΈΡΡΠΈ Π³ΠΎΡΡΡΠΈΠ½ΠΈ ΠΊΠ°ΠΊΠΎ ΠΎΡΠ½ΠΎΠ²Π° Π·Π° gen.Server ΡΠΎ ΠΎΠ±Π²ΠΈΠ²ΠΊΠ° Π·Π° βΠΎΠ±Π½ΠΎΠ²ΡΠ²Π°ΡΠ΅β Π·Π° ΡΠΏΡΠ°Π²ΡΠ²Π°ΡΠ΅ ΡΠΎ ΠΈΡΠΊΠ»ΡΡΠΎΡΠΈ. ΠΡΠΎΠ΅ΠΊΡΠ½ΠΈΠΎΡ ΠΊΠΎΠ΄ ΡΠ΅ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ° ΠΏΠΎΠ΄ Π»ΠΈΡΠ΅Π½ΡΠ°ΡΠ° MIT.
ΠΡΠ΅ΠΆΠ½ΠΈΠΎΡ ΡΡΠ΅ΠΊ Π²ΠΎ ErgoFramework ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΡΠ° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° DIST Π½Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ Erlang. ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈΡΠ΅ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° ErgoFramework ΡΠ°Π±ΠΎΡΠ°Ρ ΠΏΡΠΈΡΠΎΠ΄Π½ΠΎ ΡΠΎ ΡΠΈΡΠ΅ Π°ΠΏΠ»ΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠΈΡΠ΅ ΡΠ°Π·ΠΈΡΠΈ Erlang ΠΈΠ»ΠΈ Elixir (ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠ½ΡΠ΅ΡΠ°ΠΊΡΠΈΡΠ° ΡΠΎ Erlang ΡΠ°Π·ΠΎΠ»). ΠΡΡΠΎ ΡΠ°ΠΊΠ°, Π²ΡΠ΅Π΄ΠΈ Π΄Π° ΡΠ΅ Π½Π°ΠΏΠΎΠΌΠ΅Π½Π΅ Π΄Π΅ΠΊΠ° ΡΠ΅ΠΌΠ°ΡΠ° Π·Π° Π΄ΠΈΠ·Π°ΡΠ½ Π½Π° gen.Stage Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° ΡΠΏΠΎΡΠ΅Π΄ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ°ΡΠ° Elixir GenStage ΠΈ Π΅ ΡΠ΅Π»ΠΎΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½Π° ΡΠΎ Π½Π΅Π° (ΠΏΡΠΈΠΌΠ΅Ρ Π·Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ°).
ΠΠΎ Π½ΠΎΠ²ΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅:
- ΠΠΎΠ΄Π°Π΄Π΅Π½ΠΈ ΡΠ΅ Π½ΠΎΠ²ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ
- gen.Web Π΅ ΡΠ°Π±Π»ΠΎΠ½ Π·Π° Π΄ΠΈΠ·Π°ΡΠ½ Π½Π° Web API Gateway (ΠΈΡΡΠΎ ΡΠ°ΠΊΠ° ΠΏΠΎΠ·Π½Π°Ρ ΠΊΠ°ΠΊΠΎ Backend For Frontend). ΠΡΠΈΠΌΠ΅Ρ.
- gen.TCP Π΅ ΡΠ°Π±Π»ΠΎΠ½ ΡΡΠΎ Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΠ΅ Π±Π°Π·Π΅Π½ ΠΎΠ΄ ΠΏΡΠΈΡΠ°ΡΠ°ΡΠΈ Π½Π° TCP ΠΊΠΎΠ½Π΅ΠΊΡΠΈΠΈ ΡΠΎ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»Π΅Π½ Π½Π°ΠΏΠΎΡ ΠΏΡΠΈ ΠΏΠΈΡΡΠ²Π°ΡΠ΅ ΠΊΠΎΠ΄. ΠΡΠΈΠΌΠ΅Ρ.
- gen.UDP - ΡΠ»ΠΈΡΠ½ΠΎ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΎΡ gen.TCP, ΡΠ°ΠΌΠΎ Π·Π° ΠΏΡΠΎΡΠΎΠΊΠΎΠ»ΠΎΡ UDP. ΠΡΠΈΠΌΠ΅Ρ.
- ΠΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° Π΅ Π½ΠΎΠ²Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΎΡΡ Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ ΡΠΎ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° Π½Π° Π΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π° ΠΌΠ°Π³ΠΈΡΡΡΠ°Π»Π° Π·Π° Π½Π°ΡΡΠ°Π½ΠΈ Π²ΠΎ ΡΠ°Π·ΠΎΠ», ΠΊΠΎΡΠ° Π²ΠΈ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π΄Π° ΠΊΡΠ΅ΠΈΡΠ°ΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠΈ Π·Π° ΡΠ°Π·ΠΌΠ΅Π½Π° Π½Π° Π½Π°ΡΡΠ°Π½ΠΈ (ΠΏΠ°Π±/ΠΏΠΎΠ΄) ΠΌΠ΅ΡΡ Π»ΠΎΠΊΠ°Π»Π½ΠΈΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΠΈ. ΠΡΠΈΠΌΠ΅Ρ.
- ΠΠΎΠ΄Π°Π΄Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΊΠ° Π·Π° ΡΠ΅Π³ΠΈΡΡΡΠ°ΡΠΈΡΠ° Π½Π° ΡΠΈΠΏΠΎΠ²ΠΈ, ΡΡΠΎ ΠΎΠ²ΠΎΠ·ΠΌΠΎΠΆΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠ° ΡΠ΅ΡΠΈΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ°/Π΄Π΅ΡΠ΅ΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈΡΠ΅ Π²ΠΎ ΠΌΠ°ΡΡΠΈΠ½ ΡΠΈΠΏ Π½Π° ΠΏΠΎΠ΄Π°ΡΠΎΡΠΈ ΠΠΎΠ»Π°Π½Π³. ΠΠ²Π° Π·Π½Π°ΡΠΈ Π΄Π΅ΠΊΠ° ΠΏΠΎΠ²Π΅ΡΠ΅ Π½Π΅ ΡΡΠ΅Π±Π° Π΄Π° ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ etf.TermIntoStruct Π·Π° ΡΠ΅ΠΊΠΎΡΠ° ΠΏΡΠΈΠΌΠ΅Π½Π° ΠΏΠΎΡΠ°ΠΊΠ°. Π Π΅Π³ΠΈΡΡΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠΈΠΏΠΎΠ²ΠΈ Π°Π²ΡΠΎΠΌΠ°ΡΡΠΊΠΈ ΡΠ΅ ΡΠ΅ ΡΡΠ°Π½ΡΡΠΎΡΠΌΠΈΡΠ°Π°Ρ Π²ΠΎ Π½Π°Π²Π΅Π΄Π΅Π½ΠΈΠΎΡ ΡΠΈΠΏ, ΡΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π³ΠΎ Π·Π°Π±ΡΠ·ΡΠ²Π° ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠ΅ΡΠΎ Π½Π° ΡΠ°Π·ΠΌΠ΅Π½Π°ΡΠ° Π½Π° ΠΏΠΎΡΠ°ΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΡ Π΄ΠΈΡΡΡΠΈΠ±ΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΠ°Π·Π»ΠΈ.
ΠΠ·Π²ΠΎΡ: opennet.ru
