Windows Communication Foundation Sample Project (VB)

Tulisan sebelumnya saya sudah membahas tentang overview dan sejarah teknologi WCF. Dikesempatan ini saya akan memberikan informasi bagaimana programming model di WCF. Setelah saya pelajari konsep WCF berdasarkan buku-buku yang ada saya akan menjelaskan 3 bagian yang harus kita pelajari :

  1. Services : tempat kita membuat services apa saja yang akan kita publish atau kita ekspos keluar
  2. Host : tempat dimana services yang akan kita buat di host untuk mendapatkan Address alamat serta port yang di protocol mana kita akan publish dan dipergunakan oleh client, dan juga menentukan binding tipe mana yang boleh digunakan disisi client.
  3. Client : teknologi di sisi client yang akan menggunakan services ini.

Pertama yang akan dibahas adalah membuat services.

Services

Untuk memahami pembuatan services, kita harus menentukan dahulu metode, properti dan event mana saja yang akan kita publish keluar. Untuk  contoh pertama kita akan membuat sebuah metode sederhana untuk perhitungan matematika.

Metode-metode yang akan kita publish keluar adalah :

- Penambahan (nilai1,nilai2) return integer

- Pengurangan (nilai1,nilai2) return integer

- Perkalian (nilai1,nilai2) return integer

- Pembagian (nilai1,nilai2) return integer

 

