avatar
Tarih: 22:28, 08-01-09 22:28 Sitemize Hoşgeldiniz. (Oturum AçKayıt Ol)

Bu Konuyu Görüntüleyenler
Bu Konuyu görüntüleyenler: 1 Ziyaretçi

Konuyu Gönder  Mesaj Önizleme 
VB .Net'te COM Bileşenleri ve Arayüzleri Kullanımı
16:49, 21-06-08 16:49 (En son düzenleme: 16:51 21-06-08 16:51 **SaBRoZa**.)
Mesaj: #1
VB .Net'te COM Bileşenleri ve Arayüzleri Kullanımı
.Net öncesi dönemde, COM teknolojisini destekleyen dillerle bileşen (component) tabanlı programlar yazıyorduk. COM; basitçe yeni bileşenler yaratmak veya varolan bileşenleri uygulamalar yada başka bileşenler içerisinden kullanmak için Microsoft tarafından tanımlanmış bir teknolojidi idi. COM teknolojisi sayesinde dilden bağımsız bileşenler tasarlamak ve COM destekli diller arasında bu bileşenleri kullanmak mümkündür.

Sizin de .Net ile tanışmadığımız dönemden, miras olarak kalmış ve bugün VB .Net uygulamalarınız içerisinden kullanmak istediğiniz COM bileşenleriniz olabilir. Bu isteğinizi gerçekleştirebilemenizi sağlayacak bilgiler yazının ilerleyen kısımlarında verilecektir. Ancak yazının konusu "VB .Net 'te COM bileşenleri ve arayüzlerinin kullanılması" olduğu için COM teknolojisinin detaylarına girilmeyecektir. Bu sebeble COM teknolojisi ile ilgili temel kavramları bildiğinizi kabul ederek yazının bundan sonraki kısmına VB 6.0 'da birer COM bileşeni ve arayüzü içeren bir ActiweX DLL projesi yapıp daha sonra bu bileşeni, VB .Net 'te ile yazacağımız uygulama tarafından referanse ederek kullanacağınız örnek bir uygulama ile devam edeceğiz.

Yapacağımız örnek uygulama client / server mimari ile çalışan ve aritmetik hesapların yapılmasına yönelik basit bir uygulama olacak. Uygulamanın server tarafı VB 6.0 ile yazılmış bir COM bileşeninden, client tarafı ise VB .Net ile yazılmış ve bu COM server'ı kullanan bir windows uygulamasından oluşacaktır.

1. Adım (Arayüzün Tanımlanması)

VB 6.0 'da bunun yolu hiç bir implementasyon kodu içermeyen soyut bir sınıf tasarlamaktır.

VB 6.0 'da MegaCalculator isminde ve türü ActiweX DLL olan yeni bir proje başlatın. Projeye eklenen sınıfın ismini IMegaCalc olarak değiştirin. (Sınıfın başında koyduğunuz I belirteci sınıfın bir interface olduğunu belirtmektedir) Bu sınıf soyut bir sınıf olduğu için sadece üyelerinin prototiplerini içermektedir. IMegaCalc sınıfının kodları aşağıda verilmiştir.

'IMegaCalc Sınıfı
Option Explicit

Public Sub AddInput(inputvalue As Integer)

End Sub

Public Sub DoCalculation()

End Sub

Public Function GetOutput() As Double

End Function

Public Sub Reset()

End Sub


Bu kodları yazdıktan sonra projeyi "File | Make MegaCalculator.dll" ile derleyebilirisiniz. Bu sayede dll olarak derlenmiş ve register edilmiş bir bileşen arayüzünüz oldu. Projenizi kaydedip VB 6.0 'dan çıkabilirsiniz.

2. Adım (Bileşenin İmplementasyonu)

Bu aşamada ise bileşenin operasyonel kodlarının bulunduğu yeni bir ActiweX DLL projesi yaratacağız. Bunun için VB 6.0 'da ismi MeanCalculator ve türü ActiweX DLL olan yeni bir proje başlatın. Proje açıldıktan sonra ilk işiniz "Project | Referances" seçeneğinden MegaCalculator projesini referanse etmek olsun. Bundan sonra projenize eklenen sınıfın ismini ise MeanCalculator olarak değiştirin. Aşağıda MeanCalculator sınıfının kodları verilmiştir.

'MeanCalculator Sınıfı

Option Explicit

Implements IMegaCalc

Dim mValue As Integer

Dim mValues() As Double

Dim mMean As Double

Private Sub Class_Initialize()

'Constructor

IMegaCalc_Reset

End Sub

Private Sub IMegaCalc_AddInput(inputvalue As Integer)

mValue = mValue + 1

ReDim Preserve mValues(mValue)

