Dağıtık uygulama senaryolarına baktığımızda muhtemelen
karşılaşabileceğimiz en büyük problem ortam içerisindeki cihazların
birbirleriyle haberleşme esnasında kullanacakları platformdur. Kullanılacak
olan altyapının maliyeti yükseltmesi ; ticari bir ortamda pekte hoş karşılanmayacaktır.
Bu noktada esnek, geliştirilebilir, güvenli ve “maliyeti düşük” bir platforma
ihtiyaç duyulmaktadır.
Olaya bu perspektif üzerinden baktığımızda XML Web
Servislerinin bu ihtiyacı fazlasıyla karşıladığını ; dağıtık uygulama
senaryolarında “lokasyon’ dan bağımsız” sistemleri birbirlerine maliyeti
yükseltmeden bağlayabildiğini rahatlıkla söyleyebiliriz. Belirli güvenlik
seçenekleri çerçevesinde XML Web Servisleri yeni jenerasyon uygulama
geliştiricilerin dağıtık uygulama senaryolarında tercih olarak seçebilecekleri
başarılı seçeneklerin başında gelmektedir.
Bu makalemizde ise dağıtık uygulama senaryolarında en sık
karşılaşılabilecek bir senaryoyu ; Mobil Cihazlar üzerinde XML Web
Servislerinin kullanımına değineceğiz.
Bu noktada konunun daha rahat anlaşılabilmesi açısından
makalenin devamında örnek bir uygulama geliştirilecektir.
Hiç vakit kaybetmeden makalemizin ilk bölümünde Mobil
Cihazlar üzerinden çağırılabilecek bir Xml Web Servisi geliştirelim. İkinci
aşamada ise bu Web Servisi ile Mobil Cihaz uygulamamız arasındaki bağlantıları
gerçekleştirip makalemizi bitireceğiz.
Web Servisimiz girişi yapılan ürün numarası üzerinden
kullanıcının Mobil Cihaz üzerindeki uygulamasına gerekli ürün bilgilerini
gönderecektir. Bu noktada uygulama güvenliği kullanıcıdan alınan Müşteri kodu
olacaktır.
Uygulamamıza başlamadan önce örneğimizde kullanacak
olduğumuz veritabanının Northwind veritabanı olduğunu bu noktada
belirtmek doğru olacaktır.
Hiç vakit kaybetmeden XML Web Servisimizi geliştirmeye
başlayalım. XML Web servisimiz içerisinde iki adet metot olacaktır. Metotlardan
ilki kullanıcıdan Müşteri Kod bilgisini isteyecek ve eğer bu bilgiyi Customers
tablosu üzerinden doğrulayabilirse uygulamanın ikinci ; Ana ekranını ekrana
getirecektir. Bir diğer metot ise Kullanıcı bilgilerinin doğrulanmasından sonra
Kullanıcıdan ürün numarasını isteyecek ; sorgulama sonucunda ise eğer bilgi
doğrulanabilirse ilgili ürün bilgisini ekrana getirecektir.
İlk olarak Yeni bir Asp.NET Web Servis projesi oluşturarak
işe başlayalım.

Proje başarıyla oluşturulduğunda ilk adımda Müşteri Kod
bilgisini kontrol eden metodu yazarak örneğimize devam edelim.

Metodu ayrıntılı bir şekilde incelediğimizde yapının çokta
karmaşık olmadığını rahatlıkla anlayabiliriz. Metot kullanıcıdan string tipinde
Müşteri Kod bilgisini istemekte ve bu bilgiyi doğrulaması sonucunda kullanıcıya
sonuç ile ilgili bool tipinde bir değer döndürmektedir. Metodumuzu Internet
Tarayıcımız üzerinden denediğimizde ;

Müşteri adı olarak “ALFKI” değerini giriyoruz ve metodumuzu
tarayıcımız üzerinden Invoke ediyoruz.

Ve sonuç ! Metodumuz başarılı bir şekilde müşteri kod
bilgisini veritabanı üzerinden sorgulayabilmektedir. Sıra geldi ikinci
metodumuza. Bu noktada kullanıcımız başarılı bir şekilde giriş yapabilmiş ise
ürün numarasını ikinci metodumuza parametre değeri olarak gönderecek ; ürün
numarası tablo içerisinde bulunabilmiş ise ilgili ürünün bilgileri kullanıcıya
ArrayList içerisinde döndürülecektir.

Metodu ayrıntılı bir şekilde incelediğimizde DataReader
üzerinden dönen tek bir satır olduğunu ; bu satırı satırın içerisindeki kolon sayısı
kadar dönen bir döngü içerisinde okuduğumuzu rahatlıkla anlayabiliriz. Satır
içerisindeki her bir kolon “Kolon Adı : Kolon Değeri” şeklinde ArrayList
içerisine eleman olarak eklenmektedir.
Uygulamanın ikinci metodunu tarayıcımız üzerinde test
ettiğimizde :

Metodu çalıştırmak istediğimizde :

1 değerini metin kutusu içerisine giriyoruz ve Invoke
button’ una tıklıyoruz.

