هل تستخدم اوب (الجانب البرمجة الموجهة) في إنتاج البرامج ؟

StackOverflow https://stackoverflow.com/questions/20663

  •  09-06-2019
  •  | 
  •  

سؤال

اوب مثيرة للاهتمام نموذج البرمجة في رأيي.ومع ذلك ، لم تكن هناك مناقشات حول هذا الموضوع حتى الآن هنا على ستاكوفيرفلوو (على الأقل أنا لا يمكن العثور عليها).ما رأيك في ذلك ؟ هل تستخدم اوب في مشاريعك ؟ أو هل تعتقد أنه بدلا من مكانة التكنولوجيا التي لن يكون حول لفترة طويلة أو لا تجعل في صلب (مثل OOP لم ، على الأقل من الناحية النظرية؛))?

إذا كنت لا تستخدم اوب ثم اسمحوا لنا أن نعرف ما هي الأدوات التي تستخدمها أيضا.وذلك بفضل!

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

المحلول

نعم.

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

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

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

العديد من حقن التبعية الحاويات ، بما في ذلك قلعة وندسور والوحدة ، دعم هذا السلوك إما "في المربع" أو من خلال استخدام ملحقات.

نصائح أخرى

بيثون يدعم اوب عن طريق السماح لك تعديل حيوي الطبقات في وقت التشغيل (التي في بيثون عادة ما يسمى monkeypatching بدلا من اوب).وهنا بعض من بلدي اوب حالات الاستخدام:

  1. لدي موقع على شبكة الانترنت في كل صفحة يتم إنشاؤها من قبل الثعبان وظيفة.أود أن تأخذ فئة وجعل جميع صفحات الويب التي تم إنشاؤها بواسطة تلك الفئة المحمية بكلمة مرور.اوب يأتي لانقاذ;قبل كل وظيفة تسمى أفعل المناسبة الدورة التدقيق و إعادة التوجيه إذا لزم الأمر.

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

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

هذا النوع من الأشياء لا تأتي في كثير من الأحيان, ولكن عندما تفعل ذلك ، monkeypatching مفيد جدا.الثعبان أيضا الديكور التي تنفذ ديكور تصميم نمط (http://en.wikipedia.org/wiki/Decorator_pattern) لإنجاز أشياء مماثلة.

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

أنا لا أفهم كيف يمكن التعامل مع اهتمامات مشتركة مثل قطع الأشجار, الأمن, إدارة المعاملات استثناء-التعامل في بيئة نظيفة الموضة دون استخدام اوب.

أي شخص باستخدام إطار الربيع (ربما حوالي 50% Java enterprise المطورين) يستخدم اوب سواء كانوا يعرفون ذلك أم لا.

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

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

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

كنا aspectJ في أحد المشاريع الكبيرة لبعض الوقت.المشروع يتكون من عدة خدمات الويب ، ولكل منها وظائف عدة ، الذي كان الواجهة الأمامية على وثيقة معقدة تجهيز/الاستعلام عن النظام.في مكان ما حوالي 75 ألف أسطر من التعليمات البرمجية.كنا جوانب لمدة بسيطة نسبيا قطعة من الوظائف.

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

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

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

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

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

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

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

ونحن أيضا استخدام خطة استخدام عدد كبير من سمات الأشياء مثل مترجم التحكم التحكم في التدفق في IDE التصحيح, والتي لا تحتاج إلى أن تكون جزءا من النهائي التطبيقات الموزعة.

نحن نستخدم PostSharp لدينا اوب الحل.لدينا التخزين المؤقت خطأ في التعامل مع قاعدة البيانات إعادة المحاولة الجوانب التي نستخدمها حاليا في عملية صنع أمننا الشيكات جانبا.

يعمل كبيرة بالنسبة لنا.المطورين حقا مثل فصل من الشواغل.المهندسين المعماريين حقا مثل وجود منصة مستوى المنطق الموحد في مكان واحد.

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

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

http://codemodeweb.blogspot.in/2018/03/spring-aop-and-aspectj-framework.html

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