البرمجة

فهم المنصات في معيار .NET: تحليل الفارق بين .NET Framework و.NET Core

في سعيي الحالي لفهم مفهوم معيار منصة .NET، وجدت نفسي متشوقًا لفهم الفرق بين مفهوم “المنصات المختلفة”. ببساطة، يبدو أن المعرفة الخاصة بي حاليًا حول إطار .NET تتلخص في أن .NET يتألف، بشكل عام، من محرك تشغيل لللغة الوسيطة (CLR)، ومكتبة الفئات الأساسية (BCL)، بالإضافة إلى البرمجيات الداعمة التي تقوم بتشغيل محرك CLR وتوفير واجهة برمجية بين الآلة الظاهرية ونظام التشغيل الأساسي.

عندما نقوم بكتابة الشيفرة باستخدام إطار .NET، نستهدف نسخة معينة من الإطار لأن الأنواع التي نستخدمها من BCL مرتبطة بالإطار الخاص بها وتعتمد على الإصدار الخاص.

وهنا تأتي .NET Core بتصور مختلف، حيث لا يكون النظام معبأ بشكل كامل مثل ذلك. نجد لدينا CoreCLR، الذي هو محرك تشغيل خفيف لتشغيل IL، وCoreFX، الذي هو مكتبات منظمة بشكل جيد كحزم NuGet، وكان لدينا حتى الآن DNX/DNVM/DNU الذي قدم الأمور الداعمة مثل تشغيل CoreCLR والتفاعل مع نظام التشغيل.

على أي حال، رغم أننا نقوم بتثبيت الإطار على نظام Windows 7 أو Windows 8 أو Windows 10، نكتب الشيفرة “ضد الإطار”. وهنا، في مواصفة معيار منصة .NET، نجد تعريفًا للمنصة يشمل .NET Framework 4.5، .NET Framework 4.6، Windows Phone 8.1، MonoTouch، UWP، وغيرها.

وهنا يأتي اللغز الذي يربكني: لدينا مجموعة من المنصات تتضمن .NET Framework كإحدى المنصات فقط. على سبيل المثال، لدينا Windows 8، لكن انتظر قليلاً، هل تعتبر تشغيل .NET على Windows 8 نفس الشيء مثل تشغيل .NET على أي نظام تشغيل آخر؟ ولماذا يُصنف منفصلاً عن منصة .NET Framework 2.0 – 4.6؟

وهناك أيضًا DNX كمنصة محددة. هل يجعلني ذلك أتساءل: هل تشمل المنصة هذه الأمور الداعمة المتعلقة بتشغيل الآلة الظاهرية وتوفير واجهة مع نظام التشغيل؟ أم أن المنصة تتضمن الآلة الظاهرية أيضًا؟

على أي حال، كما يمكن رؤيته، أنا مرتبك للغاية. ما هي هذه المنصات بالضبط وكيف يتصل ذلك بالفهم الحالي لدي لإطار .NET؟ ولماذا يُصنف .NET Framework 2.0 – 4.6 بشكل منفصل؟ أليس كل شيء موجود هنا إصدارًا من إطار .NET ما لم يكن .NET Core؟

المزيد من المعلومات

لفهم المزيد حول هذه المفاهيم المعقدة، يجب أن نتناول بعض الجوانب التفصيلية حول المنصات في معيار منصة .NET.

أولاً وقبل كل شيء، يجب أن نفهم أن المنصات المدرجة في معيار منصة .NET لا تعني نظرًا للنظرات التقليدية أنها نظم تشغيل فقط. بل، يمكن أن تشمل هذه المنصات نطاقًا أوسع، مثل إصدارات معينة من الإطار الصافي للـ .NET (مثل .NET Framework 2.0 – 4.6)، ونظام التشغيل (مثل Windows 8)، وأطُق المحمولة (مثل Windows Phone 8.1)، ومنصات أخرى مثل Silverlight و MonoTouch و UWP (Universal Windows Platform).

مفهوم .NET Platform Standard يتيح للمطورين كتابة شيفرة مستقلة عن المنصة، ولكنها تستهدف تلك المنصات المحددة. وهو يعمل على توحيد المكتبات بين مختلف إصدارات .NET، مما يجعلها قابلة لإعادة الاستخدام بشكل أسهل عبر مختلف المنصات.

فيما يتعلق بـ DNX (DotNet Execution Environment)، فهو عبارة عن بيئة تنفيذ لـ .NET وتشمل أدوات مثل DNVM (DotNet Version Manager) و DNU (DotNet Utility). كانت هذه الأدوات تستخدم في السابق لتشغيل تطبيقات .NET Core، ولكن تم تعليقها لاحقًا بمجرد أن أعلنت Microsoft عن .NET 5 وما بعدها.

إذاً، يمكن القول إن المنصات في معيار منصة .NET تشمل تلك التي تعتبر تقليديًا نظم تشغيل وإطارات، ولكنها تتجاوز ذلك لتشمل بيئات التنفيذ والمكتبات الأساسية. هذا يفسر التباين الذي تشير إليه المواصفة، حيث يتم تقسيم المنصات إلى فئات تشمل .NET Framework، ونظام التشغيل (مثل Windows 8)، وغيرها، مما يعكس التنوع البيئي لتنفيذ .NET في مختلف السياقات.

زر الذهاب إلى الأعلى