انعكاس الإرسال سيناريوهات أسلوب ديناميكي

الأساليب الديناميكية إنشاء بواسطة استخدام DynamicMethodفئة (الجديد في.NET Framework الإصدار 2.0) بتوفير إمكانيات محسنة لباعث وظائف ثابتة في وقت التشغيل. Dynamic methods expand the functionality of the أنواع in the System.Reflection.Emit namespace in several ways:

  • يكون أقل مقدار الحمل، لأن هناك هو لا توجد حاجة لإنشاء تجميعات ديناميكي والوحدات النمطية وأنواع تتضمن الأساليب.

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

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

  • منح أذونات الأمان كافية، إلا أنهما يسمحان تعليمات برمجية تخطي تدقيق رؤية (JIT) في نفس الوقت والوصول إلى بيانات المحمية والخاصة للالكائنات.

يمكنك استخدام الأساليب الديناميكية ILGeneratorالكائن إلى الإرسال Microsoft Office 2010 Suite لغة المتوسطة (MSIL). بالإضافة إلى ذلك، يمكن للوظائف الديناميكية استخدام DynamicILInfoكائن للعمل مع بيانات التعريف المميزة و النطاقات التي تسمح للعملاء تطورا لتقوم بتوليد MSIL الخاصة بهم.

وظائف حيوية مفيدة في سيناريوهات الموقع يكون وقت التشغيل إنشاء رمز هو المطلوبة للأداء. تضمين الأمثلة التي تمت مناقشتها في هذا الجزء إنشاء تسلسل، والتعيينات بين الكائنات وقواعد البيانات العلائقية تعابير عادية، التقييم الجزئي و compilers للغات التي تتطلب أوقات التشغيل.

على سبيل مثال بسيطة من ديناميكي إنشاء أسلوب، راجع كيفية القيام بما يلي: تعريف و تنفيذ وظائف ديناميكية.

اللغات التي يستدعي دعم المتأخر منضم

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

Sub Example(ByVal obj as Object)
    ' ...
    obj.SomeMethod(x, y, z)
    ' ...
End Sub

يجب أن المحول البرمجي بإنشاء تعليمات برمجية إلى البحث عن SomeMethodوتجهيز الوسيطات كصفيف من الكائنات، واستدعاء الأسلوب. تنفيذ هذه الاستدعاءات ذات انعكاس، استخدام InvokeMemberأسلوب، لا توفر أداء جيدا. يمكن تحسين الأداء باستخدام الأعضاء System.Reflection.Emitمساحة الاسم إلى إنشاء تجميع حيوي ووحدة نمطية، نوع والأسلوب، ولكن يمكن أن يؤدي هذا إلى التعيين بقعة صغيرة للعمل وتعقيد تعليمات برمجية بقعة صغيرة. السماح طرق حيوية استراتيجية تنفيذ أكثر فعالية في الحالات الموقع يكون توقيع الأسلوب ديناميكي تطابق نوع مفوض موجود، لأنه ليس هناك حاجة إلى إنشاء تجميع حيوي أو وحدة نمطية أو النوع. يقوم هذا الأسلوب بأفضل كثيرا من استخدام InvokeMemberالأسلوب. لا يقوم كـ أيضا كـ اتصال ظاهري، ولكنه يتطلب التعيين عمل أصغر بكثير نظراً لعدم وجود أنواع جديدة يتم إنشاؤها. علاوة على ذلك، MSIL المنشأ و يمكن أن يتم استخلاص عن تعليمات برمجية الأصلية المقترنة عند عدم الحاجة إليها.

إنشاء تسلسل

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

تحديد أذونات الأمان كافية, مشغل تسلسل تنفيذها باستخدام وظائف حيوية يمكن الوصول إلى بيانات المحمية والخاصة تمكين إنشاء تسلسل الكائنات غير كتبها منشئ مشغل.

يمكن أن يكون مؤقتاً الأساليب التي تم إنشاؤها في حالة استخدامها بشكل متكرر، أو ذلك فإنها يمكن أن يتم إصدار ببساطة.

تقييم جزئي

جزئي evaluation, also known كـ برنامج specialization, هو a technique for optimizing algorithms الموقع واحد أو المزيد of the إدخال متغيرات vary المزيد slowly than the غير ذلك inputs. جزئي evaluation generates specialized أسلوب calls that treat the قيم of the slowly varying inputs كـ if they were ثابت, allowing إضافى أمثلية إلى be applied إلى the خوارزمية كـ a whole.

Using this technique, it هو often possible إلى transform a منخفض-الأداء عام-purpose خوارزمية في a عالي-الأداء specialized خوارزمية. The following are some أمثلة:

  • جاري التحويل البرمجي a Regex كائن إلى توليد a برنامج that هو specialized إلى مطابقة تشغيل a particular نقش.

  • جاري التحويل البرمجي a بيانات التعريف-driven إنشاء تسلسل engine في a برنامج that هو specialized إلى serialize و deserialize a specific نوع أو التعيين of أنواع.

  • جاري التحويل البرمجي an XML مخطط إلى توليد a برنامج that هو specialized إلى التحقق من صحة a particular مخطط.

  • التحويل البرمجي تحويل XSLT إلى برنامج التي هو متخصصة لتحويل مستندات XML بطريقة معينة.

  • ترجمة برنامج تشفير عام الذي يقوم بتشفير بيانات باستخدام أي تحديد الالمفتاح في أحد برامج التي هو أمثلياً المفتاح معين.

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

للحصول على وصف لبعض وحدات السيناريو هذه في المزيد التفاصيل، راجع انعكاس الإرسال وحدات سيناريو تطبيق.

إنشاء مخصص تعليمات برمجية الخاصة بالمستخدم في وقت التشغيل

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

راجع أيضًا:

المهام

كيفية القيام بما يلي: تعريف و تنفيذ وظائف ديناميكية

المرجع

DynamicMethod

المبادئ

انعكاس الإرسال وحدات سيناريو تطبيق

موارد أخرى

تبعث أساليب حيوية و تجميعات