WCF(Windows Communication Foundation) Giriş?
Merhabalar, uzun zamandır WCF hakkında birşeyler yazmak istiyordum kısmet bugüneymiş. Öncelikle wikipedia’daki tanımıyla işe başlamak istiyorum.
“Windows Communication Foundation farklı makineler üzerindeki uygulamaların birbiriyle iletişim kurmasını sağlayan bir iç sistemdir. .NET Framework 3.0 uygulama geliştirme platformunun bir bileşeni olarak sunulmuştur. WCF olarak kısaltılan bu teknoloji, ilk olarak Indigo kod adıyla dünyaya duyurulmuştur. WCF; Remoting, Web Servisleri, Dağıtık “Transaction”lar gibi dağıtık programlama yollarını tek bir yapıda birleştirmektedir.”
Tanımı biraz daha genişletmek gerekirse : WCF Servis Odaklı Uygulama geliştirebilmemizi sağlayan bir frameworktür. WCF kullanılarak bir endpoint’den diğerine asenkron olarak mesaj gönderilebilir. Bu servis endpointi IIS de publish edilmiş bir servis de olabilir veya host edilmiş bir uygulama da olabilir. Bir endpoint bir başka endpoint’e client da olabilir. Arada dolaşan veri text,xml veya komplex binary data olabilir. Aslında özet olarak WCF dağıtık uygulamaları geliştirebileceğiz ortak bir çatı olarak da nitelendirmemiz yanlış olmaz. Microsoft daha önce dağıtık uygulamalar için ayrı ayrı COM+, .Net Remoting, XML Web Servisleri, MSMQ kullanılırken WCF bunları aynı çatı altına toplamıştır.
WCF örnek senarya olarak nerelerde kullanılabilir :
– Kurum içindeki business transaction’ların güvenli bir şekilde işletilmesini sağlayabiliriz.
– Güncel Bilgileri servis etmek için kullanabiliriz. Örneğin trafik bilgisi vs.
– Bir chat uygulaması yapılabilir.
– vs. vs.
WCF ile her bir client elindeki kontrat sayesinde endpointler aracılığı ile Servis Oriented Architecture(SOA)’a uygun bir şekilde uygulama geliştirtirmeye olanak sağlar. Bu yapısı sayesinde aralarındaki bağımlılık azalır.(bkz : Loose coupling)
WCF , Windows Workflow Foundation (WF), Microsoft BizTalk Server , Microsoft Silverlight gibi Microsoft ürünleriyle de entegre bir şekilde çalışabilir.
Bir de herkesin bahsettiği bir geyik var, ben bahsetmezsem olmaz :) WCF ‘in ABCsi.
Address (Adres) : Hizmetin lokal ağdaki veya internetteki adresi. http://www…….
· Binding (Bağlayıcı) : Client ile Endpoint arasındaki iletişim protokolüdür.
Binding türleri is şunlardır.
- BasicHttpBinding
- WSHttpBinding
- WSDualHttpBinding
- WSFederationHttpBinding
- NetTcpBinding
- NetNamedPipesBinding
- NetMsmqBinding
- NetPeerTcpBinding
- MsmqIntegrationBinding
- BasicHttpContextBinding
- NetTcpContextBinding
- WebHttpBinding
- WSHttpContextBinding
· Contract (Kontrat) : Servislerin dışarıya sundukları hizmetleri bir kontrat yardımıyla bildirirler. 4 tipi vardır.
Service Contract: Servislerin dışarıya sundukları hizmetleri bildirir.Metod listesi diyebiliriz.
Operation Contract:Servisdeki operasyonlardan dönen veya operasyona gönderilen tiplerin belirlendiği sözleşme tipidir.
Fault Contract:Servisden dönen hataların istemci tarafına hangi formatta gönderileceğini belirleyen sözleşme türüdür.
Mesaj Contract: Sunucu ve istemci arasındaki mesajlaşma belirleyen sözleşme türüdür.