การเปิดตัวเฟรมเวิร์กสำหรับการสร้างแอปพลิเคชันเครือข่าย ErgoFramework 2.2

ErgoFramework 2.2 รุ่นถัดไปเกิดขึ้น โดยใช้สแต็กเครือข่าย Erlang ที่สมบูรณ์และไลบรารี OTP ในภาษา Go เฟรมเวิร์กนี้มอบเครื่องมือที่ยืดหยุ่นแก่นักพัฒนาจากโลกแห่ง Erlang สำหรับการสร้างโซลูชันแบบกระจายในภาษา Go โดยใช้รูปแบบการออกแบบอเนกประสงค์สำเร็จรูป gen.Application, gen.Supervisor และ gen.Server รวมถึงรูปแบบเฉพาะทาง - gen. Stage (ผับ/ย่อยแบบกระจาย), gen. Saga (ธุรกรรมแบบกระจาย, การใช้งานรูปแบบการออกแบบ SAGA) และ gen.Raft (การใช้งานโปรโตคอล Raft)

นอกจากนี้ เฟรมเวิร์กยังมีฟังก์ชันการทำงานของพร็อกซีพร้อมการเข้ารหัสจากต้นทางถึงปลายทาง ซึ่งไม่มีใน Erlang/OTP และ Elixir เนื่องจากภาษา Go ไม่มีอะนาล็อกโดยตรงของกระบวนการ Erlang เฟรมเวิร์กจึงใช้ goroutines เป็นพื้นฐานสำหรับ gen.Server พร้อมด้วย wrapper “recover” เพื่อจัดการกับสถานการณ์ข้อยกเว้น รหัสโครงการเผยแพร่ภายใต้ใบอนุญาต 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 เท่านั้น ตัวอย่าง.
  • มีการเสนอฟังก์ชันการทำงานของเหตุการณ์ใหม่พร้อมกับการใช้งานบัสเหตุการณ์อย่างง่ายภายในโหนด ซึ่งช่วยให้คุณสร้างกลไกสำหรับการแลกเปลี่ยนเหตุการณ์ (pub/sub) ระหว่างกระบวนการในเครื่อง ตัวอย่าง.
  • เพิ่มการรองรับสำหรับการลงทะเบียนประเภท ซึ่งช่วยให้สามารถซีเรียลไลซ์ข้อความ/ดีซีเรียลไลซ์ข้อความเป็นประเภทข้อมูล Golang ดั้งเดิมได้โดยอัตโนมัติ ซึ่งหมายความว่าคุณไม่จำเป็นต้องใช้ etf.TermIntoStruct สำหรับทุกข้อความที่ได้รับอีกต่อไป ประเภทที่ลงทะเบียนจะถูกแปลงเป็นประเภทที่ระบุโดยอัตโนมัติ ซึ่งจะช่วยเร่งประสิทธิภาพการแลกเปลี่ยนข้อความระหว่างโหนดแบบกระจายได้อย่างมาก

ที่มา: opennet.ru

เพิ่มความคิดเห็น