WCF Tutorial (1)

Sebagaimana posting terdahulu, WCF adalah teknologi lanjutan yang di luncurkan oleh Microsoft untuk system terdistribusi melanjutkan teknologi webservice, dan saat ini untuk framework 4 , Microsoft sudah tidak menyediakan tool untuk pembuatan webservice, dan secara tidak langsung Microsoft menyarankan menggunakan WCF untuk aplikasi yang berbasis service.

Berbeda dengan pembuatan webservice dimana kita harus menambahkan statement webmethod, saat membuat WCF, kita harus mendeklarasikan Contract, semua properti dan fungsi-fungsi yang akan kita buat dalam WCF Service harus kita deklarasikan dalam kontrak, Dalam WCF Service , kontrak di bagi menjadi 2  :

  • Data Contract        : Yaitu kontrak yang berhubungan dengan data-data parameter dan property dari object service. Data Contract sendiri dibagi menjadi dua yaitu :
    • Data Contract :  Yang digunakan untuk mendefinisikan Class
    • Data Member :  Yang digunakan untuk menentukan property class
  • Service Contract : Yaitu kontrak yang berhubungan dengan method atau fungsi-fungsi dari service kita. Service Contract sendiri di bagi menjadi dua yaitu :
    • Service Contract :  yang digunakan untuk mendefinisikan Interface
    • Operation Contract :  yang digunakan untuk mendefinisikan metode dalam Interface

Kedua kontrak tersebut kita deklarasikan dalam interface yang selanjutnya interface tersebut di implementasikan ke dalam class service . Sebenarnya Teknik ini mengadopsi dari teknik pemrogram COM/DCOM satu dekade lalu , dimana teknik tersebut adalah cikal bakal dalam pembuatan system terdistribusi saat ini.

Untuk lebih jelasnya mari kita mulai pembuatan WCF Service.

  • Jalankan Microsoft Visual Studio 2010, selanjutnya pilih New Project, pilih WCF , selanjutnya  pilih WCF Service Application. Selanjutnya akan tampil sebagaimana gambar berikut

Create New WCF Service Application
Create New WCF Service Application
    Selanjutnya kita akan mendapatkan 2 modul yaitu Iservice.vb dan Service.svciservice.vb adalah interface atau kontrak dari service kita, sedangkan service.svc adalah modul implemetator 

    Layout Opening WCF
    Layout Opening WCF

    Mari kita perhatikan Source Code dari modul Iservice.vb .

    <ServiceContract()>
      Public Interface IService1
     <OperationContract()>
     Function GetData(ByVal value As Integer) As String
     <OperationContract()>
    Function GetDataUsingDataContract(ByVal composite As CompositeType) As CompositeType
    ' TODO: Add your service operations here
    End Interface
    ' Use a data contract as illustrated in the sample below to add composite types to service operations.
    <DataContract()>
     Public Class CompositeType
       <DataMember()>
    Public Property BoolValue() As Boolean
    <DataMember()>
    Public Property StringValue() As String
    End Class
    

    Dalam modul tersebut dapat dibagi menjadi 2 bagian, Bagian pertama adalah yang disebut dengan service contract, dalam bagian ini adalah interface dari fungsi-fungsi yang akan kita implemetasikan di class implementator. Dimana inisialisasi nama fungsi kita deklarasikan dalam operation contract.Bagian kedua adalah yang disebut dengan data contract, pada bagian ini , kita dapat mendeklarasikan atribut atribut class, structures maupun enumeration yang dapat di panggil oleh client. Setiap atribut atribut yang kita deklarasikan disebut dengan data member.

    Dari contoh diatas kita mempunyai class compositetype sebagai data contract yang mempunyai data member yaitu property boolvalue dan property stringvalue.dan  interface IService sebagai service contract yang terdiri atas 2 operation contract yaitu fungsi getdata yang berparameter string dan getdatausingcontract yang mengambil data masukan dari class compositetype

    interface iservice selanjutnya akan di implementasikan di class service1.svc sebagai mana source berikut

    Public Class Service1  
     Implements IService1
        Public Sub New()    
        End Sub
        Public Function GetData(ByVal value As Integer) As String Implements IService1.GetData        
             Return String.Format("You entered: {0}", value)    
        End Function
    
       Public Function GetDataUsingDataContract(ByVal composite As CompositeType) As CompositeType     Implements IService1.GetDataUsingDataContract        
          If composite Is Nothing Then          
             Throw New ArgumentNullException("composite")      
          End If      
          If composite.BoolValue Then          
             composite.StringValue &= "Suffix"      
          End If      
          Return composite  
     End Function
     End Class

    Selanjutnya kita coba untuk membuat service sendiri. kita akan membuat service login dan menampilkan data orang yang telah login.
    pertama tama kita buat service contract dan data contract sebagai berikut

