49
WCF WCF Windows Communication Windows Communication Foundation Foundation Burak Selim Şenyurt MVP(Visual Developer – Visual C#) Netron – Master Trainer [email protected]

Netron Techweek 2007 WCF

Embed Size (px)

Citation preview

Page 1: Netron Techweek 2007 WCF

WCFWCFWindows Communication Windows Communication FoundationFoundation

WCFWCFWindows Communication Windows Communication FoundationFoundation

Burak Selim ŞenyurtBurak Selim ŞenyurtMVP(Visual Developer – Visual C#)Netron – Master Trainer

[email protected]

MVP(Visual Developer – Visual C#)Netron – Master Trainer

[email protected]

Page 2: Netron Techweek 2007 WCF

Seminer İçeriği• WCF (Windows Communication Foundation) Kimdir?• WCF Öncesi Halimiz• WCF ve SOA (Service Oriented Architecture)• Kuşbakışı WCF Mimarisi• Örnek WCF Vakkaları• Demo - Merhaba WCF• Hosting Seçenekleri• Demo - Windows Servisi Olarak Yayınlamak• Geliştirici için Kazançlar• Daha Ne Var?• Yardımcı Kaynaklar• Soru – Cevap

Page 3: Netron Techweek 2007 WCF

WCFKimdir?WCFKimdir?

Page 4: Netron Techweek 2007 WCF

WCF (Windows Communication Foundation) Kimdir?

Windows Windows Communication Communication

FoundationFoundation(WCF)(WCF)

Microsoft .Net Microsoft .Net Framework 3.0Framework 3.0

Page 5: Netron Techweek 2007 WCF

WCF Kimdir?

Servis yönelimli Servis yönelimli

mimari(Service Oriented mimari(Service Oriented

Architecture - SOA) için Architecture - SOA) için

uygulamalar geliştirmek uygulamalar geliştirmek

amacıyla, Microsoft tarafından amacıyla, Microsoft tarafından

üretilmiş üretilmiş birleştirilmişbirleştirilmiş, , kolaykolay ve ve

güçlügüçlü yeni bir programlama yeni bir programlama

anlayışıdır.anlayışıdır.

Page 6: Netron Techweek 2007 WCF

Diğer Platformlarİle daha kolay

uyumluluk

Diğer Platformlarİle daha kolay

uyumluluk

ASMX

Nitelik TabanlıProgramlama

Enterprise Services

WS-*Protokol Desteği

WSE

MSMQ

System.Messaging

GenişletilmişRemoting

.NET Remoting

WCF Kimdir?

Page 7: Netron Techweek 2007 WCF

WCF Kimdir?WCF, WCF, hızlı bir şekildehızlı bir şekilde servis yönelimli mimariyi baz alan servis yönelimli mimariyi baz alan

uygulamalar yazabilmek için geliştirilmiş, uygulamalar yazabilmek için geliştirilmiş, birleştirilmişbirleştirilmiş(unified)(unified)

bir Framework API' si olarak düşünülebilir. bir Framework API' si olarak düşünülebilir.

WCFWCF, , WWindows tarafındaki çeşitli dağıtık mimari indows tarafındaki çeşitli dağıtık mimari

modeller arasındaki entegrasyonun tek bir çatı altında modeller arasındaki entegrasyonun tek bir çatı altında

toplanabilmesinitoplanabilmesini sağlamaktadır sağlamaktadır (Integration)(Integration). .

WCF, önceki dağıtık mimari modellerine göre platform WCF, önceki dağıtık mimari modellerine göre platform

desteğini daha güçlü desteklemektedir desteğini daha güçlü desteklemektedir (Interoperability)(Interoperability) . .

Page 8: Netron Techweek 2007 WCF

WCF Öncesi HalimizWCF Öncesi Halimiz

Page 9: Netron Techweek 2007 WCF

WCF Öncesi Halimiz

COM+COM+

.Net Remoting.Net Remoting

Xml WebServicesXml WebServices

MSMQMSMQ

WSEWSE

Page 10: Netron Techweek 2007 WCF

WCF ve SOAWCF ve SOA

Page 11: Netron Techweek 2007 WCF

WCF ve SOAAzon Yarış Bisikleti Pedalları Satıcısı

MuhasebeMuhasebeMuhasebeMuhasebe İmalatçıİmalatçıİmalatçıİmalatçı

Web SayfasıWeb SayfasıWeb SayfasıWeb Sayfası

Call CenterCall CenterCall CenterCall Center

Satış OfisiSatış OfisiSatış OfisiSatış OfisiPazarlamaPazarlamaElamanıElamanı

PazarlamaPazarlamaElamanıElamanı

Page 12: Netron Techweek 2007 WCF

WCF ve SOAAzon Yarış Bisikleti Pedalları Satıcısı

MuhasebeMuhasebeMuhasebeMuhasebe İmalatçıİmalatçıİmalatçıİmalatçı

Web SayfasıWeb SayfasıWeb SayfasıWeb Sayfası

Call CenterCall CenterCall CenterCall Center

Satış OfisiSatış OfisiSatış OfisiSatış OfisiPazarlamaPazarlamaElamanıElamanı

PazarlamaPazarlamaElamanıElamanı

SiparişSiparişServisiServisiSiparişSiparişServisiServisiTicari OrtakTicari Ortak CRMCRM

Page 13: Netron Techweek 2007 WCF

Kuşbakışı WCF MimarisiKuşbakışı WCF Mimarisi

Page 14: Netron Techweek 2007 WCF

Kuşbakışı WCF Mimarisi

WCF, WCF, CLRCLR

(Comman Language (Comman Language

Runtime) tiplerinin Runtime) tiplerinin birer birer

servisservis olarak olarak

sunulabilmesini ve hatta sunulabilmesini ve hatta

servislerin deservislerin de birer CLRbirer CLR

tipiymiştipiymiş gibi ele gibi ele

alınabilmesini sağlayan alınabilmesini sağlayan

bir mimari sağlamaktadır. bir mimari sağlamaktadır.

Page 15: Netron Techweek 2007 WCF

Kuşbakışı WCF Mimarisi

WCF’ in ABC’ si

endPoint bir servisin dış endPoint bir servisin dış

ortama sunulan ortama sunulan arayüzüdürarayüzüdür

(Interface).(Interface).

endPoint, endPoint, istemcileristemcilerinin

proxy üzerinden proxy üzerinden gönderdiği gönderdiği

ve ve aldığıaldığı mesajlarınmesajların servis servis

tarafında tarafında karşılandığıkarşılandığı

noktadır.noktadır.

Page 16: Netron Techweek 2007 WCF

Kuşbakışı WCF MimarisiWCF’ in ABC’ si -> Adresler (Addresses)

Hizmette bulunan her servis Hizmette bulunan her servis benzersizbenzersiz bir adrese bir adrese

sahip olmalıdır. sahip olmalıdır.

Servis adresi, Servis adresi, servisin yeriservisin yeri (service location)(service location) ve ve

taşıma protokolütaşıma protokolü (transport protocol)(transport protocol) bilgilerinden oluşur. bilgilerinden oluşur.

Servis yeri, Servis yeri, bbilgisayarilgisayar,, ssite, ite, nnetwork, etwork, iiletişim portu, letişim portu,

ppipe, ipe, URI, qURI, queueueue adı veya adı veya bbelirli bir elirli bir pathpath bilgisi bilgisi olabilir. olabilir.

Taşıma protokolü, Taşıma protokolü, HTTP,TCPHTTP,TCP, , P2PP2P (Peer To (Peer To

Peer),Peer), IPC (Inter-Process Communication), MSMQ IPC (Inter-Process Communication), MSMQ

(Microsoft Message Queuing)(Microsoft Message Queuing) olabilir. olabilir.

Page 17: Netron Techweek 2007 WCF

Kuşbakışı WCF Mimarisi

WCF’ in ABC’ si -> Adresler (Addresses)

net.tcp://localhost:4578/MatSrvnet.tcp://localhost:4578/MatSrv

net.msmq://localhost:6789/MatSrvnet.msmq://localhost:6789/MatSrv

http://localhost:9001/MatSrv http://localhost:9001/MatSrv

......

Page 18: Netron Techweek 2007 WCF

Kuşbakışı WCF Mimarisi

WCF’ in ABC’ si -> Bağlayıcılar(Bindings)

Bağlayıcılar temel olarak servisler ile Bağlayıcılar temel olarak servisler ile nasıl iletişim nasıl iletişim

kurulacağınıkurulacağını tanımlamak üzere kullanılırlar. tanımlamak üzere kullanılırlar.

BBir bağlayıcı tip (Binding Type)ir bağlayıcı tip (Binding Type),, taşıma tipi taşıma tipi

(transport type), protokol(protocol)(transport type), protokol(protocol) ve ve veri veri

çözümlemesi(data encoding)çözümlemesi(data encoding) bildirir. bildirir.

Page 19: Netron Techweek 2007 WCF

Kuşbakışı WCF MimarisiBinding Tipi

KonfigurasyonElementi

Taşıma Çeşidi(Transport Type)

Veri Çözümlemes

i(Data Encoding)

Platform Desteği(Inter operatbility)

BasicHttpBinding <basicHttpBinding> HTTP / HTTPS Text Var

NetTcpBinding <netTcpBinding> TCP Binary Yok

NetPeerTcpBinding <netPeerTcpBinding> P2P Binary Yok

NetNamedPipeBinding <netNamedPipeBinding> IPC Binary Yok

WSHttpBinding <wsHttpBinding> HTTP/HTTPS Text/MTOM Var

WSFederationBinding <wsFederationHttpBinding> HTTP/HTTPS Text/MTOM Var

NetMsmqBinding <netMsmqBinding> MSMQ Binary Yok

MsmqIntegrationBinding <msmqIntegrationBinding> MSMQ Binary Var

WSDualHttpBinding <wsDualHttpBinding> HTTP Text/MTOM Var

Page 20: Netron Techweek 2007 WCF

Kuşbakışı WCF Mimarisi

WCF’ in ABC’ si -> Sözleşmeler(Contracts)

Sözleşmeler bir servisin Sözleşmeler bir servisin ne iş yaptığınınne iş yaptığının

bilinmesinde önemli rol oynarlar. bilinmesinde önemli rol oynarlar. Bu özellikle, istemcilerin Bu özellikle, istemcilerin

ihtiyaç duyduğu proxy sınıflarının yazılmasında önem arz ihtiyaç duyduğu proxy sınıflarının yazılmasında önem arz

eden bir konudur. eden bir konudur.

WCF' da WCF' da tüm servislertüm servisler dış ortama bir sözleşme dış ortama bir sözleşme

(Contract)(Contract) sun sunarar..

Page 21: Netron Techweek 2007 WCF

Kuşbakışı WCF MimarisiWCF’ in ABC’ si -> Sözleşmeler(Contracts)

WCF WCF 4 farklı4 farklı sözleşme çeşidi sunar. sözleşme çeşidi sunar. Servis Sözleşmesi (Service Contract): Servis üzerinden hangi

operasyonların gerçekleştirilebileceğini tanımlayan sözleşme çeşididir.

Veri Sözleşmesi (Data Contract) : Servislerden istemcilere giden ve

istemcilerden servise gelen veri tiplerini tanımlayan sözleşme çeşididir.

Hata Sözleşmesi (Fault Contract): Servis tarafından hangi hataların

fırlatılabileceğini ve bunların istemciye nasıl aktarılacağını tanımlayan

sözleşme çeşididir.

Mesaj Sözleşmesi (Message Contract): Servislerin mesajlar ile

etkileşimde bulunmasını sağlayan sözleşme çeşidir.

Page 22: Netron Techweek 2007 WCF

Örnek WCF VakkalarıÖrnek WCF Vakkaları

Page 23: Netron Techweek 2007 WCF

Örnek WCF VakkalarıKlasik Intranet Modeli

ActiveDirectory

Istemci

Servis(Service)İş Nesnesiİş Nesnesi(Business (Business

Components)Components)

Veri ErişimVeri ErişimKatmanıKatmanı

(DAL)(DAL)Doğrulama(Authentication)

TCP TCP

NetTcpBinding

Page 24: Netron Techweek 2007 WCF

Örnek WCF VakkalarıWeb Servisi Modeli

WS*Profile

Servis

İşİşNNeessnneessii

DDAALL

AspNetDbAspNetDb

HTTPSHTTPS

HTTPHTTP

Username

Username

BasicHttpBinding

WsHttpBinding

Basic Profile

Page 25: Netron Techweek 2007 WCF

Örnek WCF VakkalarıGüvenilir İş Ortağı Modeli

Servis

İşİşNNeessnneessii

DDAALL

SertifikaSertifikaDeposuDeposu

(Certificate(CertificateStore)Store)

WsHttpBinding

İş Ortağı(Internet İstemcisi)

HTTP HTTP

Page 26: Netron Techweek 2007 WCF

Örnek WCF VakkalarıWeb Uygulaması Tabanlı Model

Servis

İşİşNNeessnneessii

DDAALL

SertifikaSertifikaDeposuDeposu

(Certificate(CertificateStore)Store)

NetTcpBinding

(Internet İstemcisi)

HTTPS

TCP

Asp.NetApp.

AspNetDbAspNetDb

Page 27: Netron Techweek 2007 WCF

DemoMerhaba WCFDemoMerhaba WCF

Page 28: Netron Techweek 2007 WCF

Hosting SeçenekleriHosting Seçenekleri

Page 29: Netron Techweek 2007 WCF

Hosting Seçenekleri

Page 30: Netron Techweek 2007 WCF

DemoWindows ServisiOlarak Yayınlamak

DemoWindows ServisiOlarak Yayınlamak

Page 31: Netron Techweek 2007 WCF

Geliştirici için KazançlarGeliştirici için Kazançlar

Page 32: Netron Techweek 2007 WCF

20,379 satır güvenlik

5,988 satır güvenilir

mesajlaşma

25,507 satır

transaction

TToplam Satır oplam Satır 56,29656,296

4,442 satır alt yapı hazırlığı

Geliştirici için Kazançlar Verimlilik – VS.Net 2003

class HelloService { [WebMethod] public String Hello(String Greeting) {

X509CertificateCollection collection = new X509CertificateCollection();IntPtr blob = Marshal.AllocHGlobal(Marshal.SizeOf( typeof(CRYPTOAPI_BLOB))); IntPtr data = (IntPtr)((int)blob + Marshal.SizeOf(typeof(CRYPTOAPI_BLOB)));…

SeqAckRange range = new SeqAcknRange(id, low, high );SeqAckRange[] ranges = { range };ReliableQueue.ProcessAcks( ranges );…

BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction);…

return Greeting; }}

Page 33: Netron Techweek 2007 WCF

10 satırgüvenlik

1,804 satır güvenilir mesajlaşma

25,507 satır transactions

ToToplam Satırplam Satır27,32127,321

class HelloService { [WebMethod] public String Hello(String Greeting) {

foreach ( SecurityToken tok in requestContext.Security.Tokens { X509SecurityToken token = tok as X509SecToken }

… SeqAckRange range = new SeqAcknRange(id,low,high ); SeqAckRange[] ranges = { range }; ReliableQueue.ProcessAcks( ranges ); …

BeginTransaction (NULL, ISOLATIONLEVEL_SERIALIZABLE, 0, pITxOptions, &pITransaction); …

return Greeting; }}

Geliştirici için Kazançlar Verimlilik – VS.Net 2003

Page 34: Netron Techweek 2007 WCF

1 kod + 2 config güvenlik

0 kod + 1 config güvenilir mesajlaşma

2 kod + 1 config (attr.)

transactions

Toplam SatırToplam Satır33 kodkod+ + 44 config config

[ServiceContract]class HelloService { [OperationContract] [PrincipalPermission(SecurityAction.Demand, Role = “Adminstrators")] [TransactionFlow(TransactionFlowOption.Mandatory)] [OperationBehavior(TransactionScopeRequired = true, TransactionAutoComplete = true)] String Hello(String Greeting) {return Greeting;}}

<bindings> <wsHttpBinding> <binding name="Binding1“ transactionFlow="true"> <security mode="Message"> <message clientCredentialType="Windows“/> </security> <reliableSession enabled="true" /> </binding> </wsHttpBinding></bindings>

Geliştirici için Kazançlar Verimlilik – Visual Studio 2005

Page 35: Netron Techweek 2007 WCF

Microsoft Service Configuration EditorMicrosoft Service Configuration Editor

Geliştirici için Kazançlar

Page 36: Netron Techweek 2007 WCF

Daha Neler Var?Daha Neler Var?

Page 37: Netron Techweek 2007 WCF

Daha Ne Var?

Hata Yönetimi (Fault Management)Hata Yönetimi (Fault Management)

Transaction Yönetimi (Transaction Management)Transaction Yönetimi (Transaction Management)

Asenkron Erişimler (Asynchronous Access)Asenkron Erişimler (Asynchronous Access)

Mesaj Seviyesinde Güvenlik (Message Level Security)Mesaj Seviyesinde Güvenlik (Message Level Security)

İletişim Seviyesinde Güvenlik (Transport Level Security)İletişim Seviyesinde Güvenlik (Transport Level Security)

Internet veya Intranet Üzerinden GüvenlikInternet veya Intranet Üzerinden Güvenlik

Özel Bağlayıcı Tipler (Custom Binding Types)Özel Bağlayıcı Tipler (Custom Binding Types)

Çift Yönlü İletişim ve Olay TetiklemeÇift Yönlü İletişim ve Olay Tetikleme

Page 38: Netron Techweek 2007 WCF

Daha Ne Var?

Transaction YönetimiTransaction Yönetimi

Page 39: Netron Techweek 2007 WCF

Daha Ne Var?

Transaction YönetimiTransaction Yönetimi

Binding Tipi Transaction Protokolü Desteği

BasicHttpBinding Destek yok

WSHttpBinding WSAT

WSDualHttpBinding WSAT

WSFederationHttpBinding WSAT

NetTcpBinding OleTx

NetPeerTcpBinding Destek yok

NetNamedPipesBinding OleTx

NetMsmqBinding Destek yok

MsmqIntegrationBinding Destek yok

Page 40: Netron Techweek 2007 WCF

Daha Ne Var?

Transaction YönetimiTransaction Yönetimi

Page 41: Netron Techweek 2007 WCF

Daha Ne Var?

Transaction YönetimiTransaction Yönetimi

Page 42: Netron Techweek 2007 WCF

Yardımcı KaynaklarYardımcı Kaynaklar

Page 44: Netron Techweek 2007 WCF

Soru - CevapSoru - Cevap

Page 45: Netron Techweek 2007 WCF

Küresel Isınma (Global Warm)

Page 46: Netron Techweek 2007 WCF

Elektrik tüketimi daha düşük bilgisayarlar alınmalı.

Masaüstü PC yerine dizüstü bilgisayarlar tercih

edilmeli.

Yazıcıdan kağıt çıktısı alınması asgariye indirilmeli.

Bilgisayarlar bekleme konumunda bırakılmamalı.

Kullanılmayan bilgisayarlar atılmamalı.

Gereksiz kâğıtlar müsfette kullanım için saklanmalıdır.

Elektrik tüketimi daha düşük bilgisayarlar alınmalı.

Masaüstü PC yerine dizüstü bilgisayarlar tercih

edilmeli.

Yazıcıdan kağıt çıktısı alınması asgariye indirilmeli.

Bilgisayarlar bekleme konumunda bırakılmamalı.

Kullanılmayan bilgisayarlar atılmamalı.

Gereksiz kâğıtlar müsfette kullanım için saklanmalıdır.

Bunları YapmazsakBunları Yapmazsak

Page 47: Netron Techweek 2007 WCF

Bunları YapmazsakBunları YapmazsakEnerji dostu ampuller kullanılmalı.

Televizyonlar bekleme konumunda bırakılmamalı.

Evler ısı kaybına karşı yalıtılmalı.

Eşyalar, radyatörleri kapatmayacak

şekilde yerleştirilmeli.

Daha az su tüketen yeni teknoloji

rezervuarlar kullanılmalı.

Diş fırçalama, bulaşık yıkama,

traş esnasında musluk açık bırakılmamalı.

Yazıcıdan çıkarılacak dokümanların kenar boşlukları ve font

büyüklükleri azaltılmalı.

Ofislerde lambaların tamamı yerine, belirli bir kısmı kullanılmalı.

Page 48: Netron Techweek 2007 WCF

Böyle OlacakBöyle Olacak

Page 49: Netron Techweek 2007 WCF

TeşekkürlerTeşekkürler