WCF Nedir?

WCF Nedir?

27 Haziran 2020 0 Yazar: Ertan Eryılmaz

Windows Communication Foundation WCF, servis-yönelimli mimariyi temel alarak dağıtık-uygulamalar geliştirmek için kullanılan, dağıtık mimari modelleri ve teknolojileri tek çatı altında birleştiren ve içerisinde bir çok hazır bileşen barındıran bir Framework API‘sidir. (Bknz. Service Oriented Architecture)

Ayrıca WCF mimarisi, .NET Remoting, XML Web Servisleri, Web Service Enhancements (WSE), Enterprise Services/COM+ ve Microsoft Message Queue(MSMQ) gibi bir çok dağıtık uygulama geliştirme modelinin tek bir programlama modeli içerisinde geliştiriciye sunmaktadır.
WCF Temelleri
Bir webservistir, web servislerin kullanım mantığı ise masa ütünden web sitemizde çalışması gereken kodları çalıştırabilmektir. Örneğin winapi?mizde login işlemimiz var ama kullanıcı adı ve şifremiz web teki veri tabanımızda. Bir sitedeki veri tabanına ulaşmak istiyorsak o site içinden kodlama yapmalıyız. Web servisimiz işte tamda bu işe yarıyor. Servisimizi yazıyoruz ve sitenin içine koyuyoruz. Daha sonra winapimizden bu servisi çağırıyoruz ve servis internette çalışarak bize istediğimiz sonucu veriyor. Kullanıcı adı ve şifreyi servisimize parametre olarak yollayıp , sonucu true ve false olarak alabiliriz. Bunun gibi bir çok kullanım yeri vardır, günümüz Web ortamında servise ihtiyaç duymadığımız zaman yok dersek yalan olmaz. Gene fazla laf kalabalığı yaptım, o zaman hemen nasıl kullanılacağına geçelim, servisimiz bir asp .net sitesinin içinde olucak, yeni bir asp.net wep application Project oluşturuyorum.

Bir sonraki adımda oluşturduğum projeye sağ tuşa basıp add->new item diyerek wcf servsini seçebileceğim menünün açılmasını sağlıyorum.

Açılan menüden Wcf servisini seçiyorum. Seçim işlemini yaparken verdiğimiz isme dikkat etmemiz gerekiyor. Biz bir tane kullanıcağız, o yüzden ismini service1.svc olarak bırakıyorum. Ve add butonuna basarak projemin içine dahil ediyorum.

Ve artık servisimi yazmak için gerekli olan tüm yapılara sahibim. Aşağıda gördüğünüz üzere Iservice1.cs ve Service1.svc altında iki tane yeni item eklendi projemize. Iservice dosyasının içinde kullanacağımız fonksiyonların tanımını yapacağız, service1.svc dosyasının altında ki cs uzantılı dosyada ise Iservice.cs’de yani kotratımızda tanımladığımız fonksiyonu kodlayacağız. Yani ilkinde benim böyle fonksiyonlarım var diye bir sözleşme yapıyoruz. Daha sonra diğerinde bu sözleşmedeki tanımlamaya bağlı kalarak fonksiyonlarımızı kodluyoruz.

Şimdi sözleşmemizin (Iservice.cs) içine bir bakalım neler var ?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.ServiceModel;
using System.Text;
namespace aspsitem
{
// NOTE: If you change the interface name “IService1” here, you must also update the reference to “IService1″ in Web.config.
[ServiceContract]
public interface IService1
{
[OperationContract] void DoWork();
}

Burda default olarak Dowork fonksiyonu gelmiş. Biz bunu silip kendi fonksiyonumuzu yazacağız.

Dowork fonskiyonunu silerek kendi fonksiyonumuzu yazacağız.

bool giris(string isim, string sifre);

Ondan sonra service1.svc.cs dosyasına geçip ordaki dowork fonksiyonunuda siliyoruz. Ve Service1:Iservice1 yazısının üstüne geldiğimizde sözleşmede tanımadığımız fonksiyonu üretmek için bize bir seçenek sunuyor.

#region IService1 Memberspublic bool giris(string isim, string sifre)
{
throw new NotImplementedException();
}
#endregion

throw ile başlayan satırı silip gelen kullanıcı adı ve şifreyi işlemek için bir kod yazıcağız.

if (isim==”MehmetBilen.Com”&&sifre==”1986”)
{
return true;
} return false;

Ve build edip projemizi kapatıyoruz. Artık herhangi bir projede bu webservisini kullanabiliriz. Hemen bir web application açalım. Ve projemize add web service reference ekleyelim.

Ve Açılan menüden web servisimizi kaydettiğimiz adresimizi yazarak go diyoruz. Aynı proje içine eklemiş olsaydık discover diyecektik. Kaydettiğimiz adres derken buil ederken localhostta bir adrese kaydeder o adresi belirtebiliriz. Veya publish etmişsek asp sitesini service1.svc dosyasının olduğu adresin buraya yazmamız lazım.

Giriş fonksiyonumuz direk gözüktü. Ok deyip projemize web servisi dahil edelim ve projemizde gerekli tanımlamalarımızı yapalım.

ServiceReference1.Service1Client servisim = new WindowsFormsApplication1.ServiceReference1.Service1Client();

Bu tanımlamadan sonra servisteki tanımlanan fonksiyonları kullanabilirim. Formumuza iki textbox ve bir buton ekleyip butonun click olayını aşağıdaki şekilde kodlayalım.

private void button1_Click(object sender, EventArgs e)
{
bool sonuc = servisim.giris(textBox1.Text, textBox2.Text);if (sonuc == true)
{
MessageBox.Show(“Tebrikler Giriş Başarılı”);
}
else MessageBox.Show(“Hatali giriis, Lutfen tekrar deneyiniz”);
}

Artık programımız hazır, derleyip çalıştıralım.