<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/"><channel><title>Aspire | The .NET Blog</title><link>https://thedotnetblog.com/ar/tags/aspire/</link><description>Articles, tutorials and insights from the .NET community.</description><generator>Hugo</generator><language>ar</language><managingEditor>@thedotnetblog (The .NET Blog)</managingEditor><webMaster>@thedotnetblog</webMaster><lastBuildDate>Fri, 17 Apr 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ar/tags/aspire/index.xml" rel="self" type="application/rss+xml"/><item><title>توقف عن حراسة طرفيتك: الوضع المنفصل في Aspire يغير سير العمل</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</link><pubDate>Fri, 17 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/</guid><description>يتيح لك Aspire 13.2 تشغيل AppHost في الخلفية واسترداد طرفيتك. مقرون بأوامر CLI الجديدة ودعم الوكلاء، هذا أمر أكبر مما يبدو.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-detached-mode-free-your-terminal/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;في كل مرة تشغّل فيها Aspire AppHost، تختفي طرفيتك. مقفلة. مشغولة حتى Ctrl+C. تريد تشغيل أمر سريع؟ افتح تبويبًا جديدًا. تريد التحقق من السجلات؟ تبويب آخر. هذا الاحتكاك الصغير يتراكم بسرعة.&lt;/p&gt;
&lt;p&gt;يحل Aspire 13.2 هذا. كتب James Newton-King &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;تفاصيل كاملة&lt;/a&gt;، وبصراحة، هذه إحدى تلك الميزات التي تُغيّر طريقة عملك فوراً.&lt;/p&gt;
&lt;h2 id="الوضع-المنفصل-أمر-واحد-الطرفية-تعود"&gt;الوضع المنفصل: أمر واحد، الطرفية تعود&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا اختصار لـ &lt;code&gt;aspire run --detach&lt;/code&gt;. يعمل AppHost الخاص بك في الخلفية وتستعيد طرفيتك فوراً.&lt;/p&gt;
&lt;h2 id="إدارة-ما-يعمل"&gt;إدارة ما يعمل&lt;/h2&gt;
&lt;p&gt;التشغيل في الخلفية مفيد فقط إذا كنت تستطيع إدارة ما هو جارٍ. يأتي Aspire 13.2 بمجموعة كاملة من أوامر CLI:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# قائمة جميع AppHost العاملة&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire ps
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# فحص حالة AppHost محدد&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire describe
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# بث السجلات من AppHost العامل&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire logs
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# إيقاف AppHost محدد&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire stop
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2 id="دمجه-مع-الوضع-المعزول"&gt;دمجه مع الوضع المعزول&lt;/h2&gt;
&lt;p&gt;الوضع المنفصل يتزاوج طبيعياً مع الوضع المعزول:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire start --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;كل مثيل يحصل على منافذ عشوائية وأسرار منفصلة ودورة حياة خاصة به.&lt;/p&gt;
&lt;h2 id="لماذا-هذا-ضخم-لوكلاء-البرمجة"&gt;لماذا هذا ضخم لوكلاء البرمجة&lt;/h2&gt;
&lt;p&gt;وكيل البرمجة الذي يعمل في طرفيتك يمكنه الآن:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;تشغيل التطبيق بـ &lt;code&gt;aspire start&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;الاستعلام عن حالته بـ &lt;code&gt;aspire describe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;التحقق من السجلات بـ &lt;code&gt;aspire logs&lt;/code&gt; لتشخيص المشكلات&lt;/li&gt;
&lt;li&gt;إيقافه بـ &lt;code&gt;aspire stop&lt;/code&gt; عند الانتهاء&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;تشغيل &lt;code&gt;aspire agent init&lt;/code&gt; يهيّئ ملف مهارات Aspire الذي يعلّم الوكلاء هذه الأوامر.&lt;/p&gt;
&lt;h2 id="خلاصة"&gt;خلاصة&lt;/h2&gt;
&lt;p&gt;الوضع المنفصل هو ترقية لسير العمل متنكرة كعلامة بسيطة. اقرأ &lt;a href="https://devblogs.microsoft.com/aspire/aspire-detached-mode-and-process-management/"&gt;المقال كاملاً&lt;/a&gt; واحصل على Aspire 13.2 مع &lt;code&gt;aspire update --self&lt;/code&gt;.&lt;/p&gt;</content:encoded></item><item><title>.NET Aspire 13.2 يريد أن يكون أفضل صديق لوكيل الذكاء الاصطناعي</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/</guid><description>يُركّز Aspire 13.2 كلياً على التطوير الوكيلي — مخرجات CLI منظّمة، وتشغيل معزول، وبيئات ذاتية الإصلاح، وبيانات OpenTelemetry كاملة حتى تتمكن وكلاء الذكاء الاصطناعي من بناء تطبيقاتك وتشغيلها ومراقبتها فعلاً.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-agentic-development-build-run-observe/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;هل تعرف تلك اللحظة التي يكتب فيها وكيل البرمجة بالذكاء الاصطناعي كوداً رائعاً فتشعر بالحماس، ثم ينهار كل شيء عند محاولة &lt;em&gt;تشغيله&lt;/em&gt; فعلياً؟ تعارضات في المنافذ، وعمليات وهمية، ومتغيرات بيئة خاطئة — وفجأة يُنفق الوكيل رصيده من التوكن في استكشاف مشكلات الإطلاق عوضاً عن بناء الميزات.&lt;/p&gt;
&lt;p&gt;نشر فريق Aspire للتو &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;منشوراً متأنياً للغاية&lt;/a&gt; حول هذه المشكلة بالضبط، وإجابتهم مقنعة: صُمِّم Aspire 13.2 ليس للبشر وحدهم، بل لوكلاء الذكاء الاصطناعي أيضاً.&lt;/p&gt;
&lt;h2 id="المشكلة-حقيقية"&gt;المشكلة حقيقية&lt;/h2&gt;
&lt;p&gt;وكلاء الذكاء الاصطناعي بارعون بشكل لافت في كتابة الكود. لكن شحن تطبيق متكامل يعمل بشكل صحيح يتطلب أكثر بكثير من مجرد توليد ملفات. تحتاج إلى تشغيل الخدمات بالترتيب الصحيح، وإدارة المنافذ، وضبط متغيرات البيئة، وتوصيل قواعد البيانات، والحصول على تغذية راجعة حين تسوء الأمور. في الوقت الراهن، تتعامل معظم الوكلاء مع كل هذا بأسلوب التجربة والخطأ — تشغيل الأوامر، وقراءة مخرجات الأخطاء، والمحاولة مجدداً.&lt;/p&gt;
&lt;p&gt;نضيف تعليمات Markdown ومهارات مخصصة وإرشادات محددة لتوجيهها، غير أن كل ذلك غير موثوق، ولا يمكن تصريفه، ويكلف رصيداً من التوكن لمجرد تحليله. أصاب فريق Aspire جوهر المسألة: تحتاج الوكلاء إلى &lt;strong&gt;مصرِّفات وواجهات برمجية منظّمة&lt;/strong&gt;، لا إلى مزيد من Markdown.&lt;/p&gt;
&lt;h2 id="aspire-بوصفه-بنية-تحتية-للوكلاء"&gt;Aspire بوصفه بنية تحتية للوكلاء&lt;/h2&gt;
&lt;p&gt;إليك ما يُقدّمه Aspire 13.2 في مجال التطوير الوكيلي:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;مكدّسك البرمجي بالكامل في كود موجَّه بالأنواع.&lt;/strong&gt; يُعرِّف AppHost طوبولوجيا تطبيقك الكاملة — واجهة برمجية، وواجهة أمامية، وقاعدة بيانات، وذاكرة تخزين مؤقت — في TypeScript أو C# قابل للتصريف:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-typescript" data-lang="typescript"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;import&lt;/span&gt; &lt;span class="p"&gt;{&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt; &lt;span class="p"&gt;}&lt;/span&gt; &lt;span class="kr"&gt;from&lt;/span&gt; &lt;span class="s1"&gt;&amp;#39;./.modules/aspire.js&amp;#39;&lt;/span&gt;&lt;span class="p"&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;createBuilder&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;postgres&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addPostgres&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;pg&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;).&lt;/span&gt;&lt;span class="nx"&gt;addDatabase&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;catalog&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;cache&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addRedis&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;cache&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kr"&gt;const&lt;/span&gt; &lt;span class="nx"&gt;api&lt;/span&gt; &lt;span class="o"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addNodeApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./api&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;src/index.ts&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withHttpEndpoint&lt;/span&gt;&lt;span class="p"&gt;({&lt;/span&gt; &lt;span class="nx"&gt;env&lt;/span&gt;&lt;span class="o"&gt;:&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;PORT&amp;#34;&lt;/span&gt; &lt;span class="p"&gt;})&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;postgres&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;cache&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;addViteApp&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s2"&gt;&amp;#34;frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s2"&gt;&amp;#34;./frontend&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;withReference&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;)&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt; &lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;waitFor&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="nx"&gt;api&lt;/span&gt;&lt;span class="p"&gt;);&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="nx"&gt;builder&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="nx"&gt;build&lt;/span&gt;&lt;span class="p"&gt;().&lt;/span&gt;&lt;span class="nx"&gt;run&lt;/span&gt;&lt;span class="p"&gt;();&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يستطيع الوكيل قراءة هذا الكود لفهم طوبولوجيا التطبيق، وإضافة موارد، وتوصيل الاتصالات، ثم &lt;em&gt;التصريف للتحقق&lt;/em&gt;. يخبره المصرِّف على الفور إن كان ثمة خطأ. لا تخمين، ولا تجربة وخطأ مع ملفات الإعداد.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;أمر واحد يتحكم في الجميع.&lt;/strong&gt; بدلاً من إدارة الوكيل لـ &lt;code&gt;docker compose up&lt;/code&gt; و&lt;code&gt;npm run dev&lt;/code&gt; وسكريبتات تشغيل قاعدة البيانات بشكل منفصل، كل شيء يكون ببساطة &lt;code&gt;aspire start&lt;/code&gt;. تنطلق جميع الموارد بالترتيب الصحيح، على المنافذ الصحيحة، بالإعداد الصحيح. العمليات طويلة الأمد لن تعلّق الوكيل أيضاً — Aspire يتولى إدارتها.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;الوضع المعزول للوكلاء المتوازية.&lt;/strong&gt; مع &lt;code&gt;--isolated&lt;/code&gt;، تحصل كل عملية تشغيل في Aspire على منافذ عشوائية خاصة بها وأسرار مستخدم منفصلة. هل لديك عدة وكلاء تعمل عبر worktrees مختلفة في Git؟ لن تتعارض. هذا أمر بالغ الأهمية لأدوات مثل وكلاء الخلفية في VS Code التي تُطلق بيئات متوازية.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;عيون الوكيل من خلال التتبع التشخيصي.&lt;/strong&gt; هنا يصبح الأمر قوياً حقاً. تكشف واجهة Aspire CLI عن بيانات OpenTelemetry كاملة أثناء التطوير — التتبعات، والمقاييس، والسجلات المنظّمة. لا يقتصر الوكيل على قراءة مخرجات وحدة التحكم وتأمّل الخير. يستطيع تتبّع طلب فاشل عبر الخدمات، وتحديد نقاط الاختناق في النقاط الطرفية البطيئة، وتحديد موضع الخلل بدقة. هذه إمكانية مراقبة بجودة الإنتاج في حلقة التطوير.&lt;/p&gt;
&lt;h2 id="تشبيه-حواجز-مضمار-البولينغ"&gt;تشبيه حواجز مضمار البولينغ&lt;/h2&gt;
&lt;p&gt;يستخدم فريق Aspire تشبيهاً رائعاً: فكّر في Aspire بوصفه حواجز مضمار البولينغ لوكلاء الذكاء الاصطناعي. إن لم يكن الوكيل مثالياً — وهو لن يكون — فالحواجز تمنعه من الانحراف نحو الحواف. تعريف المكدّس يمنع سوء الإعداد، والمصرِّف يلتقط الأخطاء، وواجهة CLI تتولى إدارة العمليات، والتتبع التشخيصي يُوفّر حلقة التغذية الراجعة.&lt;/p&gt;
&lt;p&gt;اقرن هذا بشيء مثل Playwright CLI، وسيتمكن وكيلك من &lt;em&gt;استخدام&lt;/em&gt; تطبيقك فعلاً — النقر خلال مسارات التدفق، وفحص DOM، ورؤية المشكلات في بيانات التتبع، وإصلاح الكود، وإعادة التشغيل، والاختبار مجدداً. بناء، تشغيل، مراقبة، إصلاح. هذه هي حلقة التطوير الذاتي التي كنا نسعى إليها.&lt;/p&gt;
&lt;h2 id="البدء"&gt;البدء&lt;/h2&gt;
&lt;p&gt;جديد على Aspire؟ ثبِّت واجهة CLI من &lt;a href="https://get.aspire.dev"&gt;get.aspire.dev&lt;/a&gt; واتبع &lt;a href="https://aspire.dev/get-started/first-app"&gt;دليل البدء السريع&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;تستخدم Aspire بالفعل؟ شغِّل &lt;code&gt;aspire update --self&lt;/code&gt; للحصول على الإصدار 13.2، ثم وجِّه وكيل البرمجة المفضّل لديك نحو مستودعك. قد تتفاجأ بمدى تقدّمه مع الحواجز الواقية التي يُوفّرها Aspire.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;لم يعد Aspire 13.2 مجرد إطار للتطبيقات الموزّعة — إنه يتحوّل إلى بنية تحتية أساسية للوكلاء. تعريفات المكدّس المنظّمة، والإطلاق بأمر واحد، والتشغيل المتوازي المعزول، وبيانات التتبع التشخيصي في الوقت الفعلي، كل ذلك يمنح وكلاء الذكاء الاصطناعي تحديداً ما يحتاجونه للانتقال من كتابة الكود إلى شحن التطبيقات.&lt;/p&gt;
&lt;p&gt;اقرأ &lt;a href="https://devblogs.microsoft.com/aspire/agentic-dev-aspirations/"&gt;المنشور الكامل&lt;/a&gt; من فريق Aspire للاطلاع على كل التفاصيل ومقاطع الفيديو التوضيحية.&lt;/p&gt;</content:encoded></item><item><title>الوضع المعزول في Aspire يحلّ كابوس تعارض المنافذ في التطوير المتوازي</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</link><pubDate>Fri, 10 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/</guid><description>يُقدّم Aspire 13.2 وضع --isolated: منافذ عشوائية، وأسرار منفصلة، وانعدام كامل للتعارضات عند تشغيل نسخ متعددة من AppHost. مثالي للوكلاء والـ worktrees والسير المتوازية.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-isolated-mode-parallel-instances/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إن سبق لك أن حاولت تشغيل نسختين من المشروع ذاته في الوقت نفسه، فأنت تعرف معاناة ذلك. المنفذ 8080 مشغول بالفعل. المنفذ 17370 محجوز. أوقف شيئاً، وأعد التشغيل، وتعامل مع متغيرات البيئة — إنه مُدمِّر للإنتاجية.&lt;/p&gt;
&lt;p&gt;هذه المشكلة تزداد سوءاً لا تحسّناً. وكلاء الذكاء الاصطناعي تُنشئ worktrees في Git للعمل بشكل مستقل. وكلاء الخلفية تُطلق بيئات منفصلة. المطورون يستنسخون المستودع ذاته مرتين لفروع الميزات. كل هذه السيناريوهات تصطدم بالحائط نفسه: نسختان من التطبيق ذاته تتصارعان على المنافذ ذاتها.&lt;/p&gt;
&lt;p&gt;يُعالج Aspire 13.2 هذا بخيار واحد. كتب James Newton-King من فريق Aspire &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;التفاصيل الكاملة&lt;/a&gt;، وهي إحدى تلك الميزات التي تجعلك تتساءل &amp;ldquo;لماذا لم يكن هذا موجوداً من قبل؟&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="الحل---isolated"&gt;الحل: &lt;code&gt;--isolated&lt;/code&gt;&lt;/h2&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;هذا كل شيء. تحصل كل عملية تشغيل على:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;منافذ عشوائية&lt;/strong&gt; — لا مزيد من التعارضات بين النسخ&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;أسرار مستخدم معزولة&lt;/strong&gt; — سلاسل الاتصال ومفاتيح API تبقى منفصلة لكل نسخة&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;لا إعادة تعيين يدوية للمنافذ. لا تعامل مع متغيرات البيئة. تحصل كل عملية تشغيل على بيئة نظيفة خالية من التعارضات تلقائياً.&lt;/p&gt;
&lt;h2 id="سيناريوهات-حقيقية-تبرز-فيها-هذه-الميزة"&gt;سيناريوهات حقيقية تبرز فيها هذه الميزة&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;نسخ متعددة.&lt;/strong&gt; لديك فرع ميزة في دليل ما وإصلاح خطأ في آخر:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# الطرفية 1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-feature
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="c1"&gt;# الطرفية 2&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="nb"&gt;cd&lt;/span&gt; ~/projects/my-app-bugfix
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire run --isolated
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يعمل كلاهما دون تعارضات. تُظهر لوحة التحكم ما يعمل وأين.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;وكلاء الخلفية في VS Code.&lt;/strong&gt; حين ينشئ وكيل الخلفية في Copilot Chat worktree في Git للعمل على كودك بشكل مستقل، قد يحتاج إلى تشغيل AppHost في Aspire. دون &lt;code&gt;--isolated&lt;/code&gt;، سيحدث تعارض في المنافذ مع worktree الرئيسية. معه، تعمل كلتا النسختين ببساطة.&lt;/p&gt;
&lt;p&gt;مهارة Aspire التي تشحن مع &lt;code&gt;aspire agent init&lt;/code&gt; تُوجّه الوكلاء تلقائياً لاستخدام &lt;code&gt;--isolated&lt;/code&gt; عند العمل في worktrees. لذا يجب أن يتعامل وكيل الخلفية في Copilot مع هذا مباشرةً.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;اختبارات التكامل جنباً إلى جنب مع التطوير.&lt;/strong&gt; تحتاج إلى تشغيل الاختبارات مقابل AppHost حيّ أثناء مواصلة بناء الميزات؟ الوضع المعزول يمنح كل سياق منافذه وإعداداته الخاصة.&lt;/p&gt;
&lt;h2 id="كيف-يعمل-داخليا"&gt;كيف يعمل داخلياً&lt;/h2&gt;
&lt;p&gt;حين تُمرّر &lt;code&gt;--isolated&lt;/code&gt;، تُولّد واجهة CLI مُعرِّفاً فريداً للنسخة. يُشغّل هذا سلوكين:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;عشوائية المنافذ&lt;/strong&gt; — بدلاً من الارتباط بمنافذ محددة مسبقاً في إعداد AppHost، يختار الوضع المعزول منافذ عشوائية متاحة لكل شيء — لوحة التحكم، ونقاط نهاية الخدمة، وكل ذلك. يتكيّف اكتشاف الخدمات تلقائياً، فتجد الخدمات بعضها بصرف النظر عن المنافذ المخصصة.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;عزل الأسرار&lt;/strong&gt; — تحصل كل نسخة معزولة على مخزن أسرار مستخدم خاص بها، مُفهرس بالمُعرِّف الفريد للنسخة. سلاسل الاتصال ومفاتيح API من نسخة ما لا تتسرّب إلى أخرى.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;لا يحتاج كودك إلى أي تغييرات. اكتشاف خدمات Aspire يحلّ نقاط النهاية في وقت التشغيل، لذا يتصل كل شيء بشكل صحيح بصرف النظر عن تعيين المنافذ.&lt;/p&gt;
&lt;h2 id="متى-تستخدمه"&gt;متى تستخدمه&lt;/h2&gt;
&lt;p&gt;استخدم &lt;code&gt;--isolated&lt;/code&gt; عند تشغيل نسخ متعددة من AppHost ذاته في الوقت نفسه — سواء كان ذلك تطويراً متوازياً، أو اختبارات آلية، أو وكلاء ذكاء اصطناعي، أو worktrees في Git. للتطوير بنسخة واحدة حيث تفضّل منافذ محددة، يظل &lt;code&gt;aspire run&lt;/code&gt; العادي يعمل بشكل جيد.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;الوضع المعزول ميزة صغيرة تحلّ مشكلة حقيقية ومتزايدة الشيوع. مع دفع التطوير بمساعدة الذكاء الاصطناعي نحو سير عمل أكثر توازياً — وكلاء متعددة، وworktrees متعددة، وسياقات متعددة — أصبحت القدرة على تشغيل نسخة أخرى ببساطة دون التصارع على المنافذ أمراً ضرورياً.&lt;/p&gt;
&lt;p&gt;اقرأ &lt;a href="https://devblogs.microsoft.com/aspire/aspire-isolated-mode-parallel-development/"&gt;المنشور الكامل&lt;/a&gt; للاطلاع على جميع التفاصيل التقنية وجرّبه بـ &lt;code&gt;aspire update --self&lt;/code&gt; للحصول على الإصدار 13.2.&lt;/p&gt;</content:encoded></item><item><title>Aspire 13.2 يُقدّم CLI للوثائق — ويمكن لوكيل الذكاء الاصطناعي استخدامه أيضاً</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</link><pubDate>Sat, 04 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/</guid><description>يُضيف .NET Aspire 13.2 أمر aspire docs — واجهة CLI للبحث عن الوثائق الرسمية وتصفّحها وقراءتها دون مغادرة الطرفية. كما يعمل أداةً لوكلاء الذكاء الاصطناعي. إليك سبب أهميّته.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-docs-cli-ai-skills/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;هل تعرف تلك اللحظة التي تكون فيها غارقاً في AppHost في Aspire، تربط التكاملات ببعضها، ثم تحتاج إلى التحقق من المعاملات التي يتوقعها تكامل Redis بالضبط؟ تنتقل إلى المتصفح، وتبحث في aspire.dev، وتُحدّق في وثائق الواجهة البرمجية، ثم تعود إلى محررك. السياق ضائع. الإيقاع مقطوع.&lt;/p&gt;
&lt;p&gt;&lt;a href="https://devblogs.microsoft.com/aspire/aspire-docs-in-your-terminal/"&gt;وصل حلٌّ لهذا&lt;/a&gt; في Aspire 13.2. تتيح لك واجهة &lt;code&gt;aspire docs&lt;/code&gt; CLI البحث عن الوثائق الرسمية لـ Aspire وتصفّحها وقراءتها مباشرةً من طرفيّتك. وبما أنها مدعومة بخدمات قابلة لإعادة الاستخدام، يمكن لوكلاء الذكاء الاصطناعي والمهارات استخدام الأوامر ذاتها للبحث في الوثائق بدلاً من ابتكار واجهات برمجية غير موجودة.&lt;/p&gt;
&lt;h2 id="المشكلة-التي-يحلها-فعلا"&gt;المشكلة التي يحلّها فعلاً&lt;/h2&gt;
&lt;p&gt;يُصيب David Pine كبد الحقيقة في منشوره الأصلي: كانت وكلاء الذكاء الاصطناعي &lt;em&gt;سيئة للغاية&lt;/em&gt; في مساعدة المطورين على بناء تطبيقات Aspire. كانت توصي بـ &lt;code&gt;dotnet run&lt;/code&gt; عوضاً عن &lt;code&gt;aspire run&lt;/code&gt;، وتُحيل إلى learn.microsoft.com للوثائق التي تعيش على aspire.dev، وتقترح حزم NuGet قديمة، وابتكار واجهات برمجية غير موجودة — وهذه أكثر ما يزعجني.&lt;/p&gt;
&lt;p&gt;لماذا؟ لأن Aspire كان مخصصاً لـ .NET فقط لفترة أطول مما كونه متعدد اللغات، وتعمل نماذج اللغة الكبيرة من بيانات تدريب سابقة للميزات الأحدث. حين تمنح وكيل الذكاء الاصطناعي القدرة على البحث الفعلي في الوثائق الحالية، يتوقف عن التخمين ويبدأ في أن يكون مفيداً.&lt;/p&gt;
&lt;h2 id="ثلاثة-أوامر-صفر-تبويبات-في-المتصفح"&gt;ثلاثة أوامر، صفر تبويبات في المتصفح&lt;/h2&gt;
&lt;p&gt;الواجهة بسيطة بشكل منعش:&lt;/p&gt;
&lt;h3 id="عرض-قائمة-بجميع-الوثائق"&gt;عرض قائمة بجميع الوثائق&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs list
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يُعيد كل صفحة وثائق متاحة على aspire.dev. تحتاج مخرجات قابلة للقراءة آلياً؟ أضف &lt;code&gt;--format Json&lt;/code&gt;.&lt;/p&gt;
&lt;h3 id="البحث-عن-موضوع"&gt;البحث عن موضوع&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يبحث في العناوين والمحتوى مع ترتيب النتائج حسب الصلة. نفس محرك البحث الذي يُشغّل أدوات التوثيق داخلياً. تحصل على نتائج مرتّبة مع العناوين، والمسارات المختصرة، ودرجات الصلة.&lt;/p&gt;
&lt;h3 id="قراءة-صفحة-كاملة-أو-قسم-واحد-فقط"&gt;قراءة صفحة كاملة (أو قسم واحد فقط)&lt;/h3&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;يبثّ الصفحة كاملةً بتنسيق Markdown إلى طرفيّتك. تحتاج قسماً واحداً فقط؟&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Add Redis resource&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;دقة جراحية. لا تمرير عبر 500 سطر. فقط الجزء الذي تحتاجه.&lt;/p&gt;
&lt;h2 id="زاوية-وكيل-الذكاء-الاصطناعي"&gt;زاوية وكيل الذكاء الاصطناعي&lt;/h2&gt;
&lt;p&gt;هنا يصبح الأمر مثيراً للاهتمام للمطورين الذين يبنون بأدوات الذكاء الاصطناعي. تعمل أوامر &lt;code&gt;aspire docs&lt;/code&gt; ذاتها أدواتٍ لوكلاء الذكاء الاصطناعي — عبر المهارات، وخوادم MCP، أو مجمّعات CLI البسيطة.&lt;/p&gt;
&lt;p&gt;بدلاً من أن يخترع مساعد الذكاء الاصطناعي واجهات Aspire البرمجية بناءً على بيانات تدريب قديمة، يمكنه استدعاء &lt;code&gt;aspire docs search &amp;quot;postgres&amp;quot;&lt;/code&gt;، والعثور على وثائق التكامل الرسمية، وقراءة الصفحة المناسبة، وتزويدك بالنهج الموثّق. توثيق حيّ ومحدَّث — لا ما حفظه النموذج قبل ستة أشهر.&lt;/p&gt;
&lt;p&gt;البنية التحتية وراء هذا مقصودة. بنى فريق Aspire خدمات قابلة لإعادة الاستخدام (&lt;code&gt;IDocsIndexService&lt;/code&gt;، &lt;code&gt;IDocsSearchService&lt;/code&gt;، &lt;code&gt;IDocsFetcher&lt;/code&gt;، &lt;code&gt;IDocsCache&lt;/code&gt;) بدلاً من تكامل وحيد الغرض. هذا يعني أن محرك البحث ذاته يعمل للبشر في الطرفية، ولوكلاء الذكاء الاصطناعي في محررك، وللأتمتة في خط أنابيب CI.&lt;/p&gt;
&lt;h2 id="سيناريوهات-واقعية"&gt;سيناريوهات واقعية&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;بحث سريع في الطرفية:&lt;/strong&gt; أنت في عمق ثلاثة ملفات وتحتاج معاملات إعداد Redis. أمران، تسعون ثانية، والعودة إلى العمل:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;redis&amp;#34;&lt;/span&gt; --limit &lt;span class="m"&gt;1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs get redis-integration --section &lt;span class="s2"&gt;&amp;#34;Configuration&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&lt;strong&gt;التطوير بمساعدة الذكاء الاصطناعي:&lt;/strong&gt; مهارة VS Code الخاصة بك تُجمّع أوامر CLI. تسأل &amp;ldquo;أضف قاعدة بيانات PostgreSQL إلى AppHost&amp;rdquo; فيبحث الوكيل في الوثائق الحقيقية قبل الإجابة. لا ابتكار واجهات وهمية.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;التحقق في CI/CD:&lt;/strong&gt; يتحقق خط أنابيبك من إعدادات AppHost مقابل الوثائق الرسمية برمجياً. مخرجات &lt;code&gt;--format Json&lt;/code&gt; تنساب بسلاسة إلى &lt;code&gt;jq&lt;/code&gt; وأدوات أخرى.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;قواعد معرفة مخصصة:&lt;/strong&gt; هل تبني أدوات ذكاء اصطناعي خاصة بك؟ أرسل مخرجات JSON المنظّمة مباشرةً إلى قاعدة معرفتك:&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-bash" data-lang="bash"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;aspire docs search &lt;span class="s2"&gt;&amp;#34;monitoring&amp;#34;&lt;/span&gt; --format Json &lt;span class="p"&gt;|&lt;/span&gt; jq &lt;span class="s1"&gt;&amp;#39;[.[] | {slug, title, summary}]&amp;#39;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;لا استخلاص من الويب. لا مفاتيح API. نفس البيانات المنظّمة التي تستخدمها أدوات التوثيق داخلياً.&lt;/p&gt;
&lt;h2 id="الوثائق-دائما-حية"&gt;الوثائق دائماً حيّة&lt;/h2&gt;
&lt;p&gt;هذا هو الجانب الذي أقدّره أكثر من غيره. لا تُنزّل واجهة CLI لقطة ثابتة — بل تستعلم من aspire.dev مع تخزين مؤقت يستند إلى ETag. في اللحظة التي تتحدث فيها الوثائق، تعكس واجهتك وأي مهارة مبنية عليها ذلك التحديث. لا نسخ قديمة، لا لحظات &amp;ldquo;لكن الويكي قال&amp;hellip;&amp;rdquo;.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;aspire docs&lt;/code&gt; هي إحدى تلك الميزات الصغيرة التي تحلّ مشكلة حقيقية بنظافة. البشر يحصلون على وصول للوثائق من الطرفية مباشرةً. وكلاء الذكاء الاصطناعي يحصلون على طريقة للتوقف عن التخمين والبدء في الرجوع إلى الوثائق الفعلية. وكل ذلك مدعوم بمصدر حقيقة واحد.&lt;/p&gt;
&lt;p&gt;إذا كنت تبني بـ .NET Aspire ولم تجرب واجهة CLI بعد، شغِّل &lt;code&gt;aspire docs search &amp;quot;your-topic-here&amp;quot;&lt;/code&gt; وتحقق من شعورك. ثم فكّر في تغليف تلك الأوامر في أي مهارة ذكاء اصطناعي أو إعداد أتمتة تستخدمه — وكلاؤك سيشكرونك.&lt;/p&gt;
&lt;p&gt;اطّلع على &lt;a href="https://davidpine.dev/posts/aspire-docs-mcp-tools/"&gt;تحليل David Pine المعمّق&lt;/a&gt; حول كيفية تطور أدوات التوثيق، و&lt;a href="https://aspire.dev/reference/cli/commands/aspire-docs/"&gt;مرجع CLI الرسمي&lt;/a&gt; للاطلاع على كل التفاصيل.&lt;/p&gt;</content:encoded></item><item><title>لوحة تحكم Aspire 13.2 حصلت للتو على واجهة برمجية للقياس عن بُعد — وهذا يغيّر كل شيء</title><link>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</link><pubDate>Thu, 02 Apr 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/</guid><description>يُشحن .NET Aspire 13.2 مع تصدير قياس عن بُعد أذكى، وواجهة برمجية قابلة للبرمجة للتتبعات والسجلات، وتحسينات تصوير GenAI. إليك لماذا يهمّ هذا لسير عمل التصحيح لديك.</description><content:encoded>&lt;blockquote&gt;
&lt;p&gt;&lt;em&gt;تمت ترجمة هذا المقال تلقائياً. للنسخة الأصلية، &lt;a href="https://thedotnetblog.com/ar/posts/emiliano-montesdeoca/aspire-132-dashboard-export-telemetry/"&gt;انقر هنا&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;إذا كنت تبني تطبيقات موزّعة باستخدام .NET Aspire، فأنت تعرف بالفعل أن لوحة التحكم هي أفضل شيء في التجربة بأكملها. جميع التتبعات والسجلات والمقاييس في مكان واحد — لا Jaeger خارجي، ولا إعداد Seq، ولا لحظات &amp;ldquo;دعني أتحقق من الطرفية الأخرى.&amp;rdquo;&lt;/p&gt;
&lt;p&gt;قدّم Aspire 13.2 للتو تحسيناً ملحوظاً. أعلن James Newton-King عن &lt;a href="https://devblogs.microsoft.com/aspire/aspire-dashboard-improvements-export-and-telemetry/"&gt;التحديث&lt;/a&gt;، وبصراحة؟ ميزات تصدير القياس عن بُعد والواجهة البرمجية وحدها تستحق الترقية.&lt;/p&gt;
&lt;h2 id="تصدير-القياس-عن-بعد-بطريقة-سليمة"&gt;تصدير القياس عن بُعد بطريقة سليمة&lt;/h2&gt;
&lt;p&gt;إليك السيناريو الذي مررنا به جميعاً: أنت تصحّح مشكلة موزّعة، وتعيد إنتاجها أخيراً بعد عشرين دقيقة من الإعداد، والآن تحتاج إلى مشاركة ما حدث مع فريقك. قبل ذلك؟ لقطات شاشة. نسخ ولصق معرّفات التتبع. الفوضى المعتادة.&lt;/p&gt;
&lt;p&gt;يُضيف Aspire 13.2 حوار &lt;strong&gt;إدارة السجلات والقياس عن بُعد&lt;/strong&gt; الصحيح حيث يمكنك:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;مسح جميع بيانات القياس (مفيد قبل محاولة إعادة الإنتاج)&lt;/li&gt;
&lt;li&gt;تصدير بيانات القياس المحددة إلى ملف ZIP بتنسيق OTLP/JSON القياسي&lt;/li&gt;
&lt;li&gt;إعادة استيراد ذلك الـ ZIP إلى أي لوحة تحكم Aspire لاحقاً&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;هذا الجزء الأخير هو الميزة القاتلة. تعيد إنتاج خطأ، وتصدّر بيانات القياس، وتُرفقها ببند العمل، ويمكن لزميلك استيرادها في لوحة تحكمه الخاصة ليرى بالضبط ما رأيته. لا مزيد من &amp;ldquo;هل يمكنك إعادة إنتاجه على جهازك؟&amp;rdquo;&lt;/p&gt;
&lt;p&gt;تحصل التتبعات والامتدادات والسجلات الفردية أيضاً على خيار &amp;ldquo;تصدير JSON&amp;rdquo; في قوائم سياقها. تحتاج مشاركة تتبع واحد محدد؟ انقر بزر الماوس الأيمن، انسخ JSON، الصقه في وصف طلب السحب. انتهى.&lt;/p&gt;
&lt;h2 id="واجهة-برمجية-للقياس-عن-بعد-هي-المغير-الحقيقي-لقواعد-اللعبة"&gt;واجهة برمجية للقياس عن بُعد هي المُغيِّر الحقيقي لقواعد اللعبة&lt;/h2&gt;
&lt;p&gt;هذا ما أنا أكثر حماساً له. تكشف لوحة التحكم الآن عن واجهة برمجية HTTP تحت &lt;code&gt;/api/telemetry&lt;/code&gt; للاستعلام عن بيانات القياس برمجياً. نقاط النهاية المتاحة:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/resources&lt;/code&gt; — سرد الموارد مع بيانات القياس&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/spans&lt;/code&gt; — الاستعلام عن الامتدادات بفلاتر&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/logs&lt;/code&gt; — الاستعلام عن السجلات بفلاتر&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces&lt;/code&gt; — سرد التتبعات&lt;/li&gt;
&lt;li&gt;&lt;code&gt;GET /api/telemetry/traces/{traceId}&lt;/code&gt; — الحصول على جميع امتدادات تتبع محدد&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;كل شيء يعود بتنسيق OTLP JSON. هذا يُشغّل أوامر CLI الجديدة &lt;code&gt;aspire agent mcp&lt;/code&gt; و&lt;code&gt;aspire otel&lt;/code&gt;، لكن الانعكاس الحقيقي أكبر: يمكنك الآن بناء أدوات وسكريبتات وتكاملات وكلاء ذكاء اصطناعي تستعلم عن بيانات القياس الفعلية لتطبيقك مباشرةً.&lt;/p&gt;
&lt;p&gt;تخيّل وكيل ذكاء اصطناعي للبرمجة يمكنه النظر في تتبعاتك الموزّعة الفعلية أثناء التصحيح. هذا لم يعد افتراضياً — هذا ما تُمكّنه هذه الواجهة البرمجية.&lt;/p&gt;
&lt;h2 id="قياس-genai-عن-بعد-يصبح-عمليا"&gt;قياس GenAI عن بُعد يصبح عملياً&lt;/h2&gt;
&lt;p&gt;إذا كنت تبني تطبيقات مدعومة بالذكاء الاصطناعي باستخدام Semantic Kernel أو Microsoft.Extensions.AI، فستقدّر محسّن تصوير قياس GenAI عن بُعد المحسَّن. يُضيف Aspire 13.2:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;تُصيَّر أوصاف أدوات الذكاء الاصطناعي كـ Markdown&lt;/li&gt;
&lt;li&gt;زر GenAI مخصص على صفحة التتبعات للوصول السريع إلى تتبعات الذكاء الاصطناعي&lt;/li&gt;
&lt;li&gt;معالجة أفضل للأخطاء للـ JSON الغير معياري أو المقطوع للـ GenAI&lt;/li&gt;
&lt;li&gt;التنقل بالنقر لتمييز التعريفات بين تعريفات الأدوات&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;تذكر منشور المدوّنة أن VS Code Copilot chat وCopilot CLI وOpenCode جميعها تدعم إعداد &lt;code&gt;OTEL_EXPORTER_OTLP_ENDPOINT&lt;/code&gt;. وجّهها إلى لوحة تحكم Aspire ويمكنك حرفياً مشاهدة وكلاء الذكاء الاصطناعي تفكّر في الوقت الفعلي من خلال القياس عن بُعد. هذه تجربة تصحيح لن تجدها في أي مكان آخر.&lt;/p&gt;
&lt;h2 id="خلاصة-القول"&gt;خلاصة القول&lt;/h2&gt;
&lt;p&gt;يأخذ Aspire 13.2 لوحة التحكم من &amp;ldquo;واجهة مستخدم تصحيح لطيفة&amp;rdquo; إلى &amp;ldquo;منصة رصد قابلة للبرمجة.&amp;rdquo; سير عمل التصدير/الاستيراد وحده يوفّر وقتاً حقيقياً على التصحيح الموزّع، وتفتح الواجهة البرمجية للقياس عن بُعد الباب أمام التشخيص المدعوم بالذكاء الاصطناعي.&lt;/p&gt;
&lt;p&gt;إذا كنت بالفعل على Aspire، قم بالترقية. إذا لم تكن — هذا سبب وجيه للاطّلاع على &lt;a href="https://aspire.dev"&gt;aspire.dev&lt;/a&gt; ومعرفة سبب الاهتمام به.&lt;/p&gt;</content:encoded></item></channel></rss>