Cloudflare telah memperkenalkan Cap'n Web , sistem Remote Procedure Call (RPC) baharu yang direka khusus untuk pelayar web dan pelayan. Dibina menggunakan TypeScript , sistem ini bertujuan untuk membawa keselamatan berasaskan keupayaan dan promise pipelining kepada pembangunan web. Walau bagaimanapun, perbincangan awal komuniti mendedahkan beberapa kebimbangan mengenai pilihan reka bentuk dan batasan semasa.
Ciri Utama Cap'n Web:
- Dibina dalam TypeScript untuk pelayar web dan pelayan
- Model keselamatan berasaskan keupayaan
- Promise pipelining untuk mengurangkan kependaman rangkaian
- Sokongan panggilan dua hala
- Pensirialan berasaskan JSON
- Sokongan mod kelompok HTTP
- Integrasi dengan Cloudflare Workers, Fastly.js, dan runtime JavaScript yang lain
![]() |
---|
Gambaran keseluruhan Cap'n Web daripada Cloudflare, sistem RPC baharu untuk pelayar web dan pelayan |
Protokol Khusus Bahasa Menimbulkan Persoalan Asas
Kritikan paling ketara tertumpu pada pergantungan Cap'n Web terhadap ciri khusus JavaScript seperti Promises dan async/await. Ahli komuniti mempersoalkan sama ada ini benar-benar boleh dipanggil protokol apabila fungsi terasnya bergantung pada butiran pelaksanaan bahasa pengaturcaraan tunggal. Pilihan reka bentuk ini berpotensi mengehadkan kebolehoperasian dengan bahasa dan platform lain, yang secara tradisinya merupakan kekuatan sistem RPC.
Kebimbangan Kesetaraan Ciri dengan Cloudflare Workers
Pembangun menyatakan ketidakpastian mengenai kelengkapan ciri jangka panjang Cap'n Web berbanding Cloudflare Workers . Dokumentasi mengakui bahawa set ciri antara kedua-dua platform tidak sama, dengan rancangan untuk mencapai kesetaraan dari masa ke masa. Ini menimbulkan persoalan sama ada Cap'n Web akan secara konsisten ketinggalan di belakang Cloudflare Workers dari segi keupayaan dan dalam jangka masa berapa ciri baharu mungkin tersedia.
Kekurangan Perkakas Gred Perusahaan
Walaupun Cap'n Web menangani beberapa batasan GraphQL seperti pengambilan data bersarang, ia kini kekurangan perkakas penting sebelah pelayan yang disediakan oleh sistem matang. Ketiadaan setara dengan corak dataloader GraphQL bermakna isu prestasi pangkalan data yang berpotensi apabila mengendalikan pertanyaan senarai. Tanpa ciri seperti pertanyaan berterusan dan fungsi senarai yang dibenarkan, ramai pembangun merancang untuk mengehadkan penggunaannya kepada komunikasi pelayan-ke-pelayan dan bukannya API yang menghadap klien.
Batasan Semasa Yang Dikenal Pasti:
- Reka bentuk protokol khusus bahasa mengehadkan kebolehoperasian
- Tiada corak dataloader yang setara untuk pengoptimuman pangkalan data
- Tiada sokongan pertanyaan berterusan/senarai yang dibenarkan
- Kekurangan keupayaan out-of-band dan penyerahan pihak ketiga
- Jurang pariti ciri dengan Cloudflare Workers
- Status eksperimen dengan kebimbangan kestabilan yang berpotensi
Batasan Model Keselamatan Keupayaan
Berbanding dengan sistem berasaskan keupayaan lain seperti OCapN , Cap'n Web nampaknya mempunyai jurang yang ketara. Ia kekurangan keupayaan luar jalur dan penyerahan pihak ketiga, yang penting untuk aplikasi teragih. Sistem ini masih memerlukan pengesahan kunci API tradisional kerana sesiapa sahaja boleh menyambung ke titik akhir, manakala sistem keupayaan yang lebih matang menggunakan token yang tidak dapat diteka untuk kebenaran.
Ini tidak perlu dalam OCapN kerana sturdyref adalah token yang tidak dapat diteka jadi dengan memilikinya anda mempunyai kuasa untuk menghantar mesej ke titik akhir yang ditetapkannya.
Butiran Pelaksanaan Promise Pipelining
Ciri promise pipelining satu perjalanan telah menjana perbincangan mengenai tingkah laku sebenarnya. Walaupun dipasarkan sebagai mengurangkan overhed rangkaian, pelaksanaan masih memerlukan beberapa mesej dari klien ke pelayan untuk panggilan berantai. Pengoptimuman datang dari pelayan yang bertindak balas dengan muatan tunggal dan bukannya beberapa perjalanan, tetapi perbezaan ini tidak jelas kepada semua pembangun.
Ketidakpastian Sokongan Berbilang Bahasa
Persoalan kekal mengenai potensi pengembangan Cap'n Web kepada bahasa pengaturcaraan lain. Walaupun terdapat minat untuk membawa reka bentuk yang dipermudahkan kembali kepada pelaksanaan bahasa sedia ada Cap'n Proto , usaha yang diperlukan untuk migrasi sedemikian mungkin tidak wajar memandangkan pelaksanaan kerja sedia ada merentasi berbilang bahasa.
Sistem ini menunjukkan potensi untuk kes penggunaan khusus, terutamanya komunikasi pelayar-ke-pelayan dan senario yang memerlukan kawalan keupayaan berbutir halus. Walau bagaimanapun, status eksperimen semasa dan batasan yang dikenal pasti oleh komuniti menunjukkan bahawa penggunaan meluas mungkin bergantung pada menangani kebimbangan reka bentuk dan ciri asas ini.
Rujukan: Cap'n Web: a new RPC system for browsers and web servers