Windows Store ile Wcf Web Servisi Olusturma

Windows 8 icin Windows Store uygulamalarinizi gelistirirken WCF servisleri kullanmak istiyorsaniz bu makalemle basit bir uygulama gelistirerek size bu konuda yardimci olacagimi dusunuyorum. Uygulamamizi gelistirebilmemiz icin oncelikle Visual Studio 2012 ile File->New->Project diyoruz ve hemen ardindan Other Project Types sekmesi altinda bulunan bos bir Visual Studio Solutions olusutuyoruz.
Solutions ismini Windows8WcfDeneme01 ismini verdikten sonra tekrardan uzerinde sag click yardimi ile Add->New Project diyorum ve bu kez oncelikle Wcf'imi olusturabilmem icin projeme WCF sekmesi altinda bulunan WCF Service Application'i secerek Servisimin ismini WebServisi koyuyorum. Servis olustuktan sonra oncelikle Interface sinifim olan IService1.Cs sinifimi asagidaki gibi tanimliyorum. Icerisinde bir metod bulunacaktir.
IService1.Cs Kaynak Kodlari ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace ServiceToConsumeinMetro
{
public interface IService1
{
string KarsilamaMesaji(string isim);
}
}
Hemen ardindan Interface'i kullanacak olan Servis dosyamizi yaziyoruz.
Service1.Svc.Cs Kaynak Kodlari ;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.ServiceModel.Web;
using System.Text;
namespace ServiceToConsumeinMetro
{
public class Service1 : IService1
{
public string KarsilamaMesaji(string isim)
{
return isim + " , Windows Store Web Servis Uygulamasina Hosgeldiniz!!!";
}
}
}
Yazdigimiz Web Servisinin calisip calismadigini test edip ogrenebilmemiz icin projemizin bu kismini calistiriyoruz. Karsimiza asagidaki gibi bir WCF Test Client ekrani cikacaktir. Burada Request penceresinde bulunan Isim karisinda bulunan Value kismina String bir deger girip ardindan hemen altta bulunan Invoke tusu ile girmis oldugunuz veriyi test ederseniz sonucunu asagida Response penceresinde size gosteriyor olacaktir.
Web Servislerimizle ilgili gerekli sinif ve metodlari olusturduktan sonra artik sira geldi Windows Store Application'imizin olusturulmasina. Oncelikle Solution Uzerinde yine sag tus yaparak Add->New Project diyoruz ve karsimiza gelen listeden Sag tarafta Windows Store sekmesi adi altinda bulunan Blank App (XAML) sayfasina bir isim vererek olusturuyoruz. Boylelikle projemize onceden olusturmus oldugumuz WCF projemize ek olarak Windows Store projeside eklenmis olacaktir. Oncelik olarak Windows Store projemiz calisacagindan dolayi Set As A StartUp Project secengini secmeyi unutmayin. Aksi durumda projenizi calistirmak istediginizde WCF servisinizin Test kismi calisacaktir.
Projemizi olusturduk fakat gelistirmeye baslamadan once olusturmus oldugumuz ve solution altinda hazir bir sekilde bekleyen web servisimizi eklemis oldugumuz windows store projemize referans olarak gostermemiz gerekmektedir. Bunun icinde proje icerisinde References bolumunde sag tus ile Add Service Referance'i tiklariz. Karsimiza asagidaki gibi gelen pencerede olusturmus oldugumuz web servisini taniyabilmesi icin Discover butonunu tiklariz ve hemen ardindan Address cubuguna olusturdugumuz web servisi gelir. Projemize ekleyecegimiz web servisimizin ismi degistirdikten sonra artik ok butonuna tiklayarak islemlerimizi tamamlamis oluyoruz.
Uygulamamizin kullanici arayuzunu olusturabilecegimiz tasarimi ile ilgili XAML gorunumu ve kodlari asagidadir;
<Page
x:Class="App1.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:local="using:App1"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d">
<Grid Background="{StaticResource ApplicationPageBackgroundThemeBrush}">
<Grid.RowDefinitions>
<RowDefinition Height="200" />
<RowDefinition Height="200" />
<RowDefinition Height="200" />
</Grid.RowDefinitions>
<TextBox x:Name="txtIsim" Margin="286,25,583,113" />
<Button x:Name="btnServisCagir" Content="TextBox'a isminizi giriniz ve web servisinden yaniti bekleyiniz" Height="100" Width="497" Margin="286,100,0,0" Click="btnServisCagir_Click"/>
<TextBlock x:Name="txtSonuc" Grid.Row="2" FontSize="30" FontWeight="Bold" />
</Grid>
</Page>
Ve verilerimizi web servisinden cagirmasi icin gerekli olan web servisini ait oldugu metodu button'in click event'ina yazacagimiz kodlar asagida bulunmaktadir. Dikkat etmeniz gereken nokta ise su; Projenizin using tanimlama kisminda eklemis oldugumuz referansi burada da tanitmamiz gerekmektedir.
MainPage.XAML.CS Kaynak Kodlari ;
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using Windows.Foundation;
using Windows.Foundation.Collections;
using Windows.UI.Xaml;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Controls.Primitives;
using Windows.UI.Xaml.Data;
using Windows.UI.Xaml.Input;
using Windows.UI.Xaml.Media;
using Windows.UI.Xaml.Navigation;
using App1.WebServisi;
namespace App1 { public sealed partial class MainPage : Page { public MainPage() { this.InitializeComponent(); } private
async
void
btnServisCagir_Click
(object sender, RoutedEventArgs e)
{
Service1Client ServistenAl = new Service1Client();
string SonucYazdir = await ServistenAl.KarsilamaMesajiAsync(txtIsim.Text);
txtSonuc.Text = SonucYazdir;
}
}
}
Ekran Goruntusu ;
Projemizi calistirdigimizda karsimiza gelen ekranda bulunan textbox icerisine yazacaginiz isim ile butona tikladiginizda isminizi web servisine gonderecek ve karsiliginda gerekli metodu cagirarak cevabi ekranda textblock araciligi ile kullaniciya gosteriyor olacaktir.
Yorumlar