1 Eylül 2009

.Net Compact Framework 3.5 – WCF Servislerinin Kullanımı

Bilindiği üzere .net Compact Framework 3.5 sürümünün en heyecan verici yeniliklerinden birtanesi halihazırda kullanılıyor olan WCF servislerine “belirli kısıtlamalarla” erişilmesine verdiği destektir. Windows Communication Foundation, kısa adıyla WCF, .Net Framework 3.0 ile birlikte hayatımıza giren yeni nesil dağıtık uygulama geliştirme iletişim arabirimidir. Birçok dağıtık uygulama geliştirme teknolojisini bünyesinde barındıran WCF, dekleratif konfigürasyon özelliğiyle servis geliştiricilerin hayatını ciddi anlamda kolaylaştırmaktadır. Bu yazımızda hali hazırda kullanıyor olduğumuz basit bir WCF servisine .Net Compact Framework 3.5 kullanılarak geliştirilmiş bir mobil cihaz uygulamasında nasıl ulaşabileceğimizi ve servis çağrılarının nasıl gerçekleştirilebileceğini örneklendireceğiz.

Örneğimize başlamadan önce .Net Compact Framework 3.5 üzerinde desteklenen WCF içeriği hakkında kısaca bilgilenelim. Bilindiği üzere .Net Compact Framework 3.5 üzerinde sınırlı bir WCF desteği verilmektedir. Bu noktada belkide hissedebileceğimiz en büyük eksiklik hali hazırda kullanabiliyor olduğumuz Binding’ lerden sadece basicHttpBinding’ in destekleniyor olmasıdır. Bunun dışında Custom Binding, WindowsMobileMailBinding ve ExchangeWebServiceMailBinding desteklenmektedir. .Net Compact Framework 3.5 üzerinde desteklenen WCF’ in tüm özelliklerine http://blogs.msdn.com/andrewarnottms/archive/2007/08/21/the-wcf-subset-supported-by-netcf.aspx adresinden erişebilirsiniz. Bunun dışında masaüstü uygulamalardan WCF servislerine bağlanmak istediğimizde Visual Studio 2008 üzerinde görsel olarak kullanabildiğimiz NetSvcUtil.exe aracı .Net Compact Framework 3.5’ ta direk desteklenmemekte, http://download.microsoft.com/download/6/2/0/6205ED05-E435-44FC-AA82-B763CA5F8B1A/NetCFSvcUtil.exe adresinden indirebileceğiniz NetCFSvcUtil.exe vasıtasıyla Proxy sınıfları oluşturulabilmektedir.

Hiç vakit kaybetmeden örneğimize geçelim. Örneğimiz 2 projeden oluşmaktadır ; mobil cihaz üzerinden çağrıda bulunacak olduğumuz WCF servisi ve çağrıda bulunacak olan mobil cihaz uygulamamız. İlk olarak WCF servisimizi geliştirelim.

WCF servisimiz için bir Console Application projesi açıyoruz ve System.ServiceModel referansını ekliyoruz.



Projemize ServiceLibrary adında bir klasör ekliyoruz ve klasör içerisine Service Contract’ ımızı tanımlayabilmemiz için bir Interface (Arayüz) ekliyoruz. IMobileService ismini verdiğimiz arayüzümüz içerisine aşağıdaki tanımlamaları yapıyoruz.



Bir sonraki aşamada Service Contract arayüzümüzü implemente ettiğimiz Service sınıfımızı oluşturuyoruz.

Ve sıra geldi konfigürasyona. Projemize App.config dosyasını ekliyoruz ve aşağıdaki servis konfigurasyonunu tanımlıyoruz.

Büyük Halini Görmek İçin Tıklayınız

Servis tanımlamasını yaptıktan sonra mobil cihaz uygulamamız üzerinden erişebileceğimiz bir Endpoint tanımlıyoruz. Endpoint’ in Binding parametresi basicHttpBinding değerine sahiptir. Ve son olarak Servis’ i Console uygulamamız üzerinden aşağıda kod bloğu vasıtasıyla başlatıyoruz.

Uygulamamızı başlattığımızda aşağıdaki görünümü elde etmiş olmak durumundayız.


Servis adresini tarayıcımız üzerinden ziyaret ettiğimizde ise ;

Servis metadata erişim sayfasına ulaşabilmekteyiz. Sıra geldi bu servise ulaşacak mobil cihaz uygulamasını geliştirmeye. Hızlı bir şekilde vakit kaybetmeden bir Mobil Cihaz projesi açıyoruz ve ekran üzerine bir metin kutusu ve bir button kontrolü yerleştiriyoruz.



Bilindiği üzere masaüstü uygulamalarından WCF servislerine erişebilmek adına ilgili Visual Studio üzerinde Proxy sınıflarını üreten görsel bir araç bulunmaktadır. Bu araca “Add Service Reference” menü elemanı üzerinden erişebilmektedir. Araç arka tarafta NetSvcUtil.exe aracını çalıştırmakta ve proxy sınıflarını barındıran ilgili çıktıları aracın çalıştırıldığı projeye eklenmektedir.



Araca tıkladığımızda uzaktaki WCF servisine erişecek Proxy sınıflarını oluşturacak aşağıdaki araç açılmaktadır.



Gelelim işin detayına. Böyle bir görsel araç mobil cihaz uygulama projeleri için maalesef bulunmamaktadır. İşin enteresanı standart Visual Studio ile Proxy sınıfını oluşturabileceğimiz NetCFSvcUtil.exe aracıda birlikte gelmemekte, yazının başında belirtilen adresten ayrıca indirilmesi gerekmektedir. Aracın indirilmesinden sonra servisimizi çalıştırıyoruz ve araca aşağıdaki komut değerlerini göndererek konsol üzerinden çalıştırıyoruz.



Ekran görüntüsünden de anlaşılabileceği üzere çalışılan servise bağlanılmış ve iki adet çıktı üretilmiştir. Bu çıktılar varsayılan lokasyona oluşturulmuştur. Bir sonraki aşamada yapmamız gerekenler bu çıktıları kopyalayıp mobil cihaz projemize yapıştırmak ve proxy sınıfını örneklendirerek çalışan servise ulaşmak olacaktır. Dosyaların ikisinide projemize kopyalıyoruz.



Ve button’ a tıkladığımızda aşağıdaki kod bloğunu yazıyoruz.



İşte bu kadar ! Proxy sınıfının bir örneğini oluşturup fonksiyonumu çağırıyoruz. Gerekli koşulları sağlayıp uygulamamızı çalıştırdığımızda ise ;



Hepsi bu kadar ! Mobil cihaz uygulamamız WCF servisi üzerinde tanımlı fonksiyonumuz ile haberleşmekte ve değerler karşı tarafa taşınmaktadır.

Geliştirilen örnek uygulamayı buradan indirebilirsiniz. Bir başka yazıda daha görüşmek üzere.

Hiç yorum yok:

Yorum Gönder