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

كيف انتقل Copilot Studio إلى .NET 10 WebAssembly وأصبح أسرع بنسبة 20%

تحسينات .NET 10 WASM ليست فقط للمشاريع الجديدة. إليك ما قاسه Copilot Studio بعد الترقية من .NET 8: بصمة تلقائية للملفات، WasmStripILAfterAOT افتراضياً وأرقام أداء تنفيذ حقيقية.

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

قام فريق Copilot Studio بشيء كان فضوليًا بشأنه جميع مطوري Blazor WASM: لقد قاموا فعليًا بترقية تطبيق إنتاجي من .NET 8 إلى .NET 10 وقاسوا النتائج. يشارك المنشور أرقامًا محددة، وهو أمر نادر ومفيد حقًا.

الترقية كانت مملة (هذا أمر جيد)

تحديث إطار العمل المستهدف، تحديث مراجع الحزم، إصلاح التغييرات المخلة. هذا كل شيء. بناء .NET 10 يعمل الآن في الإنتاج. الهجرة نفسها لم تكن الجزء المثير للاهتمام — التغييرات في .NET 10 هي ذلك.

البصمة التلقائية للأصول

في السابق، كان توزيع تطبيق WASM يعني كتابة نصوص برمجية مخصصة لإعادة تسمية الأصول المنشورة بتجزئات SHA256 لتجاوز التخزين المؤقت. كان لدى Copilot Studio نص PowerShell يقوم بهذا بالضبط — إعادة تسمية الملفات، حقن سمات integrity في محمّل JavaScript، إدارة كل شيء يدويًا.

في .NET 10، كل ذلك مدمج. يتم وضع بصمة تلقائية على الأصول المنشورة، واستيرادها مباشرة من dotnet.js، والتحقق من سلامتها دون تدخل يدوي. قام الفريق بحذف نص إعادة التسمية.

تغيير صغير في النطاق، تخفيض كبير في التعقيد.

WasmStripILAfterAOT مفعّل الآن افتراضيًا

في .NET 8، كان إزالة IL من التجميعات المترجمة بـ AOT اختياريًا. في .NET 10 هو السلوك الافتراضي. بعد ترجمة AOT، يتم إزالة رمز IL الأصلي من المخرجات — غير مطلوب في وقت التشغيل، والاحتفاظ به كان يضخم حجم الحزمة دون سبب.

يستخدم Copilot Studio تحسينًا محددًا: يوزع كلًا من محرك JIT (بدء سريع) ومحرك AOT (أقصى أداء في الحالة الثابتة)، يحمّل كليهما بالتوازي وينتقل من JIT إلى AOT بمجرد استعداده. كما يُزيل تكرار الملفات المتطابقة بين المحركَين.

يعني سلوك إزالة IL الجديد أن تجميعات AOT لم تعد تطابق نظيراتها من JIT بشكل بت ببت، لذا تُزال تكرارات ملفات أقل:

  • .NET 8: 59 ملفًا مشتركًا
  • .NET 10: 22 ملفًا مشتركًا

النتيجة الصافية: حجم حزمة أكبر بحوالي 15% لمحرك AOT. تنزيل AOT أبطأ بحوالي 6% على شبكة LAN السريعة، وأبطأ بحوالي 17% على 4G. لكن كل ذلك يحدث في الخلفية بعد أن يصبح التطبيق تفاعليًا بالفعل.

أرقام الأداء

هذا هو الجزء المهم:

  • أسرع بحوالي 20% في المكالمة الأولى (المسار البارد)
  • أسرع بحوالي 5% في المكالمات اللاحقة (المسار الدافئ)

التحسينات أكثر وضوحًا في “البوتات الكبيرة” — العملاء الكبيرة والمعقدة حيث يهيمن الكود المترجم بـ AOT. لسير العمل الأبسط، الكسب أصغر.

إذا كنت لا تزال على .NET 8

قصة الهجرة بسيطة بحق: حدّث <TargetFramework>، حدّث مراجع الحزم، احذف أي نصوص بصمة مخصصة، وستستفيد تلقائيًا من WasmStripILAfterAOT. إذا كنت تترجم بـ AOT، توقع مكاسب مماثلة في الأداء.

ملاحظة من المنشور: إذا كنت تحمّل وقت تشغيل .NET WASM داخل WebWorker، اضبط dotnetSidecar = true عند التهيئة.

المنشور الأصلي: Copilot Studio gets faster with .NET 10 on WebAssembly

شارك:
عرض الكود المصدري لهذا المقال على GitHub ↗
← يمكن لـ Azure SQL الآن توليد التضمينات — في T-SQL النقي، دون حاجة لطبقة التطبيق
Cosmos DB Shell متاح الآن في المعاينة العامة — ويتضمن خادم MCP مدمجاً →