22-08-2025, 09:04 PM
للفائدة زيادة في الايضاح
بافتراض ان المبرمج يعرف ما يفعل ويبرمج بطريقة صحيحة ومع هذا هناك بعض الاشياء التي يمكنها ان تسرع بدء تشغيل التطبيقات في .NET
ما هو Ngen.exe؟
هو أداة تستخدم لتحويل ملفات الـ DLL أو EXE المكتوبة بـ MSIL (Intermediate Language) إلى كود أصلي (Native Code) خاص بالمعالج، وتخزينه في Native Image Cache. هذا يقلل من وقت الإقلاع لأنه يتجنب عملية JIT في كل مرة
من استخدم برنامج dbForge Studio for MySQL يمكنه ان يرى انه يستخدم نفس الاسلوب
![[صورة: attachment.php?aid=4879]](https://www.delphi4arab.net/forum/attachment.php?aid=4879)
بالنظر الى مسار الملفات والمكتبات فهو قد قام بتوليد صور أصلية من المكتبات لتسريع اداء التشغيل
ملاحظة هذه الطريقة تسرع من بدء التشغيل فقط لا علاقة لها فيما بعد فبعد التشغيل .net ليس لديه مشكلة في السرعة وان كان هناك مشكلة فهي من المبرمج
ملاحظة اخرى ان Ngen.exe مخصص لي .net FreamWork وليس الى net Core
الـ Net Core يستخدم معه Native AOT حيث ينتج تطبيق بملف وحيد ومترجم ترجمة أصلية للغة الالة لا فرق بينها وبين ملفات ينتجها دلفي
المشكلة الوحيدة هي انه قيد التطوير وحديث ولهذا اذا كنت تستخدم مكتبات خارجية فلابد وان تكون مدعومة لمثل هذه العملية
وربما تحصل على تطبيق بعضه مترجم للغة الالة الاصلية وبعضه كما هو
ما هو Native AOT؟
هو أسلوب نشر يقوم بتحويل تطبيقك إلى ملف تنفيذي أصلي بالكامل (native binary)، بدون الحاجة إلى JIT أثناء التشغيل. هذا يؤدي إلى:
تقليل وقت الإقلاع بشكل كبير
تقليل حجم التطبيق
تقليل استهلاك الذاكرة
تحسين الأداء في بيئات محدودة الموارد مثل الحاويات أو الأجهزة الطرفية
اما ان كان الغرض هو تسريع التطبيق والمحافظة على استخدام netCore
بدائل عملية لتسريع الإقلاع في .NET 9
1. Trimming (التقليص)
تقنية تقلل حجم التطبيق عبر إزالة الأكواد غير المستخدمة أثناء النشر:
<PublishTrimmed>true</PublishTrimmed>
[*]تقلل حجم الـ DLLs
[*]تُسرّع التحميل الأولي
2. ReadyToRun (R2R) Compilation
تحويل أجزاء من التطبيق إلى كود أصلي مسبقًا، مشابه لـ Ngen ولكن مخصص لـ .NET Core و .NET 5+:
<PublishReadyToRun>true</PublishReadyToRun>
[*]يُسرّع الإقلاع
[*]لا يتطلب دعم Native AOT الكامل
[*]متوافق مع معظم المكتبات
3. تحسينات داخلية في .NET 9
بحسب مدونة Microsoft الرسمية، فإن .NET 9 يحتوي على أكثر من 350 تحسينًا في الأداء، منها:
مثال عملي في ملف المشروع:
طالما دخلت مايكروسوفت ( المصادر المفتوحة ) ووضعت يدها في ( Native AOT ) فلن تخلعهما حتى تنتهي منه
اذا اكتمل 100% فوقتها ستكون الضربة القاضية لدلفي
فان كان يربش الان فلن يتحرك بعدها ابدا
فتخيل انك تعمل على دلفي وبدل من مكتبة VCL القديمة لديك مكتبة .NET انه شئ خيالي بالنسبة للمبرمج وهو ما خاطبتهم في كل مناسبة ان يكون لديهم شئ مثله
ركز على تطوير مكتبة VCL لتكون بقوة .NET وحديثة مثلها
ولكنهم مشغولون بي IF 10 THEN SMALL , BIG
إذا اكتملت Native AOT في .NET وأصبحت تدعم كل المكتبات والأدوات، فستكون:
بافتراض ان المبرمج يعرف ما يفعل ويبرمج بطريقة صحيحة ومع هذا هناك بعض الاشياء التي يمكنها ان تسرع بدء تشغيل التطبيقات في .NET
ما هو Ngen.exe؟
هو أداة تستخدم لتحويل ملفات الـ DLL أو EXE المكتوبة بـ MSIL (Intermediate Language) إلى كود أصلي (Native Code) خاص بالمعالج، وتخزينه في Native Image Cache. هذا يقلل من وقت الإقلاع لأنه يتجنب عملية JIT في كل مرة
من استخدم برنامج dbForge Studio for MySQL يمكنه ان يرى انه يستخدم نفس الاسلوب
بالنظر الى مسار الملفات والمكتبات فهو قد قام بتوليد صور أصلية من المكتبات لتسريع اداء التشغيل
ملاحظة هذه الطريقة تسرع من بدء التشغيل فقط لا علاقة لها فيما بعد فبعد التشغيل .net ليس لديه مشكلة في السرعة وان كان هناك مشكلة فهي من المبرمج
ملاحظة اخرى ان Ngen.exe مخصص لي .net FreamWork وليس الى net Core
الـ Net Core يستخدم معه Native AOT حيث ينتج تطبيق بملف وحيد ومترجم ترجمة أصلية للغة الالة لا فرق بينها وبين ملفات ينتجها دلفي
المشكلة الوحيدة هي انه قيد التطوير وحديث ولهذا اذا كنت تستخدم مكتبات خارجية فلابد وان تكون مدعومة لمثل هذه العملية
وربما تحصل على تطبيق بعضه مترجم للغة الالة الاصلية وبعضه كما هو
ما هو Native AOT؟
هو أسلوب نشر يقوم بتحويل تطبيقك إلى ملف تنفيذي أصلي بالكامل (native binary)، بدون الحاجة إلى JIT أثناء التشغيل. هذا يؤدي إلى:
تقليل وقت الإقلاع بشكل كبير
تقليل حجم التطبيق
تقليل استهلاك الذاكرة
تحسين الأداء في بيئات محدودة الموارد مثل الحاويات أو الأجهزة الطرفية
اما ان كان الغرض هو تسريع التطبيق والمحافظة على استخدام netCore
بدائل عملية لتسريع الإقلاع في .NET 9
1. Trimming (التقليص)
تقنية تقلل حجم التطبيق عبر إزالة الأكواد غير المستخدمة أثناء النشر:
<PublishTrimmed>true</PublishTrimmed>
[*]تقلل حجم الـ DLLs
[*]تُسرّع التحميل الأولي
2. ReadyToRun (R2R) Compilation
تحويل أجزاء من التطبيق إلى كود أصلي مسبقًا، مشابه لـ Ngen ولكن مخصص لـ .NET Core و .NET 5+:
<PublishReadyToRun>true</PublishReadyToRun>
[*]يُسرّع الإقلاع
[*]لا يتطلب دعم Native AOT الكامل
[*]متوافق مع معظم المكتبات
3. تحسينات داخلية في .NET 9
بحسب مدونة Microsoft الرسمية، فإن .NET 9 يحتوي على أكثر من 350 تحسينًا في الأداء، منها:
- تحسينات في الـ JIT Compiler
- تقليل زمن الإقلاع عبر تحسينات في الـ GC
- دعم أفضل للـ async/await وعمليات I/O
مثال عملي في ملف المشروع:
كود :
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>Exe</OutputType>
<TargetFramework>net9.0</TargetFramework>
<PublishReadyToRun>true</PublishReadyToRun>
<PublishTrimmed>true</PublishTrimmed>
<RuntimeIdentifier>win-x64</RuntimeIdentifier>
</PropertyGroup>
</Project>طالما دخلت مايكروسوفت ( المصادر المفتوحة ) ووضعت يدها في ( Native AOT ) فلن تخلعهما حتى تنتهي منه
اذا اكتمل 100% فوقتها ستكون الضربة القاضية لدلفي
فان كان يربش الان فلن يتحرك بعدها ابدا
فتخيل انك تعمل على دلفي وبدل من مكتبة VCL القديمة لديك مكتبة .NET انه شئ خيالي بالنسبة للمبرمج وهو ما خاطبتهم في كل مناسبة ان يكون لديهم شئ مثله
ركز على تطوير مكتبة VCL لتكون بقوة .NET وحديثة مثلها
ولكنهم مشغولون بي IF 10 THEN SMALL , BIG
إذا اكتملت Native AOT في .NET وأصبحت تدعم كل المكتبات والأدوات، فستكون:
- نقلة نوعية في الأداء: تطبيقات تبدأ بسرعة البرق، بدون JIT، وبدون runtime overhead.
- سهولة في التوزيع: ملف تنفيذي واحد، بدون اعتماديات خارجية.
- أمان أعلى: لا يمكن عكس الكود بسهولة كما في IL.
![[صورة: sample-browser-theme-dark-full.jpg?raw=true]](https://github.com/Actipro/Avalonia-Controls/blob/develop/.github/image-content/sample-browser-theme-dark-full.jpg?raw=true)
![[صورة: sample-browser-theme-light-full.jpg?raw=true]](https://github.com/Actipro/Avalonia-Controls/blob/develop/.github/image-content/sample-browser-theme-light-full.jpg?raw=true)
![[صورة: EGQxSbUDtW99K9gYzjDB42offnQ.png]](https://framerusercontent.com/images/EGQxSbUDtW99K9gYzjDB42offnQ.png)
![[صورة: Sk_ava.png]](https://www.fast-report.com/rails/active_storage/blobs/proxy/eyJfcmFpbHMiOnsibWVzc2FnZSI6IkJBaHBBckFCIiwiZXhwIjpudWxsLCJwdXIiOiJibG9iX2lkIn19--9c7bf6e9623d6b8a81e2aba8afd21b2ae55b03d3/Sk_ava.png)