WCF Servis Geliştirmenin Dogmatik Ama Faydalı Bir Yolu

Microsoft’a bir kez daha teşekkür etmek istiyorum Windows Foundation Services (WCF) ‘ı yarattıkları için.

WCF’i dogmatik olarak kullanmalıyız :)

Eğitimlerden birinde eğitmene “remoting” de öğrenmek istediğimi söylediğimi hatırlıyorum.
O da bana “Öğrenmene gerek yok çünkü WCF var” demişti.
O gün bunun ne anlama geldiğini anlayamamıştım.
Fakat bugün gözlerimin önünde parlıyor.
(eminim gelecekte daha da parlayacak)

WCF kullanırken, paylaşmak istediğim güzel bir yöntem var.
Bazı IOC container’ların WCF fasilitelerinden faydalanıp biraz zaman kazanabilirsiniz.

DI ve WCF sizin için yeni bir konu ise bu örneği incelemek ve bu makaleyi okumak size çok zaman kazandıracak.
Bu örnekte “Castle Windsor” ioc container’ını ve WCF entegrasyon fasilitesini kullanıyoruz.

Burada Berke Sökhan‘a özellikle teşekkür etmek istiyorum
bana daha iyi yazılım geliştirme konusunda yol gösterdiği için.
(Bu Microsoft’a ettiğim teşekkürden daha büyük bir teşekkürdür :) )

Acaba burda bide Microsoft’a teessüf mü etsem, C#’ın evrimini yavaş tuttuğu için …
Neyse…

WCF servisinizi 3 katmanlı olarak yazmak işi daha anlaşılır hale getirebilir..
Bu katmanlar Uygulama, Kontratlar ve Servisler olarak adlandırılabilir.

Örneğimi bu düşünceden yola çıkarak hazırladım.

Sadece string dönen basit bir test servisi olan örnek aşağıdaki şemadaki gibi çalışıyor …

“Contracts” katmanı “IMyService” interface’ine “MyDto” data kontratını yazdığımız katman.

“Services” katmanı “MyService” isminde “IMyService” interface’ini implemente eden bir class’a sahip.

Application katmanı WCF’i host eden konsol bir uygulama… Bir windows servis olarak kurabiliriz ya da bir konsol uygulaması olarak çalıştırabiliriz.

Aşağıdaki “Castle windsor WCF facility” konfigürasyonu bizim WCF ayarlarımız oluyor… Bu servisin NetTcpBinding ve NetNamedPipeBinding endpoint’leri ile çalışacağını tanımlıyoruz.

Önce server’da tanımlamalar yaptık şimdi de aşağıdaki kod parçacığında servisi client projemizden çağırmak için contaier’ımıza yükleyişimizi görüyoruz.

HomeController constructor’ına servisimizi parametre geçerek servise bağımlı olmasını da sağlamış oluyoruz.
Bu kısımın nasıl çalıştığını daha iyi anlamak için Web projesindeki şu classları inceleyiniz. “ControllerInstaller.cs“, “WindsorControllerFactory.cs“, “Global.asax.cs

Örneği github’dan indirebilir inceleyebilirsiniz. (github.com/serdarb/DogmaticWcf)

Be Sociable, Share!

    Category: Csharp - C#, WCF - Comments Off on WCF Servis Geliştirmenin Dogmatik Ama Faydalı Bir Yolu

    Comments are closed.

    Back to top