Ado.Net C# MsSQL Tasarım Kalıpları UML Veritabanı Windows Form

ADO.NET ile 3 Katmanlı Mimari

Diğer karmaşık yapılar gibi, yazılımın da sağlam bir temel üzerine kurulması gerekir. Temel senaryoları dikkate almamanız, genel sorunlar için tasarım yapmamamız veya kilit kararların uzun vadeli sonuçlarını takdir etmemesi başvurunuzu risk altına sokabilir. Modern araçlar ve platformlar, uygulama oluşturma görevi basitleştirmeye yardımcı olur, ancak uygulamanızı kendi senaryolarınıza ve gereksinimlerinize göre dikkatlice tasarlama gereksinimini değiştirmez. Kötü mimarinin maruz kaldığı riskler kararsız, mevcut veya gelecekteki iş gereksinimlerini destekleyemeyen veya bir üretim ortamında dağıtmak veya yönetmek zor olan yazılımları içerir.

Sistemler kullanıcı, sistem (BT altyapısı) ve iş hedefleri dikkate alınarak tasarlanmalıdır. Bu alanların her biri için, önemli senaryoların ana hatlarını çizmeli ve önemli nitelik niteliklerini (örneğin, güvenilirlik veya ölçeklenebilirlik) ve memnuniyetsizlik ve memnuniyetsizliğin kilit alanlarını tanımlamalısınız. Mümkün olduğunda, bu alanların her birinde başarıyı ölçen metrikleri geliştirin ve düşünün.

Veri merkezli uygulamalarda veriye nasıl erişeleceği, üzerinde ne gibi uygulamaların yapılacağı,  ve kullanıcı tarafına ne şekilde sunum yapılacağı bir programcı için en önemli sorunlardır. Üç katman mimarisi de tam bu noktada programcılara yardımcı olmaktadır.

N Katmanlı / 3 Katmanlı Mimari Stil

N katmanlı ve 3 katmanlı, işlevselliğin katmanlı stille aynı şekilde kesimlere ayrılmasını açıklayan mimari dağıtım stilleri olmakla birlikte, her bir kesim fiziksel olarak ayrı bir bilgisayarda bulunabilen bir katmandır. Bileşene yönelik yaklaşımla geliştirilmiştir.

N katmanlı uygulama mimarisi, gelişmiş ölçeklenebilirlik, kullanılabilirlik, yönetilebilirlik ve kaynak kullanımı sağlayan uygulamaların işlevsel ayrışması, servis bileşenleri ve bunların dağıtımı ile karakterize edilir. Her katman hemen hemen üstündeki ve altındaki katmanlar hariç, diğer tüm katmanlardan tamamen bağımsızdır. Ninci katman yalnızca n + 1 katmanından gelen bir isteği nasıl ele alacağını, bu talebi n-linci katmanı (varsa) nasıl yönlendirileceğini ve talebin sonuçlarını nasıl ele alacağını bilmelidir. Katmanlar arasındaki iletişim, daha iyi ölçeklenebilirliği desteklemek için genellikle eşzamansızdır.

N katmanlı mimariler genellikle her biri ayrı bir fiziksel sunucuda bulunan en az üç ayrı mantıksal parçaya sahiptir. Her bölüm belirli işlevlerden sorumludur. Katmanlı bir tasarım yaklaşımı kullanırken, birden fazla hizmet veya uygulama katmanın maruz kaldığı işlevselliğe bağlı olduğu durumlarda, bir katman bir katman üzerinde konuşlandırılır.

N katmanlı / 3 katmanlı mimari tarzın bir örneği, güvenliğin önemli olduğu tipik bir finansal Web uygulaması örnek verilebilir. İş katmanı, güvenlik duvarı arkasında konuşlandırılmalıdır. Sunum katmanını ise ağ üzerinde dağıtımı yapılmış web sayfalarından ibaret olabilir. Diğer bir örnek, sunum katmanının istemci makinelerde dağıtıldığı ve iş katmanı ve veri erişim katmanı bir veya daha fazla sunucu katmanında konuşlandırıldığı tipik zengin istemci bağlı bir uygulama düşünülebilir.

N katmanlı / 3 katmanlı mimari tarzın başlıca faydaları şunlardır:

Bakım kolaylığı. Her katman diğer katmanlardan bağımsız olduğu için, güncellemeler veya değişiklikler, uygulamayı bir bütün olarak etkilemeden gerçekleştirilebilir.

Ölçeklenebilirlik. Katmanlar katmanların konuşlandırılmasına bağlı olduğundan, bir uygulamanın ölçeklendirilmesi makul derecede kontrol edilebilir bir hal alır.

Esneklik. Her katman bağımsız olarak yönetilebilir veya ölçeklenebilir olduğundan esneklik artar.

