المحفوظات وبدائل النظام الأساسي .NET

كنت محظوظًا مؤخرًا للدردشة مع كريس بيكون ، الذي كتب DotNetAnywhere (نسخة بديلة من .NET Runtime) ، وقد لاحظت ببراعة:


... ربما تكون أحد القلائل الذين أنشأوا وقت تشغيل .NET الخاص بهم ، وهو أمر رائع!

إذا استثنينا أولئك الذين يتقاضون راتبا ، أي المهندسين Microsoft / Mono / Xamarin ، هناك عدد قليل جدا منهم.



هذا هو ترجمة مات وارين ( تاريخ .NET Runtimes ). لكي لا تنشر ، سأترك كما هو


ثم فكرت: كم عدد أوقات تشغيل NET الموجودة؟ أولاً ، قمت بعمل قائمة خاصة بي ، ثم قمت بتوصيل فريق من الباحثين ذوي الأجور المرتفعة - المشتركون - بهذه الحالة:



بالنسبة لهذا المنشور ، بحلول وقت تشغيل .NET ، أعني كل شيء يتم تنفيذه على أساس معيار ECMA-335 لـ .NET (لمزيد من المعلومات ، انظر هنا ). لا أعرف ما إذا كان هناك تعريف أكثر دقة أو بطريقة ما لتأكيد الامتثال رسميًا ، ولكن هذا يعني من الناحية العملية أن وقت التشغيل يدعم ملفات exe / dll .NET التي تم إنشاؤها بواسطة أي مترجم C # / F # / VB.NET.


بمجرد أن تكون القائمة جاهزة ، تسلقت إلى ويكيبيديا (انظر قائمة المصادر). والنتيجة هي التسلسل الزمني التالي:



صانع الجدول الزمني
(للنسخة التفاعلية اتبع الرابط)


إذا فاتني أي وقت تشغيل ، اسمحوا لي أن أعرف.


لتسهيل تصور التسلسل الزمني ، وضعت كل وسيط في واحدة من الفئات التالية:


  1. أطر عمل Microsoft .NET
  2. مايكروسوفت أوقات التشغيل الأخرى
  3. Mono / Xamarin Runtimes
  4. أوقات تشغيل تجميع AOT
  5. مشاريع المجتمع
  6. مشاريع البحث

يخصص باقي المنشور لوصف تفصيلي لأوقات التشغيل المختلفة. لماذا ظهروا ، ما يمكنهم وماذا لمقارنتهم.


أطر عمل Microsoft .NET


ظهر Microsoft .NET Framework الأصلي في أواخر التسعينات وأصبح أكثر فاعلية منذ ذلك الحين. في الآونة الأخيرة ، غيرت الشركة مسارها إلى حد ما من خلال الإعلان عن إصدار .NET Framework Framework ، والذي يتميز برمز النظام الأساسي المشترك والمفتوح المصدر. بالإضافة إلى ذلك ، من خلال تطوير مواصفات .NET Standard ، توفر Microsoft إمكانية التشغيل المتداخل عبر بيئات وقت التشغيل.


توفر مواصفات .NET Standard مشاركة الرمز. يحدد مجموعة من واجهات برمجة التطبيقات التي يجب أن تكون متوفرة في جميع تطبيقات .NET للامتثال للمعايير. هذا يضمن التوحيد لجميع أوقات تشغيل .NET ويمنع التجزئة في المستقبل.

استطراد صغير: إذا كنت ترغب في معرفة المزيد عن تاريخ .NET ، فإنني أوصي بالاستماع إلى Anders Halesberg أو مشاهدة خطاب لريتشارد كامبل - إنه كاتب قصص رائع حقًا.



(يتوفر البودكاست أيضًا. بالإضافة إلى ذلك ، يكتب كامبل كتابًا عن نفس الموضوع . إذا كنت تريد معرفة المزيد عن تاريخ تطوير نظام .NET بالكامل ، وليس فقط أوقات التشغيل ، تحقق من صفحة Legends of .NET ).


مايكروسوفت أوقات التشغيل الأخرى


بالإضافة إلى .NET Framework الأساسية للاستخدام على نطاق واسع ، أصدرت Microsoft إصدارات أخرى من البيئة لأغراض خاصة.


.NET Framework ضغط


كانت أطر عمل Compact (.NET CF) و Micro (.NET MF) محاولات لإنشاء إصدارات وقت تشغيل أقصر للأجهزة محدودة الموارد. على سبيل المثال ، .NET CF:


