امکان فراخوانی متقابل متدها بین Python و JavaScript در Workers با استفاده از Workers RPC فراهم شد
در تازهترین بهروزرسانیهای پلتفرم Workers، قابلیت جدیدی تحت عنوان Workers RPC معرفی شده است که امکان فراخوانی متقابل متدها بین زبانهای برنامهنویسی Python و JavaScript را به صورت مستقیم و بدون نیاز به وابستگیهای اضافی، تعریف اسکیمای پیچیده یا کدهای سریالسازی فراهم میکند. این ویژگی با استفاده از Service bindings اجرا میشود و به توسعهدهندگان اجازه میدهد تا به سادگی و با حفظ عملکرد طبیعی فراخوانی توابع، ارتباط بین دو زبان را برقرار کنند.
Workers RPC به گونهای طراحی شده است که فراخوانیهای RPC بین زبانها همانند فراخوانی توابع عادی رفتار میکنند و در صورت بروز استثنا، خطا به محل فراخوانی منتقل میشود. همچنین پارامترها و مقادیر بازگشتی میتوانند از نوعهای قابل کلون ساختاری باشند و رابط تابع خارجی Pyodide (FFI) به صورت خودکار تبدیل نوعها بین Python و JavaScript را انجام میدهد.
### فراخوانی Worker تایپاسکریپت از Python
برای نمونه، توسعهدهندگان میتوانند یک متد ساده جمع دو عدد را در Worker تایپاسکریپت تعریف کنند. این متد در کلاس RpcService که از WorkerEntrypoint ارثبری میکند، به صورت ناهمگام پیادهسازی شده است. سپس در Worker Python با استفاده از Service binding مربوطه، این متد فراخوانی میشود و نتیجه به صورت JSON بازگردانده میشود.
پیکربندی Service binding در فایل Wrangler مربوط به Worker Python نیز به سادگی انجام میگیرد و نام binding و سرویس مرتبط مشخص میشود. این ساختار امکان مدیریت آسان و سازماندهی بهتر سرویسها را فراهم میآورد.
### فراخوانی Worker Python از JavaScript
در جهت معکوس، توسعهدهندگان میتوانند متدی را در Worker Python تعریف کنند که وظیفه برجستهسازی کد (syntax highlighting) را با استفاده از کتابخانه Pygments انجام میدهد. این متد کد و زبان برنامهنویسی را دریافت کرده و خروجی HTML و CSS مربوط به برجستهسازی را تولید میکند.
سپس در Worker JavaScript با استفاده از Service binding مربوطه، این متد فراخوانی شده و نتیجه به صورت JSON به کلاینت بازگردانده میشود. این فرآیند نیز با پیکربندی ساده در فایل Wrangler انجام میشود.
### مزایا و کاربردها
این قابلیت جدید به ویژه برای پروژههایی که از چند زبان برنامهنویسی در کنار هم استفاده میکنند، بسیار مفید است. با حذف نیاز به تعریف اسکیمای پیچیده و کدهای سریالسازی دستی، توسعهدهندگان میتوانند به سرعت و با اطمینان بیشتری بین زبانها ارتباط برقرار کنند. همچنین انتقال خطاها به صورت طبیعی و پشتیبانی از انواع دادههای ساختاریافته، توسعه و نگهداری کد را تسهیل میکند.
### نتیجهگیری
معرفی Workers RPC در پلتفرم Workers گامی مهم در جهت تسهیل توسعه برنامههای چندزبانه و بهبود تعامل بین Python و JavaScript است. این ویژگی با بهرهگیری از Service bindings و تبدیل خودکار نوعها، توسعهدهندگان را قادر میسازد تا بدون پیچیدگیهای معمول، عملکردهای پیچیده را بین زبانها به اشتراک بگذارند و تجربه توسعه بهتری را فراهم کنند. انتظار میرود این قابلیت در پروژههای ابری و سرورلس که نیاز به ترکیب زبانهای مختلف دارند، کاربرد گستردهای پیدا کند.