Kullanılabilirlik. Uygulamalar, kullanılabilirliği artıran kolay ölçeklenebilir bileşenler kullanan sistemlerin etkinliğini de aynı ölçüde arttırır.

Uygulamadaki katmanların işlem gereksinimleri farklılık gösteriyorsa, bir katmandaki işlemenin diğer katmandaki işlemleri yavaşlatmak için yeterli kaynakları alabilmesi için N katmanlı veya 3 katmanlı mimari tarzı göz önünde bulundurun veya katmanların güvenlik gereksinimlerini düşünün. Örneğin sunum katmanı hassas verileri saklamamalı, iş ve veri katmanlarında saklanmalıdır.

Mantıksal Katmanlı Tasarım

Tasarladığınız uygulamanın türüne bakılmaksızın veya kullanıcı arabirimine sahip olup olmadığı veya yalnızca hizmetleri (bir uygulamanın hizmetler katmanıyla karıştırılmamasını gerektiren bir hizmet uygulaması) olup olmadığına bakmaksızın, tasarımı mantıksal gruplar halinde ayrıştırabilirsiniz. Yazılım bileşenleri. Bu mantıksal gruplara katmanlar denir. Katmanlar, bileşenler tarafından gerçekleştirilen farklı görev türlerini ayırt etmeye yardımcı olur, böylece bileşenlerin tekrar kullanılabilirliğini destekleyen bir tasarım yaratmayı kolaylaştırır. Her mantıksal katman, alt katmanlara gruplandırılmış ve alt katmanın her biri belirli bir görev türünü içeren ayrı ayrı bileşen türleri içerir.

Çözümlerin çoğunda bulunan genel bileşen türlerini tanımlayarak, bir uygulamanın veya hizmetin anlamlı bir haritasını oluşturabilir ve daha sonra bu haritayı tasarımınız için bir plan olarak kullanabilirsiniz. Farklı bir rol ve işlevselliklere sahip ayrı bir katmana bölünen bir uygulamanın, kodun sürdürülebilirliğini en üst düzeye çıkarmanıza, uygulamanın farklı şekillerde dağıtıldığında uygulamanın çalışma şeklini en iyi duruma getirmenize ve belirli teknoloji veya tasarım kararlarının alınması gereken yerler arasında açık bir çizgi oluşturmanıza yardımcı olur.

Sunum, İş ve Veri Katmanları

En yüksek ve en soyut seviyede, herhangi bir sistemin mantıksal mimari görünümü, katmanlar halinde gruplandırılan bir dizi işbirliği bileşenleri olarak düşünülebilir. Katmanlı mimari 3 ayrı katmandan oluşmaktadır. Bunlar: Veri Katmanı (Data Layer), İş Katmanı (Business Process Layer) ve Sunum Katmanı (Presentation Layer) olarak sıralanabilir.

sekil

Sunum katmanı

Bu, uygulamanın en üst düzeyidir. Sunum katmanı, ürün göz atma, satın alma ve alışveriş sepeti içeriği gibi hizmetler ile ilgili bilgileri görüntüler. Tarayıcı / istemci katmanı ve ağdaki diğer tüm katmanlara sonuçları koyduğu diğer katmanlarla iletişim kurar. (Basitçe yazılımın, kullanıcıların doğrudan bir web sayfası veya bir işletim sistemi GUI gibi erişebileceği bir katmandır)

Uygulama katmanı (iş mantığı, mantıksal katman veya orta katman)

Mantıksal katman, sunum katmanından çıkarılır ve kendi katmanı olarak, detaylı bir işlem gerçekleştirerek bir uygulamanın işlevselliğini kontrol eder. Bu tabaka, sistemin çekirdek işlevselliğini uygular ve ilgili işletme mantığını kapsar. Genellikle bazıları diğer arayanların kullanabileceği servis arayüzlerini ortaya çıkarabilecek bileşenlerden oluşur.

Veri katmanı

Veri katmanı, veri yönetim mekanizmalarını (veritabanı sunucuları, dosya paylaşımları, vb.) kapsayan ve verileri açığa vuran veri erişim katmanını içerir. Veri erişim katmanı, veri depolama mekanizmalarına bağımlılıklar göstermeden veya oluşturmadan depolanan verilerin yönetim yöntemlerini ortaya koyan uygulama katmanı için bir Uygulama Programlama Arabirimi (API) sağlamalıdır. Depolama mekanizmalarına bağımlılıklardan kaçınma, uygulama katmanı istemcileri değişikliğin etkilenmesine veya farkında olmadan değişiklikleri veya güncellemeleri sağlamalıdır.Sonuçta, iyileştirilebilir ölçeklenebilirlik ve sürdürülebilirlik karşılığında, veri merkezli uygulamalar için oldukça iyi sonuçlar alabileceğiniz bir mimari katmanıdır.

