Pada tutorial kali ini kita akan membuat WCF REST Services sederhana yang dapat di-consume oleh aplikasi WP7.
Creating WCF REST Services
1. Pertama kita akan membuat REST Services sederhana. Caranya buat empty Web Site.
2. File → New → Web Site → ASP.NET Empty Web Site → beri nama SimpleREST.
3. Klik kanan pada project → Add → New Item → pilih WCF Services → beri nama Service1.svc.
4. Buka web.config kemudian tambahkan tag berikut pada <system.serviceModel>
<behaviors>
<serviceBehaviors>
<behavior name="">
<serviceMetadata httpGetEnabled="true" />
<serviceDebug includeExceptionDetailInFaults="false" />
</behavior>
</serviceBehaviors>
</behaviors>
<serviceHostingEnvironment multipleSiteBindingsEnabled="true" />
</system.serviceModel>
5. Klik kanan pada Service1.svc kemudian pilih View Markup.
6. Kemudian tambahkan file konfigurasi berikut
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
7.Definisikan kontrak service yang akan anda buat pada file IService1.vb
Imports System.ServiceModel
Imports System.ServiceModel.Web
Imports System.Runtime.Serialization
Imports System.Text
Imports System.Collections.Generic
Imports System.Linq
' NOTE: You can use the "Rename" command on the context menu to change the interface name "IService1" in both code and config file together.
<ServiceContract()>
Public Interface IService1
<OperationContract()>
<WebGet(UriTemplate:="GetData/{a}", RequestFormat:=WebMessageFormat.Xml,
ResponseFormat:=ServiceModel.Web.WebMessageFormat.Xml,
BodyStyle:=ServiceModel.Web.WebMessageBodyStyle.Bare)>
Function GetData(ByVal a As String) As String
End Interface
8. Kemudian definisikan method service yang akan anda buat pada file Service1.svc.vb. Buat sebuah method dengan nama GetData() yang akan mengembalikan nilai bertipe string.
Implements IService1
Public Function GetData(ByVal a As String) As String Implements IService1.GetData
Return String.Format("Hello {0} this message from REST Services", a)
End Function
End Class
9.Jalankan service yang sudah anda buat dengan cara klik kanan pada ‘Service1.svc’ kemudian pilih View in browser.
10.Lengkapi urlnya sebagai berikut untuk memanggil service dengan nama GetData yang sudah anda buat.
http://localhost:2531/Service1.svc/GetData/Erick
11. Service1.svc adalah nama service, GetData adalah nama method, dan ‘Erick’ adalah nilai dari parameter. Hasil dari pemanggilan service diatas adalah:
Cara Pemanggilan Service dari WP7
Setelah selesai membuat REST service yang akan diconsume, sekarang kita akan membuat aplikasi client pada Windows Phone 7 yang digunakan untuk mengakses service tersebut.
1. Buat project Silverlight for Windows Phone 7 dengan nama WP7RestConsume.
2. Tambahkan beberapa textbox, textblock dan tombol kedalam tampilan design sebagai berikut:
<Grid x:Name="ContentPanel" Grid.Row="1" Margin="12,0,12,0">
<TextBlock Height="30" HorizontalAlignment="Left" Margin="35,25,0,0" Name="TextBlock1" Text="Parameter :" VerticalAlignment="Top" />
<TextBox Height="72" HorizontalAlignment="Left" Margin="142,6,0,0" Name="ParameterTextBox" Text="" VerticalAlignment="Top" Width="308" />
<Button Content="Call Rest Service" Height="72" HorizontalAlignment="Left" Margin="148,66,0,0" Name="CallRestButton" VerticalAlignment="Top" Width="241" />
<TextBlock Height="30" HorizontalAlignment="Left" Margin="72,152,0,0" Name="TextBlock2" Text="Result :" VerticalAlignment="Top" />
<TextBlock Height="123" HorizontalAlignment="Left" Margin="148,152,0,0" Name="ResultTextBlock" Text="" VerticalAlignment="Top" Width="302" TextWrapping="Wrap" FontSize="28" />
</Grid>
3. Tambahkan referensi System.Runtime.Serialization.
4. Double click pada tombol CallRestButton, kemudian tambahkan kode berikut untuk mengambil nilai yang dikembalikan dari service.
Partial Public Class MainPage
Inherits PhoneApplicationPage
' Constructor
Public Sub New()
InitializeComponent()
End Sub
Private Sub CallRestButton_Click(ByVal sender As System.Object, ByVal e As System.Windows.RoutedEventArgs) Handles CallRestButton.Click
Dim proxy As New WebClient
Dim strUri = String.Format("http://localhost:2531/Service1.svc/GetData/{0}",
ParameterTextBox.Text)
AddHandler proxy.OpenReadCompleted, AddressOf proxy_OpenReadCompleted
proxy.OpenReadAsync(New Uri(strUri))
End Sub
Private Sub proxy_OpenReadCompleted(ByVal sender As Object, ByVal e As OpenReadCompletedEventArgs)
Dim sr As New DataContractSerializer(GetType(String))
Dim strResult = sr.ReadObject(e.Result).ToString
ResultTextBlock.Text = strResult
End Sub
End Class
5. Pastikan bahwa sebelum anda menjalankan program services harus sudah jalan. Sesuaikan url pada program dengan url services yang anda jalankan.
6. Tekan F5 untuk menjalankan programnya.