Cloudflare đã giới thiệu Cap'n Web , một hệ thống Remote Procedure Call (RPC) mới được thiết kế đặc biệt cho trình duyệt web và máy chủ. Được xây dựng bằng TypeScript , hệ thống này nhằm mục đích mang bảo mật dựa trên khả năng và promise pipelining đến phát triển web. Tuy nhiên, các cuộc thảo luận sớm trong cộng đồng đã tiết lộ một số lo ngại về các lựa chọn thiết kế và những hạn chế hiện tại của nó.
Các tính năng chính của Cap'n Web:
- Được xây dựng bằng TypeScript cho trình duyệt web và máy chủ
- Mô hình bảo mật dựa trên khả năng (capability-based security)
- Pipelining Promise để giảm độ trễ mạng
- Hỗ trợ gọi hai chiều
- Tuần tự hóa dựa trên JSON
- Hỗ trợ chế độ batch HTTP
- Tích hợp với Cloudflare Workers , Fastly.js và các JavaScript runtime khác
![]() |
---|
Tổng quan về Cap'n Web của Cloudflare , một hệ thống RPC mới cho trình duyệt web và máy chủ |
Giao thức đặc thù ngôn ngữ đặt ra những câu hỏi cơ bản
Lời chỉ trích quan trọng nhất tập trung vào việc Cap'n Web phụ thuộc vào các tính năng đặc thù của JavaScript như Promises và async/await. Các thành viên cộng đồng đặt câu hỏi liệu điều này có thể thực sự được gọi là một giao thức khi chức năng cốt lõi của nó phụ thuộc vào các chi tiết triển khai của một ngôn ngữ lập trình duy nhất. Lựa chọn thiết kế này có thể hạn chế khả năng tương tác với các ngôn ngữ và nền tảng khác, điều mà truyền thống là một điểm mạnh của các hệ thống RPC.
Lo ngại về tính ngang bằng tính năng với Cloudflare Workers
Các nhà phát triển đang bày tỏ sự không chắc chắn về tính đầy đủ tính năng dài hạn của Cap'n Web so với Cloudflare Workers . Tài liệu thừa nhận rằng các bộ tính năng giữa hai nền tảng không giống hệt nhau, với kế hoạch đạt được sự ngang bằng theo thời gian. Điều này đặt ra câu hỏi liệu Cap'n Web có liên tục tụt hậu so với Cloudflare Workers về mặt khả năng và trong khung thời gian nào các tính năng mới có thể có sẵn.
Thiếu công cụ cấp doanh nghiệp
Trong khi Cap'n Web giải quyết một số hạn chế của GraphQL như tìm nạp dữ liệu lồng nhau, hiện tại nó thiếu các công cụ phía máy chủ thiết yếu mà các hệ thống trưởng thành cung cấp. Việc không có các tương đương với mẫu dataloader của GraphQL có nghĩa là có thể xảy ra các vấn đề hiệu suất cơ sở dữ liệu khi xử lý các truy vấn danh sách. Không có các tính năng như persisted queries và chức năng allowlist, nhiều nhà phát triển dự định hạn chế việc sử dụng nó cho giao tiếp máy chủ-đến-máy chủ thay vì các API hướng đến khách hàng.
Các hạn chế hiện tại đã được xác định:
- Thiết kế giao thức đặc thù cho từng ngôn ngữ hạn chế khả năng tương tác
- Thiếu mẫu dataloader tương đương để tối ưu hóa cơ sở dữ liệu
- Không hỗ trợ truy vấn được lưu trữ/danh sách cho phép
- Thiếu khả năng out-of-band và chuyển giao bên thứ ba
- Khoảng cách về tính năng so với Cloudflare Workers
- Trạng thái thử nghiệm với các lo ngại về tính ổn định tiềm ẩn
Hạn chế của mô hình bảo mật khả năng
So với các hệ thống dựa trên khả năng khác như OCapN , Cap'n Web dường như có những khoảng trống đáng chú ý. Nó thiếu các khả năng out-of-band và third-party handoffs, điều quan trọng cho các ứng dụng phân tán. Hệ thống vẫn yêu cầu xác thực API key truyền thống vì bất kỳ ai cũng có thể kết nối đến các endpoint, trong khi các hệ thống khả năng trưởng thành hơn sử dụng các token không thể đoán được để ủy quyền.
Điều này không cần thiết trong OCapN vì một sturdyref là một token không thể đoán được nên bằng cách sở hữu nó, bạn có thẩm quyền gửi tin nhắn đến endpoint mà nó chỉ định.
Chi tiết triển khai Promise Pipelining
Tính năng promise pipelining một vòng lặp đã tạo ra cuộc thảo luận về hành vi thực tế của nó. Trong khi được quảng cáo là giảm overhead mạng, việc triển khai vẫn yêu cầu nhiều tin nhắn từ khách hàng đến máy chủ cho các cuộc gọi chuỗi. Tối ưu hóa đến từ việc máy chủ phản hồi với một payload duy nhất thay vì nhiều vòng lặp, nhưng sự phân biệt này không ngay lập tức rõ ràng đối với tất cả các nhà phát triển.
Sự không chắc chắn về hỗ trợ đa ngôn ngữ
Các câu hỏi vẫn còn về khả năng mở rộng của Cap'n Web sang các ngôn ngữ lập trình khác. Trong khi có sự quan tâm đến việc đưa thiết kế đơn giản hóa trở lại các triển khai ngôn ngữ hiện có của Cap'n Proto , nỗ lực cần thiết cho việc di chuyển như vậy có thể không được biện minh do các triển khai hoạt động hiện có trên nhiều ngôn ngữ.
Hệ thống cho thấy tiềm năng cho các trường hợp sử dụng cụ thể, đặc biệt là giao tiếp trình duyệt-đến-máy chủ và các tình huống yêu cầu kiểm soát khả năng chi tiết. Tuy nhiên, trạng thái thử nghiệm hiện tại và các hạn chế được xác định bởi cộng đồng cho thấy rằng việc áp dụng rộng rãi có thể phụ thuộc vào việc giải quyết những lo ngại thiết kế và tính năng cơ bản này.
Tham khảo: Cap'n Web: a new RPC system for browsers and web servers