نظرة عامة حول وقت تشغيل اللغة حيوية

وقت تشغيل اللغة ديناميكي (DLR) هو بيئة وقت تشغيل بإضافة التعيين من الخدمات للغات ديناميكي إلى وقت تشغيل اللغة العامة (CLR). الـ DLR يسهّل تطوير اللغات الحيوية لتُشَفَل على .NET Framework و لتضيف ميزات حيوية للّغات المكتوبة بشكل ثابت.

ديناميكي languages can identify the نوع of an كائن at تشغيل الوقت, whereas في statically typed languages such كـ C# و Visual أساسى (when you استخدم Option Explicit On) you must specify كائن أنواع at تصميم الوقت. اللغات ديناميكي أمثلة Lisp Smalltalk، JavaScript، PHP، روبي، Python، ColdFusion، Lua، Cobra و Groovy.

توفر اللغات الأكثر حيوية الميزات التالية للمطورين:

  • القدرة على إلى استخدام تكرار حلقي ملاحظات سريع (REPL، أو تكرار حلقي القراءة-تقييم-طباعة). يتيح هذا إمكانية إدخال عبارات متعددة ومباشرة بتنفيذ هذه إلى الاطلاع على نتائج.

  • دعم لكل منهما لأعلى-التطوير وأسفل الأكثر تقليدية-فأعلى التطوير. على سبيل المثال، عند استخدام أسلوب أعلى إلى أسفل، يمكنك استدعاء دالات تطبيق بعد و ثم إضافة تطبيقات المصدر عند الحاجة إليها.

  • التعديلات refacإلىring والتعليمات البرمجية أسهل، لأنه ليس لديك إلى تغيير تعريفات نوع ثابتة خلال تعليمات برمجية.

جعل اللغات ديناميكي ممتازة للغات البرمجة النصية. يمكن للعملاء توسيع التطبيقات التي تم إنشاؤها باستخدام اللغات ديناميكي مع commوs الجديد بسهولة و الوظائف. اللغات ديناميكي أيضا يتكرر استخدامها لإنشاء مواقع ويب و اختبار harnesses، والحفاظ على تكتلات الملقمات، وتطوير المرافق المختلفة، و تنفيذ تحويلات بيانات.

الغرض من DLR تمكين النظام اللغات ديناميكي لتشغيل في.NET Framework وإعطائهم إمكانية التشغيل التفاعلي.NET. يقدم DLR الكائنات ديناميكي إلى C# و Visual أساسى في 2010 Studio Visual أساسى ل دعم سلوك الديناميكي بهذه اللغات وتمكين interoperation الخاصة بهم مع اللغات ديناميكي.

DLR أيضا يساعدك في إنشاء مكتبات الذي يدعم العمليات ديناميكي. على سبيل المثال، إذا كان لديك مكتبة تستخدم كائنات XML أو التعليق التوضيحي لكائن Javكـcript (JSON)، يمكن أن تظهر الكائنات كـ الكائنات ديناميكي إلى اللغات التي تستخدم في DLR. وهذا يسمح للمستخدمين المكتبة بكتابة بناء أسهل وأكثر طبيعية تعليمات برمجية تعمل مع كائنات والوصول إلى الأعضاء كائن.

على سبيل المثال، يمكنك استخدام الإجراءات التالية تعليمات برمجية لزيادة العداد في ملف XML في C#‎.

Scriptobj.SetProperty("Count", ((int)GetProperty("Count")) + 1);

باستخدام DLR، يمكنك استخدام الإجراءات التالية تعليمات برمجية بدلاً من ذلك لنفس تشغيل.

scriptobj.Count += 1;

مثل CLR، DLR هو جزء من برنامج.NET Framework وقد تم توفيرها باستخدام حزم تثبيت.NET Framework و ‏‫Visual Studio. The open-المصدر الإصدار of the DLR هو also متوفر for ينزّل on the CodePlex Web site.

ملاحظةملاحظة

فتح-المصدر الإصدار DLR على الجميع ميزات DLR المضمنة في ‏‫Visual Studio وإطار عمل.NET.كما يوفر دعم إضافي implementers اللغة.للحصول تشغيل مزيد من المعلومات، راجع الوثائق تشغيل موقع ويب CodePlex.

أمثلة على اللغات التي تم تطويرها بواسطة استخدام DLR تضمين ما يلي:

  • IronPython. توفر كـ المصدر بفتح البرنامج من موقع ويب CodePlex.

  • IronRuby. توفر كـ المصدر بفتح البرنامج من موقع ويب RubyForge.

ميزات DLR الأساسي

DLR يوفر الميزات التالية.

يسهل تصديرها لغات الحيوي إلى من برنامج.NET Framework