... مصمم للأجهزة المحمولة أو الأجهزة المدمجة مع كمية محدودة من الموارد ، مثل أجهزة المساعد الرقمي الشخصي والهواتف المحمولة وأجهزة التحكم الصناعية وصناديق الاستقبال ، إلخ. يستخدم .NET Framework Framework بعض المكتبات من نفس الفئة مثل الإصدار الكامل من .NET ، وكذلك العديد من المكتبات التي تم إنشاؤها خصيصًا للأجهزة المحمولة ، مثل عناصر تحكم .NET Compact. ومع ذلك ، فإن المكتبات ليست نسخة طبق الأصل من تلك المستخدمة في .NET Framework. يتم تقليلها لشغل مساحة أقل.

. NET مايكرو الإطار


إطار عمل .NET MF أصغر و:


... للأجهزة التي تحتوي على كمية محدودة من الموارد التي تحتوي على 256 كيلو بايت على الأقل من الذاكرة و 64 كيلو بايت من ذاكرة الوصول العشوائي. يتضمن إصدارًا مخفضًا من .NET CLR ويدعم تطوير C # و Visual Basic .NET ، بالإضافة إلى تصحيح الأخطاء (في المحاكي أو الأجهزة) باستخدام Microsoft Visual Studio. تطبق NETMF مجموعة من المكتبات الأساسية .NET (حوالي 70 فئات و 420 أساليب). تمت إضافة مكتبات خاصة للتطبيقات المدمجة. هذا برنامج مجاني مفتوح المصدر تم إصداره بموجب رخصة أباتشي 2.0.

بالنسبة لأولئك الذين يرغبون في تجربة إطار العمل ، قام Scott Hanselman بكتابة دليل ممتاز لبرنامج .NET Micro Framework - الأجهزة الخاصة بالبرامج .


سيلفرلايت


على الرغم من أن النظام الأساسي في وضع الدعم (أو حتى ميت / يتحرك نحو غروب الشمس ، وهذا يتوقف على وجهة نظرك) ، فمن المثير للاهتمام العودة إلى الإعلان الأصلي ومعرفة المقصود من Silverlight:


Silverlight عبارة عن وحدة متقاطعة مشتركة عبر النظام الأساسي ، وهي وحدة امتداد معتمدة على NET مصممة لإنشاء تطبيقات إنترنت غنية للمتصفحات. يدعم الإصدار المسبق الذي تم إصداره هذا الأسبوع Firefox و IE و Safari على Mac و Windows.

في عام 2007 ، طبق Silverlight 1.0 الميزات التالية (النظام الأساسي يعمل حتى على نظام Linux):


  • دعم برامج الترميز المدمجة لتشغيل ملفات الفيديو VC-1 و WMV ، وكذلك ملفات الصوت بتنسيقات MP3 و WMA في مستعرض ... ؛
  • يدعم Silverlight القدرة على تنزيل محتوى الوسائط وتشغيله تدريجياً من أي خادم ويب ... ؛
  • يدعم Silverlight اختياريًا تدفق الوسائط المتكامل ...؛
  • باستخدام Silverlight ، يمكنك إنشاء واجهات المستخدم متعددة الوظائف والرسوم المتحركة ، والجمع بين الرسومات المتجهة و HTML لإنشاء محتوى جذاب ... ؛
  • Silverlight يجعل من السهل إنشاء محتوى فيديو تفاعلي غني ...

أيضا ، كما اقترح في التعليقات ، كان Silverlight على سيمبيان S60


Mono / Xamarin Runtimes


ظهر Mono كنتيجة لمحاولات Miguel de Icaz والمطورين الآخرين للحصول على .NET للعمل على Linux (من Mono history history ):


لا يهمني من كان الأول ، لأنني أعتقد أن Mono هي وسيلة لتحقيق غاية: تقنية تساعد Linux على الحصول على موطئ قدم على أجهزة كمبيوتر سطح المكتب.

يصف المنشور نفسه كيف بدأ كل شيء:


أما بالنسبة إلى مونو ، فقد حدثت الأحداث تقريبًا على النحو التالي.
بمجرد ظهور وثائق .NET في ديسمبر 2000 ، أصبحت مهتمًا بهذه التقنية وبدأت في دراستها ، مثل أي شخص آخر ، من مترجم bytecode. ومع ذلك ، واجهت مشكلة في وقت قريب - عدم وجود مواصفات للبيانات الوصفية .
ظهرت آخر التغييرات في مصادر الجهاز الظاهري المبكر في 22 كانون الثاني (يناير) 2001. في هذا الوقت تقريبًا ، بدأت في كتابة الرسائل باستخدام قائمة مراسلات .NET وأطلب المعلومات المفقودة حول تنسيق ملف بيانات التعريف.
...
في نفس الوقت تقريبا ، كان سام روبي يحاول إقناع أعضاء لجنة ECMA بنشر وصف لتنسيق الملف الثنائي ، والذي لم يكن جزءًا من خططهم. لا أعرف كيف تطور كل شيء ، ولكن بحلول أبريل 2001 ، نشرت ECMA وصفًا لتنسيق الملف.

