Cloudflare ได้เปิดตัว Cap'n Web ซึ่งเป็นระบบ Remote Procedure Call (RPC) ใหม่ที่ออกแบบมาเฉพาะสำหรับเว็บเบราว์เซอร์และเซิร์ฟเวอร์ ระบบที่สร้างด้วย TypeScript นี้มีเป้าหมายที่จะนำความปลอดภัยแบบ capability-based และ promise pipelining มาสู่การพัฒนาเว็บ อย่างไรก็ตาม การอภิปรายในชุมชนในช่วงแรกเผยให้เห็นความกังวลหลายประการเกี่ยวกับตัวเลือกในการออกแบบและข้อจำกัดปัจจุบัน
คุณสมบัติหลักของ Cap'n Web:
- สร้างด้วย TypeScript สำหรับเว็บเบราว์เซอร์และเซิร์ฟเวอร์
- โมเดลความปลอดภัยแบบ capability-based
- Promise pipelining เพื่อลดความหน่วงของเครือข่าย
- รองรับการเรียกใช้แบบสองทิศทาง
- การทำ serialization แบบ JSON
- รองรับโหมด HTTP batch
- รองรับการผสานรวมกับ Cloudflare Workers, Fastly.js และ JavaScript runtimes อื่นๆ
![]() |
---|
ภาพรวมของ Cap'n Web ของ Cloudflare ระบบ RPC ใหม่สำหรับเว็บเบราว์เซอร์และเซิร์ฟเวอร์ |
โปรโตคอลเฉพาะภาษาทำให้เกิดคำถามพื้นฐาน
การวิพากษ์วิจารณ์ที่สำคัญที่สุดมุ่งเน้นไปที่การพึ่งพา JavaScript-specific features เช่น Promises และ async/await ของ Cap'n Web สมาชิกในชุมชนตั้งคำถามว่าสิ่งนี้สามารถเรียกได้จริงหรือไม่ว่าเป็นโปรโตคอลเมื่อฟังก์ชันหลักของมันขึ้นอยู่กับรายละเอียดการใช้งานของภาษาโปรแกรมเพียงภาษาเดียว ตัวเลือกในการออกแบบนี้อาจจำกัดการทำงานร่วมกันกับภาษาและแพลตฟอร์มอื่น ซึ่งตามปกติแล้วเป็นจุดแข็งของระบบ RPC
ความกังวลเรื่องความเท่าเทียมของฟีเจอร์กับ Cloudflare Workers
นักพัฒนากำลังแสดงความไม่แน่ใจเกี่ยวกับความสมบูรณ์ของฟีเจอร์ระยะยาวของ Cap'n Web เมื่อเปรียบเทียบกับ Cloudflare Workers เอกสารประกอบยอมรับว่าชุดฟีเจอร์ระหว่างสองแพลตฟอร์มไม่เหมือนกัน โดยมีแผนที่จะบรรลุความเท่าเทียมกันเมื่อเวลาผ่านไป สิ่งนี้ทำให้เกิดคำถามว่า Cap'n Web จะล้าหลัง Cloudflare Workers อย่างสม่ำเสมอในแง่ของความสามารถหรือไม่ และฟีเจอร์ใหม่อาจพร้อมใช้งานในกรอบเวลาใด
ขาดเครื่องมือระดับองค์กร
แม้ว่า Cap'n Web จะแก้ไขข้อจำกัดบางประการของ GraphQL เช่น nested data fetching แต่ปัจจุบันยังขาดเครื่องมือฝั่งเซิร์ฟเวอร์ที่จำเป็นซึ่งระบบที่พัฒนาแล้วให้บริการ การขาดสิ่งที่เทียบเท่ากับ dataloader pattern ของ GraphQL หมายถึงปัญหาประสิทธิภาพฐานข้อมูลที่อาจเกิดขึ้นเมื่อจัดการกับ list queries หากไม่มีฟีเจอร์เช่น persisted queries และฟังก์ชัน allowlist นักพัฒนาหลายคนวางแผนที่จะจำกัดการใช้งานให้เป็นการสื่อสารระหว่างเซิร์ฟเวอร์กับเซิร์ฟเวอร์มากกว่า client-facing APIs
ข้อจำกัดปัจจุบันที่ระบุได้:
- การออกแบบโปรโตคอลเฉพาะภาษาจำกัดความสามารถในการทำงานร่วมกัน
- ขาดรูปแบบ dataloader ที่เทียบเท่าสำหรับการปรับปรุงประสิทธิภาพฐานข้อมูล
- ไม่รองรับ persisted/allowlist queries
- ขาดความสามารถ out-of-band และการส่งต่อให้บุคคลที่สาม
- ช่องว่างด้านความเท่าเทียมของฟีเจอร์กับ Cloudflare Workers
- สถานะทดลองที่มีความกังวลเรื่องความเสถียรที่อาจเกิดขึ้น
ข้อจำกัดของโมเดลความปลอดภัยแบบ Capability
เมื่อเปรียบเทียบกับระบบ capability-based อื่น เช่น OCapN แล้ว Cap'n Web ดูเหมือนจะมีช่องว่างที่น่าสังเกต ขาด out-of-band capabilities และ third-party handoffs ซึ่งมีความสำคัญสำหรับแอปพลิเคชันแบบกระจาย ระบบยังคงต้องการการรับรองตัวตน API key แบบดั้งเดิมเนื่องจากทุกคนสามารถเชื่อมต่อกับ endpoints ได้ ในขณะที่ระบบ capability ที่พัฒนาแล้วใช้ unguessable tokens สำหรับการอนุญาต
สิ่งนี้ไม่จำเป็นใน OCapN เพราะ sturdyref เป็น unguessable token ดังนั้นการครอบครองมันจึงให้อำนาจในการส่งข้อความไปยัง endpoint ที่มันกำหนด
รายละเอียดการใช้งาน Promise Pipelining
ฟีเจอร์ one round trip promise pipelining ได้สร้างการอภิปรายเกี่ยวกับพฤติกรรมจริงของมัน แม้ว่าจะมีการตลาดว่าลดค่าใช้จ่ายเครือข่าย แต่การใช้งานยังคงต้องการข้อความหลายข้อความจากไคลเอนต์ไปยังเซิร์ฟเวอร์สำหรับ chained calls การปรับปรุงมาจากเซิร์ฟเวอร์ที่ตอบสนองด้วย payload เดียวแทนที่จะเป็น round trips หลายครั้ง แต่ความแตกต่างนี้ไม่ชัดเจนทันทีสำหรับนักพัฒนาทุกคน
ความไม่แน่นอนในการสนับสนุนหลายภาษา
คำถามยังคงอยู่เกี่ยวกับการขยายตัวที่อาจเกิดขึ้นของ Cap'n Web ไปยังภาษาโปรแกรมอื่น แม้ว่าจะมีความสนใจในการนำการออกแบบที่เรียบง่ายกลับไปยังการใช้งานภาษาที่มีอยู่ของ Cap'n Proto แต่ความพยายามที่ต้องการสำหรับการย้ายดังกล่าวอาจไม่คุ้มค่าเมื่อพิจารณาจากการใช้งานที่ทำงานอยู่ในหลายภาษา
ระบบแสดงให้เห็นความหวังสำหรับกรณีการใช้งานเฉพาะ โดยเฉพาะการสื่อสารระหว่างเบราว์เซอร์กับเซิร์ฟเวอร์และสถานการณ์ที่ต้องการการควบคุม capability แบบละเอียด อย่างไรก็ตาม สถานะทดลองปัจจุบันและข้อจำกัดที่ชุมชนระบุชี้ให้เห็นว่าการยอมรับอย่างแพร่หลายอาจขึ้นอยู่กับการแก้ไขความกังวลด้านการออกแบบและฟีเจอร์พื้นฐานเหล่านี้
อ้างอิง: Cap'n Web: a new RPC system for browsers and web servers