<ServiceContract()>
Public Interface IMacService
  <OperationContract()>    
   Function login(ByVal composite As clsinputer) As clsdatauser
  <OperationContract()>  
   Function viewlogin(ByVal clsuser As clsdatauser) As String
End Interface
<DataContract()>
Public Class clsinputer    
   Private strusrname As String  
   Private strpassword As String  
   <DataMember()>   
   Public Property username() As String      
    Get            
      Return strusrname      
    End Get      
    Set(ByVal value As String)          
      strusrname = value        
    End Set    
   End Property
  <DataMember()>    
   Public Property password() As String        
     Get            
      Return strpassword      
     End Get      
     Set(ByVal value As String)          
       strpassword = value      
     End Set    
   End Property
End Class
<DataContract()>
Public Class clsdatauser    
   Private strusrname As String
    <DataMember()>    
    Public Property nama As String      
     Get          
       Return strusrname        
     End Get        
     Set(ByVal value As String)          
      strusrname = value      
     End Set    
   End Property    
  <DataMember()>    
  Public islogin As Boolean
End Class

simpan dengan nama Iservice.vb, kita akan bahas service contract dan data contract diatas,pertama kita bahas adalah data contractnya , dalam datacontract kita mendefinisikan 2 class yaitu class clsinputer yang kedepannya kita akan gunakan untuk class input data, dan class clsdatauser yang berfungsi nantinya untuk menyimpan data yang kita cari. Karena kedua class itu nantinya akan dapat diakses oleh client maka masing masing class tersebut yang juga merupakan data kita, maka kita harus deklarasikan sebagai datacontract sehingga nantinya kedua class tersebut akan di serialiaze oleh wcf. Selain itu , karena kedua class tersebut mempunyai atribut-atribut yang nantinya akan kita akses di client , maka kita harus mendeklarasikan setiap atribut atribut tersebut sebagai data member

selanjutnya kita membuat service implementasinya, ketik sebagai berikut

Public Class Service1  
 Implements IService
  Public Sub New()    
  End Sub
  Public Function login(ByVal datauser As clsinputer) As clsdatauser Implements IService.login           Dim clsuser As New clsdatauser        
     If Not (datauser Is Nothing) Then            
        If datauser.username = "supri.yanto" And datauser.password = "password" Then     
            clsuser.nama= "Supriyanto"                
            clsuser.islogin = True          
        Else              
            clsuser.nama = ""              
            clsuser.islogin = False          
        End If        
    Else          
      clsuser.nama = ""          
      clsuser.islogin = False      
    End If      
    Return clsuser    
  End Function
  Public Function loginview(ByVal clsuser As clsdatauser) As String Implements IService.viewlogin      
      Return "Nama user yang login : " & clsuser.nama    
  End Function
End Class
    selanjutnya kita dapat run, saat kita run akan tampil WCF Test Client sebagaimana berikut

    WCF Test Client

    WCF Test Client

    • dalam program diatas ada alamat yang otomatis dibuat saat kita run yaitu http://localhost:1045/Service1.svc jika kita buka alamat web dari wcf maka akan tampil sebagai berikut

      tampilan di browser

      tampilan di browser

      Jika sudah sesuai maka service kita dapat kita gunakan, selanjutnya kita dapat mempublish service kita ke IIS
  • Mempublish Service


    sebelumnya kita harus menjalankan Visual Studio sebagai administrator (run as administrator), klik kanan project wcf di solution explorer, pilih menu publish,selanjutnya akan keluar form publish web

    Form Web Publish

    Form Web Publish

    pilih method publish sesuai pilihan kita, isi alamat Url pada bagian service URL, isi nama site/application isi username dan password klik tombol Publish jika sukses akan tampil nama site di IIS sebagaimana gambar berikut

    Form IIS

    Form IIS

    selanjutnya kita dapat memanggil dari browser sesuai dengan alamat  site sebagaimana gambar berikut

    Browser Tampilan Service

    Browser Tampilan Service

    Jika sukses , selanjutnya kita dapat membuat aplikasi client.
    Implementasi Client WCF


    Buat aplikasi seperti biasa, tambahkan service reference, panggil alamat service sebagaimana gambar diatas
    selanjutnya kita dapat mengakses service tersebut sebagaimana berikut:

     

Dim clsinput As New ServiceReference1.clsinputer        
Dim clsuser As New ServiceReference1.clsdatauser        
Dim proxy As New ServiceReference1.MacServiceClient        
clsinput.username = "supri.yanto"      
clsinput.password = "password"
Dim s As String      
clsuser = proxy.login(clsinput)        
MessageBox.Show("nama username di class user=" & clsuser.nama, " status login :" & clsuser.islogin.ToString) 
       s = proxy.viewlogin(clsuser)        
proxy.Close()        
MessageBox.Show(s)
About these ads

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s