Makale Özeti

Bu makalemizde dağıtık ortam senaryoları içerisinde en sık karşılaşabileceğimiz bir senaryoya ; Mobil cihazlar üzerinde Web Servislerinin kullanımına Windows Vista Üzerinde değineceğiz.

Makale

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.


Ekin ÖZÇİÇEKÇİLER
Microsoft Certified Trainer
ekin.ozcicekciler@bilgeadam.com
MCP, MCAD.NET, MCSD.NET, MCSD.NET, MCTS, MCPD Ent.