مناطق تنفيذ مقيدة

منطقة تنفيذ مقيدة (CER) هو جزء من mechanهوm لتأليف يمكن الاعتماد عليها تعليمات برمجية مُدارة. يعرف CER مساحة فيه وقت تشغيل اللغة العامة (CLR) هو مقيدة من طرح مسح نطاق الاستثناءات التي قد تمنع تنفيذ بمجمله التعليمة البرمجية في المساحة. في هذه المنطقة، ورمز مستخدم هو مقيدة من تنفيذ تعليمات برمجية التي قد ينتج بطرح استثناء مسح شريط. PrepareConstrainedRegionsمباشرة يجب أن تسبق أسلوب tryالكتلة وعلامات catch، finally، و faultكتل كـ مقيدة بتنفيذ مناطق. بمجرد أن وضعت في منطقة مقيدة، رمز يجب فقط استدعاء تعليمات برمجية الأخرى بعقود الوثوقية قوية، ويجب أن لا يخصص التعليمة البرمجية أو إجراء ظاهري باستدعاء أساليب unprepared أو غير موثوق به إلا إذا تم إعداد تعليمات برمجية لمعالجة الفشل. تأخير CLR إحباط مسار التنفيذ للتعليمات البرمجية التي هو تنفيذها في CER.

تستخدم مناطق تنفيذ مقيدة بأشكال مختلفة في CLR بالإضافة إلى تعليقات توضيحية tryمنع تنفيذ في الفئات المشتقة من الضروري finalizers الملاحظ CriticalFinalizerObjectالفئة و تعليمات برمجية التي يتم تنفيذها باستخدام ExecuteCodeWithGuaranteedCleanupالأسلوب.

تحضير التقدم CER

تحضير CLR CERs مقدما إلى تجنب الشروط بنفاد ذاكرة. تقديم التحضير هو المطلوب حتى لا يؤدي CLR بنفاد حالة ذاكرة أثناء تحميل التجميع أو نوع في نفس الوقت.

مطلوب المطور للإشارة إلى أن تعليمات برمجية هو منطقة CER:

  • المستوى الأعلى منطقة CER و أساليب في الرسم البياني استدعاء الكاملة التي تحتوي على ReliabilityContractAttributeيتم تحضير السمة المطبقة في التقدم. ReliabilityContractAttributeيمكن فقط الولاية صريحة من Successأو MayFail.

  • لا يمكن إنجاز التقدم التحضير للمكالمات التي لا يمكن بشكل ثابت تحديد، ومثل كـ الإرسال الظاهري. استخدام PrepareMethodأسلوب في هذه الحالات. عند استخدام ExecuteCodeWithGuaranteedCleanupالأسلوب، PrePrepareMethodAttributeسمة يجب تطبيقها نظيف عن تعليمات برمجية.

الـقيود

تكون مقيدة بالمستخدمين في النوع من تعليمات برمجية التي يمكنها الكتابة في CER. التعليمة البرمجية لا تتسبب في حدوث استثناء مهلة بث، مثل كـ قد تنتج عن العمليات التالية:

  • تخصيص صريحة.

  • تحويل إلى كائن.

  • الحصول على قفل.

  • قم باستدعاء وظائف unprepared فعلياً.

  • استدعاء وظائف ضعيف أو غير موجودة وثوقية اتفاق.

تعتبر هذه القيود في.NET Framework الإصدار 2.0، الإرشادات. يتم توفير التشخيص من خلال أدوات تحليل تعليمات برمجية.

وثوقية العقود

ReliabilityContractAttributeهو يضمن أن سمة مخصصة مستندات الثبات و حالة تلف أسلوب معطى.

وثوقية ضمنية

