ASP.NET 2.0’da Çok Katmanlı Uygulama Yapıları - 2
Geçen yazımda ASP.NET 2.0’da çok katmanlı yapıları incelemeye başlamıştık.
Bir uygulama geliştirmeye başlamış ve ilk kısmını bitirmiştik.
Hatırlayacağınız gibi bu uygulamada iki temel kod yapısı ve bir de sunumu yapan bir aspx sayfası oluşturmuştuk.
Kod yapılarından ilki veritabanını sorgulayan genel veya jenerik yapıdaki Veritabani_Sorgu.vb idi.
Buradaki kodlar veritabanındaki temel sorgulamaları yapıp sonuçları döndürüyordu. Yapısı tamamen jenerikti ve özel bir fonksiyon içermiyordu.
Diğer kod yapımız, uygulamanın sunum yapan aspx sayfası ile arka planda işlem yapan veritabanı gibi yapılarla bağlantıyı kuran ve aracı görevini üstlenen, esas işi yapan iş katmanıydı.
Onun ismi de BOL_sinifi.vb di.
Bu katman özel ifadeler içererek sunum katmanının motorunu oluşturur.
Geçen yazımda bu iki dosyanın içyapısını detaylı incelemiştik.
Bu yazımın ana konusu sunumu nasıl oluşturacağımızdır.
İşi yapan kodlar elimizde mevcut şimdi sıra bunları sunum katmanı ile birlikte çalıştırmaya geldi.
Aslında bu işin en kolay kısmıdır.
Çünkü ASP.NET 2.0’da bu entegrasyonu sağlayan hazır yapılar vardır.
Öncelikle Sayfamızın kodlarını görelim daha sonra üzerinde konuşacağız
Burada dikkatinizi çekecek ve size farklı gelecek en önemli bildirim <asp:ObjectDataSource dir.
Veri kontrolleri ile çalışmışsınızdır.
Onlar Access veritabanı, SQL server, XML gibi tanımlı birimlerle sayfa arasında köprü kurarlar.
asp:ObjectDataSource Bildirimi de bu tip bir kontroldür.
Bu kontrol bir program nesnesine aracılık eder.
Bizim örneğimizde bu BOL_sinifi.vb deki nesnedir.
Buradaki ifadeleri aspx sayfamızda kullanmamıza aracılık eder.
Böylece tek bir satır kod yazmadan, daha önce oluşturduğumuz iş katmanını aspx sayfamıza bağlayabiliriz.
Tek bir bildirimle bütün olay tanımlanır.
Bildirimi editörünüzde görsel olarak da yapabilirsiniz:
Tekrar kodlarımıza dönecek olursak
<asp:ObjectDataSource ID="ObjectDataSource1" runat="server" DataObjectTypeName="BOL_sinifi"
DeleteMethod="Delete" InsertMethod="Insert" SelectMethod="SelectSingle" TypeName="BOL_sinifi"
UpdateMethod="Update">
İfadesinde bildirimlerin nasıl yapıldığına dikkat edin.
Öncelikli olarak hangi nesne ile çalışacağımızı
DataObjectTypeName="BOL_sinifi"
İle belirliyoruz.
Daha sonra hangi metotları kullandığımızı bildiriyoruz.
Buradaki metot bildirimleri BOL sınıfında oluşturduğumuz fonksiyon (veya metot) isimleri olmalı.
Nesnemizdeki hangi işlemi yapacağımızı bu metot bildirimleri sayesinde sayfamıza aktarıyoruz.
Daha sonra parametre tanımları geliyor ki bu diğer kontrollerde yaptığımız parametre tanımlarından farklı değildir.
Bu kod özelinde “DetailsView” kontrolünün iş katmanının parametre değerlerini, “DropDown” kontrolümüzden seçtiğimiz birimler belirliyor.
DropDown kontrolümüze de bilgiler aynen yukarıdaki yapıyla yine bir başka veri kontrolünden geliyor.
Sonuçta Listeden seçtiğimiz elemanlara göre DetailsView verilerini dilediğimiz gibi yönetebiliyoruz.
Çift taraflı bir akış söz konusu.
Örneğimizin işleyişini ve görünümünü hatırlayacak olursak:
Bu uygulama çok katmanlı yazılım mimarisinin küçük bir örneği; fakat oldukça açıklayıcı ve sade.
Profesyonel uygulamalarda ve modern yazılım mimarisinde çok katmanlı modellere geçiş kaçınılmazdır.
Çünkü artık yazılımlar oldukça karmaşıklaşmıştır ve bir takım halinde çalışmayı zorunlu kılmaktadır. Bunun yanında tabii ki bir de ölçekleme sorunu var. Her hangi bir yazılımın her hangi bir bölümünü diğer bölümlerini bozmadan geliştirebilmek önemlidir.
Bu açıdan çok katmanlı modeller kaçınılmazdır.