23 Oca 2009 Silverlight ile Web Servislerinin Kullanılması Kategori: Silverlight Etiketler: Silverlight 1 Yorum Herkese merhabalar, bu makalemizde Silverlight ile web servislerini konuşturarak web servis aracılığıyla çesitli islemler yapacağız.Silverlight üzerinde doğrudan sunucu taraflı veritabani erişimi olmadığı için XML yada Web Servisleri gibi farklı aracılar ile veri alişverisini sağlayabiliyoruz. Bu makalemizde de silverlight uygulamalarında web servisinin nasıl kullanildığına, veri alişverişinin nasil yapıldığına bakacağız. İlk olarak Visual Studio 2008’i açalım ve yeni bir silverlight projesi başlatalım. (Eger ilk kez silverlight ile uygulama geliştiriyorsak burayıokumanızı tavsiye ederim). Solution üzerinde bize 2 adet proje açılıyor. Biri geliştireceğimiz silverlight projesi diğeri ise geliştirdiğimiz uygulamayı test edebilmemiz için eklenen test projesi. Test projesine yeni bir web servis dosyası ekleyelim. Burada uygulamamızda kullanacagımız servisi hazırlayacagız. İlk olarak basit bir örnek ile konuya girelim. Örneğimiz de basitçe bir login ekranı tasarlayacagız. Silverlight uygulaması üzerinde kullanıcı adı ve sifre için textboxlar olacak. Kullanıcı, kullanıcı adi ve şifresini girip butona bastığında servise bağlanacak ve duruma göre kullanıcıya olumlu yada olumsuz bilgi dönecek. Simdi web servisimizi hazırlayalım. [WebMethod]publicbool KullaniciKontrol(string kullaniciAdi, string sifre){ if(kullaniciAdi=="semgoksu" && sifre == "12345") { return true; } else { returnfalse; }} Web servisimizi hazırladık şimdi silverlight uygulamasında kullanacağımız arayüzü hazırlayalım. Bunun için silverlight projemizi Expression Blend’de açalım. <UserControlx:Class="SilverlightWebServisOrtakligi.Page"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"Width="400" Height="300" xmlns:d=http://schemas.microsoft.com/expression/blend/2008 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"> <Grid x:Name="LayoutRoot" Background="White"><TextBox Margin="167,126,112,0"V erticalAlignment="Top" Text="" TextWrapping="Wrap" x:Name="txtKullaniciAdi"/><TextBox Margin="167,0,112,122" Text="" TextWrapping="Wrap" VerticalAlignment="Bottom" x:Name="txtSifre"/><Button HorizontalAlignment="Right" Margin="0,0,112,96" VerticalAlignment="Bottom"Content="Kontrol Et" x:Name="btnKontrolEt"/><TextBlock HorizontalAlignment="Left" Margin="133,0,0,126" Text="Sifre" TextWrapping="Wrap" VerticalAlignment="Bottom" FontWeight="Bold"/><TextBlock HorizontalAlignment="Left" Margin="85,128,0,0" VerticalAlignment="Top" Text="Kullanici Adi"TextWrapping="Wrap" FontWeight="Bold"/><TextBlock Margin="90,79,121,0" VerticalAlignment="Top" Text="ÜYE GIRISI" TextWrapping="Wrap" FontWeight="Bold" FontSize="16" Foreground="#FFFF0000"/></Grid></UserControl>Web Servisimiz ve formumuz hazir simdi tekrar visual studio 2008’e dönelim. Silverlight projesinin üzerine gelelim sag tıklayarak , Add Service Reference… tıklayalım. Gelen pencereden discover’a tıklarsak projemiz üzerinde ki servisi bulacaktır. Servise bir isim verip projemize ekleyelim. Silverlight projesine servisi ekledikten sonra artık yapmamız gereken butona tıklandiginda servise bağlanıp ilgilili metoda parametreleri yollamak. Bunun için paga.xaml.cs’e gidip Butonumuz için bir click event listener olusturalım. Sonrasında da referans olarak eklediğimiz servisin örneğini olusturalım. ServiceReference1.WebService1SoapClient loginServis = new SilverlightWebServisOrtakligi.ServiceReference1.WebService1SoapClient(); public Page(){ InitializeComponent(); btnKontrolEt.Click += new RoutedEventHandler(btnKontrolEt_Click);} void btnKontrolEt_Click(object sender, RoutedEventArgs e){ loginServis.KullaniciKontrolAsync(txtKullaniciAdi.Text, txtSifre.Text);} Dikkat edersek metodumuzun ismi bizim verdigimizden biraz daha farkli bir şekilde geldi. Bunun da nedeni silverlightın varsayılan şekli ile web servisleriyle asenkron olarak çalısıyor olmasındandır. KullaniciKontrolAsyncmetodu ile servise asenkron bir çagrıda bulunuldu. Peki çagrının sonucunu nasıl alacagız? Bunun da çözümü çok basit, metodumuz ile aynı isimde ve sonuna Completed eklenmiş bir event var. (Bu tüm metodlar için geçerli). Bu event tetiklendiginde bize eventarguman'dan result isimli bir property dönüyor. Bu property metodumuzun geri dönüş tipi ile aynı tipte oluyor. Şimdi KullaniciKontrolCompleted eventini oluşturup login işleminin sonucunu alalım. public Page(){ InitializeComponent(); btnKontrolEt.Click += new RoutedEventHandler(btnKontrolEt_Click); loginServis.KullaniciKontrolCompleted += new EventHandler<SilverlightWebServisOrtakligi.ServiceReference1.KullaniciKontrolCompletedEventArgs>(loginServis_KullaniciKontrolCompleted);} void loginServis_KullaniciKontrolCompleted(object sender, SilverlightWebServisOrtakligi.ServiceReference1.KullaniciKontrolCompletedEventArgs e){ bool sonuc = e.Result; if (sonuc) { MessageBox.Show("Giris Basarili"); } else { MessageBox.Show("Giris Hatali"); }} Evet şimdilik yapacaklarımız bu kadar artık uygulamamızı test edebiliriz. Uygulamamızın başarılı bir şekilde çalıştığını gördük. Uygulamayı bir adım daha ileri götürüp animasyon ile biraz daha süsleyebilirsiniz. Örnek kodlar için tiklayinizMakalemizin sonuna geldik, başka bir makalede görüşmek dileğiyle. .NET ve Silverlight ile kalin ;) Sem GÖKSUwww.semgoksu.com| www.yazilimgunlugu.comsem.goksu@yazilimgunlugu.com Kaynaklarmsdn.comsilverlight.netdaron.yondem.com Yorum (1) Mahmut KANTAR / 23.1.2009 09:03:51 Bu aralar sende bi silverlighttir basladi gidiyor hadi hayirlisi :D Yorum Yaz * Ad Soyad: * Email: * Message:
Yorum (1) Mahmut KANTAR / 23.1.2009 09:03:51 Bu aralar sende bi silverlighttir basladi gidiyor hadi hayirlisi :D
Mahmut KANTAR / 23.1.2009 09:03:51 Bu aralar sende bi silverlighttir basladi gidiyor hadi hayirlisi :D