N-Tier Architecture (Katmanlı Mimari) nedir ? Nasıl yapılır?

Merhaba,

Katmanlı mimari yapısını aslında aşağıdaki resimle özelteyebiliriz.

Projelerimizde olmazsa olmazımız database bağlantılarıdır, databaseden veri çekme, ekleme, silme, güncelleme gibi işlemler yapmak istediğimizde bütün yükü UI(user interface) yüklemek çok doğru olmayacaktır.
Bu aşamada katmanlı mimari devreye girecek databaseden verileri çeken  DLL (Data Access Layer) katmanı işlemlerin yapılacağı BLL (Busines Logic Layer) katmanı ve sunum yapılan katman UI (User Interface) katmanı yer alacak bu yapı isteğe göre çoğaltılabilir ve yük paylaşımı yapılır.
Katmanlar birbirleriyle reference gösterilerek haberleşeceklerdir.
Bu bölüm biraz sıkıcı olabilir ama ufak bir örnekle MSSQL de yer alan Northwind veritabanını örnek olarak bir proje yapalım.

Her zamanki gibi Visual Studio muzu açıyoruz ve yine Blank Solution açarak wfa uygulamasını ve aynı zamanda projectlerden class library projelerini açarak DAL ve BLL isimli iki tane Class library oluşturuyoruz.

DAL katmanımıza yeni bir folder ve bu foldera new item diyerek   Ado.net Framework ile database mizi tanıtıyoruz.

Sonraki aşamlarda bir kaç makale önce tanıttığımız Ado.net Framework kurulumudur, onun için hızlı geçiyorum.
Aşağıda görüleceği gibi bütün verilerimiz(tablolarımız) geldi. Bu veriler database de tablo iken C#da sınıftır.

BLL katmanında ise metotlar, kontroller gibi iş yapacak komutlarımızı yazıyoruz.
Ve BLL katmanına DLL i referenca veriyoruz.

Aynı şekilde UI katmanınada (örnek projedeki adı NTier_01) BLL ve DAL katmanlarını reference veriyoruz.

Böylelikle UI katmanımızdan database ulaşabiliyoruz. Yani database doğrudan UI ve tutmadan farklı bir katman ulaştık, yada BLL katmanında database bilgilerini tutmadan DAL dan  ulaştık gibi düşünebilirsiniz.
Böylece iş yükünü dağıtmış olduk ve herkes kendi işini bilsin dedik

Umarım birşeyler anlatabilmişimdir.

Entity Framework > CodeFirst ile yeni database oluşturma

Merhaba Arkadaşlar,