mValues(mValue) = inputvalue

End Sub

Private Sub IMegaCalc_DoCalculation()

Dim value As Integer

mMean = 0

If mValue = 0 Then Exit Sub

For value = 1 To mValue

mMean = mMean + mValues(value)

Next

mMean = mMean / mValue

End Sub

Private Function IMegaCalc_GetOutput() As Double

IMegaCalc_GetOutput = mMean

End Function

Private Sub IMegaCalc_Reset()

mValue = 0

End Sub
Bu kodları yazdıktan sonra projenizi "File | Make MeanCalculator.dll" olarak derleyin. Artık projenizi kaydedip VB 6.0 'dan çıkabilirsiniz. (Bu projeyi 'de bir önceki ile aynı dizine kaydetmeniz düzenli çalışabilmek açısından faydalı olacaktır !)

3. Adım (Client Uygulamanın Yaratılması)

Client uygulama VB .Net içerisinde yaratacağımız bir Windows Appilaction projesinden ibaret. Bu uygulamanın görevi ise; yarattığımız COM bileşenini (MeanCalculator.dll) kullanarak çeşitli işlemler yapmak. Client uygulamanın bu bileşendeki fonksiyonları kullanabilmesi için, bileşenin uygulamaya tanıtılması, yani referanse edilmesi gerekmektedir. Referanse etme işlemi VB 6.0 'dakine benzer tarzda ve şöyle yapılmaktadır; "Project | Add Referance" seçeneğinde COM tab 'ına geçin ve listeden "MeanCalculator" ı bularak projenize ekleyin. Çıkan mesaj penceresinde "Yes" demeniz gerekmektedir ! Bu aşamada Solution Explorer 'da referances seçeneğine baktığınızda "MeanCalculator" ve onun kendi içerisinde referanse ettiği, "MegaCalculator" 'ın eklendiğini görebilirsiniz.

Artık kullanıcı arabirimini yaratabilirsiniz. Arabirim için aşağıdaki resmi örnek alabilirsiniz ;



TextBox'ların ismileri sırsıyla "txtInput" ve "txtOutput" tur. Arabirimi bu şekilde hazırladıktan sonra, artık client side kodları yazabiliriz.

Kod:
Public Class Form1

Inherits System.Windows.Forms.Form

Dim oMean As MeanCalculator.MeanCalc



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


Public Sub New()

MyBase.New()

'This call is required by the Windows Form Designer. InitializeComponent()

'Add any initialization after the InitializeComponent() call

oMean = New MeanCalculator.MeanCalc()

End Sub



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


Private Sub btnAdd_Click(...) Handles btnAdd.Click

oMean.AddInput(CDbl(txtInput.Text))

End Sub

Private Sub btnCalculate_Click(...) Handles btnCalculate.Click

oMean.DoCalculation()

txtOutput.Text = oMean.GetOutput()

End Sub

Private Sub btnReset_Click(...) Handles btnReset.Click

oMean.Reset()

End Sub

End Class
Kodu kısaca incelersek, global olarak tanımlanmış oMean nesnesi; MeanCalculator namespace'indeki MeanCalc sınıfı türündendir. Ancak bu nesnenin türetilme işlemi form sınıfının constructor 'ında yapılmıştır. Bunun amacı; form nesnesi türetilir türetilmez oMean nesnesinin de türetilmek istenmesidir. Daha sonra bu nesnenin metotları kullanılarak işlemler client side 'ta arabirim ile etkileşimli olarak yapılmaktadır.

[Resim: uyari.gif]Uyarı: İndirmeye başlamadan önce lütfen linklerin hepsini kontrol ediniz.
[Resim: istek.gif]İstek Yapmadan Önce Forumda Sadece Üyeler Linkleri Görebilir. Üye Olmak İçin TIKLAYIN Yapınız!
[Resim: saygi.gif]Verilen emeğe lütfen saygı gösteriniz. En azından bir teşekkür edebilirsiniz.


Her Türlü Sorununuzda Bana Ulaşın.
Zamanın Durduğu Kaliteli İnsanların Paylaşım Mekanı

Sadece Üyeler Linkleri Görebilir. Üye Olmak İçin TIKLAYIN

Hedefimiz En Büyük ve En İyi Olmaktır
Kullanıcının websitesini ziyaret et Bu kullanıcının gönderdiği tüm mesajları bul
Bu mesajı bir cevapta alıntı yap
Konuyu Gönder  Mesaj Önizleme 


Foruma Git:

OdevTurkiye.NeT - helllife.org - Tuba Büyüküstün - Yasemin Ergene - Selena Dizisi - AccessTr.neT - Amy Lee - burak sağyaşar