top of page

WCF Hakkinda Kisa Kisa...

  • Writer: Sevdanur GENC
    Sevdanur GENC
  • Dec 4, 2011
  • 5 min read

WCF(Windows Communication Foundation) Wcf .net 3.0 ile gelen yeni teknolojilerden biri Wcf aslında bir web servisidir. 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. Windows Communication Foundation’ın temel amacı, aynı bilgisayar, network veya internet üzerindeki uygulamaların birbirleri ile iletişim kurabilmesini sağlamaktır. WCF programlama modeli web servislerini, .NET Remoting teknolojisini, distributed transactionları ve mesaj kuyruklarını tek bir service oriented programlama modeli altında toplar. WCF service-oriented architecture tasarım kuralları doğrultusunda tasarlanmış, servislerin consumerlar tarafından kullanılacağı, clientların birden çok servisi kullanabileceği ve servislerin birden fazla client tarafından kullanılabileceği bir distributed çalışma mimarisini desteklemektedir. Tüm servisler hangi platformda host edildiğne bakılmaksızın herhangi bir WCF clientının servisi kullanmak için faydalanabileceği bir WSDL interfaceine sahiptir. WCF, WS-Addressing, WS-Reliability ve WS-Security gibi pek çok gelişmiş web servisi standardını getirmektedir. WCF temelinde servis üç adımda geliştirilir. 1. Servis yaratılır.(Creating) 2. Servise bir adres bağlanır ve host edilir. (Hosting) 3. Client tarafından eklenerek kullanılır.(Consuming) Address Her web uygulamasının bir adresi olduğu gibi WCF servisimizinde bir adresi olmalı. WCF aşağıdaki protokolleri kullanarak servis çalıştırmaya imkan verir.: HTTP (http:// yada https:// ) TCP (net.tcp :// ) Peer 2 Peer (net.p2p://) IPC (Inter-Process Communication over named pipes)(net.pipe://) MSMQ (net.msmq://) Bindings Binding servisin erişebilirliği ile ilgilenir. Servise dış dünyanın hangi kurallar ile bağlanabileceğini belirler. Bir binding tipi: 1.Protocol : İstenilen herhangi protokol 2.Encoder : text/xml için HTTP binding, binary xml için TCP binding olabilir 3.Transport: HTTP, TCP, NamedPipes ya da MSMQ. ile kurallar belirler. Contract Contract, client ın servis ile yapabileceği işlemleri ifade eder. Servisin ne iş yaptığını hangi fonksiyonelikleri olduğunu dış ortama anlatan WCF özelliğidir. Contract çeşitleri genel anlamda 4 çeşittir. Bunlar : Service Contract: Servis ile yarattığımız operasyonları tanımlaya yarar. Data Contract : Verileri tanımlamamıza yarar. Fault Contract: Servis tarafından hata tanımlamaya yarar. Message Contract: Servisler ile mesajlar arasında iletişim kurmaya yarar. Peki Neden Interface? Genellikle Contract larımızın interface olarak tasarlanmasını ve client larında bu interface i implemente etmesini tercih ederiz. Çünkü: Interface ler diğer interface ler tarafından implemente edilebilir. Bir sınıf, birden fazla interface i, implemente edebilir. Contract ı bozmadan servisi değiştirebiliriz. Eski veya yeni interface ler sayesinde servisimizi versiyonlayabiliriz. Hosting Bir Web Servis geliştirildiğinde karşılaşılan zorluklardan biride, servisimizi bir web sunucusu içerisinde yalnızca http ya da wshttp protokolleriyle kullanabiliyor olma zorunluluğuydu. Fakat WCF sayesinde artık böyle bir zorunluluk yok. Servislerimizi istediğimiz protokollerle, istediğimiz şekilde, sunabilme imkanı artık kolayca kullanılabilir durumda. WCF uygulamalarını host etmek için birden çok seçeneğimiz var. Bunlaı aslında ikiye ayırmak işleri daha da basitleştiricektir. Bunlardan ilki klasik yöntemler IIS 6 kullanarak http protokolüyle host edilebilir. Windows Application veya Windows servislerini, windows üzerinden tcp,pipe,msmq yöntemleriyle host edilebilir. Klasik yöntemler bugüne kadar kullandığımız, WCF le beraberde yine kullanabileceğimiz hosting yöntemleridir. Fakat WCF le beraber IIS 7.0 ve WAS isimli teknolojinin gelmesiyle, bu üçlü voltranı oluşturarak; güçlü, esnek, optime edilebilir bir servis yönelimli mimari yaklaşımına yeni bir boyut kazandırdılar. Peki ama nasıl? WAS(Windows Activation Service) : IIS 7.0 ile beraber çalışan ve HTTP dışındaki protokollerinde kullanılmasına imkan veren mekanizmadır. WAS,  IIS 6.0 process and hosting modeli üzerine kuruldu fakat çok daha güçlü. Çünkü HTTP protokolünün yanında TCP, Named Pipes gibi protokolleride destekliyor. Hizmet Entegrasyon Senaryoları WCF ve Web hizmetleri, bir sistem veya uygulamanın fonksiyonlarını başka uygulamalara sunmak için kullanılır ve hizmet sağlama için en çok kullanılan mekanizmadır. BizTalk Server 2009, mevcut WCF ve Web hizmeti standartlarını tam olarak destekler. Bu destek, geliştiricilerin bir iş sürecinin parçası olarak harici hizmetleri kullanmasını ve harici uygulamalar tarafından kullanılabilecek bir hizmet olarak iş sürecini yayınlamalarını sağlar. Özel bir iş sürecine Internet üzerinden müşterilerin, ticaret iş ortaklarının veya diğer uygulamaların erişebilmesini istiyorsanız bir düzenlemeyi bir WCF hizmeti olarak yayınlayabilirsiniz. Bunu, BizTalk WCF Services Yayınlama Sihirbazını çalıştırarak gerçekleştirebilirsiniz. Sihirbaz, Internet Information Services (IIS) ile çalışan bir WCF tabanlı ASP.NET uygulaması oluşturur. Bir düzenlemeyi bir hizmet olarak yayınlamaya bazı örnekler: Havayolu şirketleri, tarife bilgilerini bir hizmet olarak çevrimiçinde yayınlar. Bir seyahat Web sitesi, farklı havayollarının mevcut bilet fiyatlarını öğrenmek için farklı havayolu hizmetlerini arayabilir. Bir sevkiyat şirketi, iş süreçlerini çevrimiçi hizmet olarak sunabilir. Çevrimiçi perakende mağazaları, sevkiyat hizmetlerini arayarak sevkiyat maliyetlerini hesaplayabilir ve müşterilerine sevk hakkındaki takip bilgilerini görüntüleyebilir. Hizmetleri bir iş sürecinde entegre etmek için bazı ortak entegrasyon senaryoları aşağıdakileri içerebilir: Bir ürün için harici sevkiyat firmalarından sevkiyat maliyetlerini belirleme Öğenin satın alındığı ülkeye göre vergi hesaplama Bir borç işlerken üçüncü kişi şirketinden kredi raporu veya kredi notu alma Bir kredi kartını çevrimiçi satın alma için kabul etme veya reddetme BizTalk Server 2009, bir düzenleme içinden ve mesajlaşma gönderme portları üzerinden hizmetleri çağırmanızı sağlar. Ayrıca, mevcut düzenlemeler veya şemaları yayınlayarak sektör standardı Web hizmetleri ve özel WCF hizmetleri oluşturabilir ve böylelikle genelde karmaşık olan entegrasyon senaryolarını basitleştirebilirsiniz. BizTalk Hizmet Entegrasyonu Özellikleri WCF bağdaştırıcılarına ek olarak BizTalk Server 2009, WCF hizmetleriyle entegrasyon için aşağıdaki desteği de sağlamaktadır:  WCF hizmetlerini kullanma. BizTalk WCF Service Kullanma Sihirbazını, BizTalk düzenlemeleri ve türleri gibi WCF hizmetinin meta veri belgesine dayanarak WCF hizmetini kullanan BizTalk yapılarını oluşturmak için kullanabilirsiniz. Düzenlemeleri WCF hizmetleri olarak yayınlama. WCF Yayınlama Sihirbazını kullanarak BizTalk düzenlemelerini WCF hizmetleri olarak yayınlayabilirsiniz. Bir düzenlemenin bir WCF hizmeti olarak yayınlanması, iş sürecinin fonksiyonlarını ticaret iş ortakları veya müşteriler gibi şirket dışı hizmetlerin kullanımına sunar. Düzenleme port türleri ve şema türlerinden meta verileri kullanarak sihirbaz otomatik olarak, BizTalk düzenlemesi için bir WCF hizmet cephesi olarak işlev gören bir WCF tabanlı ASP.NET uygulaması oluşturur.  Bir şemayı bir WCF hizmeti olarak yayınlama. Bir düzenlemenin bir WCF hizmeti olarak yayınlanması, hizmet üzerinden alınan mesajı yayınlanan düzenlemeye bağlar. Bununla birlikte, bir şemanın WCF hizmeti olarak yayınlanması, MessageBox veritabanına mesaj göndermek için basit bir mekanizma sağlar. MessageBox'a gelen mesaj işleme için istenilen sayıda aboneye yönlendirilebilir.  Alma konumu meta verilerini WSDL olarak yayınlama. BizTalk Server 2009, ASMX Web hizmetleriyle entegrasyonu desteklemeyi aşağıdaki şekillerde sürdürür:  WCF hizmetlerini kullanma. . Bir WCF hizmeti kullanmaya benzer şekilde BizTalk düzenlemeleri harici ASMX hizmetlerini çağırabilir. Düzenlemeleri WCF hizmetleri olarak yayınlama. Bir düzenlemeyi bir WCF hizmeti olarak yayınlamaya benzer olarak iş süreçlerinizi ASMX hizmetleri olarak sunabilirsiniz.  Bir şemayı bir WCF hizmeti olarak yayınlama. Bir şemayı bir WCF hizmeti olarak yayınlamaya benzer olarak şemalar, mesajı harici hizmetlere sunmak için ASMX hizmetleri olarak yayınlanabilir. Wcf hizmeti ve Web hizmeti arasındaki fark nedir? WCF bir programlama modeli ve API ' dir. "WCF hizmeti" gibi programlama modeli kullanan bir uygulama anlamına gelir. "Web hizmeti" olduğu bir HTTP getiren bir uygulama (REST (XML veya JSON), SOAP veya aksi takdirde) arabirimi. WCF kullanarak bir Web servisini oluşturabilirsiniz, ancak diğer API'ler veya "yığınları" kullanarak bir Web servisini de oluşturabilirsiniz. PHP veya örneğin Java gibi. WCF ile web hizmetleri oluşturma ancak "Webbish" değildir, hizmetleri de oluşturabilirsiniz.Örneğin, yalnızca bir yerel Kanal arabirim üzerinden gelen ikili isteklerini kabul eden bir hizmet oluşturabilirsiniz.Hala bir hizmet olduğunu, ancak web protokolleri (genellikle HTTP ve XML) kullanarak bir "web hizmeti" değildir, çünkü. WCF’nin kullanildigi sektorlerden bir kac ornek; 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).

Recent Posts

See All
Ado.Net Entity Framework Ogreniyorum Serisi 00

Ado.Net Entity Framework (EF) verileri ile etkilesim uygulamalari gelistirmek icin kullanilan Ado.Net nesne iliskisel modelleme yazilimi olarak iliskisel veritabani semalarini ve nesneler arasinda ki

 
 
 
LINQ Ogreniyorum Serisi 05

Linq To Sql’de tablolarimizdaki verileri silebilmemiz icin; DataContext icerisinde ki DeleteOnSubmit ve DeleteAllOnSubmit metodlari kullanilmaktadir. Beraberinde SubmitChanges metodu da kodlari eklen

 
 
 
LINQ Ogreniyorum Serisi 04

Linq To Sql’de tablolarimiza verileri guncelleyebilmemiz icin; DataContext icerisinde ki SubmitChanges metodu kullanilmaktadir. Bu komutlari kullanarak DataContext sinifinin yapisina da ihtiyac duyu

 
 
 

Comments


©2035 by Sevdanur Genc. Powered and secured by Wix

bottom of page