Quantcast
Channel: BTSoru.com - Bilisim ve Yazilim Teknolojileri Soru/Cevap Platformu - latest questions
Viewing all articles
Browse latest Browse all 4270

Farklı veri kaynakları ile çalışırken uygulama mimarisi nasıl olmalı?

$
0
0

alt text

Özet olarak şekildeki gibi bir proje yapısı var. Repository Pattern içerisinde ORM aracı ile veritabanı işlemlerini yapıyorum. Fakat, bazı noktalarda, ORM araçlarını kullanmadan (iş kuralı gereği) saf SQL işletmem gerekiyor.

Temel CRUD (Create, Read, Update, Delete) işlemleri için ORM kullanıyorum. Fakat, veritabanı içerisinde değişiklik yapmayacağım, sadece veri çekeceğim tablolar var.

Yani uygulama üzerinden; kayıt ekleme, silme, güncelleme yapılacak tablolara ORM ile ulaşmak. Sadece raporlama için veri çekilecek tablolara ise direk SQL veya SP, Views, ... şeklinde ulaşmam gerekiyor. Belki tam anlatamadım ama kod ile anlatmaya çalışayım.

interface ICustomerRepository 
{
    public List GetCustomers();
}

CustomerRepositoryFromORM implements ICustomerRepository 
{
    public List GetCustomers()
    {
         return entity.Customers;
    }
}

CustomerRepositoryFromSQL implements ICustomerRepository 
{
    public List GetCustomers()
    {
         string query = "Select * From Customers";

         return ExecuteSQL(query);
    }
}

Yukarıdaki gibi bir yapıda Bu repository i servis e nasıl enjekte edeceğiz. Servis içerisinde normalde repository i aşağıdaki gibi enjekte ediyorum.

CustomerService implements ICustomerService
{
    private ICustomerRepository customerRepository;

    public CustomerService (ICustomerRepository _customerRepository)
    {
        this.customerRepository = _customerRepository;
    }
}

Tam anlatabildim mi bilmiyorum ama, İşin özeti resimdeki gibi bir yapı içerisinde, farklı veri kaynaklarından veri çekerken, Repository ve Service sınıflarının yapısı nasıl olmalı. Aynı interface den türeyen farklı sınıflar, en etkin şekilde nasıl enjekte edilmeli (veya bağımlılığı kaldıran farklı bir yöntem). Benim yukarıda yaptıklarımdan farklı bir yapıda olabilir. Hatta cok farklı bir mimari de (yukarıdaki mimari tercihimdir). Amacım uygulamanın, değişiklikler karşısındaki kırılganlığını en az seviyeye düşürmek. Bu konudaki tavsiyeleriniz nelerdir?

Teşekkürler.


Viewing all articles
Browse latest Browse all 4270

Trending Articles


Mide ağrısı için


Alessandra Torre - Karanlık Yalanlar


Şekilli süslü hazır floodlar


Flatcast Güneş ve Ay Flood Şekilleri


Gone Are the Days (2018) (ENG) (1080p)


Yildiz yükseltme


yc82


!!!!!!!!!! Amın !!!!!!!!!


Celp At Nalı (Sahih Tılsım)


SCCM 2012 Client Installation issue