بمرور الوقت ، انتشر Mono ( الآن Xamarin ) إلى منصات أخرى. يعمل الإطار على Android و iOS / Mac. في فبراير 2016 ، حصلت Microsoft على Xamarin. تجدر الإشارة إلى التعاون الطويل الأمد بين Mono / Xamarin و Unity ، والذي يهدف إلى توفير الدعم لـ C # في Unity . في الوقت نفسه ، تعد Unity الآن عضوًا في .NET Foundation.


أوقات تشغيل تجميع AOT


أخذت هذه البيئات إلى فئة منفصلة ، لأن .NET كان يستخدم تقليديا JIT ، ولكن مع مرور الوقت ، ظهرت المزيد من التطبيقات مع AOT.
بقدر ما أستطيع أن أقول ، الأول كان إطار مونو ، الذي ظهرت فيه مجموعة AOT في عام 2006. بالإضافة إلى ذلك ، أصدرت Microsoft مؤخرًا .NET Native ، وهي تعمل حاليًا على CoreRT ، وهي بيئة وقت تشغيل .NET محسنة لتجميع AOT.


مشاريع المجتمع


ومع ذلك ، لم يتم تطوير جميع أوقات تشغيل .NET بواسطة Microsoft أو بواسطة الشركات التي اشترتها لاحقًا. هناك مشاريع تنفذها المجتمعات.


  • أقدم هذه هي DotGNU Portable.NET . بدأ تطويرها في وقت واحد مع Mono بهدف "إنشاء مجموعة من الأدوات المجانية لتجميع وتنفيذ التطبيقات في إطار CLI ...".
  • ثانياً ، سأسمي DotNetAnywhere ، تم تطويره من قبل شخص واحد فقط ، هو كريس بيكون. يُعرف DotNetAnywhere بأنه بمثابة وقت التشغيل الأولي لمشروع Blazor. إنها أيضًا فرصة رائعة لإلقاء نظرة على ما يشكل وقت تشغيل متوافق مع .NET دون الحاجة إلى التنقل عبر ملايين أسطر التعليمات البرمجية التي تشكل CoreCLR !
  • بعد ذلك يأتي CosmosOS ( مشروع GitHub ) ، وهو ليس مجرد وقت تشغيل لـ .NET ، ولكنه نظام تشغيل مُدار. إذا كنت تريد معرفة المزيد ، أنصحك بقراءة قسم الأسئلة الشائعة أو البحث عن "غطاء محرك السيارة" . محاولة أخرى مماثلة هي SharpOS .
  • أخيرًا ، صادفت CrossNet مؤخرًا. يقوم وقت التشغيل هذا "بتوزيع تجميعات .NET ويقوم بإنشاء رمز C ++ غير مُدار يمكن تجميعه بواسطة أي برنامج التحويل البرمجي C ++." لمعرفة المزيد ، ألقِ نظرة على الوثائق وأخذ عينة من التعليمات البرمجية التي تم إنشاؤها.

مشاريع البحث


الآن دعنا ننتقل إلى أوقات تشغيل .NET غير المعروفة. هذه هي مشاريع بحث Microsoft التي تم إطلاقها لمعرفة مدى إمكانية توسيع وظيفة بيئة التنفيذ المدارة وما هي المهام التي يمكن حلها بمساعدتها. ظهرت بعض نتائج البحوث في تطبيقات تجارية لبيئة .NET ، على سبيل المثال Span <T> نشأت من مشروع Midori .


المصدر المشترك للبنية التحتية للغات المشتركة (SSCLI) (أو الدوار)


تطبيق CLI (.NET Framework) من Microsoft ، حيث يتوفر الكود المصدري بموجب ترخيص Shared Source. على الرغم من أن SSCLI غير مناسب للاستخدام التجاري بسبب تفاصيل الترخيص ، إلا أنه يمكن لمبرمجي المساعدة تحليل ميزات التنفيذ في العديد من مكتبات .NET وإنشاء إصدارات معدلة من CLI. توفر Microsoft CLI Shared Source كمرجع تعليمي CLI.

ومن المثير للاهتمام ، مع إصدار Rotor ، كانت الشركة قادرة على إطلاق مشروع Gyro ، الذي يعطي فكرة عن كيفية ظهور الأدوية العامة في وقت تشغيل .NET .


