Your SlideShare is downloading. ×

'Aspect Oriented' Programlama

4,383

Published on

Nedir?tv.com'un 5.yılı kapsamında düzenlenen etkinlikteki 'Aspect Oriented' programlama ile ilgili sunumum...

Nedir?tv.com'un 5.yılı kapsamında düzenlenen etkinlikteki 'Aspect Oriented' programlama ile ilgili sunumum...

Published in: Technology
0 Comments
1 Like
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
4,383
On Slideshare
0
From Embeds
0
Number of Embeds
1
Actions
Shares
0
Downloads
0
Comments
0
Likes
1
Embeds 0
No embeds

Report content
Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
No notes for slide

Transcript

  • 1. Arda Çetinkaya www.minepla.net @ardacetinkaya [email_address]
  • 2. Gündem
    • Ne değildir?
    • Nedir? Ne işe yarar?
    • Problem mi var?
    • Bir biri ile kesişen ilgiler mi?
    • Peki bu ‘Aspect’ ne?
    • Anahtar kelimeler
    • Nasıl?
    • .NET’de AOP nasıl olur...
    • Bir görseydik örneği...
    • Bu kadar...
  • 3.
    • Yeni bir programlama dili değil...
    • OOP’den sonraki ya da onun yerine geçecek yaklaşım hiç değil...
    • Kusursuz da değil...
    • Sadece loglama ya da hata yakalama operasyonları için değildir... (:
    Ne değildir?
  • 4. Nedir? Ne işe yarar?
    • Birbiri ile kesişen ilgileri ayırmak ve basitleştirmek için kullanılabilecek bir yaklaşımdır.
    • Yazılımdaki, tekrar kullanılabilirlik ve birimselik kalite özelliklerine katkı sağlar...
    • Yazılımdaki ilgilerin netleşmesini sağlar...
    • Değişikliklere kolay adaptasyonu getirir...
    • Yazılımın yaşam süresinin uzamasını sağlar...
    • Genişletilebilirliğe ön ayak olur...
    • Daha düzenli ve kontrol edilebilir kod sağlar...
  • 5. Problem mi var?
    •          public Account OpenNewCustomerAccount(Customer customer, Currency currency)         {             try             {                  Logger.Write("OpenNewCustomerAccount is executing...");                   if (!CheckPermission(CURRENTUSER))                     throw new Exception("User does not have permission");                if (HasCustomerAnyLoa n (customer ,100000000 ))                     throw new Exception("Customer has a big amount of loa n ");                  Logger.Write("Account is opening");                   Account.Open(currency);                 Account.SendInformation();                 Account.Transfer(1000);                 Account.Save();                  Logger.Write("Account is opened");             }             catch (Exception ex)             {                 Logger.Write("An error is occured.");                ExceptionHandler.Handle(ex);             }         }
    Çok fazla ilgi iç içe,karışık İş kuralları kodun içinde saklı Değiştirmek zor Dağınık
  • 6. Problem mi var?
    • Zaman içerisinde ortaya çıkan durumlar
    • Belli bir zaman diliminde sahip olunan özellikler, fonksiyonlar...
    • Bebek, çocuk, genç,öğrenci, çalışan,yaşlı....
  • 7. Bir biri ile kesişen ilgiler mi?
    • Bir modüle ayrılamazlar...
    • İlgilerin ayrılmasını zorlaştırırlar...
    • Eğer bir ilgi, farklı başka bir ilgi içerisinde de kullanılıyorsa karmaşıklık ortaya çıkar ( tangled )
      • İş kuralların da bu karmaşıklık minimum şekilde oluşmalıdır.
    • Bir ilgi birden fazla modülün içerisine gömülüyse dağınıklık ortaya çıkar. ( scattered )
  • 8. Bir biri ile kesişen ilgiler mi?
    • Loglama ( Logging )
    • Ön belleğe alma (Caching)
    • Hata yakalama (Exception Handling)
    • Doğrulama (Validation)
    • Yetkilendirme (Authorization)
    • Kimlik doğrulama (Authentication)
    • İş kuralları (Business Rules)
    Data Access Business UI
  • 9. Peki bu ‘Aspect’ ne?
    • Bir biri ile kesişen ilgilerin ayrıldığı parçalar...
    • Yazılım yaşam süresi boyunca kazandığı ya da sahip olduğu özellikler, şekiller...Görünümü...
    • Özel bir tipi olan modül...
    • ‘ Aspect’ler, ilgilerin gizlendiği birer kutu gibidir...Kendi
    • özellikleri, sahip olduğu metodlar içlerinde saklıdır...
  • 10. Anahtar kelimeler
    • Advice: ‘Aspect’ içerisinde bulunan ilginin yapması gereken operasyon...
      • Örnek: Metod çağrımlarında çalışacak, Loglama modülü içerisinde ki Write() metodu....
    • Joint-Point: ‘Aspect’ler ile uygulamanın bağlantı noktaları...
      • Örnek: Metod çağrımı, nesne yaratılması, özelliğe değer atanması...
  • 11. Anahtar kelimeler
    • Pointcut: Bağlantı noktalarının kümesi ve bağlantı noktalarını bulan mekanizma...Bağlantı noktalarınının ne zaman geçerli olacağını belirler, ‘Advice’ları çalıştırır...
      • Örnek: Metod tam çağrılmadan önce ki, ya da bir nesne yaratıldıktan sonra ki, ya da bir özelliğe değer atandıktan sonra ki nokta...
    • Weaving: Pointcut’ları kontrol eden ve yöneten mekanizma...Bu sayede uygulama için gerekli ‘Aspect’ler yaratılır...
      • Örnek: Uygulamanın ‘Aspect’leri çalıştırma şekli...
        • Compile zamanında...
        • Dinamik olarak, çalışma zamanında...
  • 12. Nasıl?
    • Çalışma zamanında gerçekleşebilir(Run-time)
      • Performans açısından yavaş olur
      • Daha esnek olur, genişletilebilir
    • Derleme zamanında gerçekleşebilir...
      • Hızlı olur...
      • Type-safe olur...
    • Uygulamanın bazı kısımlarında, araya girerek
    • ‘ Aspect’’lerimizi çalıştırırız... (interception)
  • 13. .NET’de AOP nasıl olur...
    • Spring.NET
    • PostSharp
    • Aspect#
    • Unity Application Block(Unity)
    • .NET Framework içerisinde AOP yaklaşımını uygulayabilecek
    • sınıflar, metodlar, özellikler ....vs. mevcut...
      • ContextBoundObject
      • Attribute
      • ......vs.
  • 14. Bir görseydik örneği...
  • 15. Bu kadar...
    • Haydi sor sor....
    • Teşekkürler (:

×