سؤال

يوجد الكثير من تطبيقات AOP في C# وVB.net.هذه بعض تطبيقات AOP:

ما هو أفضل تطبيق لـ AOP في .Net؟ما الذي يجب أن أستخدمه؟

هل كانت مفيدة؟

المحلول

اعتقد انه الوكيل الديناميكي للقلعة هو الحل المفضل إذا كان الاعتراض الديناميكي يمكنه التعامل مع احتياجاتك.يتم استخدام هذا الإطار داخليًا بواسطة الكثير من أطر العمل الأخرى التي ترغب في تقديم إمكانات AOP.عادةً، توفر الآن معظم حاويات IoC الحالية بعض آليات الاعتراض الديناميكية (Spring.NET، وCastle Windsor، وStructureMap، وما إلى ذلك). إذا كنت تعمل بالفعل مع حاوية IoC، فقد يكون من الأسهل النظر إلى ما تقترحه.

إذا لم يتمكن الاعتراض الديناميكي من تلبية احتياجاتك (نسج فئة مختومة، واعتراض المكالمات غير الافتراضية، وما إلى ذلك)، فأنت بالتأكيد تريد النسيج الثابت. بوستشارب هو المرجع في هذا المجال.

لاحظ أنه موجود أيضًا لينفو, والتي يمكن استخدامها للاستفادة من طرازي AOP.

نصائح أخرى

"الأفضل" هو ذاتي.

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

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

وهنا بعض المؤشرات:

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

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

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

لا أعرف ما هو الأفضل، هناك الكثير من الأطر ولا توجد ساعات كافية في اليوم لتجربتها جميعًا.

لقد استخدمت PostSharp وفوجئت بسرور بمدى سهولة البدء به.

لقد بحثت أيضًا في AOP باستخدام Castle Windsor وSpring.Net، حيث يختلف النهج (وقت التشغيل مقابل وقت الترجمة).يبدو أن خلط AOP وIoC أمر منطقي.عندما لا تستخدم أحد هذه الأطر حتى الآن، فإن الأمر يتطلب الكثير من العمل للبدء ولكن لا تدع ذلك يوقفك.

بالنسبة للمشاريع الجديدة الآن، ربما سأستخدم Castle Windsor، ولكن هذا في الغالب لأنني أرغب أيضًا في استخدام IoC.إذا اضطررت إلى تنفيذ AOP بسرعة في قاعدة تعليمات برمجية موجودة، فسأستخدم PostSharp.

هناك أيضًا حقن السياسة و اعتراض الوحدة من مايكروسوفت.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top