<?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>.NET 11 | The .NET Blog</title><link>https://thedotnetblog.com/ar/tags/.net-11/</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>Tue, 26 May 2026 00:00:00 +0000</lastBuildDate><atom:link href="https://thedotnetblog.com/ar/tags/.net-11/index.xml" rel="self" type="application/rss+xml"/><item><title>‎.NET 11 يصلح أخيرًا واجهة برمجة تطبيقات العمليات</title><link>https://thedotnetblog.com/ar/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</link><pubDate>Tue, 26 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/news/emiliano-montesdeoca/dotnet-11-process-api-improvements-runandcapturetext/</guid><description>‎System.Diagnostics.Process يحصل على أكبر تحديث له منذ سنوات. ‎RunAndCaptureTextAsync وKillOnParentExit وواجهات SafeProcessHandle API والتحكم الكامل في إعادة توجيه المقابض القياسية — لا مزيد من الكود النمطي للتعامل مع الإغلاق الميت.</description><content:encoded>&lt;p&gt;كل مطور .NET احتاج إلى إطلاق عملية والتقاط مخرجاتها قد كتب نوعًا من الكود النمطي الخطير نفسه: قراءة غير متزامنة من stdout، وقراءة غير متزامنة من stderr، و&lt;code&gt;WaitForExitAsync&lt;/code&gt;، مع عدم نسيان إفراغ كلا التيارين وإلا ستواجه إغلاقًا ميتًا. إنه فخ معروف موجود منذ سنوات.&lt;/p&gt;
&lt;p&gt;‎.NET 11 يصلح هذا أخيرًا بشكل صحيح.&lt;/p&gt;
&lt;h2 id="runandcapturetextasync"&gt;RunAndCaptureTextAsync&lt;/h2&gt;
&lt;p&gt;الإضافة الرئيسية: طريقة ثابتة واحدة تبدأ عملية، وتلتقط stdout وstderr، وتنتظر الإنهاء دون إغلاق ميت.&lt;/p&gt;
&lt;div class="highlight"&gt;&lt;pre tabindex="0" class="chroma"&gt;&lt;code class="language-csharp" data-lang="csharp"&gt;&lt;span class="line"&gt;&lt;span class="cl"&gt;&lt;span class="kt"&gt;var&lt;/span&gt; &lt;span class="n"&gt;result&lt;/span&gt; &lt;span class="p"&gt;=&lt;/span&gt; &lt;span class="k"&gt;await&lt;/span&gt; &lt;span class="n"&gt;Process&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;RunAndCaptureTextAsync&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="s"&gt;&amp;#34;dotnet&amp;#34;&lt;/span&gt;&lt;span class="p"&gt;,&lt;/span&gt; &lt;span class="s"&gt;&amp;#34;--version&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="n"&gt;Console&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;WriteLine&lt;/span&gt;&lt;span class="p"&gt;(&lt;/span&gt;&lt;span class="n"&gt;result&lt;/span&gt;&lt;span class="p"&gt;.&lt;/span&gt;&lt;span class="n"&gt;StandardOutput&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;code&gt;WaitForExit&lt;/code&gt; موضوع بعناية. إذا كنت تحتاج فقط إلى تشغيل شيء ما والحصول على مخرجاته، فهذه هي واجهة برمجة التطبيقات التي تريدها.&lt;/p&gt;
&lt;p&gt;هناك أيضًا &lt;code&gt;Process.RunAsync&lt;/code&gt; للحالة التي تريد فيها الانتظار حتى الإنهاء دون التقاط المخرجات.&lt;/p&gt;
&lt;h2 id="killonparentexit"&gt;KillOnParentExit&lt;/h2&gt;
&lt;p&gt;مشكلة شائعة مع العمليات المُطلقة: إذا تعطل الوالد أو أُنهي، تستمر العمليات الفرعية في التشغيل كأيتام. يتيح لك &lt;code&gt;KillOnParentExit&lt;/code&gt; الإعلان عند بدء العملية بأن العملية الفرعية يجب إنهاؤها عند إنهاء العملية الوالدة.&lt;/p&gt;
&lt;p&gt;هذه ميزة كانت موجودة بطرق خاصة بالمنصة (كائنات المهام على Windows، وprctl على Linux) لكنها كانت تتطلب p/invoke أو مكتبات طرف ثالث للاستخدام من .NET. الآن أصبحت خاصية من الدرجة الأولى على &lt;code&gt;ProcessStartInfo&lt;/code&gt;.&lt;/p&gt;
&lt;h2 id="واجهات-api-المستندة-إلى-safeprocesshandle"&gt;واجهات API المستندة إلى SafeProcessHandle&lt;/h2&gt;
&lt;p&gt;سطح API الخفيف الجديد مبني حول &lt;code&gt;SafeProcessHandle&lt;/code&gt; بدلاً من الفئة &lt;code&gt;Process&lt;/code&gt; الكاملة. الفئة &lt;code&gt;Process&lt;/code&gt; الكاملة تحمل الكثير من الحالة وصعبة التقليص — مسار &lt;code&gt;SafeProcessHandle&lt;/code&gt; أكثر توافقًا مع المُقلِّص للتطبيقات التي تحتاج إلى تصغير حجم المخرجات (WASM، AOT الأصلي).&lt;/p&gt;
&lt;h2 id="تحكم-كامل-في-وراثة-المقابض"&gt;تحكم كامل في وراثة المقابض&lt;/h2&gt;
&lt;p&gt;يضيف التحديث أيضًا تحكمًا دقيقًا في المقابض التي يرثها العملية الفرعية وكيفية إعادة توجيه المقابض القياسية. في السابق كان بإمكانك إعادة توجيه stdin/stdout/stderr لكن لم يكن بإمكانك تحديد المقابض التي ترث بالضبط على مستوى نظام التشغيل. تعرض واجهات برمجة التطبيقات الجديدة هذا التحكم.&lt;/p&gt;
&lt;h2 id="لماذا-هذا-مهم"&gt;لماذا هذا مهم&lt;/h2&gt;
&lt;p&gt;تُستخدم فئة &lt;code&gt;Process&lt;/code&gt; في الأدوات، وأنظمة البناء، ومشغّلات الاختبارات، وأي تطبيق يستدعي ملفات قابلة للتنفيذ أخرى. كان سطح API القديم يعود إلى .NET Framework وكان يُظهر عمره. هذا ليس تغييرًا كاسرًا للتوافق — واجهات برمجة التطبيقات القديمة لا تزال تعمل — لكن الكود الجديد يجب أن يفضل السطح الجديد.&lt;/p&gt;
&lt;p&gt;للتطبيقات المُقلَّصة أو سيناريوهات الترجمة AOT، يُرحَّب بشكل خاص بمسار &lt;code&gt;SafeProcessHandle&lt;/code&gt;. كانت فئة &lt;code&gt;Process&lt;/code&gt; القديمة تجلب الكثير من الكود كثيف الانعكاسات الذي كان يعقّد التقليص.&lt;/p&gt;
&lt;p&gt;المنشور الأصلي: &lt;a href="https://devblogs.microsoft.com/dotnet/process-api-improvements-in-dotnet-11/"&gt;Process API Improvements in .NET 11&lt;/a&gt;&lt;/p&gt;</content:encoded></item><item><title>.NET 11 Preview 4: قالب خادم MCP، مكتبات Runtime-Async، واجهة برمجة العمليات</title><link>https://thedotnetblog.com/ar/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</link><pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate><author>Emiliano Montesdeoca</author><guid>https://thedotnetblog.com/ar/news/emiliano-montesdeoca/dotnet-11-preview-4-mcp-template-runtime-async-process-api/</guid><description>.NET 11 Preview 4 متاح الآن. أبرز ما فيه: قالب خادم MCP في SDK، مكتبات وقت التشغيل المترجمة مع runtime-async، dotnet watch للجوال، وتوسيع كبير لواجهة برمجة العمليات.</description><content:encoded>&lt;p&gt;.NET 11 Preview 4 متاح الآن. كل إصدار من الإصدارات التجريبية الرئيسية لـ .NET يضيف قائمة طويلة من العناصر عبر وقت التشغيل، وSDK، والمكتبات، وASP.NET Core، وMAUI، وC#، وEntity Framework. بدلاً من تكرار القائمة الكاملة، إليك الأشياء التي لفتت انتباهي.&lt;/p&gt;
&lt;h2 id="قالب-خادم-mcp-في-sdk-net"&gt;قالب خادم MCP في SDK .NET&lt;/h2&gt;
&lt;p&gt;العنصر الأكثر إثارة للاهتمام: قالب مشروع خادم MCP مضمّن الآن في SDK. هذا يعني أن &lt;code&gt;dotnet new mcp-server&lt;/code&gt; (أو أياً كان اسم الأمر في النهاية) يعمل مباشرةً. لأي شخص يبني أدوات MCP في .NET، هذا يقلل بشكل كبير من الاحتكاك الأولي. تكامل MCP في سلسلة أدوات المنصة يشير إلى الاتجاه الذي يسير نحوه النظام البيئي.&lt;/p&gt;
&lt;h2 id="مكتبات-وقت-التشغيل-المترجمة-مع-runtime-async"&gt;مكتبات وقت التشغيل المترجمة مع Runtime-Async&lt;/h2&gt;
&lt;p&gt;وقت التشغيل نفسه يقوم الآن بتجميع مكتباته القياسية باستخدام ميزة runtime-async. هذا تغيير داخلي يؤثر على الأداء — تصبح آلات الحالة async في وقت التشغيل أكثر كفاءة. الأهمية هنا ليست في تغييرات API المرئية للمستخدم؛ بل هي أن runtime-async ناضج بما يكفي لاستخدامه في BCL نفسه، وهو إشارة مهمة على مدى جاهزية الميزة.&lt;/p&gt;
&lt;h2 id="تحسينات-jit-والتوابع-الداخلية-للأجهزة"&gt;تحسينات JIT والتوابع الداخلية للأجهزة&lt;/h2&gt;
&lt;p&gt;يواصل Preview 4 العمل على JIT. تحسينات التوابع الداخلية للأجهزة وتوليد الكود تصدر هنا — التفاصيل في ملاحظات إصدار وقت التشغيل. هذه الأنواع من التغييرات عادةً ما تحسن الإنتاجية في حلقات الحساب المكثفة دون أي تغييرات في الكود من جانبك.&lt;/p&gt;
&lt;h2 id="توسيع-واجهة-برمجة-العمليات"&gt;توسيع واجهة برمجة العمليات&lt;/h2&gt;
&lt;p&gt;تصدر تحديثات رئيسية لـ &lt;code&gt;System.Diagnostics.Process&lt;/code&gt; في Preview 4:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Process.RunAndCaptureTextAsync&lt;/code&gt; — تشغيل عملية، التقاط stdout/stderr، الانتظار حتى الخروج، كل ذلك في استدعاء واحد دون خطر الإغلاق التبادلي&lt;/li&gt;
&lt;li&gt;&lt;code&gt;KillOnParentExit&lt;/code&gt; — ربط خفيف لدورة الحياة بين العمليات الأم والفرعية&lt;/li&gt;
&lt;li&gt;واجهات برمجية مبنية على &lt;code&gt;SafeProcessHandle&lt;/code&gt; أكثر توافقاً مع trimmer&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;إذا كنت قد كتبت يوماً كوداً متكرراً لالتقاط مخرجات العمليات دون الوقوع في إغلاق تبادلي (قراءة async من stdout &lt;em&gt;وstderr&lt;/em&gt; في آن واحد)، فإن &lt;code&gt;RunAndCaptureTextAsync&lt;/code&gt; هو الـ API الذي كنت تفتقده.&lt;/p&gt;
&lt;h2 id="dotnet-watch-لـ-android-وios"&gt;dotnet watch لـ Android وiOS&lt;/h2&gt;
&lt;p&gt;يدعم &lt;code&gt;dotnet watch&lt;/code&gt; الآن اختيار الجهاز لمشاريع .NET MAUI Android وiOS. تكرار أسرع على الجوال دون إدارة اتصالات الأجهزة يدوياً في حلقة البناء.&lt;/p&gt;
&lt;h2 id="واجهات-برمجة-الضغط-المبنية-على-span"&gt;واجهات برمجة الضغط المبنية على Span&lt;/h2&gt;
&lt;p&gt;واجهات برمجية جديدة للترميز/فك الترميز Deflate وZLib وGZip مبنية على span تصل إلى المكتبات. تخصيص أقل عند التعامل مع البيانات المضغوطة — ذو صلة إذا كنت تقوم بمعالجة البيانات عالية الإنتاجية.&lt;/p&gt;
&lt;h2 id="جربه"&gt;جرّبه&lt;/h2&gt;
&lt;p&gt;&lt;a href="https://dotnet.microsoft.com/download/dotnet/11.0"&gt;تنزيل .NET 11 Preview 4&lt;/a&gt; — هو نسخة تجريبية، وغير جاهز للإنتاج، لكن يستحق التشغيل على مشاريعك لاكتشاف أي مشاكل مبكراً قبل دورة RC.&lt;/p&gt;
&lt;p&gt;المنشور الأصلي: &lt;a href="https://devblogs.microsoft.com/dotnet/dotnet-11-preview-4/"&gt;.NET 11 Preview 4 is now available!&lt;/a&gt;&lt;/p&gt;</content:encoded></item></channel></rss>