Cloudflare Workers RPC hiện đã hỗ trợ giao tiếp đa ngôn ngữ giữa Python và JavaScript
Cloudflare vừa nâng cấp hệ thống Workers RPC, cho phép các Worker viết bằng Python và JavaScript/TypeScript gọi hàm của nhau một cách liền mạch mà không cần cấu hình phức...
Cloudflare vừa công bố một bước tiến quan trọng cho hệ thống Workers RPC: khả năng giao tiếp đa ngôn ngữ. Giờ đây, các nhà phát triển có thể gọi các phương thức giữa các Worker viết bằng Python và JavaScript (hoặc TypeScript) một cách tự nhiên, giống như đang sử dụng một thư viện cục bộ.
Table Of Content
Đột phá trong giao tiếp đa ngôn ngữ
Thông thường, việc kết nối các chương trình viết bằng ngôn ngữ khác nhau đòi hỏi các API tùy chỉnh hoặc các định dạng tuần tự hóa như protobuf. Với bản cập nhật này, hệ thống RPC của Workers có thể tự động chuyển đổi giữa JavaScript và Python mà không cần thêm bất kỳ phụ thuộc (dependency) nào. Bạn chỉ cần cấu hình Service binding là có thể gọi hàm từ Python sang JavaScript và ngược lại.
Cơ chế hoạt động
Hệ thống này tận dụng sự kết hợp giữa Pyodide FFI (Foreign Function Interface) và một lớp chuyển đổi kiểu dữ liệu tùy chỉnh.
- Tự động ánh xạ kiểu dữ liệu: Pyodide giúp chuyển đổi các kiểu dữ liệu cơ bản như int, float, dict, list sang các định dạng tương đương trong JavaScript (Number, Object, Array).
- Xử lý đối tượng Web API: Đối với các đối tượng đặc thù của Workers như
Request,ResponsehayBlob, Cloudflare đã giới thiệu góiworkers-runtime-sdk. Lớp SDK này đóng vai trò trung gian, chuyển đổi các đối tượng này thành dạng bản địa (native) để cả hai ngôn ngữ đều có thể xử lý một cách tự nhiên. - Hiệu năng tối ưu: Trong hầu hết các trường hợp, RPC giữa các Worker không đi qua mạng mà chạy trong cùng một luồng, giúp giảm thiểu tối đa độ trễ so với việc thực thi mã trong cùng một Worker.
Ứng dụng thực tế
Tính năng này mở ra khả năng tận dụng hệ sinh thái thư viện phong phú của Python ngay trong các ứng dụng JavaScript. Ví dụ, bạn có thể xây dựng một Worker Python chuyên xử lý các tác vụ như highlight cú pháp bằng thư viện Pygments, sau đó gọi trực tiếp dịch vụ này từ một ứng dụng JavaScript chính thông qua Service binding.
Việc triển khai này hoàn toàn mã nguồn mở, nằm trong dự án workerd và workers-runtime-sdk. Các nhà phát triển đã có thể bắt đầu thử nghiệm ngay hôm nay bằng cách cấu hình file wrangler.jsonc và sử dụng các lệnh phát triển tương ứng cho từng ngôn ngữ.
Nguồn tham khảo: Cloudflare Blog

No Comment! Be the first one.