ميدوري


Midori هو الاسم الرمزي لنظام تشغيل التعليمات البرمجية المدارة الذي طورته Microsoft بالتعاون مع Microsoft Research. تم الإبلاغ عن أنه قد يصبح تطبيقًا تجاريًا لنظام التشغيل Singularity ، وهو مشروع بحثي تم إطلاقه في عام 2003 لإنشاء نظام تشغيل موثوق به للغاية حيث يتكون kernel وبرامج تشغيل الأجهزة والتطبيقات من التعليمات البرمجية المدارة. تم تصميمه للحوسبة المتوازية ويمكن تشغيل برنامج موزعة على عدة عقد في وقت واحد. كما طبقت نموذج أمان يعتمد على تشغيل التطبيقات في بيئة معزولة. اقترحت Microsoft العديد من الطرق الممكنة للانتقال من Windows إلى Midori. تم إيقاف العمل على نظام التشغيل في عام 2015 ، على الرغم من أن العديد من الأفكار المنفذة فيه تندرج في مشاريع Microsoft الأخرى.

يبدو أن معظم الأفكار من مشروع Midori عادت إلى .NET Framework. يمكنك قراءة المزيد حول هذا الموضوع مع جو دوفي في سلسلة من المقالات حول ميدوري :


  1. قصة ثلاثة safeties
  2. كائنات كما قدرات آمنة
  3. كل شيء غير متزامن
  4. رمز الأصلي آمنة
  5. نموذج الخطأ
  6. ثقافة الأداء
  7. 15 سنة من التزامن

التفرد (نظام التشغيل) (أيضًا التفرد RDK)


Singularity هو نظام تشغيل تجريبي طورته Microsoft Research بين عامي 2003 و 2010. كان من المفترض أن يكون نظام تشغيل موثوقًا به حيث يتكون kernel وبرامج تشغيل الأجهزة والتطبيقات من التعليمات البرمجية المُدارة. يستخدم الأمان الداخلي أمان الكتابة بدلاً من حماية ذاكرة الجهاز.


ريدهاوك


والأخيرة وليس آخرا البيئة هي Redhawk :
اسم الكود الخاص بالنسخة التجريبية ، وهو الحد الأدنى من وقت تشغيل الكود المدار الذي تطور إلى CoreRT.


مراجع إلى المصادر


فيما يلي مقالات ويكيبيديا التي استخدمتها لإنشاء المقياس الزمني:



تم العثور على المزيد من الخيارات


Net60


في التعليقات ، اقترح bmforce أن هناك منصة أخرى ، Net60. لا يوجد الكثير من المعلومات حول هذا الموضوع ، ولكن تمكنت من العثور على إشارة في المنتدى + مقالة حول CodeGuru :


أخيرًا ، وصل إطار عمل Compact Framework لـ Symbian S60 3rd!
لذلك ، يمكنك برمجة Symbian في أي لغة من Visual Studio 2005. (Visual Basic ، Visual C # ، Visual C ++). يتم توصيل DotNet (net60) بالرسالة ، تحتاج إلى تسجيل وتثبيته على الهاتف. بالمناسبة ، يمكنه تشغيل ملفات. exe مكتوبة على Windows mobile .NET CF من مجلده الخاص!

ضوء القمر


لا يوجد ذكر لضوء القمر ، الذي يعتمد على إصدار المونو - المصدر المفتوح لـ Silverlight:


Moonlight هو تطبيق مفتوح المصدر لـ Silverlight ، تم إنشاؤه بشكل أساسي لنظام Linux وأنظمة تشغيل Unix / X11 الأخرى. يوفر الإصدار الأخير من Moonlight (Moonlight 4 Preview 1) الدعم لمجموعة ميزات Silverlight 3 الأساسية ، بالإضافة إلى التوافق مع Silverlight 4.

Blazor


كما لم يتم ذكر مشروع Blazor الجديد ، الذي لديه كل فرصة للنجاح: .NET for Web Assembly. يتم استخدامه ، على سبيل المثال ، في مشروع Try .NET ، مجموعة أدوات لإنشاء أمثلة تعليمات برمجية .NET يمكن تشغيلها في مستعرض.


PageFX


يبدو الأمر رائعًا للغاية بالنسبة لي ، لكن أحد مطوري مشروع PageFX قاموا بطردي وإسقاط الرابط إلى المستودع حيث يتم تخزين المترجم من .NET CIL إلى Flash bytecode. إنه رائع :) مؤلف هذا المشروع هو todysh



المزيد من الترجمات لمقالات من مات وارين


Source: https://habr.com/ru/post/ar466811/


All Articles