Silverlight ile 31 Gün yazi dizimizin altinci günündeyiz. Bu yazimizda size Silverlight’ta asenkron olarak bir web servis çagirmanin ne kadar kolay oldugunu gösterecegiz.
Niçin Twitter?
Twitter’in yazilim gelistiricilere sundugu sonsuz imkanin disinda, bunu yapmamizin baska bir sebebi daha var. Twitter uygulamalari, yeni "Merhaba Dünya!" uygulamalaridir. Ekrana daha fazlasini yazabilmek de asla yeterli degildir. Simdi Web servislerinden bahsedip, bu mevzuyu ekrana yazdirabilmemiz gerekir. Bu yazimizda bunu görecegiz.
Silverlight Sayfamizin Hazirlanmasi
Basitçe içinde dört tane TextBlock barindiran yeni bir sayfa olusturuyorum. Bunu çok farkli yöntemlerle yapabilirsiniz. Ben blogumun basligini yaptigim yöntemdeki gibi bir yolu tercih ediyorum. Bu olusturdugumuz TextBlocks’larimizi Twitter hesabimizdaki en son yazdigim mesajlarla dolduracagiz. Temel XAML’imiz söyle görünmeli:

Belki farketmissinizdir, burada Grid isminde bir konseptimiz var. Silverlight’ta yapabilecegimiz düzenleme ayarlari hakkinda bir dizi baslik yazmistim. Orada Canvas, Grid ve StackPanel hakkinda bilgiler okuyabilirsiniz.
Twitter’dan bahsedelim.
Twitter API’lerini direkman sayfamiza çagirmadan önce düsünmemiz gereken seyler var. Ben simdi bu kismi halledecegim. Baska bir domainde web servisi çagirmak için su iki yola basvurulur:
1.Twitterci gençleri çagirip onlardan domain geçis ilkelerini benim için girmelerini isteyebilirim.
2.Benim için bu isi halledecek bir proxy web servis olusturabilirim.
Hangisinin uygulamasinin daha kolay olacagini tahmin ediyorsunuzdur, tabii ki 2. seçenegi.
Birkaç Class olusturalim.
Web projenize sag tiklayin ve 2 yeni class olusturun: Biri TwitterUser biri de TwitterStatus. Bu islem oldukça kolay. Üstelik buna mecburuz, özellikle de bu uygulamayi daha sonralari ekmek istedigimiz zamanlar.
TwitterUser

TwitterStatus

Kendi web servisimizi olusturalim.
Standart bir ASMX web servisi kullaniyoruz ve WebMethod isminde Twitter’dan bilgileri alip bunlari listeye geri döndüren bir de metodumuz var.

Bunlar bir kaç satir kod gibi görünebilir ama çok daha basit bir sey. Sadece Twitter API’yi çagiriyoruz, XML yaniti veriyoruz ve TwitterStatus listesinin nesnelerinin sayisini arttirmak için de LINQ ile XML yanitini birbirinden ayristiriyoruz. Simdi de muhtemelen bu servisi çagirmak için Silverlight uygulamamizi kurmamiz gerekecek.
Silverlight’tan Servis Çagiralim.
Baslangiç metodumuzda web servisi bizim için çagiracak olan metodumuz GetTweets()‘i çagiriyorum. Ilk olarak SoapClient’i bizim için olusturuyor ve ikinci olarak da asenkron bir çagri yapildiginda bunu devredisi birakacak olan SoapClient’imizda bir olay görüntüleyici olusturuyoruz. Üçüncü satirda, asenkron çagriyi yapiyor ve bununla da Twitterla özdeslesmis kullanici adini geçisyoruz.
Daha sonra, olay görüntüleyici metod TwitterStatus listesinden sonuçlari aliyor ve baslangiçta olusturdugumuz dört TextBlocks’umuzun her birine tek tek bu metni atiyor.
Sonuç
Hesabimizdaki en son girdigimiz dört tweetimizi bu text blocklarimiza yerlestirdik. Çok zor degilmis, degil mi?

Örnek Kod
Twitter API kullanarak hazirladigimiz Silverlight uygulamasini color=#0000cc buradan görebilirsiniz. Uygulamaya ait kodlari da color=#0000cc buradan indirebilirsiniz.
Haberci Destek Tim adina çevirisi Hanefi tarafindan yapilmistir.