April 2009 - Posts

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.
Posted by sony | 3 comment(s)
Filed under:

Windows Communication Foundation Based on SOA Perception

Saat ini terminologi SOA (Service Oriented Architecture) sudah menjadi buah bibir banyak kalangan terutama para pemain di industri yang terkait dengan lingkungan Enterprise. Memang topik ini cukup advanced untuk dipelajari oleh karena itu dibutuhkan pemahaman terlebih dahulu tentang SOA sendiri.

5 tahun terakhir ini Web Services sudah banyak dipakai oleh industri terutama oleh pengguna di kalangan enterprise. Web Services pada jaman itu sudah menjadi bentuk SOA yang paling generic dikarenakan kemampuan dia untuk dipakai oleh berbagai macan client runtime termasuk diantaranya adalah java based application , PHP, phyton dsb. Kemudian penyedia Web Services-nya pun semakin banyak tidak hanya dari Microsoft Based tapi juga dari PHP, Java Enterprise, Oracle, BEA dan masih banyak yang lainnya.

SOA sebenarnya terdiri dari 3 komponen utama :

  1. Service Provider : sebuah node di network yang mempunyai jasa layanan services yang dapat digunakan oleh Service Consumer.
  2. Service Consumer : aplikasi yang sudah support SOAP Messages yang dapat mengkonsumsi Services Provider.
  3. Service Broker : makelar di dunia SOA yang tugas-nya sebagai tempat bagi siapapun untuk mencari services-services yang ada di sebuah network, mirip-mirip kayak fungsi-nya DNS / Google.

 

Sejarah SOA

SOA tidak bisa lepas keterkaitannya dengan sejarah distributed application sejak jaman VB 6 sampai .NET 2.0. Kalian tentu pernah tahu apa yang dimaksud COM (Component Object Model) , COM + (versi-nya COM yang disimpan dalam Component Services) dan .NET Remoting. Tidak ketinggalan Web Services versi .NET 1.1 hingga 2.0. Beberapa kelemahan dari beberapa teknologi yang tadi saya sebutkan adalah sebagai berikut :

  • COM / COM + : Walaupun banyak aplikasi yang masih support teknologi ini, tetapi kelemahannya adalah client-nya harus menggunakan Windows Operating System terutama yang sudah support RPC (Remote Procedure Call)
  • .NET Remoting : kurang populer karena antara host dan client harus menggunakan teknologi .NET. Kemudian untuk membungkus transportation layer-nya harus menggunakan proses coding yang sangat rumit.
  • Web Services : harus selalu menggunakan http protocol untuk distribusi-nya walaupun untuk client-nya bisa menggunakan teknologi manapun yang support SOAP.

 

Sebelum Visual Studio 2008 release, VS 2005 sudah mempunyai add in tools tersendiri untuk membuat SOA ini tentunya dengan menggunakan .NET Framework 3.0. add inn tools ini dapat di download di sini.

 

Apa Keunggulan WCF 

Pertanyaan berikut-nya apa yang membuat WCF menarik dibandingkan dengan pendahulu-nya ? tentunya jawaban pertanyaan ini adalah untuk kekurangan-kekurangan ini teknologi sebelumnya. Jadi secara umum WCF mencoba merangkum apa yang kekurangan-kekurangan di teknologi sebelumnya, tetapi sifatnya bukan menimpa teknologi sebelumnya malah melakukan extend dari teknologi sebelumnya.

 

Cukup dulu pengantar-nya tentang WCF di sesi berikut-nya saya akan membuat simple project dengan teknologi WCF dan SOA.

Posted by sony | with no comments
Filed under:

Laporan penyelenggaraan Office Collaboration Seminar on Univ Mercu Buana

Kemarin tanggal 2 april 2009, MUGI di undang menjadi pembicara di sebuah acara Technology Update yang dilaksanakan di Univ. Mercu Buana jl. Meruya Selatan. Kebetulan saya sendiri yang membawakan materi-nya terkait dengan MS Office Collaboration. Di Acara ini saya memberikan sedikit presentasi dan demo-demo yang terkait dengan penggunaan Collaboration tools di beberapa MS product seperti Groove 2007, Office Communication Server 2007 dan MOSS 2007 juga WSS 3.0. Ditekankan disini adalah bagaimana office 2007 dapat dipergunakan untuk pembuatan proses Paperless office contohnya dengan virtual workspace dan juga tentang Workflow proses. Disamping itu saya juga menyampaikan tentang apa itu MUGI dan bagaimana proses pembentukan MUGI di kampus-kampus.

Berikut foto2 selama kegiatan berlangsung, oh ya yang hadir di acara tersebut kurang lebih sekitar 300 orang.

mugi1 mugi2

mugi3

mugi4

mugi5

Posted by sony | 3 comment(s)

Office Collaboration Seminar on Universitas Mercu Buana Jakarta

Hari ini di Universitas Mercu Buana Jakarta akan ada seminar Technology Update yang salah satu pembicara-nya adalah saya sendiri membawakan materi Office Collaboration.

Brosur UMB_res75

Posted by sony | 2 comment(s)