none
n katmanlı örnek basit bir proje RRS feed

  • Soru

  • Arkadaşlar projelerimi artık katmanlı bir yapıda geliştirmek istiyorum. n katmanlı bir proje geliştirirken ilk olarak nasıl düşünmemiz ve nelere dikkat etmemiz gerekiyor.

    data katmanı, iş katmanı, sunum katmanı ve servis katmanı olan örnek bir uygulama varmı elinizde. genelde duyuyorum. mimari bir yapı oluşturup bu mimari yapıyı gerekirse masaüstü uygulamalarda gerekirse web uygulamalarında sorunsuzca kullanılabiliyorlarmış.

    bende bu şekilde ado.net ile mimari yapı oluşturmak istiyorum. databasedeki tablolarımın classlara döküldüğü. servise katmanı ile yeri geldiğinde mobil entegrasoynu yapabileceğim. temel manada bir n tier yapı oluşturmak isityorum. bu konuda bana yardımcı olurmusunuz.

    9 Eylül 2013 Pazartesi 13:12

Yanıtlar

Tüm Yanıtlar

  • cetin bey aradığım normal asp.net üzerinden verilmiş olan yaklaşımlar. mvc zaten bize yapısı gereği katmanlı bir çalışma sunuyor. lakin asp.net ile kendim bu katman yapılarını nasıl oluşturabilirim.

    konuda da belirtitğim gibi mimari yapımı öyle bir yapmalıyım ki sonrasında web, mobil veya desktop tarafına sorunsuz bir şekilde uyarlayabilmeliyim.

    9 Eylül 2013 Pazartesi 14:59
  • MVC dedigin gibi katmanli calisma sunuyor. Yine de sen bilirsin. Kolay gelsin. 

    9 Eylül 2013 Pazartesi 15:33
  • ASP.Net projenizin olduğu solution'a birde ClassLibrary projesi ekleyin içine DataSet koyun, referans edein oldu size PL ve DAL

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    10 Eylül 2013 Salı 06:16
    Moderatör
  • Ben uygulamalarımda şu şekilde bir yol izliyorum genelde.

    Temelde 3 katmanım var ,

    DataLayer, BusinessLayer, Presentetion Layer

    Birde ileriyi düşünerek her platforma hizmet verebilmem için yine temel olarak 2 katman daha ilave ediyorum.

    SurrogateLayer, ServiceLayer

    Şimdi elimde oldu 5 katman bunlar ne işe yarıyor.

    1- Data Layer => Database işlemlerimin tümünün yapıldığı yer. Yani bağlantı açılır, sorgu çalıştırılır, bağlantı kapatılır. Lakin ben bu katmanımda Entity Framework kullandığım için ek bir şey yapmama gerek kalmıyor. Entity zaten yapıyor herşeyi.

    2- Business Layer => İş katmanım. Yani mesela veritabanıma bir kayıt ekleyeceğim. Kullanıcıdan eklenecek bilgileri aldım, bu bilgiler üzerinde yapılacak her türlü işlemi burada halledip buradan data katmanına gönderiyorum ve kayıt yapılmış oluyor.

    3- Presentation Layer => Burası tamamen kullanıcı ile iletişimde olan katmanım. Web,Windows,WPF vs. gibi olabilir. Burası sadece kullanıcıdan bilgi alır business layer a aktarır yada business layerdan gelen veriyi kullanıcıya gösterir.

    Şimdi temel olarak bu şekilde çalışırız. Ama her platforma hizmet vereceğimizi düşünürsek burada servis ve surrogate katmanı devreye giriyor.

    1-Surrogate (Vekil) Layer => Bu katmanı kullanmak zorunda değiliz aslında ama şöyleki bir tablonuz var diyelim ismi stoklar olsun. Bu tabloda da Id, StokKodu, StokAdi, Birimi, Fiyati, KayitTarihi, KaydedenKullanici, GuncellemeTarihi, GuncelleyenKullanici, Aktif... şeklinde fieldları olsun. Siz her kullanıcıya bu bilgileri vermek istemezsiniz. Kullanıcıya sadece Id,StokKodu,StokAdi bilgileri yeterli olacakken tabloyu olduğu gibi vermek mantıksız olur. İşte bu durumda Surrogate Tipler oluştururuz. Mesela aynı seneryo için SurrogateStok isminde bir class oluşturup içine sadece Id,StokKodu,StokAdi properties'lerini yazar ve servis aracılığı ile bunu kullanıcıya sunarız.

    2- ServiceLayer => Buda adından anlaşılacağı üzere servis katmanımızdır. Burada genelde WCF kullanılarak her platforma destek verilmiş olur. Yani şöyleki sen bu yapıyı kurdun ve bana dedin ki al kardeşim WPF uygulamanda şu servisi kullanarak istediklerini alabilirsin. Bu durumda benim projem senin veritabanınla falan ilgilisi yok sadece senin servisini kullanırım ben. Başka bir yandan x kullanıcısı asp.net yada mvc projesinden senin servisine bağlantı kurarak veri alışverişinde bulundu.. Bu iş böyle uzayıp gider yani anlayacağın. Birde bunun artısı sen datalayer'da olsun businesslayer da olsun ne değişikliği yaparsan yap biz senin servisini tanıdığımız için serviste değişiklik yapmadığın sürece bizim için sıkıntı yok sen içerde at koştur istersen :) İyi çalışmalar..

    Not: Değerli hocalarım hatam var ise yazımda yanlış bilgi vermek istemem düzeltirseniz sevinirim..


    Oğuz KURTCUOĞLU - Professional Software Developer

    10 Eylül 2013 Salı 07:08
  • evet oğuz bu şekilde olması gerekiyor. ama benim istediğim bu aralardaki geçişlerin nasıl yapıldığı. katmanlı bir yapı böyle olmalı onu biliyorum. örneğin data katmanında ado.net ile çalıştığımızı düşünelim.

    böyle bir yapıda veri tabanındaki tablolarımızı nasıl class lara döküp projemizde kullanabiliriz. ve dl,bl ve pl arasında çektiğimiz datayı nasıl taşıyabiliriz. veya pl den gireceğimiz bir değeri dl a kadar nasıl götürebiliriz.

    10 Eylül 2013 Salı 19:56
  • classlara dökmenize gerek yok, DataSet ya da Entity Data Model bunu sizin için yapıyor zaten.

    e-mail: onay[nokta]yalciner[at]hotmail[nokta]com
    MCC

    10 Eylül 2013 Salı 20:04
    Moderatör