کانال بله, جهت پشتیبانی و اطلاع رسانی کانال بله, جهت پشتیبانی و اطلاع رسانی
عضویت

آموزش AOP Concepts-Java Spring

AOP اسپرینگ

مفاهیم AOP

آموزش AOP در اسپرینگ

برنامه نویسی جنبه گرا (AOP) از جهت فراهم آوردن قابلیت ماژولار بودن(modularity)، به خوبی برنامه نویسی شی گرا (OOP) است با این تفاوت که واحد اصلی در ماژولار بودن در AOP جنبه(aspect) است نه شی. AOP ، با هدف افزایش قابلیت ماژولار بودن، توسط دغدغه های متقاطع (cross-cutting concerns)، منطق برنامه را به بخش های مجزا به نام دغدغه (concern) می شکند. دغدغه متقاطع، دغدغه ای است که می تواند روی کل برنامه کاربردی تاثیر گذار باشد، و باید در صورت امکان به طور متمرکز در یک مکان از کد قرار بگیرد همانند مدیریت معاملات، احراز هویت، ثبت وقایع، امنیت و غیره.

چرا از AOP استفاده کنیم؟

AOP یک روش قابل اتصال برای افزودن دغدغه های اضافی (additional concerns) به صورت پویا قبل، بعد و در حین منطق واقعی (actual logic) ارائه می دهد. فرض کنید همانند کد زیر ده متد در یک کلاس وجود دارد.

class A{  
public void m1(){...}  
public void m2(){...}  
public void m3(){...}  
public void m4(){...}  
public void m5(){...}  
public void n1(){...}  
public void n2(){...}  
public void p1(){...}  
public void p2(){...}  
public void p3(){...}  
}   

پنچ متد با m ، دو متد با n و سه متد با p شروع می شود.

درک سناریو:

پس از فراخوانی متدهایی که با m شروع می شوند، باید وقایع را نگهداری و اعلان ارسال کنم.


مشکل بدون استفاده از AOP :

می توانیم از متدهایی که با m شروع می شوند، متدهایی که وقایع را نگهداری و اعلان ارسال می کنند را فراخوانی کنیم. در این شرایط، باید کد را داخل هر پنج متد بنویسیم. اما اگر در آینده کاربر بگوید که مجبور به ارسال اعلان نیست، همه متدها را باید تغییر دهید. این مساله منجر به بروز مشکل در نگهداری کد می شود.


راه حل با استفاده از AOP :

ما نیازی به فراخوانی متدها از یک متد نداریم. در اینجا می توانیم دغدغه های اضافی (additional concerns) مانند نگهداری از وقایع، ارسال اعلان و غیره را در متد یک کلاس تعریف کنیم. Entry آن در یک فایل xml داده می شود. اگر کاربر در آینده قصد حذف قابلیت ارسال اعلان را داشته باشد، تنها نیاز به تغییر فایل xml دارید. بنابراین AOP نگهداری از کد را آسان کرده است.


کجا از AOP استفاده کنیم؟

AOP اکثرا در موارد زیر کاربرد دارد:

  • ارائه خدمات سازمانی اعلانی مانند مدیریت معاملات اعلانی
  • پیاده¬سازی جنبه¬های سفارشی توسط کاربران

مفاهیم AOP و اصطلاحات

AOP مفاهیم AOP و اصطلاحات آن به شرح زیر است که در ادامه به توضیح هر یک می پردازیم.

نقطه اتصال(join point) ، توصیه (advice)، (pointcut) ، معرفی(introduction)، شی هدف (target object) ، جنبه (aspect) ، رهگیری (interceptor) ، پروکسی AOP (AOP proxy) و weaving.


نقطه اتصال :

هر نقطه ای در برنامه شما از جمله اجرای متد، مدیریت استثنا، دسترسی به فیلد و غیره یک نقطه اتصال است. در اسپرینگ تنها از نقطه اتصال اجرای متد پشتیبانی می شود.


توصیه (advice) :

توصیه بیانگر عملی است که در یک نقطه اتصال خاص، توسط یک جنبه انجام می شود. توصیه انواع مختلفی دارد که عبارتند از:

  • Before advice: قبل از نقطه اتصال اجرا می شود.
  • After returning advice: پس از تکمیل عادی یک نقطه اتصال، اجرا می شود.
  • After throwing advice: اگر متد به واسطه پرتاب استثنا (بروز خطا) ایجاد شود، اجرا می شود.
  • After (finally) advice: بدون در نظر گرفتن خروج نقطه اتصال به طور عادی یا بازگشت استثنایی، پس از نقطه اتصال اجرا می شود.
  • Around advice: قبل و بعد از یک نقطه اتصال اجرا می شود.

Pointcut :

یک زبان اصطلاحی(expression language) AOP است که نقاط اتصال را با یکدیگر تطابق می دهد.


معرفی :

به معنی معرفی متد و فیلدهای اضافی برای یک نوع است و به شما این امکان را می دهد تا برای هر شی توصیه شده (advised object) ، واسط جدید معرفی کنید.


شی هدف :

شی ای است که توسط یک جنبه یا بیشتر توصیه شده باشد. همچنین به عنوان شی پروکسی شده نیز در اسپرینگ شناخته شده است زیرا پیاده سازی اسپرینگ AOP بر اساس استفاده از پروکسی ها در زمان اجرا است.


جنبه :

یک کلاس شامل توصیه ها، نقاط اتصال و غیره است.


رهگیری :

یک جنبه است که تنها شامل یک توصیه می باشد.


پروکسی AOP :

توسط فریمورک AOP برای پیاده¬سازی قرارداد های جنبه ایجاد شده است. پروکسی AOP در فریمورک اسپرینگ، پروکسی پویا JDK یا پروکسی CGLIB خواهد بود.


Weaving :

روند اتصال جنبه با انواع یا اشیای برنامه های کاربردی دیگر برای ساخت یک شی توصیه شده است. Weaving می تواند در زمان کامپایل، بارگذاری یا اجرا اعمال شود. اسپرینگ AOP در زمان اجرا weaving را اعمال می کند.


پیاده سازی های AOP

پیاده سازی های AOP توسط AspectJ، spring AOP و JBoss AOP ارائه می شود.


AOP اسپرینگ

سه روش برای استفاده از AOP اسپرینگ وجود دارد که عبارتند از:

1. By Spring1.2 Old style (dtd based) (also supported in Spring3)

2. By AspectJ annotation-style

3. By Spring XML configuration-style(schema based)


اما روشی که بیشتر مورد استفاده قرار می گیرد سبک نمادگذاری AspectJ اسپرینگ (Spring AspectJ Annotation Style) است.


1398/12/19 5209 585
رمز عبور : tahlildadeh.com یا www.tahlildadeh.com
نظرات شما

نظرات خود را ثبت کنید...