· · 3 دقائق قراءة

الوضع المعزول في Aspire يحلّ كابوس تعارض المنافذ في التطوير المتوازي

يُقدّم Aspire 13.2 وضع --isolated: منافذ عشوائية، وأسرار منفصلة، وانعدام كامل للتعارضات عند تشغيل نسخ متعددة من AppHost. مثالي للوكلاء والـ worktrees والسير المتوازية.

aspire dotnet cli developer-tools parallel-development
هذا المقال متاح أيضاً بـ:English, Català, Español, Deutsch, Français, Português, Italiano, 日本語, 中文, 한국어, Русский, हिन्दी, Polski, Türkçe, Bahasa Indonesia, Nederlands

تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، انقر هنا.

إن سبق لك أن حاولت تشغيل نسختين من المشروع ذاته في الوقت نفسه، فأنت تعرف معاناة ذلك. المنفذ 8080 مشغول بالفعل. المنفذ 17370 محجوز. أوقف شيئاً، وأعد التشغيل، وتعامل مع متغيرات البيئة — إنه مُدمِّر للإنتاجية.

هذه المشكلة تزداد سوءاً لا تحسّناً. وكلاء الذكاء الاصطناعي تُنشئ worktrees في Git للعمل بشكل مستقل. وكلاء الخلفية تُطلق بيئات منفصلة. المطورون يستنسخون المستودع ذاته مرتين لفروع الميزات. كل هذه السيناريوهات تصطدم بالحائط نفسه: نسختان من التطبيق ذاته تتصارعان على المنافذ ذاتها.

يُعالج Aspire 13.2 هذا بخيار واحد. كتب James Newton-King من فريق Aspire التفاصيل الكاملة، وهي إحدى تلك الميزات التي تجعلك تتساءل “لماذا لم يكن هذا موجوداً من قبل؟”.

الحل: --isolated

aspire run --isolated

هذا كل شيء. تحصل كل عملية تشغيل على:

  • منافذ عشوائية — لا مزيد من التعارضات بين النسخ
  • أسرار مستخدم معزولة — سلاسل الاتصال ومفاتيح API تبقى منفصلة لكل نسخة

لا إعادة تعيين يدوية للمنافذ. لا تعامل مع متغيرات البيئة. تحصل كل عملية تشغيل على بيئة نظيفة خالية من التعارضات تلقائياً.

سيناريوهات حقيقية تبرز فيها هذه الميزة

نسخ متعددة. لديك فرع ميزة في دليل ما وإصلاح خطأ في آخر:

# الطرفية 1
cd ~/projects/my-app-feature
aspire run --isolated

# الطرفية 2
cd ~/projects/my-app-bugfix
aspire run --isolated

يعمل كلاهما دون تعارضات. تُظهر لوحة التحكم ما يعمل وأين.

وكلاء الخلفية في VS Code. حين ينشئ وكيل الخلفية في Copilot Chat worktree في Git للعمل على كودك بشكل مستقل، قد يحتاج إلى تشغيل AppHost في Aspire. دون --isolated، سيحدث تعارض في المنافذ مع worktree الرئيسية. معه، تعمل كلتا النسختين ببساطة.

مهارة Aspire التي تشحن مع aspire agent init تُوجّه الوكلاء تلقائياً لاستخدام --isolated عند العمل في worktrees. لذا يجب أن يتعامل وكيل الخلفية في Copilot مع هذا مباشرةً.

اختبارات التكامل جنباً إلى جنب مع التطوير. تحتاج إلى تشغيل الاختبارات مقابل AppHost حيّ أثناء مواصلة بناء الميزات؟ الوضع المعزول يمنح كل سياق منافذه وإعداداته الخاصة.

كيف يعمل داخلياً

حين تُمرّر --isolated، تُولّد واجهة CLI مُعرِّفاً فريداً للنسخة. يُشغّل هذا سلوكين:

  1. عشوائية المنافذ — بدلاً من الارتباط بمنافذ محددة مسبقاً في إعداد AppHost، يختار الوضع المعزول منافذ عشوائية متاحة لكل شيء — لوحة التحكم، ونقاط نهاية الخدمة، وكل ذلك. يتكيّف اكتشاف الخدمات تلقائياً، فتجد الخدمات بعضها بصرف النظر عن المنافذ المخصصة.

  2. عزل الأسرار — تحصل كل نسخة معزولة على مخزن أسرار مستخدم خاص بها، مُفهرس بالمُعرِّف الفريد للنسخة. سلاسل الاتصال ومفاتيح API من نسخة ما لا تتسرّب إلى أخرى.

لا يحتاج كودك إلى أي تغييرات. اكتشاف خدمات Aspire يحلّ نقاط النهاية في وقت التشغيل، لذا يتصل كل شيء بشكل صحيح بصرف النظر عن تعيين المنافذ.

متى تستخدمه

استخدم --isolated عند تشغيل نسخ متعددة من AppHost ذاته في الوقت نفسه — سواء كان ذلك تطويراً متوازياً، أو اختبارات آلية، أو وكلاء ذكاء اصطناعي، أو worktrees في Git. للتطوير بنسخة واحدة حيث تفضّل منافذ محددة، يظل aspire run العادي يعمل بشكل جيد.

خلاصة القول

الوضع المعزول ميزة صغيرة تحلّ مشكلة حقيقية ومتزايدة الشيوع. مع دفع التطوير بمساعدة الذكاء الاصطناعي نحو سير عمل أكثر توازياً — وكلاء متعددة، وworktrees متعددة، وسياقات متعددة — أصبحت القدرة على تشغيل نسخة أخرى ببساطة دون التصارع على المنافذ أمراً ضرورياً.

اقرأ المنشور الكامل للاطلاع على جميع التفاصيل التقنية وجرّبه بـ aspire update --self للحصول على الإصدار 13.2.

شارك:
عرض الكود المصدري لهذا المقال على GitHub ↗
← بناء واجهات مستخدم متعددة الوكلاء في الوقت الفعلي دون أن تبدو صندوقاً أسود
إعداد النوافذ العائمة في Visual Studio الذي لم تكن تعرفه (لكنك يجب أن تعرفه) →