folder Tahribat.com Forumları
linefolder C#, Asp.Net, .Net Core
linefolder Asp.Net Çok Katmanlı Mimari [Döküman TBT]



Asp.Net Çok Katmanlı Mimari [Döküman TBT]

  1. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek

     3 Katmanlı Mimarı ve Faydaları

     

    Herkesemerhaba TR_ip  & Recep Selli olarak bu makalemizde siz TBT üyelerine elimizden geldiğince  üç katmanlı mimari yapısı nedir faydaları nelerdir bunları inceliyor olacağız. Üç katmanlı mimarı projelerimiz içerisinde kullandığımız veri tabanı bağlantısı, veri tabanı işlemleri (insert, update, delete, select) ve kullanıcı ara yüzünü birbirinden ayıran bir yapıyı bizlere sunar. Bu yapıları Net de classlar içerisinde rahatlıkla hazırlayabilir ve diğer sayfalarda bu classlarımızı türeterek classımız içindeki public değişkenlere metotlara ve özelliklere ulaşabiliriz.Üç katmanlı mimarı yapısında benim dikkatimi çeken ilk şey amatörce hazırlığımız projeler havada uçuşan veri tabanı bağlantı ve işlem nesnelerinin nesneleri yerine classımız kullanarak bu işlemleri bir tek yerden merkez noktadan yapmamızı sağlaması oldu.Aynı zamanda bunun bize kazandırdığı zamanın yanı sıra ileride veritabanı değişikliğinde veya aldığımız herhangi bir hatada onlarca satır kod yerine belirli satırlar içinde geziniyor olmamız büyük avantaj.Diğer avantajlarından biri ise hazırladığımız bu classları ileride geliştireceğimiz projeler içerisinde ufak değişiklikler yaparak kullanabilmemiz. Bir yazılım geliştirme şirketinde çalışıyor ve grup olarak proje hazırlıyorsanız anlaşılabilirlik ve geliştirilebilirlik açısından da son derece önemlidir.

     

    Şimdi dilerseniz kod kısmına bakalım birazda.

     

    Öncelikle projemiz içerisinde bir class oluşturuyoruz. Ben bu classıma connection adını verdim. Classımız içerisine gerekli namespaceleri ekliyoruz.

     

    using System.Data.OleDb;        //  Access veri tabanı işlemleri için gerekli namespace.

    using System.Web.Configuration; // Web.config dosyası içerisinden connectionstring’imizi alabilmemiz için gerekli namespace.

     

    Daha sonra classımızın yapısı metotu üzerinde OleDbConnection nesnemizi tanımlıyoruz.

     

    OleDbConnection baglanti = newOleDbConnection();

     

    Yapıcı metotumuz içerisinde web.config dosyamız içerisinde yer alan connectionstringimize ulaşalım şimdi.

         

    public connection()

       {

    String con_string = WebConfigurationManager.ConnectionStrings["connection"].ConnectionString;

      baglanti = newOleDbConnection(con_string);

    }

     

    Hemen altında bağlantımızı açmamıza yarayacak olan metodu yazıyoruz.

     

        publicvoid connectionopen()

        {

            try

            {

    if (baglanti.State != ConnectionState.Open)

    // Bağlantı durumunu kontrol ediyoruz.Açık değilse Açıyoruz.

                    baglanti.Open();

            }

            catch(Exception ee)

            {

            }

        }

     

    Aynı şekilde bağlantımızı kapamaya yarayacak olan metodu yazıyoruz.

     

        publicvoid connectionclose()

        {

            try

            {

                if (baglanti.State != ConnectionState.Closed)

    // Bağlantı durumunu kontrol ediyoruz.Kapalı değilse kapıyoruz.

                    baglanti.Close();

            }

            catch (Exception ee)

            {

            }

        }

     

     

     

    OleDbDataReader döndüren bir metod yazıyorum.

     

        publicOleDbDataReader ExecReader(String sorgu)

        {

            OleDbCommand komut = newOleDbCommand(sorgu, baglanti);

            connectionopen();

            OleDbDataReader dr = komut.ExecuteReader();

            return dr;

            connectionclose();

        }

    Aynı Şekilde bana geriye OleDbDataAdapter , OleDbCommand ve döndüren iki metot daha yazıyorum.Sırası ile

     

        publicOleDbDataAdapter ExecAdapter(String da)

        {

            OleDbDataAdapter adapter = newOleDbDataAdapter(da, baglanti);

            return adapter;

        }

     

          // OleDbDataAdapter döndüren metodum.

     

              publicOleDbCommand ExecCommand(String cmd)

        {

            OleDbCommand komut = newOleDbCommand(cmd, baglanti);

            return komut;

        }

          OleDbCommanddöndüren metodum

     

     

     

     

    Şimdi gelelim bu yapımıza ait bir sorgu classı oluşturmaya oluşturacağımız classda sadece SQL sorgularımız yer alıcak.Ben bu classımın adına VideoizleDB.cs adını verdim.

     

    Classımızı açtık sonra yine gerekli namespace eklemelerini yapıyoruz.

     

    using System.Data.OleDb;

     

    Sıra geldi connection adındaki veri tabanı ile bağlantı sağlayan classımızı türetmeye classımız içerisinde yapıcı metotumuzun hemen üstünde öncelikle bunu bir sağlayalım.

     

      connection baglanti = newconnection();

    // Veri tabanı ile bağlantı sağlayan classımızı türettik.

     

    Şimdide bize DataTable döndüren bir metod lazım böylece veri tabanından gerekli sorguyu yaptıktan sonra DataTable ın içini doldurup istediğimiz yerde kullanabiliriz.

     

        publicDataTable Videolarim(int Videoid)

        {

          String Sorgu= "Select * from videolarim where Videoid=" + Videoid

    OleDbDataAdapter da = baglanti.ExecAdapter(Sorgu);

          DataTable dt = newDataTable();

          da.Fill(dt);

          return dt;

        }

     

     

     

    Burada dikkat ederseniz. OleDbDataAdapter ımızı türetmiyoruz sadece connection classımız içerisinde yazdığımız ExecAdapter adındaki metot’a yönlendiriyoruz.Böylece connection classımız içerisinde veri tabanına bağlanıp gerekli sorgulamayı yaptıktan sonra bize içi dolu bir  OleDbDataAdapter gelicek.Gelen Adaptor nesnesinin içeriğini DataTable nesnemize atmak ve bunu istediğimiz sayfada kullanmak kalıyor.

     

    Şimdi VideoizleDB classımızın diğer metotlarını yazmaya.İsterseniz birde kaydettirme işlemini burda burdan yapalım.Ben bunun için YorumKayit adında geriye void (Hiçbirşey) döndürmeyen bir metot yazacam.

     

        publicvoid YorumKayit(String yorumadsoyad, String yorumemail, String yorumsite, String yorumicerik, String yorumquery, String yorumip)

        {

            OleDbCommand komut = baglanti.ExecCommand("Insert into videoyorum(yorumadsoyad,yorumemail,yorumsite,yorumicerik,yorumquery,yorumtarih,yorumip,onay) values('" + yorumadsoyad + "' , '" + yorumemail + "','" + yorumsite + "' ,'" + yorumicerik + "','" + yorumquery + "','" + DateTime.Now + "','" + yorumip + "','" + 0 + "')");

            baglanti.connectionopen();

            komut.ExecuteNonQuery();

            baglanti.connectionclose();

        }

     

          // Dikkat ederseniz burda da OleDbCommand nesnemizi türetmeden connection classımız içerisinden kullandık.

     

    Şimdi isterseniz bunları Videoizle.aspx.cs tarafında kullanalım.Gene her zaman ki gibi gerekli namespacelerimizi ekliyoruz.

     

    using System.Data.OleDb;

     

    Sırada tahmin ettiğiniz gibi connection ve VideoizleDB classımızı türetmeyi yapacaz. J

     

        connection baglanti = newconnection();

        VideoizleDB videolar = newVideoVideoizleDB();

     

    Öncelikle Videolarim adlı metot ile videoları Videoidlerine göre sayfamızda gösterelim.

     

        void Videolar()

        {

            int query = Convert.ToInt32(Request.QueryString["videoid"]);

            Dtvideolar.DataSource = videolar.Videolarim(query).DefaultView;

            Dtvideolar.DataBind();

        }

          // DataList (Dtvideolar) ile verilerimizi bağlıyoruz ve sitemizde gösteriyoruz.

          Şimdide yapılan yorumları kaydettirelim.

     

        protectedvoid Button1_Click(object sender, EventArgs e)

        {

                int query = Convert.ToInt32(Request.QueryString["videoid"]);

                String text4 = TxtYorum.Text;

                String Temp;

                Temp = text4.ToLower();

                Temp = Temp.Replace("'", "’");

     

                videolar.YorumKayit(TextBox1.Text, TextBox2.Text, TextBox3.Text, Temp,                  query,Request.ServerVariables["REMOTE_ADDR"].ToString()); }       

     

     

     

    Butonumuza tıkladığında videolar adında VideoizleDB den türetilmiş olan nesnemiz devreye girecek ve akışı o yöne doğru itecektir. VideoizleDB ise akış baglanti.connectionopen(); satırına geldiğinde öncelikle bağlantımızın durumuna bakılacak kapalı ise açılacak bu şekilde bağlantı durumunu kontrol etmemizin sebebi projemiz performans artışı içindir.Akış OleDbCommand komut = baglanti.ExecCommand satırına gelince burada tekrar connection classımız devreye girecek ve sorgu ile veritabanı bağlantısını sağlayıp kayıt işlemi için tekrar bizi VideoizleDB classına yönlendirecektir.Burada kayıt işlemi gerçekleştikten sonra bağlantının kapanması için tekrar connection classına geçiş yapacak bağlantımızı kapayıp Clik eventinin işi bitecektir.

     

    Bir sonraki makalemde tekrar görüşmek üzere…

     

    TR_ip  &  Recep SELLİ

     

    http://www.tahribat.com

     

     

     

     

     

     

     

     

     

     

     


    Kontakt : TR_ip@tahribat.com
  2. KısayolKısayol reportŞikayet pmÖzel Mesaj
    yafa13
    yafa13's avatar
    Kayıt Tarihi: 01/Kasım/2007
    Erkek
    Güzel faydalı bişeye benziyoda kardeş gece 2de açtığım gidiyo gibi konu bide heryere recep selli -tbt yazmışsın )
  3. KısayolKısayol reportŞikayet pmÖzel Mesaj
    ~$
    ComputerWolf
    ComputerWolf's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 26/Mart/2003
    Erkek
    Sagolasin haci.

    Hep denedin. Hep yenildin. Olsun yine dene , yine yenil ama daha iyi yenil !
  4. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TR_ip
    TR_ip's avatar
    Kayıt Tarihi: 31/Temmuz/2005
    Erkek
    yafa13 bunu yazdı:
    -----------------------------
    Güzel faydalı bişeye benziyoda kardeş gece 2de açtığım gidiyo gibi konu bide heryere recep selli -tbt yazmışsın )
    -----------------------------
    Evvet hoca.. kendimizi yazdım çünkü baya bi emek verdik uğrastik döküman için güzel birşeyler çıkması için ortaya ve tbt için olsun sadece dedik o yüzden öyle yazdım ama kodlar ı engelliyecek bi durum sergilemiyoru yazılar sanırım... Eyw ComputerWolf ssende sağolasın..

    Kontakt : TR_ip@tahribat.com
  5. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KopukKopca
    KopukKopca's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek
    Elimize sağlık :P inş. zaman buldukca daha güzel makaleler yazmaya çalışcaz.

    2 x pi x re x pi x pi x mi x 7
  6. KısayolKısayol reportŞikayet pmÖzel Mesaj
    TxT
    TxT's avatar
    Kayıt Tarihi: 13/Eylül/2007
    Erkek

    Ellerine sağlık hoca .. Eğer zaman bulabilirsen bunları videolu anlatım yapabilirsen özelliklede veri tabanı bağlantılı form ilişkileri üzere .. Senden ei si yok valla  :)

    Veri tabanı muhabbetini aştıktan sonra gerisi yapılır bi şekilde bende ufaktan başlıycm inş .

  7. KısayolKısayol reportŞikayet pmÖzel Mesaj
    nurk
    nurk's avatar
    Üstün Hizmet Madalyası
    Kayıt Tarihi: 15/Eylül/2006
    Erkek
    TxT bunu yazdı:
    -----------------------------

    Ellerine sağlık hoca .. Eğer zaman bulabilirsen bunları videolu anlatım yapabilirsen özelliklede veri tabanı bağlantılı form ilişkileri üzere .. Senden ei si yok valla  :)

    Veri tabanı muhabbetini aştıktan sonra gerisi yapılır bi şekilde bende ufaktan başlıycm inş .

    -----------------------------

    en basiti veritabanı bence asp.netde..

    ben bi zorluk göremedim çok da basit hatta döküman bile yaptım.. önce kullanımı ile ilgili tüm data bölümünün dökümanını yapacam ama biraz zamana ihtiyacım var :D

    bu arada hocam eline sağlık güzel olmuş..


    [22817//kaanabak]
  8. KısayolKısayol reportŞikayet pmÖzel Mesaj
    KopukKopca
    KopukKopca's avatar
    Kayıt Tarihi: 14/Kasım/2007
    Erkek
    http://www.recepselli.com/video.aspx burada videolar mevcut direk izleyebilirsin ;)

    2 x pi x re x pi x pi x mi x 7
  9. KısayolKısayol reportŞikayet pmÖzel Mesaj
    gokhan_ertastr
    gokhan_ertastr's avatar
    Kayıt Tarihi: 01/Ağustos/2009
    Erkek
    teşekkürler recep çok yararlı bşr döküman

    Türk çocuğu ecdadını tanıdıkça daha büyük işler yapmak için kendinde kuvvet bulacaktır. M.K. Atatürk
Toplam Hit: 5009 Toplam Mesaj: 9