Makale Özeti

.NETin en temel kavramlarından olan assemblylerin kullanımı

Makale

Assembly lerin Diğer Uygulamalar Tarafından Kullanılması

        Bileşen tabanlı çalışan uygulamalar ile uygulamanın kullandığı bileşenler; Client / Server modeli ile çalışırlar. Bu yapıda bileşenler server, uygulama ise client rolündedir. Bileşenler barındırdıkları bir takım fonksiyonlar sayesinde, birbirleri ile işlevsel olarak bağıntılı çeşitli alt işlemleri yapmak için tasarlanır. Uygulama ise bileşenlerin sunduğu fonksiyonlardan (hizmetlerden) yararlanarak çalışır.

        Bileşen ve uygulama birbirlerinden bağımsız ve ayrı proje ler olarak tasarlanmaktadır. Bileşen tasarlanıp bir class library olarak derlendikten sonra (uygulamanın bin dizininde .dll olarak derlenecektir) client uygulamaya referans ekleme yolu ile tanıtılır. Bu tanıtma işlemi; client uygulama içerisinden, dll in içerisindeki sınıfları ve o sınıflara ait üyeleri kullanılabilir hale getirmeye yarar. Bu sayede aynı proje ekibinde çalışan programcılar farklı işlemleri yapmak üzere eş zamanlı çalışabilirler.

Örnek Uygulama : Örneğimiz; biri server rolünü üstlenen bir "class library" projesi, diğeri client görevini üstlenen bir "standart windows application" projesinden oluşmakta. Örneğin amacı Siparis.mdb isimli veri tabanındaki kayıtlar üzerinde çeşitli işlemler gerçekleştirmek. Siparis.mdb nin içeriği;

Siparisler Tablosu

StokKodu Adet Tarih Bayi

SiparisID

Klima 3 1/2/2001 Bakırköy 1
Buzdolabı 5 3/2/2001 Kadıköy 2
TV55 12 4/3/2001 Çengelköy 3
Walkman 7 12/4/2001 Merter 4

      Veri tabanı işlemlerinden (veri tabanına bağlantı sağlamak, kayıt okumak gibi) PServer isimli ve class library türündeki projede implemente edilmiş CSiparisIslem sınıfı sorumlu. 

Server Uygulamanın Oluşturulması

        Türü , Class Library ismi  PServer olan yeni bir proje başlatın. Açılan modüldeki Class ismini CSiparisIslem olarak değiştirin ve aşağıda kodu yazın. 

Public Class CSiparisIslem

Private m_cnn As New OleDb.OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;Data _ Source=C:\VbNetPrj\Siparis.mdb")

Public Sub New()

m_cnn.Open()

End Sub

Public Function GetSiparisInfo(ByVal stok_kodu As String) As DataSet

Dim sCmd As String = "Select * from Siparisler where StokKodu = " & stok_kodu & ""

Dim oDs As New DataSet()

Dim oAdp As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sCmd, m_cnn)

oAdp.Fill(oDs)

Return (oDs)

End Function

Public Function Siparisleri_Listele() As DataSet

Dim sCmd As String = "Select * from Siparisler"

Dim oDs As New DataSet()

Dim oAdp As OleDb.OleDbDataAdapter = New OleDb.OleDbDataAdapter(sCmd, m_cnn)

oAdp.Fill(oDs)

Return (oDs)

End Function

Public Function SiparisKaydet()

Kayıt işlemleri

End Function

End Class

     Projeyi derleğimizde proje dizininin altındaki bin dizininde PServer.dll dosyasını görebilirisiniz.   


Client Uygulamanın Oluşturulması

     Türü , Windows Application  ismi  PClient olan yeni bir proje başlatın. Bu projede veri tabanı işlemlerini gerçekleştirmek için daha önce yazdığımız PServer isimli class library i (dll i) kullanacağız. PServer.dll i ve içerisindeki CSiparisIslem adlı sınıfı kullanabilmek için projemize bu dll i tanıtmamız gerekiyor. Bunun için solution exporerda proje ismi üzerine sağ tıklayıp "add referance" seçeneğini seçersek karşımıza aşağıdaki resimde gösterilen dialog penceresi açılır.

Add Referance

     Bu pencerede Projects tabına geçin ve Browse düğmesi aracığı ile PServer ın bulunduğu dizini ve onun altında bulunan bin isimli dizini açarak PServer.dll dosyasını açın. Daha sonra OK düğmesi ile bu pencereyi kapatın. Bu işlemleri yaparak PServer.dll i client projenize tanıtmış oldunuz. Artık PServer.dll ve onun içerisinde bulunan CSiparisIslem adlı sınıfı kullanarak, client proje içerisinden veri tabanı işlemlerini gerçekleştirebileceksiniz. Solution Explorer penceresine baktığınızda (References kısmına) PServer adlı elemanın eklendiğini görebilirsiniz.     

Solution Explorer

     Bu size PServer.dll i projenize tanıttığınızı gösteriyor. Şimdi isterseniz PServer.dll i kullanarak veri tabanındaki kayıtları listeleyelim. Bunun içinforma toolboxtan bir datagrid ekleyin ve F7 tuşu ile kod penceresine geçerek aşağıdaki kodları yazın. 

Public Class Form1

Inherits System.Windows.Forms.Form

Private Sub Form1_Load(...) Handles MyBase.Load

Dim obj As PServer.CSiparisIslem = New PServer.CSiparisIslem()

DataGrid1.DataSource = obj.Siparisleri_Listele( )

DataGrid1.Refresh()

End Sub

End Class

      Bu kodları incelersek;

Dim obj As PServer.CSiparisIslem = New PServer.CSiparisIslem()  : satırı ile PServer.dll dosyasındaki (daha doğrusu namespaceindeki) CSiparisIslem adlı sınıfı türünden obj isimli nesneyi türetiyoruz. Nesne türetilir türetilmez (new prosedürü = constructor çağrılır) new prosedüründe yazılan kod sayesinde veri tabanına bağlanılır.

       Bu sayede; projede görevi sadece arabirim oluşturmak olan bir programcı, ADO .Net bilmeden de, daha önceden diğer programcıların yazdığı bileşenleri kullanarak veri tabanı işlemlerini gerçekleştirebilir.

DataGrid1.DataSource = obj.Siparisleri_Listele( )  : satırı ile Siparisleri_Listele( ) isimli fonksiyonu çağırıyoruz. Bu fonksiyondan dönen değerleri (dataset dönüyor) datagridte gösteriyoruz. Kodu derleyip çalıştırdığımızda veri tabanındaki kayıtları grid te görebiliriz.

Ekran Çıktısı

Aykut TAŞDELEN / XProjecTT

aykuttasdelen@hotmail.com