- Reflect คือเฟรมเวิร์กใหม่สำหรับสร้างเว็บแอปพลิเคชันแบบหลายผู้เล่นที่คล้ายกับ Figma, Notion และ Google Sheets
- มันเป็นเวอร์ชันที่พัฒนาต่อจาก Replicache ซึ่งเป็นเฟรมเวิร์กการซิงก์ฝั่งไคลเอนต์ โดยเพิ่มเซิร์ฟเวอร์แบบจัดการครบวงจรเพื่อให้การพัฒนาแอปหลายผู้เล่นทำได้ง่ายขึ้น
- ตอนนี้ Reflect เปิดให้ใช้งานสาธารณะเป็นครั้งแรกแล้ว
- เฟรมเวิร์กนี้จัดการปัญหาการแก้ความขัดแย้งในการแก้ไขร่วมกัน โดยทำให้ผู้ใช้ทุกคนเห็นข้อมูลเดียวกันและความขัดแย้งถูกแก้ไขอย่างเป็นธรรมชาติ
- ต่างจากเครื่องมือยอดนิยมในระบบนิเวศเว็บอย่าง CRDTs (Conflict-Free Replicated Data Types) Reflect ใช้เทคนิค Transactional Conflict Resolution ที่ได้รับความนิยมในอุตสาหกรรมวิดีโอเกม
- จุดเด่นและความแตกต่างเฉพาะตัวของ Reflect เกิดจากการเลือกแกนหลักของเอนจินซิงก์นี้
- Reflect ใช้ฟังก์ชัน JavaScript ที่เรียกว่า mutators ในการทำให้เกิดการเปลี่ยนแปลง และสร้าง mutation record ที่เรียกใช้ mutator
- Mutation จะถูกนำไปใช้ในเครื่องก่อนและสตรีมไปยังเซิร์ฟเวอร์ โดยเซิร์ฟเวอร์จะทำให้ mutation เป็นลำดับเชิงเส้นตามเวลาที่มาถึง เพื่อสร้างสถานะถัดไปที่เป็นแหล่งอ้างอิงหลัก
- Reflect สามารถรองรับแอปพลิเคชันที่เคลื่อนไหวรวดเร็วได้ และยังเพิ่ม mutation ต่อไปได้ขณะรอการยืนยันของรายการก่อนหน้า
- เฟรมเวิร์กนี้ต้องการที่เก็บข้อมูลที่รวดเร็วซึ่งสามารถย้อนกลับ สร้าง fork และแตก branch ได้ รวมถึงที่เก็บข้อมูลฝั่งเซิร์ฟเวอร์ที่รวดเร็วซึ่งสามารถตาม mutation ที่เข้ามาได้ทัน
- แนวทางของ Reflect สามารถทำให้เป็นทั่วไปได้ดี จึงเหมาะกับงานหลากหลาย เช่น การคำนวณเลขคณิต การจัดการรายการ และการบังคับใช้ข้อกำหนดระดับสูง
- เซิร์ฟเวอร์ของ Reflect เป็นผู้มีอำนาจตัดสิน โดยจะคำนวณผลของ mutation ซ้ำด้วยตัวเอง และทำให้ไคลเอนต์ทั้งหมดเห็นผลลัพธ์นั้น
- อำนาจของเซิร์ฟเวอร์นี้ทำให้สามารถทำ authentication แบบละเอียด และรันโค้ดอื่น ๆ บนเซิร์ฟเวอร์ได้
- Reflect ยังมีข้อดีเพิ่มเติม เช่น การตรวจสอบสคีมาและการทำ migration
- กลยุทธ์การซิงก์ของ Reflect ที่เรียกว่า Transactional Conflict Resolution นั้นเรียบง่าย ยืดหยุ่น และทรงพลัง จึงเป็นตัวเลือกที่ดีสำหรับการสร้างแอปพลิเคชันแบบหลายผู้เล่น
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News