MS Sql deki databaseler içerisinde yer alan her tablo visual studio(C#)da bir class demektir.
Peki codefirst ile ne yapacağız ?
Çok basit olarak bir WindowsFormsApplication penceresinin açılmasıyla sql üzerinde bir database ve tablolarının oluşmasını sağlayacağız.
Bunun için projemizde sınıflar(sel deki tablolar) oluşturacağız adım adım gittiğimizde ne demek istediğimiz ve ne yapmak istediğimi en sonunda göreceksiniz.

O zaman hiç vakit kaybetmeden visual studio ortamımızı açalım ve başlayalım.
İlk önce her zaman olduğu gibi boş bir “Blank Solution” açıyor ve ”New project” den uygulamamızı ve sınıflarımızı oluşturmaya başlıyoruz.
Burada ufak olarak base classımıza ortak bir özellik vererek diğer classların base classdan miras almalarınıda sağlayacağız.


Burada Category, Product, Entitybase, StokEntites diye 4 adet sınıf oluştrduk.
Category, Product, Entitybase(base class)  sınıflarımızda sqldeki tablolarımızın içeriğini(column name ve aşacakları tipleri) oluştururken  StokEntites de ise  DbContext sınıfından miras alarak database oluşturma işlemlerini yapacağız.

Bir diğer önemli alan ise  App.Config bölümüdür. Bu alanda asıl kayıt işlemlerini yapacağımız sql server bölümüne ait bilgiler vardır eğer bu alan doğru oluşturulmaz ise yaptığımız işlemler boşa gidecektir.

Burada bizim için önemli olan bölüm connectionStrings parametresinin içidir çünkü diğer alanlar zaten standarttır.

Windows Authentication bağlantısı yaptğımızda aşağıdaki gibi bir bağlantı yapmamız gerekmektedir.
connectionStrings>
<add name=”StokEntites_db” connectionString=”Server=pc\mehmet;integrated security=true;initial catalog=My_Db” providerName=”System.Data.SqlClient” />
</connectionStrings>

Eğer Sql de Windows Authentication değilde name ve password ile bağlantı yapmış olsaydık app.config deki connectionStrings parametresi aşağıdaki gibi olmalıydı.

<connectionStrings>
<add name=”StokEntites_db” connectionString=”initial catalog=My_Db; Server=pc\mehmet; username=sa; PWD=123″ providerName=”System.Data.SqlClient”/>
</connectionStrings>

Oluşturdğumuz classların içini aşağıdaki gibi dolduruyoruz.

StokEntites classımızda ise daha öncede söylediğimiz gibi  database create, table create işlemlerinin yanı sıra tableların içeriklerinide (nvarchar, desimal) belirliyoruz.

Burada önemli olan husus ise StokEntites sınıfımıza DbContext sınıfından miras alacağımız için using System.Data.Entity kütüphanesini eklememiz, bunun içinde Solution’a sağ tıklayıp Manage NuGet Packages’den Online bölümünden EntityFramework paketini indirmek.
Bu yükleme işleminden sonra kütüphane otomatik olarak gelecektir.

ve bu kadar işlemin ardından yapmamız gereken tek şey WFA loadına gelerek instance almak ve F5 tuşuna basarak projesi kaydettemek.
instance  aldıktan sonra sadece db oluştumu diye dataGridView ile ekrana başlıkların gelip gelmediğine bakacağım.

MS sql açarak görsel olarak görmek istersek;

İşte bu kadar yararlı olması dileğiyle.

ADO.NET Entity Framework Giriş

Merhaba Arkadaşlar, Bugünkü konumuzda Microsoft’un .Net Framework 3.5 ile gelen Entity Framework adlı teknolojisinden örnek projemizde nasıl uygulayacağımızdan bahsetmeye çalışacağım. İlk olarak projemizde Entity Framework bağlantısı nasıl gerçekleştiririz Visual Studio 2013 ile ilk önce Blank solution açıyor ve örnek olarak bir WFA projesi seçiyoruz.

Ardından yeni bir folder açıyor ve içerisine Ado.net entity data modeli oluşturarak database ile projemizi entegre etme aşamasına geliyoruz.

Ekleme işlemi tamamlandıktan sonra karşımıza çıkan sihirbazda ister boş veri modeliyle çalışabilir, istersek de veritabanı bağlantısı kurarak bu veritabanı üzerinden model oluşturabiliriz. Uygulamamızı veritabanı ile entegre edeceğiz. Bu yüzden “Generate from database” seçeneğini seçiyoruz.

Şimdi bizden bir veritabanı bağlantısı kurmamızı istiyor. Hazırda bağlantımız varsa onu kullanabileceğimiz gibi yeni bir bağlantı oluşturarak da ilerleyebiliriz. Ben yeni bir bağlantı oluşturacağım.

Bağlantı bilgileri seçildikten sonra veritabanı yapımız tablo view ve stored procedure’ler ile karşımıza gelmektedir. Projemize entegre etmek istediğimiz nesneleri seçip sihirbazımızı tamamlıyoruz.

Sihirbaz tamamlandıktan sonra aşağıda göründüğü gibi her Northwind database oluştu. Bu andan itibaren Northwind isimli database e ait tüm tablolara ilgili tüm işlemleri LINQ’da yaptığımız gibi Object – Property şeklinde kolaylıkla gerçekleştirebiliyoruz.