LOGO

LOGO
LOGO
ads header

Breaking News

Repository Pattern Nedir?

Veri merkezli yazılımların iş katmanlarından veriye ulaşım işlemleri sırasında meydana gelen ve gözardı edilen bazı ayrıntılar, yazılımın ilerki aşamalarında önümüze bir çığ misali yığılıp kalmaktadır. Özellikle katmanlı mimaride geliştirilen yazılımlarda iş kuralları ve katmanlar, düzgün  oluşturulmadığı taktirde bir işi N defa yapmak zorunda kalabiliriz. Ancak nesneye yönelik (object oriented) yapıların ilkelerinden biri de, bir kuralı bir kez belirleyip N kez çalıştırmaktır. Örneğin veritabanındaki öğrenciler tablosuna öğrenci eklemeyi yapan bir nesne ve bir metod olmalıdır.
İş katmanında dikkat edilmesi gereken bazı kurallar vardır. Bunlar:
  • Kod tekrarlarından kaçınmak
  • Hata yakalamayı kolaylaştırmak
  • Kod yazımını ve okunuşunu kolaylaştırmak
  • Test edilebilir bir yapı kurgulamak
Repository pattern de bizi bu kurallara uymaya zorlamaktadır. Peki repository pattern nedir?
Veri merkezli uygulamalarda veriye erişimin ve yönetimin tek noktaya indirilmesini sağlayan bir tasarım desenidir. Veri merkezli uygulama olması şart değil elbette. Ama bu yazıdaki uygulama veriye erişim kurallarını belirleyen bir örnek üzerinden yürütülecektir.
Örneğimiz, bir ASP.NET MVC web uygulaması içerisinden alınmış repository uygulanışını göstermektedir. Verileri, tek noktadan taşıma işlemini yapacak olan repository yapısı da Entity Framework altyapısını kullanmaktadır. Repository pattern için kullanılan teknoloji çokta önemli değildir. MVC veya Entity Framewok gibi detaylara bu örnekte gerek yoktur, yeri gelmişken bahsetmeden geçemedim. İstersek kendi veri katmanımızı (data layer) hazırlayarak da yola devam edebiliriz.
ASP.NET MVC mimarisinin tanıtımı konusunda en etkili örnek olan açık kaynak kodlu Nerddinner uygulaması üzerinden işlemlerimizi yürütmeye çalışacağız. Neden hazır bir uygulama üzerinden gittim? Kendim de bir sınıf hazırlayıp burada kullanabilirdim pek tabi. Ancak, Nerddinner uygulamasını merak edip bakmanızı da istedim, çok faydalı olacağından eminim.
Nerddinner nedir? Hikaye olarak, insanların yemek yiyebilecek yerleri internet üzerinden kaydedebilecekleri veya daha önceden, başkaları tarafından kaydedilen yemek yenilebilecek yerleri görebilmelerini sağlamak şeklinde özetlenebilir. Bu kısmı da yeri gelmişken kısaca özetledikten sonra konumuza dönebiliriz.
Projede yemek yerleri, Dinner tablosunda tutulmaktadır. Entity framework tarafında da, veritabaındaki Dinner tablosu Dinner sınıfı tarafından temsil edilmektedir. Bu noktada Dinnertablosuna CRUD(Create, Update, Delete) işlemlerini gerçekleştirebilmek için bir arayüz (interface) tanımlanır. Bu arayüzü uygulayan(implement) eden sınıflar Dinner tablosuna CRUD işlemlerini yapmaya hazır demektir.


Hiç yorum yok