1 Tahap pertama buat sebuah project WCF Services dengan menggunakan template yang sudah disiapkan oleh Visual Studio 2008. Saya menggunakan Visual Basic sebagai bahasa-nya.
image
2 Hapus iService1.vb dan Service1.vb file ini otomatis muncul bersamaan ketika project baru dibuat
3 Buat sebuah folder Contracts yang nantinya akan dipakai untuk menyimpan interface
4 Di dalam folder contracts tambahkan item baru Class kemudian beri nama iMath.vb
5 Buat coding sebagai di dalam iMath.vb berikut :
 
 
Namespace Test1.Exchange.Contracts
    <ServiceContract()> _
    Public Interface iMath
 
        <OperationContract()> _
        Function penambahan(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
        <OperationContract()> _
        Function pengurangan(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
        <OperationContract()> _
        Function perkalian(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
        <OperationContract()> _
        Function pembagian(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
    End Interface
End Namespace
6 Dari root-nya project folder tambahkan sebuah class Item diberi nama Math.vb kemudian ketik coding dibawah ini :

Imports System.ServiceModel
Imports MathService.Test1.Exchange.Contracts
Namespace Test1.Exchange
    <ServiceBehavior(InstanceContextMode:=InstanceContextMode.Single)> _
    Public Class Math
        Implements iMath
        Public Function pembagian(ByVal nilai1 As Integer, ByVal nilai2 As Integer) _ 
            As Integer Implements Contracts.iMath.pembagian
            Return nilai1 / nilai2
        End Function
 
        Public Function penambahan(ByVal nilai1 As Integer, ByVal nilai2 As Integer) _ 
            As Integer Implements Contracts.iMath.penambahan
            Return nilai1 + nilai2
        End Function
 
        Public Function pengurangan(ByVal nilai1 As Integer, ByVal nilai2 As Integer) _ 
            As Integer Implements Contracts.iMath.pengurangan
            Return nilai1 - nilai2
        End Function
 
        Public Function perkalian(ByVal nilai1 As Integer, ByVal nilai2 As Integer) _ 
            As Integer Implements Contracts.iMath.perkalian
            Return nilai1 * nilai2
        End Function
    End Class
 
End Namespace
7 Sampai tahap ini coba di compile dan dicek apakah masih ada error, kalau tidak ada kita masuk ke dalam tahap selanjutnya yaitu membungkus menjadi sebuah host.

Kita sudah selesai membuat Services-nya dari WCF Project yang akan kita lanjutkan. Di dalam services ini kita harus mempersiapkan sebuah contract dari services yang akan kita buat. Simple-nya adalah buat interface dari semua metode, properti dan event yang akan kita tampilkan ke luar dan dipanggil dari client.

Host

1 tambahkan sebuah project Console Application dari solution dengan cara File –> Add New Project
2 Beri nama MathConsoleHost
3 Kemudian ganti isi module1.vb dengan coding berikut :
 
Imports System.ServiceModel
Imports MathService.Test1.Exchange
Imports MathService.Test1.Exchange.Contracts
Namespace Test1.Exchange.Hosts
    Module Module1
 
        Sub Main()
            'Bikin EndPoint URI ( Uniform Resource Identifier)
            'A = Address
            Dim address As Uri = New Uri("http://localhost:8888/Test1/Exchange")
            'B = Binding
            Dim svcType As Type = GetType(Math)
            Dim binding As BasicHttpBinding = New BasicHttpBinding()
            Dim host As ServiceHost = New ServiceHost(svcType)
 
            'tambahkan endpoint / address kedalam host
            host.AddServiceEndpoint(GetType(iMath), binding, address)
            host.Open()
 
            Console.WriteLine("Service Math Started : Press Return to exit")
            Console.ReadLine()
 
        End Sub
 
    End Module
 
End Namespace
4 Compile dan coba jalankan host ini dengan cara dari solution explorer – klik kanan project MathConsoleHost –> debug –> start new instance tunggu sebentar hingga muncul dialog console berikut :
  image
  Sampai tahapan ini kita sudah membuat host services kita yang berjalan dengan menggunakan basicHttpBinding  atau sama dengan membuat web service menggunakan protocol http.Next step-nya adalah ngetes dari client menggunakan console application juga
   

 

Client

1 Step-nya sama dengan pembuatan host akan tetapi module1.vb-nya diganti dengan coding sebagai berikut :
 
Imports System.ServiceModel
Imports System.ServiceModel.Activation
Imports System.ServiceModel.Channels
Imports System.Runtime.Serialization
Namespace Test1.Exchange.Clients
    <ServiceContract()> _
    Public Interface iMath
 
        '' TODO: Add your service operations here
        <OperationContract()> _
        Function penambahan(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
        <OperationContract()> _
        Function pengurangan(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
        <OperationContract()> _
        Function perkalian(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
        <OperationContract()> _
        Function pembagian(ByVal nilai1 As Integer, ByVal nilai2 As Integer) As Integer
 
    End Interface
    Module Module1
 
        Sub Main()
            ' proses memulai ABC of Services sampai proxy object'
            Dim address As EndpointAddress = New EndpointAddress("http://localhost:8888/Test1/Exchange")
            Dim binding As BasicHttpBinding = New BasicHttpBinding()
            Dim channelFactory As IChannelFactory(Of iMath) = _
                New ChannelFactory(Of iMath)(binding)
 
            Dim proxy As iMath = channelFactory.CreateChannel(address)
 
            'proses akses service class-nya Math
            Dim hasilPenambahan As Integer
            hasilPenambahan = proxy.penambahan(3, 4)
            Console.WriteLine("Hasil Penambahan 3 + 4 = {0}", hasilPenambahan)
 
            Dim hasilPengurangan As Integer
            hasilPengurangan = proxy.pengurangan(6, 2)
            Console.WriteLine("Hasil Pengurangan 6 + 2 = {0}", hasilPengurangan)
 
            Dim hasilPerkalian As Integer
            hasilPerkalian = proxy.perkalian(5, 2)
            Console.WriteLine("Hasil Perkalian 5 x 2 = {0}", hasilPerkalian)
 
            Dim hasilPembagian As Integer
            hasilPembagian = proxy.pembagian(10, 2)
            Console.WriteLine("Hasil Pembagian 10 : 2 = {0}", hasilPembagian)
 
            Console.ReadLine()
 
        End Sub
 
    End Module
End Namespace
2 Test dengan cara yang sama seperti Host project sebelumnya sehingga nanti akan muncul nilai dan hasil-nya seperti ini :
  image
  sampai disini kita sudah selesai melakukan test ke sebuah WCF sample project yang sudah kita buat tadi. Selamat mencoba.
Published Sunday, April 26, 2009 4:08 PM by sony
Filed under:

Comments

# re: Windows Communication Foundation Sample Project (VB)

mantabs bro...

bisa dipake buat Best Practise neh :)...

Sunday, April 26, 2009 8:27 PM by Suherman

# re: Windows Communication Foundation Sample Project (VB)

keren pak.. coba dlu ahh ^_^

Sunday, April 26, 2009 9:23 PM by Erick Kurniawan

# re: Windows Communication Foundation Sample Project (VB)

Monday, April 27, 2009 11:10 AM by Suherman