ErgoFramework сүлжээний программ үүсгэх хүрээний хувилбар 2.2

ErgoFramework 2.2-ын дараагийн хувилбар нь Erlang сүлжээний стек болон түүний OTP номын санг Go хэл дээр хэрэгжүүлсэн. Энэхүү хүрээ нь хөгжүүлэгчийг Gen.Application, gen.Supervisor, gen.Server гэх мэт бэлэн ерөнхий зориулалтын дизайны загваруудыг ашиглан Go хэл дээр тархсан шийдлүүдийг бий болгох Эрлангийн ертөнцөөс уян хатан хэрэгслүүдээр хангадаг. Үе шат (тархсан паб/дэд), ген.Сага (тархсан гүйлгээ, SAGA дизайны загварын хэрэгжилт) болон gen.Raft (Рафт протоколын хэрэгжилт).

Нэмж дурдахад, уг хүрээ нь Erlang/OTP болон Elixir-д байдаггүй төгсгөл хоорондын шифрлэлт бүхий прокси функцээр хангадаг. Go хэлэнд Erlang үйл явцын шууд аналог байхгүй тул фреймворк нь онцгой тохиолдлуудыг зохицуулахын тулд "сэргээх" боодолтой gen.Server-ийн үндэс болгон goroutines ашигладаг. Төслийн кодыг MIT лицензийн дагуу түгээдэг.

ErgoFramework дахь сүлжээний стек нь Erlang протоколын DIST тодорхойлолтыг бүрэн хэрэгжүүлдэг. Энэ нь ErgoFramework дээр суурилсан программууд нь Erlang эсвэл Elixir програмчлалын хэл дээр бичигдсэн аливаа программуудтай шууд ажилладаг гэсэн үг юм (Erlang зангилаатай харилцах жишээ). Gen.Stage дизайны загвар нь Elixir GenStage-ийн тодорхойлолтын дагуу хэрэгжсэн бөгөөд үүнтэй бүрэн нийцдэг гэдгийг тэмдэглэх нь зүйтэй (хэрэгжүүлэх жишээ).

Шинэ хувилбарт:

  • Шинэ загварууд нэмэгдсэн
    • gen.Web нь Web API Gateway (мөн Backend For Frontend гэгддэг) дизайны загвар юм. Жишээ.
    • gen.TCP нь код бичихэд хамгийн бага хүчин чармайлтаар TCP холболт хүлээн авагчдын санг хэрэгжүүлэх боломжийг олгодог загвар юм. Жишээ.
    • gen.UDP - gen.TCP загвартай төстэй, зөвхөн UDP протоколд зориулагдсан. Жишээ.
  • Зангилаа доторх энгийн үйл явдлын автобусыг хэрэгжүүлснээр Events-ийн шинэ функцийг санал болгосон бөгөөд энэ нь локал процессуудын хооронд үйл явдлуудыг (pub/sub) солилцох механизмыг бий болгох боломжийг олгодог. Жишээ.
  • Мессежийг үндсэн Golang өгөгдлийн төрөл болгон автоматаар цуваа/сериал болгох боломжийг олгодог төрлийн бүртгэлийн дэмжлэг нэмэгдсэн. Энэ нь хүлээн авсан мессеж бүрт etf.TermIntoStruct ашиглах шаардлагагүй гэсэн үг юм. Бүртгэгдсэн төрлүүд нь заасан төрөлд автоматаар хувирах бөгөөд энэ нь тархсан зангилааны хооронд мессеж солилцох ажиллагааг ихээхэн хурдасгадаг.

Эх сурвалж: opennet.ru

сэтгэгдэл нэмэх