مرحبا بالجميع! نلقي نظرة اليوم على مختلف الشرائح والتغييرات التي ظهرت في برنامج .NET Core ومقارنتها مع Framework. لقد قسمت المقال إلى وحدات لفهم أفضل. ستكون هذه المقالة ممتعة لأولئك الذين سيتحولون إلى .NET Core أو يستخدمونها بالفعل.
كومة التكنولوجيا
لدينا حاليًا ثلاث منصات: .NET Framework و Mono و .NET Core. تتضمن كل منصة التقنيات التالية:
NET Framework - WPF ، WinForms ، ASP.NET (تطبيق DNX) ، WCF
NET Core - UWP ، ASP.NET Core ، WA ، Xamarin (.NET Standard) ، Avalonia وغيرها
Mono - Xamarin (PCL ، مشاركة المشروع) ، الوحدة ، ASP.NET ، WinForms (عبر النظام الأساسي)
NET Core (3.0) - كل شيء هو نفسه .NET Core أعلاه + WPF و WinForms ، ML.NET
صافي قياسي
هناك أيضا. NET قياسي. هذه مجموعة من الفئات والأساليب والواجهات التي تتيح لك كتابة واستخدام التعليمات البرمجية الشائعة لجميع الأنظمة الأساسية المذكورة أعلاه. يمكنك أيضا كتابة تطبيقات وحدة التحكم على ذلك. باختصار ، هذا هو نفس PCL ، لكنه يعمل على جميع الأنظمة الأساسية المذكورة أعلاه.
عبر منصة
لن أركز انتباهك على هذا ، سأذكر ببساطة دعم نظام التشغيل لمشاريع NET Core:
• ويندوز
• لينكس
• ماك
بالإضافة إلى ذلك ، يدعم الإطلاق تحت معالجات ARM على نظامي Linux و Windows.
التبعية
كجزء من التوافق المتبادل ، تتضمن منصة تطوير التطبيقات بنية تحتية معيارية. يتم إصداره من خلال NuGet ، ويمكنك الوصول إلى وظائف الدُفعات ، بدلاً من مجموعة كبيرة واحدة. كمطور ، يمكنك إنشاء تطبيقات خفيفة الوزن تحتوي فقط على حزم NuGet اللازمة ، مما يجعل البرنامج أكثر أمانًا وإنتاجية.
تتيح البنية التحتية المعيارية أيضًا تحديثات أسرع لنظام .NET Core ، حيث يمكن تحديث الوحدات المتأثرة وإصدارها بشكل فردي.
CSPROJ
الآن دعنا نذهب أعمق ونرى بمزيد من التفصيل ما لدينا تحت غطاء محرك السيارة في المشاريع. عند إنشاء مشروع جديد ، واجه كل واحد منكم الملف MyProject1.csproj (قد يختلف الاسم). هذا الملف مسؤول عن إعدادات التحويل البرمجي لهذا المشروع ، وتبعيات المشاريع أو المكتبات الأخرى (المكتبات) ، وأكثر من ذلك بكثير.
لديّ مثال لكيفية قررت إعادة كتابة مشروع واحد إلى .NET Standard. دعونا نلقي نظرة على ما كان عليه قبل (الإطار):

لسوء الحظ ، لا يناسب هذا الملف جهاز الكمبيوتر الخاص بي تمامًا (لا تزال هناك مراجع). والآن لنرى كيف أصبح الأمر بعد النقل:

في NET Core و .NET Standard ، تم تبسيط csproj بشكل كبير. خاصة تلك البالستية قد تلاحظ أن البعض قد تغير. أزلت لا لزوم لها واستبدالها بأدوات أكثر ملاءمة. بعد إعادة كتابة csproj ، لاحظت أن العمل مع حزم NuGet بدأ يستغرق وقتًا أقل بشكل ملحوظ ، وكما فهمت ، يعد تحرير الإصدار الجديد من csproj أكثر ملاءمة ، لأنه لا تشوبه سطور إضافية.
الأداء والتحسينات
• تعديل عشوائي
• تعديل HttpClient
• دورات الأمثل
• قائمة الأمثل ، صفيف
• دفق الأمثل ، MemoryStream
• وأكثر من ذلك بكثير
في هذه المقالة لن أفكر في جميع التغييرات. ستكون هذه مقالة منفصلة. ولكن دعونا نلقي نظرة على مثال صغير في مجموعة القائمة:
var list = new List<int>(); for (int i = 0; i < 100000000; i++) { list.Add(i); list.RemoveAt(0); }
قمت بتشغيله عبر
benchmarkdotnet.org على كلا النظامين. بعد الاختبارات ، حصلت على النتائج التالية:
Core 2.2.4 x64 RyuJITالطريقة : BenchmarkList
يعني : 370.1 مللي ثانية
خطأ : 0.3761 مللي ثانية
StdDev : 0.3518 مللي ثانية
إطار 4.7.2 x64 ريوجيتالطريقة : BenchmarkList
يعني : 481.9 مللي ثانية
خطأ : 1.210 مللي ثانية
StdDev :
1.011 مللي ثانية
كما ترون ، تختلف سرعة التشغيل بشكل كبير (في بعض الأحيان) لصالح Core.
تحاول Microsoft ليس فقط منح المطورين أدوات تطوير ملائمة ، ولكن أيضًا تحسين الأشياء الأساسية التي تؤدي إلى تحسينات وتحسين مشاريعك.
تجميع الطبقة
هذه ميزة تجعل وقت التشغيل أكثر قدرة على التكيف لاستخدام برنامج التحويل البرمجي JIT لتحسين أداء بدء التشغيل وزيادة الإنتاجية.
<Project Sdk="Microsoft.NET.Sdk.Web"> <PropertyGroup> <TargetFramework>netcoreapp2.2</TargetFramework> <LangVersion>7.3</LangVersion> <TieredCompilation>true</TieredCompilation> <Platforms>AnyCPU;x64</Platforms> </PropertyGroup> </Project>
يجمع المشروع في أسرع وقت ممكن.
يحسن الطرق الأكثر شيوعًا.
هذه الوظيفة تجعل مشروعك يبني بشكل أسرع ويمنحك نفس الأداء تقريبًا. لقد اختبرنا هذه الوظيفة ، وهي ميزة ذكية لمشاريع NET Core ، مما يقلل من وقت الترجمة. يعمل التصنيف متعدد المستويات على إبطاء عمل التطبيق الخاص بك قليلاً ، لا أوصي بإدراجه على خادم إنتاج ، ولكن لتصحيح الأخطاء يوجد أكثر من دالة فعلية توفر وقت المبرمجين.
استنتاج
تحاول Microsoft تحسين حياة مطوري النظام الأساسي .NET. جميع "الأشياء الجيدة" أعلاه التي ظهرت في شركتنا تسمح لنا بجعل البيئة أكثر انفتاحًا وقابلية للتوسع. أتمنى أن تقدر ذلك. لا تخف من التبديل إلى مكدس تقنية جديد واستخدام ميزات مختلفة.
شكرا لاهتمامكم آمل أن تستمتع به.