DiscoveryService والاستقلال عن المنصة والإضافات
DiscoveryService والاستقلال عن المنصة والإضافات
تحتاج مشاريع NestJS المتقدمة أحياناً إلى سلوك شبيه بالإطار داخل التطبيق: العثور على كل معالج يحمل مزخرفاً، أو تسجيل مشتركي الأحداث تلقائياً، أو بناء نظام إضافات. تسمح DiscoveryService وفحص البيانات الوصفية بتفقد رسم التطبيق بأمان.
الفكرة الأساسية
تدور هذه الميزة حول التحكم في كيفية تنظيم التطبيق وسلوكه وقت التشغيل. النقاط التالية هي ما يجب أن يعرفه المطور قبل استخدامها في مشروع حقيقي:
- تعرض DiscoveryService أغلفة المزوّدات والمتحكمات لتفقد بياناتها بعد أن يبني Nest الحاوية.
- يمر MetadataScanner على دوال النموذج الأولي ويفيد عندما يطبق المزخرف على دوال محددة.
- الاستقلال عن المنصة يعني أن المكونات القابلة لإعادة الاستخدام يجب ألا تستورد أنواع Express أو Fastify إلا عند اعتماد الميزة فعلاً على منصة معينة.
- ينبغي للإضافات تسجيل مزوداتها عبر الوحدات والبيانات الوصفية لا عبر استيراد داخليات التطبيق يدوياً.
- الاكتشاف شأن وقت الإقلاع؛ خزّن السجل المكتشف بدلاً من الفحص في كل طلب.
مثال عملي
يوضح المثال التالي الشكل العملي للفكرة داخل مشروع NestJS. ليست الغاية حفظ الكود، بل فهم مكانه في المعمارية:
قائمة تطبيق إنتاجية
- افحص مرة واحدة أثناء onModuleInit() ثم استخدم سجلاً في الذاكرة.
- استخدم مزخرفات بيانات وصفية صريحة للسلوك القابل للاكتشاف.
- تجنب كائنات الطلب الخاصة بمنصة معينة داخل الإضافات القابلة لإعادة الاستخدام.
- وثق نقاط التوسعة لأن الاكتشاف يجعل السلوك أقل وضوحاً من حقن الباني.
الخلاصة
يغطي هذا الدرس جزءاً متقدماً من NestJS يجب فهمه عند بناء تطبيقات مؤسسية. ركّز على الحدود الواضحة، والسلوك القابل للاختبار، واختيار الأداة المناسبة للسياق بدلاً من استخدام كل ميزة في كل مكان.