وثوقية ضمنية، يمثله Cerقيم التعداد، تشير إلى الدرجة وثوقية أسلوب معطى:

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

  • None. أسلوب أو نوع تجميع قد لا يوجد مفهوم CER و هو غالباً غير آمنة للاتصال داخل CER دون تقليل الأمان الأساسية من تلف الحالة. لا يستفيد من CER صريحة. ويتضمن ذلك ما يلي:

    1. الحالات الاستثنائية أسلوب قد يفشل.

    2. أسلوب قد أو قد لا التقرير التي فشلت في.

    3. الأسلوب هو لا كتابة لاستخدام CER، السيناريو الأكثر احتمالاً.

    4. إذا كان الأسلوب أو نوع تجميع هو صراحة عدم التعرف بنجاح، فإنه هو ضمنياً التعرف عليها ك None.

  • Success. الحالات الاستثنائية، والأسلوب هو مضموناً أن ينجح. لتحقيق th هو مستوى الثقة، يجب دائماً بإنشاء CER حول الطريقة التي هو يسمى، حتى عند هو استدعاؤها من داخل منطقة غير CER. أسلوب هو إذا نجح accomplهوhes ما هو الهدف، على الرغم من أنه يمكن أن يتم عرض نجاح subjectively. على سبيل المثال، وضع علامة العدد مع ReliabilityContractAttribute(Cer.Success)يعني عند ذلك هو تعمل ضمن CER، فإنه دوماً بإرجاع عدد عدد العناصر في ArrayListوإلا فإنه يمكن المغادرة حقول الداخلية في الولاية غير محددة. ومع ذلك، CompareExchangeالطريقة وضعت نجاح أيضا، بمفهوم نجاح قد تعني القيمة قد لا يتم استبداله بقيمة جديدة نظراً للشرط السباق. النقطة الأساسية هو أن الأسلوب الذي يتصرف بالطريقة هو توثيقها بتصرف، ورمز CER لا تحتاج لكتابتها بحيث يتوقع أي سلوك استثنائية تتجاوز ما هو رمز الصحيح، ولكن غير موثوق به أن تظهر عليه.

مستويات تلف

مستويات تلف، $ $ $ $ represented بواسطة Consistencyقيم التعداد، تشير إلى مدى الولاية تلف في بيئة محددة:

  • MayCorruptAppDomain. في الحالات الاستثنائية، يجعل وقت تشغيل اللغة العامة (CLR) لا يوجد صريحة regarding الولاية التوافق في مجال تطبيق الحالي.

  • MayCorruptInstance. الحالات الاستثنائية، والأسلوب هو مضمون للحد من الولاية تلف للمثيل الحالي.

  • MayCorruptProcess، في الحالات الاستثنائية، يجعل CLR لا صريحة فيما يتعلق بحالة consهوtency؛ التي هو، قد يلحق الحالة العملية.

  • WillNotCorruptState. الحالات الاستثنائية، والأسلوب هو ضمان عدم تلف الالولاية.

وثوقية حاول/catch/اخيرا

وثوقية try/catch/finallyهو يضمن استثناء معالجة mechanهوm بنفس المستوى من predictability كالإصدار غير المدارة. catch/finallyهو حظر CER. تتطلب الطرق في الكتلة التقدم التحضير و يجب أن يكون noninterruptible.

في.NET Framework الالإصدار 2.0، تقوم التعليمات البرمجية بإعلام وقت التشغيل الذي حاول هو يمكن الاعتماد عليها بواسطة استدعاء PrepareConstrainedRegionsمباشرة يسبق حظر المحاولة. PrepareConstrainedRegionsهو عضوRuntimeHelpers، فئة. دعم برنامج التحويل البرمجي باستدعاء PrepareConstrainedRegionsمباشرة معلّقة التوفر الخاص به من خلال compilers.

مناطق Noninterruptible

منطقة noninterruptible بتجميع التعيين من الإرشادات في CER.

في.NET Framework الإصدار 2.0، تنتظر توفر دعم المترجم، تعليمات برمجية للمستخدم بإنشاء مناطق غير interruptible مع يمكن الاعتماد عليه حاول/catch/اخيرا يتضمن حظر محاوله/catch فارغ مسبوقة ب PrepareConstrainedRegionsأسلوب يتصل.

كائن أداة الإنهاء حرج

CriticalFinalizerObjectيضمن بأن يتم تجميع البيانات المهملة ينفذ أداة الإنهاء. عند تخصيص، أداة الإنهاء و يتم تحضير رسم بياني للاتصال بها مقدما. ينفذ في CER أسلوب أداة الإنهاء، ويجب أن تستخدم الجميع القيود تشغيل CERs و finalizers.

أي أنواع الموروثة من SafeHandleو CriticalHandleضمان إلى قمت بها أداة الإنهاء التنفيذ داخل CER. ReleaseHandleفي تطبيق SafeHandleاشتقاق الفئات إلى تنفيذ أية تعليمات برمجية مطلوب إلى تحرير مؤشر.

تعليمات برمجية غير المسموح بهم في CERs

لا يسمح ب CERs العمليات التالية:

  • تخصيصات صريحة.

  • الحصول على قفل.

  • تحويل إلى كائن.

  • وصول إلى الصفيف متعددة الأبعاد.

  • استدعاء الأسلوب من خلال الانعكاس.

  • Enter أو Lock.

  • التحقق من الأمان. لا بتنفيذ متطلبات، والارتباط متطلبات فقط.

  • IsinstوCastclassلكائنات COM و وكلاء

  • الحصول تشغيل أو تعيين حقول في وكيل شفافاً.

  • إنشاء تسلسل.

  • تعمل مؤشرات و المفوضون.

راجع أيضًا:

المبادئ

وثوقية أفضل الممارسات