يسمح DLR implementers اللغة تجنب إنشاء analyzers لغوي موزعي، analyzers دلالية ومولدات تعليمات برمجية، و غير ذلك الأدوات التي يتم عادة إنشاء نفسها. إلى استخدام DLR، يحتاج إلى لغة إلى إنتاج أشجار التعبير ، والتي تمثل رمز المستوى اللغة في بنية على شكل شجرة ووقت تشغيل المساعد إجراءات اختيارية الكائنات ديناميكي التي تقوم بتنفيذ IDynamicMetaObjectProviderالواجهة. DLR و كثير من تحليل تعليمات برمجية التنفيذ التلقائي لبرنامج.NET Framework و تعليمات برمجية إنشاء المهام. بما يمكن من لغة implementers إلى التركيز تشغيل ميزات لغة فريدة.

تمكين ميزات ديناميكي بلغات المكتوب بشكل ثابت

يزال لغات.NET Framework مثل كـ C# و Visual أساسى Bكـic إنشاء الالكائنات ديناميكي واستخدامها مع الالكائنات مكتوب بشكل ثابت. على سبيل المثال، C# و Visual أساسى يمكنك استخدم الكائنات ديناميكي للانعكاس HTML وطراز كائن مستند (DOM).NET.

يوفر المستقبل فوائد DLR و.NET Framework

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

تمكين مشاركة من مكتبات و الكائنات

الكائنات وتنفيذه في إحدى المكتبات اللغة تستخدم من قبل الآخرين اللغة s. DLR أيضا من interoperation بين كتابتها بشكل ثابت و ديناميكي اللغات. على سبيل المثال، C# يمكن التصريح ديناميكي كائن يستخدم مكتبة ما هو مكتوب في ديناميكي اللغة. في نفس الوقت، يمكن اللغات ديناميكي استخدم مكتبات من.NET Framework.

يوفر الإرسال السريع الحيوي و الاستدعاء

يوفر DLR سرعة تنفيذ العمليات ديناميكي بدعم تخزين مؤقت متعددة الأشكال المتقدمة. DLR إنشاء قواعد لربط العمليات التي تستخدم كائنات للتطبيقات وقت التشغيل الضرورية وثم تقوم بتخزين هذه القواعد لتجنب-استنفاد موارد حسابات ربط أثناء executions متتالية من نفس تعليمات برمجية تشغيل نفس أنواع الكائنات.

هندسة DLR

يبين المثال التالي الهندسة ديناميكي لغة وقت التشغيل.

هندسة DLR

نظرة عامة حول هندسة وقت التشغيل الديناميكي للغة

The DLR adds a التعيين of الخدمات إلى the CLR for better supporting ديناميكي languages. These الخدمات تضمين the following:

  • تعبير trees. The DLR uses تعبير trees إلى represent اللغة semantics. For this purpose, the DLR has extended LINQ تعبير trees إلى تضمين تدفق عناصر التحكم, assignment, و غير ذلك اللغة-modeling nodes. لمزيد من المعلومات، راجع أشجار التعبير.

  • يتصل موقع تخزين مؤقت. A ديناميكي يتصل موقع هو a place في the تعليمات برمجية الموقع you perform an operation مثل a + b أو a.b() تشغيل ديناميكي الكائنات. The DLR caches the characteristics of a و b (usually the أنواع of these الكائنات) و معلومات حول the تشغيل. If such an تشغيل has been performed previously, the DLR retrieves الجميع the necessary معلومات من the ذاكرة تخزين مؤقت for fast dispatch.

  • ديناميكي كائن إمكانية التشغيل التفاعلي. The DLR provides a التعيين of فئات و الواجهات that represent ديناميكي الكائنات و العمليات و can be used بواسطة اللغة implementers و authors of ديناميكي مكتبات. These فئات و الواجهات تضمين IDynamicMetaObjectProvider, DynamicMetaObject, DynamicObject, و ExpandoObject.

تستخدم DLR الموثقات في مواقع استدعاء إلى الاتصال ليس فقط مع.NET Framework، ولكن مع غير ذلك infrastructures والخدمات، بما في ذلك Silverlight و COM. الموثقات تغليف دلالات لغة ما وتحديد كيفية إلى إجراء العمليات في موقع اتصال باستخدام أشجار التعبير. بما يمكن من ديناميكي و كتابة اللغات التي تستخدم في DLR يجعله مشتركًا المكتبات بشكل ثابت و الوصول إلى الجميع التقنيات التي تعتمد DLR.

وثائق DLR

للحصول تشغيل مزيد من المعلومات حول كيفية استخدم الإصدار DLR إضافة سلوك الديناميكي إلى لغة، أو حول كيفية تمكين فتح المصدر استخدم لغة ديناميكية باستخدام برنامج.NET Framework، راجع الوثائق تشغيل موقع ويب CodePlex.

راجع أيضًا:

المرجع

ExpandoObject

DynamicObject

المبادئ

وقت تشغيل اللغة الموحدة

أشجار التعبير

موارد أخرى

الإرشادات التفصيلية: إنشاء ثم استخدام الكائنات الديناميكية(C# و Visual Basic)