Aşağıda bu yapının daha net anlaşılması için örnek bir uygulama verilmiştir. Kullanıcılar için günlüklerini tutabilecek bir uygulama planını 3 katmanlı mimari ile gerçekleştireceğiz.
Uygulamada kullanıcılar üye olabilecek, kullanıcı adı ve şifre ile günlük listelerine ulaşabilecektir. Günlük listesinden seçim yaptığında detayları görebilecektir. Daha önceden kayıtlı bir üye tekrar üye kaydı yapamayacaktır.

Öncelikle veritabanı planımızı yapalım. Söz konusu uygulamamız için kullanıcılar (users) ve günlüklerin tutulacağı (daybooks) tablolarını SQL Server üzerinde tasarlayalım.

veritabani

Tabloları oluşturmak ve sorgulamak için gereken stored procedure ‘leri sunucu üzerinde oluşturmak için aşağıdaki SQL deyimlerinden faydalanabilirsiniz.

SQL Server tarafında tablo ve kayıtlı sorgularımızı oluşturduktan sonra Visual Studio üzerinde yeni bir “Windows Form Application” oluşturarak işe başlıyoruz.

vs2015

wform

Açılan Widows Form Uygulaması projemizin aynı zamanda sunum katmanı olacaktır. Bunun dışında kalan diğer katmanları oluşturmak için “Solution Explorer” üzerinde Add->New Project üzerinden “ClassLibrary” ekleyiniz. Data katmanı için “DataLibrary” iş katmanı için “BusinessLibrary” ve model sınıflarımızın içinde yeralacağı “CommonLibrary” için işlemi tekrar ediniz.

solution

SQLServer ile olan bağlantı metnini App.config dosyası içine yazacağız. Dosyayı açıp <connectionStrings>..</connectionStrings> etiketlerini ekleyerek aşağıdaki şekilde düzenleyiniz.

App.Config

Söz konusu katmanların sınıflarını inşa edelim. İlk olarak veri katmanı için “DataLibrary” üzerinde “Add->New Class” üzerinden ” Database” sınıfını aşağıdaki gibi oluşturunuz.

Database.cs

Sırada “CommonLibrary” katmanı düzenleyelim.  Katmanın “DataLibrary” ile iletişime geçebilmesi için “DataLibrary”referansın alınması gereklidir. Solution Explorer üzerinde “CommonLibrary” katmanına ait “References” kısmında “Add Reference” komutu ile “DataLibrary” referansını dahil ediniz.

reference

Common katmanı üzerinde tablolarda tutulan verileri ifade edecek olan varlık sınıflarımızı oluşturalım. Model sınıflarımızı oluştururken dikkat edilmesi gereken husus sınıfa ait özelliklerin tablo alanları ile aynı veri tiplerinde olmalıdır.

User sınıfı veritabınında bulunan Users tablosundaki her bir kaydı temsil edecektir.

User.cs

Daybook sınıfı veritabanında bulunan Daybooks tablosundaki her bir satırı temsil edecektir.

Daybook.cs

Veri katmanı üzerinden bağlantıya geçerek kayıtlı sorgulara parametrelerini yollayıp dönen değerleri nesnelere yerleştiren yöntemleri barındıran sınıfları oluşturalım. Her tablo için gereksinimlerimizi karşılayacak metodlar ile yazılan sınıflarımızı aşağıda örnekte verildiği gibi düzenleyiniz.

DayBookProvider.cs

 

UserProvider.cs

İş katmanı (Business Library) için hazırlayacağımız sınıflar “CommonLibrary” de bulunan provider sınıflarımızdan elde ettiği nesneleri, sunum katmanına göndermek için kullanılacak metodları yapısında barındıracaktır. Bu noktada uygulama için iş mantığı gereksinimlerini rahatlıkla ele alabilirsiniz.

UserContext.cs

DayBooksContext.cs

Sunum katmanı için iki ayrı form oluşturun. İlki uygulamanın ana formu olacak ve günlük sayfalarını tarihlere göre sıralayarak ve listeden seçilen günlüğün okunmasını sağlayacaktır. Ekran tasarımını aşağıda gösterildiği gibi oluşturabilirsiniz veya kendinize özgü yeni bir tasarımla yola devam edebilirsiniz.

tasarim

Form1.cs

Uygulama anaformu yüklenirken kullanıcı girişini sağlayan “LoginForm” dialog penceresi olarak ekrana gelecektir. Ekran tasarımını yeni bir Windows Form penceresi ekleyerek aşağıdaki gibi bir tasarımla oluşturunuz.

login

LoginForm.cs

Uygulamanın kaynak kodunu buradan indirebilirsiniz. daybooksapps

Yorum

Yorum Yap