WCF bir servis teknolojisidir. WCF, farklı makineler üzerinden farklı uygulamaların birbirleriyle iletişim kurmasını sağlayan bir sistemdir. Framework 3.0 ile birlikte gelmiştir.
Bir WCF web servis modelini açıklamak için .
- Önce “File -> New -> Project” ten bir WCF Service Library ekleyip projeye bir isim veririrz. (Bilgi ismini verdiğimizi varsayalım.)
- Projede gelen Service.cs ve IService.cs classlarını sileriz ve projeye sağ tıklayıp bir interface ekleriz.
namespace Bilgi { [ServiceContract] interface IHesaplama { [OperationContract] int HesapTopla(int Sayi1, int Sayi2); [OperationContract] int HesapCarpma(int Sayi1, int Sayi2); [OperationContract] int HesapBolme(int Sayi1, int Sayi2); } }
- Daha sonra da bir class ekleyip bu classı interfaceden kalıtır ve implemente ederiz.
class Hesaplama : IHesaplama { public int HesapBolme(int Sayi1, int Sayi2) { return Sayi1 / Sayi2; } public int HesapCarpma(int Sayi1, int Sayi2) { return Sayi1 * Sayi2; } public int HesapTopla(int Sayi1, int Sayi2) { return Sayi1 + Sayi2; } }
- Buraya kadarki kısım bizim Contract ve implementationlarımızı içerir yani sunacağımız hizmetleri contractlara bağladığımız ve esas hizmetleri yani implementatonları yaptığımız servis kütüphanesi kısmıdır. İleride bir servis tanımlayacağız ve servis bu servis kütüphanesini kütüphane olarak kullanacak.
- Daha sonra servisimizi oluşturmak için solution üzerine sağ tıklayıp “Add-> New Web Site” seçeneğini tıklarız ve gelen pencereden “WCF Services” seçeneğini tıklayıp adına “Bizimservis” ismini veririz. Tanımladığımız servisle bazı hazır şablonlar gelecektir. Service.svc dosyası dışındaki tüm dosyaları sileriz.
- Daha sonra service.svc dosyamızın bulunduğu projeyi seçip Bilgi.Dll dosyamızı referans ederiz. Bunun için Bizimservis projesinin üstünde sağ tıklayıp açılan pencereden Add Reference seçeneğini seçeriz. Karşımıza gelen pencereden Projects tabından Dll dosyalarını seçeriz. Ve böylece bizimservis adlı projemize dll dosyalarının eklendiğini görebiliriz.
Bu sayede tanımladığımız servis daha önce tanımladığımız servis kütüphanesini tanıyor olur.
DLL NEDİR?
Dynamic Link Library (Dinamik Bağlantı Kütüphanesi) kelimelerinin baş harflerinden oluşturulmuş bir kısaltmadır. Program çalışma esnasında gerekli olan fonksiyonları kendi içerisinde bulamaz ise bunu dinamik link kütüphanesi’nde yani DLL dosyasında aramaktadır. Programlar işlevlerini devam ettirmek için DLL dosyaları içerisinde bulunan işlemlerden yardım alarak çalıştırma bütünlüğü sağlamaktadır.
Bir projeden diğer projeye erişmek istiyorsak bir projeyi DLL haline getirip diğer projeye referans olarak eklememiz gerekir. Böylece diğer proje içerisindeki classlara ve metodlara ulaşabiliyor oluruz. Yeri gelmişken söylemek gerek , namespaceler sadece classları içerebilirken , dll’ler birden fazla namespaceleri içerebilen yapılardır.
- Daha sonra eklediğimiz DLL’imizin servisimize tanıtılması gerekir. Servis.svc içerisindeki
<%@ ServiceHost Language=“C#” Debug=“true” Service=“Service” CodeBehind=“~/App_Code/Service.cs” %> kısmını
<%@ ServiceHost Language=“C#” Debug=“true” Service=“Bilgi.Hesapla” CodeBehind=“~/App_Code/Service.cs” %> olarak değiştiririz.
Çalışma bilgilerimizi kaydetmek için de bir configurasyon dosyası oluşturmamız gerekir. Bunun için Bizimservis projesine sağ tıklayıp “add new ıtem” seçeneğinden “Web configurations” seçeneğini seçip “Add” deriz. Bunun sonucunda bir web.config eklemiş oluruz.
- Bu web confige sag tuş ile tıklayıp “Edit WCF Configuration”‘u tıklarız. Karşımıza gelen sayfada “Create a New Service” seçeneğini seçeriz. Biz burada bir servis nesnesi oluşturmuş olacağız.
- Karşımıza çıkan sayfada servis type’ı Hesaplama , contractı da IHespalama olarak seçeriz.
- Daha sonra karşımıza gelen pencerede dağıtım mimari modelleri gelir. HTTP’i seçip Next butonunu tıklarız. İleriki sayfalara da next dediğimizde bize bir adres soruyor olacaktır. Bu adres projemizde IIS üzerinden yer alan SVC dosyamızın adresini vermemiz gerekmektedir. Bu uygulamada SVC dosyamızın adresini öğrenebilmek için WCF penceresini kapatmadan kod alanına gelip service.svc dosyamızın üzerine sağ tıklayıp “view in browser”‘i seçmemiz gerekir. Yukarıdaki adresi de gerekli yere yazmalıyız. Bu bize bir endpoint oluşturur.
- Oluşan endpointe “configurasyon” kısmından bir isim verebiliriz. Daha sonra da sayfayı kapatabiliriz.
- Daha sonra Service.src’yi yine browserda açtığımızda artık servis çalışıyor olacaktır. Ancak WCF servisi bize servis adresini güvenlik nedeniyle vermiyor olacak. Bunu açmak için Web.config dosyamızın üzerinde sağ tıklayıp WCF configuration seçeneğini seçelim. “Advanced -> Service Behaviour “seçeneğini tıklayalım. Açılan sayfada “New Service Behaviour Configuration” seçeneğini seçelim. Add ile de “serviceMetaData” seçeneğini seçelim ve bunu services klasörünün altındaki yere ekleyelim. Davranışın “getEnabledini”true yapalım.
- İşlem bittikten sonra tekrar Service.svc dosyamıza sağ tıkladığımızda ve View in browser dediğimizde artık servisimize ait adres gözükecektir. Artık WCF servisimizi tamamlamış olduk. Bu servisi kullanarak işlemlerimizi yapabiliriz.
- Bir yeni proje oluştırup bu projeye servisimizi eklemek için “Web Site -> Add Service Reference” seçeneğini tıklayalım. Karşımıza gelen seçenekte “Address ” kısmına bize verilen svcutil adresini yazıp okey’e tıklayalım. Artık servisimiz uygulama içerisinde kullanıma hazırdır.