Wcf web servislerinin gelişmiş hali diyebiliriz. .net içerisinde yer alan iletişim araçlarını (bunlar soap remoting xml web servisleri vb.) bir çatı altında toplayan yapıdır diyebiliriz.
Peki nerde kullanabiliriz wcf yi ? Thy ele alalım sitesinden bilet satışı ve rezervasyon işlemleri yapılıyor bu işlemleri de thy ye ait serverımızda bulunan veritabanından gerçekleştiriyoruz. İşte bu nokta da wcf devreye giriyor. Wcf de servisimizi hazırlıyoruz ve sitemize koyuyoruz programımızdan da servisi çağırdığımızda yapacağımız işleme göre bize bir sonuç döndürmesini bekliyoruz (Kullanıcı girişi için True yada False olabilir). Şimdi basit bir uygulama yapalım ve Rezervsayon kaydedelim ve rezervasyon iptal işlemini wcf kullanarak yapalım.

Öncelikle
Visual Studio ya hazır template olarak gelen Wcf Service
Library i açıyoruz. Bize Iservice1.cs ve Service.cs sınıf ve interface i otomatik oluşturuyor. Bu sınıfları açıp incelediğimizde azır bir şablon çıkıyor burda önemli olan kısım classımızda hazır işaretlenmiş olan attributelerdir. Biz şimdi bunları siliyoruz metodlarımızın bulunacağı bir interface(Ibilet) üye değişkenlerimizin olacağı bir class metodların olacağı bir class ekliyoruz(Biletservis.cs,bilet.cs)
Şimdi classlarımıza bizim için gereken kodları yazıyoruz.
Baktığımızda web servisleri ile uygulama geliştirirken biz [WebMethod] ile etiketliyorduk Wcf de ise bu durum farklı. Şimdi bunları inceleyelim.
// bilet sınıfımız
[DataContract]
public class bilet
{
//yolcu bilgisini tutacak üye değişken
[DataMember]
public string yolcu;
[DataMember]
//istakameti gireceğimiz üye değişken
public string sehir;
//Seyehat Tarihi
[DataMember]
public DateTime tarih;
}
[DataContract]: Networkten gelecek olan verileri okuyacak olan sınıfımızı bu etiketle imzalıyoruz.
[DataMember]: Class içerisindeki erişmek istediğimiz üye değişkenlerimizi bu attiribute ile etiketliyoruz.
//şimdi interface imizi inceleyelim;
[ServiceContract]
interface IBilet
{
[OperationContract]
void RezervasyonKaydet(bilet b);
[OperationContract]
List Goruntule();
[OperationContract]
void RezervasyonIptal(string id);
}
[ServiceContract]: Aynı classımızdaki mantıkla interfaclerimizi de bu attributle etiketliyoruz.
[OperationContract]: İnterface de yer alan tanım bloklarınıda operation contract ile etiketliyoruz.
//şimdi biletservis.cs imizi oluşturalım
public class biletservis:IBilet //Ibilet interface imizi implement ediyoruz.
{
List rezervasyonlar = new List();//rezervasyonlarımızı tutacağımız listemiz
#region IBilet Members
public void RezervasyonKaydet(bilet b)
{
Random r=new Random();
b.id = r.Next(0, 100);//rezervasyona rastgele bir sayı veriyoruz.
rezervasyonlar.Add(b);
}
public List Goruntule()
{
return rezervasyonlar; //bilet nesnesinden bir liste döndürüyoruz.
}
public void RezervasyonIptal(string id)
{
//lambda ifadesi ile parametre olarak gelen id yi liste içerisndeki id ler ile karşılaştırıyor.
rezervasyonlar.Remove(rezervasyonlar.Find(e => e.id == id));
}
#endregion
![]()
Şu anda servisimiz hazır servisimizi test edelim bu işlemi ” Wcf Test Client ” ile similasyon şeklinde yapabiliriz. Solution dan appconfig dosyasına sağ tıklayıp “Edit Wcf configuration” diyerek simülasyonumuzu çalıştırıyoruz.
Burada dikkat etmemiz gereken bir husus var projeyi açtığımızda servis1 olarak oluşturduğu için bunu bin dosyamızdaki dll imizle servisimizin adını değiştiriyoruz. Aynı işlemi Endpoints altındaki empty name alanında da yapıyoruz.file menüsünden save diyerek kaydediyoruz.
şimdi projemizi çalıştırıyoruz.
* Id kısmı otomatik verildi sehir tarih ve yolcu bilgilerini invoke deyip kaydediyoruz. value değeri null döndürüse sorun yok demektir.
* Görüntüleye tıklayalım şimdi

Gördüğümüz gibi bütün rezervasyon bilgileri görüntülendi.
şimdi bir rezervasyonu iptal edelim
Bu işlem sonunda id si 31 olan rezervasyonu silmiş olduk …

Örnek uygulamayı indir