Oncelikle, makaleme hoş geldiniz. Elimden geldiğince forumdakilerin '.NET Core' hakkında bilgilenmeleri ve modern programlamaya uymalarına yardımcı olmak istiyorum.

Oncelikle AOP nedir?
AOP; Aspect Oriented Programming yani yazılımın karmaşıklığını azaltmak, yinelenen kodlardan kurtulmak amaclı bir bakış acısıdır. Uygulamada pek işlevi olmayan (authorizasyon, yetki kontrolu, loglama) gibi şeylerin parcalara ayrılarak uygulamanın ceşitli yerlerinde kodların tekrar edilmeden kullanılmasını sağlar.

AOP ve Interception yapısını daha iyi anlamak icin bu yazımızda Cros Cutting Concerns'e de biraz değinmek istiyorum.

Cross Cutting Concerns nedir?
CCS'in cevrilmiş hali "carpaz kesen ilgiler" demektir. Peki bu ifade ne anlama gelmektedir? Cok katmanlı mimari ile calıştığımızda herhangi bir katmana bağlı kalmadan her katmanda kullanabildiğimiz işlere CCS deriz. Orneğin; caching, hashing, logging, exception handling,...

Yani biz CCS'i katmanlarda kolaylaştırmak icin AOP'ye ihtiyac duyarız. Eğer CCS var olmasaydı AOP'ye ihtiyac duymayacaktık diyebiliriz.

Sphagetti Kod Orneği:
Kod:Panoya kopyala
public class PostManager:IPostService public void Add(Post post) if() PostRepository.Add(post); } catch(Exception e)"); } } }

Yukarıdaki kodda gorduğunuz gibi
Loglama Yetki Kontrol Etme Hata İşleme hepsini kod icinde yaptık ve ortalık karıştı. Şimdi ise AOP'nin etkisini gorelim.
Kod:Panoya kopyala
public class PostManager:IPostService [LogAspect] [ValidationAspect(typeof(PostValidator))] public void Add(Post post) }

Kesinlikle ilk koddan daha okunaklı olduğu bariz. İkinci kodda yaptığımız soyutlamalara baktığımızda C#'ta soyutlamalarımız birer Attribute'tur. Java, Php gibi dillerdede ise bunlara Annotation denir. Peki bu Attribute'lar nasıl calışır? Bu Attribute'ları calıştıran ara yazılıma interceptor denir. Eğer interceptor orneği yapmamı isterseniz lutfen cevap olarak belirtin. Umarım işine yarayan birileri cıkar