Ve sonuc ! Mükemmel ! Sıra geldi mobil uygulamamıza. Mobil
uygulamamız içerisinde iki adet form bulunacaktır. Formlardan ilki kullanıcıyı
karşılayacak ; Müşteri kod bilgisini kullanıcıdan isteyecektir. Kullanıcının bu
bilgisi Web Servisi üzerinden doğrulandığında uygulamamızın ikinci formu ekrana
gelecek ve gerekli bilgiler kullanıcıdan istecenecektir. Bu noktada Mobil Cihaz
uygulamamızı geliştirmeye geçmeden önce Web Servisimizi Lokal Web sunuzumuz
üzerinden Publish etmemiz gerekmektedir. Bu şekilde Web Servisimiz Lokal
Makinemiz üzerinden dış dünyaya sunulmuş olacaktır.Projemizin üzerine sağ
tıklıyoruz ve Publish Web Site seçeneğini seçiyoruz.

Gerekli değerleri belirleyip OK’ e tıklıyoruz.

Tek yapmamız gereken uygulamamızın bulunduğu klasörü Internet
Information Services üzerinde bir Application Folder (Uygulama Klasörü) olarak
tanımlamış olmak.

Seçeğe tıkladığımızda ise :

OK’ e tıklayarak uygulamamızı IIS üzerinde tanımlamış
oluyoruz.
Artık web servisimize http://MakinemizinAdi/UygulamaAdi/Service.asmx
adresi üzerinden erişilebilmektedir.
Vakit kaybetmeden makalemizin ikinci bölümüne devam edelim.
İlk olarak işe yeni bir C# - Smart Device – Device Application uygulaması
açarak başlıyoruz.

Bir sonraki adımda ise proje içerisinde standart olarak
gelen Windows Form’una ek olarak yeni bir Windows Form ekliyoruz. Form’ un isim
değerine frmMAIN değerini atıyoruz.

Ve uygulamamızı geliştirmeye başlıyoruz. İlk form yani
frmLOGIN içerisinde şekildeki tasarımı gerçekleştiriyoruz.

Web Servisi entegrasyonu kısmına geçmeden önce ikinci yani
Ana Formumuzu’ da geliştirelim.

Ve sonuç ! Form üzerine bir metin kutusu, bir button ve bir
Liste kutusu ekledikten sonra sıra geldi Web Servis entegrasyonuna. Bu noktada
olayın ne kadar kolay olduğunu ifade edebilmek amacıyla sadece şunu söylemek
yeterli olacaktır ; .NET Framework üzerinde bu iş nasıl gerçekleştiriliyorsa
.NET Compact Framework üzerinde de o şekilde ! Projenin References sekmesi
üzerine sağ tıklanıp Add Web Reference seçeneği üzerinden uygulama
geliştiriciler Mobil Cihaz projeleri üzerinde Web Servislerini kullanabilirler.
Add Web Reference seçeneği üzerinden Web Servisimizi Mobil
Cihaz uygulamamız ile ilişkilendiriyoruz.

Ve Web Servisimizin lokasyonumuzu yazıyoruz. Bu noktada
dikkat etmemiz gereken yapı Web Servisimizin Lokaldeki makinamız üzerinde
bulunmasından ötürü adresi “localhost” şeklinde belirtmiş olabiliriz. Bu adres
modeli Mobil Cihaz üzerinde bulunamayacak ; haliyle Web Servisimiz ile Mobil
Cihazımız haberleşemeyecektir. Doğru adres değeri ise Web Servisinin bulunduğu
makinenin ismini ; yani makinemizin ismini yada IP adresimizi değer olarak
belirleyerek soruna çözüm bulmuş olabiliriz.

Ne kadar basit değilmi ? Standart .NET Framework masaüstü
uygulamalarında olduğu gibi tek yapmamız gereken Web Servisimize erişebilecek
“Proxy” sınıfının otomatik olarak oluşturulabilmesi için “Add Reference”
button’ una tıklamak olacaktır.
Web Reference Name değerine NorthwindWS değerini belirleyip
“Add Reference” seçeneğine tıklıyoruz.

Ve sonuç ! Sıra geldi uygulamamızın giriş ekranı üzerindeki
kod bloğunu hazırlamaya. Tek yapmamız gereken uygulama açıldığında Servis Proxy
sınıfımızın bir kopyasını almak ve Kullanıcı bilgilerini kontrol eden metodu bu
kopya üzerinden çalıştırmak olacaktır.

Kodları şekildeki gibi belirledikten sonra uygulamamızı
Fiziksel Cihaz / Emülatör üzerinde çalıştırıyoruz.
Değer olarak ilk adımda yanlış bir Müşteri Kod bilgisi giriyoruz.
İkinci adımda ise doğru bir değer girdikten sonra ana ekran görünümünün ekrana
geldiğini görmemiz gerekmektedir.

Doğru bir Müşteri Kod bilgisi girdiğimizde ise :

Uygulamanın ana ekranı ekrana gelmektedir. Tek yapmamız
gereken ana ekran üzerinde çalışacak olan kodları yazmaktır. Gerçekleştirilecek
tek eylem girilen ürün numarası bilgisini Web Servisimiz üzerindeki ilgili
metoda göndermek ve gelen object[] içerisindeki metinleri liste kutusu
içerisine eklemektir.

Uygulamayı Fiziksel Cihaz / Emülatör üzerinde
çalıştırdığımız ve Müşteri Kod bilgisi ekranını başarılı bir şekilde geçtikten
sonra :

Ve sonuç !
Ürün numarası Web Servisi üzerinden veritabanımızda
sorgulanıp gerekli ürün bilgisi ekrana getirilmiştir !
Bu makalemizde örnek bir Web Servisi uygulamasının Mobil
Cihazlar üzerinde kullanımına değindik, başka bir makalede daha görüşmek üzere.