عن المشروع

Actix هو إطار عمل راسخ للممثلين في لغة البرمجة Rust، مصمم لتبسيط تطوير التطبيقات المتزامنة والموزعة. يطبق نموذج الممثل، وهو نموذج يعتمد فيه الحساب على ممثلين معزولين يتواصلون حصريًا عبر تمرير الرسائل غير المتزامن. يساعد هذا النهج المطورين على إدارة التزامن والحالة ومعالجة الأخطاء بطريقة منظمة وقابلة للتنبؤ. يدعم الإطار كلاً من الممثلين غير المتزامنين والمتزامنين، مما يمنح المطورين مرونة في تصميم أنظمتهم. يحدث اتصال الممثلين في سياق محلي أو سياق خيوط، ويتم تشغيل معالجة الرسائل غير المتزامنة بواسطة صندوق futures. يوفر Actix أيضًا إشرافًا على الممثلين، مما يسمح للممثلين الآباء بمراقبة وإعادة تشغيل الممثلين الفرعيين الذين يفشلون، مما يحسن مرونة النظام. قرار تصميم رئيسي في Actix هو استخدام الرسائل المكتوبة بدلاً من المتغيرات غير المكتوبة مثل Any. يضمن هذا سلامة وقت الترجمة ويجعل قاعدة الكود أسهل في الفهم والصيانة. يتم تعريف الرسائل باستخدام خاصية Message، وينفذ الممثلون خاصية Handler لمعالجة أنواع رسائل محددة. يوفر الإطار كائن Addr لإرسال الرسائل إلى الممثلين، ويدعم أنماط الإرسال والإهمال (do_send) والطلب والاستجابة (send). يعمل Actix على وقت تشغيل Tokio، أحد أشهر أوقات تشغيل async في نظام Rust البيئي. يعمل نوع System كنقطة دخول، مما ينشئ حلقة أحداث تدفع تنفيذ الممثل. يتطلب الإطار Rust 1.88 أو أحدث وهو متاح على crates.io تحت اسم صندوق actix. تتم إدارة دورة حياة الممثل من خلال خاصية Actor، والتي تتضمن خطافات دورة حياة مثل started و stopping و stopped. يمكن للممثلين تخزين حالة قابلة للتغيير وتغييرها حسب الحاجة، لأن طرق المعالجة تقبل &mut self. تسمح واجهة Recipient بإرسال الرسائل إلى الممثلين دون الحاجة إلى نوع ممثل ملموس، مما يتيح أنماط توجيه رسائل مرنة. يوفر Actix وثائق شاملة بما في ذلك دليل المستخدم ومرجع API. المشروع مُدار بنشاط مع تكامل مستمر وتتبع تغطية الكود وخادم Discord مجتمعي للدعم والنقاش. وهو مرخص بموجب رخصة Apache 2.0 أو MIT، والمساهمات مرحب بها بموجب مدونة قواعد السلوك Contributor Covenant. تشمل حالات الاستخدام بناء خوادم الدردشة وخوادم الألعاب وخدمات الشبكات الأخرى حيث تكون معالجة الرسائل المتزامنة ضرورية. يتضمن مستودع أمثلة الإطار مثال دردشة WebSocket يوضح أنماط اتصال العميل والخادم.