WCF, SOA (Service Oriented Architecture) mimarisinin uygulama modellerinden birisidir ve Framework 4.0 ile de artık yönetimi iyice kolay hale gelmiştir. Kısaca WCF’ten bahsettikten sonra, basit bir uygulama ile IIS 7.0’da nasıl host edeceğimizi anlatacağız.
WCF girişinde her zaman anlatılan WCF’in ABC’si ile başlayacağım. İşin içinde akrostiş olduğunu söyleyip şiir severlerin de ilgisini çekelim. Bu ABC:
ADDRESS: Servisin hangi taşıma protokolü (TCP, HTTP, HTTPS, vs.) ile ve hangi adresten, hangi porttan yayın yapacağını belirtir. http://localhost:8095/MyService.svc gibi.
BINDING: Temel olarak, servisler ile nasıl iletişim kurulacağını tanımlamak üzere kullanılırlar.
.NET varsayılan olarak basicHttpBinding’i servisinize atar. Özelleştirmek isterseniz config dosyasından gerekli değişikliği yapabilirsiniz. Diğer binding tipleri şunlardır:
CONTRACT: Bir servisin ne iş yaptığının bilinmesinde yardımcı olurlar. Temel olarak,
[Service Contract] [DataContract] [MessageContract] [Fault contracts] contract’ları mevcuttur.
Daha sonraki yazılarımızda yukarıdakilere de değiniyor olacağız ama merak edenler için, bunlar araştırmalar için iyi birer keyword olabilirler.
Örneğe geçmeden önce kısaca hosting seçeneklerimizden de bahsedelim ve örneğe geçelim.
WCF Hosting Seçenekleri
IIS Hosting Sefl Hosting
(WAS) Windows App. Serv.
WinClient
Console App.
Win. Serv.
Servisi ve client’ı aynı solution içinde oluşturacağımızdan, Visual Studio’da, önce “Blank Solution” açıyoruz.
Solution Altında iki klasör oluşturuyoruz. Biri servisimizi, diğeri de client projesini barındıracak. Sonra da, bu klasörlerden Client altına bir console uygulaması ekleyelim ki, bizim istemcimiz olacak. Service altına da WCF Service Apllication projeleri ekliyoruz. Bunu, klasörün üzerine sağ tıklayıp Add > Add New Project aracılığıyla yapabiliriz.
Aşağıdaki interface sınıfına kullanacağımız metodun imzasını atıyoruz.
Sonrasında da, bu metodu service sınıfında hayata döndürüyoruz ve client’ımızın kullanabileceği hale dönüştürüyoruz. Ama client’ımız sadece bizim interface’teki metodumuzun imzası üzerinden buraya ulaşabiliyor. Servisimizin çalışabilmesi için de config dosyamıza:
Bu oluşturduğumuz servisi yayınlamadan önce, IIS üzerinde yapmamız gereken birkaç basit işlem var. Gelin onlara değinelim. Eğer IIS’iniz yüklü değil ise, Programlar ve Özellikler’den, Windows Özelliklerini aç veya kapat seçeneğinden IIS’ i kurmamız gerektiğini unutmayalım.
IIS kurulu ise IIS Manager’ı açalım ve Siteler’e sağ tıklayıp Yeni Site Ekle’yi seçelim.
Site adını ve fiziksel yolu giriyoruz. Fiziksel yol olarak C: altında inetpub>wwwroot yazılmalıdır. Bağlantılara spesifik bir port adını da belirterek istenilen porttan yayın yapması sağlanabilir.
Bundan sonra servisimizi yayınlayabiliriz ama önce uygulama havuzundan WcfServisim’i, .NET Framework sürümü kısmından da 4.0’ı seçiyoruz. Böylece yayınlarken sürüm hatası almayız.
Publish method olarak Web Deploy seçilir. Servis URL’i olarak localhost’umuzu ve portumuzu belirtiyoruz ve site olarak da IIS’te verdiğimiz ismi kullanıyoruz. Böylece servisimizi yayına sokmuş olduk.
Sitemizin çalışıp çalışmadığını servis URL’i tarayıcımıza yazarak test edebiliriz.
Sona yaklaşıyoruz. Sıra, servisimizi client uygulamamıza eklemeye geldi. Client uygulamasına sağ tıklayıp Add Service Reference’ı seçiyoruz. Adres sekmesine servisin adresini yazıp Go butonuna basıyoruz. Servisimize bir isim verip Ok butonuna bastığımızda servisimiz kullanıma hazır hale gelmiş olur.
Servis programımıza aşağıdaki gibi erişebilir ve kullanabiliriz.
Ekran çıktısı olarak ise şöyle olacaktır: