Upload
burak-selim-senyurt
View
269
Download
0
Embed Size (px)
Citation preview
WCFWCFWindows Communication Windows Communication FoundationFoundation
WCFWCFWindows Communication Windows Communication FoundationFoundation
Burak Selim ŞenyurtBurak Selim ŞenyurtMVP(Visual Developer – Visual C#)Netron – Master Trainer
MVP(Visual Developer – Visual C#)Netron – Master Trainer
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
WCFKimdir?WCFKimdir?
WCF (Windows Communication Foundation) Kimdir?
Windows Windows Communication Communication
FoundationFoundation(WCF)(WCF)
Microsoft .Net Microsoft .Net Framework 3.0Framework 3.0
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.
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?
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) . .
WCF Öncesi HalimizWCF Öncesi Halimiz
WCF Öncesi Halimiz
COM+COM+
.Net Remoting.Net Remoting
Xml WebServicesXml WebServices
MSMQMSMQ
WSEWSE
WCF ve SOAWCF ve SOA
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ı
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
Kuşbakışı WCF MimarisiKuşbakışı WCF Mimarisi
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.
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.
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.
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
......
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.
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
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..
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.
Örnek WCF VakkalarıÖrnek WCF Vakkaları
Ö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
Örnek WCF VakkalarıWeb Servisi Modeli
WS*Profile
Servis
İşİşNNeessnneessii
DDAALL
AspNetDbAspNetDb
HTTPSHTTPS
HTTPHTTP
Username
Username
BasicHttpBinding
WsHttpBinding
Basic Profile
Örnek WCF VakkalarıGüvenilir İş Ortağı Modeli
Servis
İşİşNNeessnneessii
DDAALL
SertifikaSertifikaDeposuDeposu
(Certificate(CertificateStore)Store)
WsHttpBinding
İş Ortağı(Internet İstemcisi)
HTTP HTTP
Örnek WCF VakkalarıWeb Uygulaması Tabanlı Model
Servis
İşİşNNeessnneessii
DDAALL
SertifikaSertifikaDeposuDeposu
(Certificate(CertificateStore)Store)
NetTcpBinding
(Internet İstemcisi)
HTTPS
TCP
Asp.NetApp.
AspNetDbAspNetDb
DemoMerhaba WCFDemoMerhaba WCF
Hosting SeçenekleriHosting Seçenekleri
Hosting Seçenekleri
DemoWindows ServisiOlarak Yayınlamak
DemoWindows ServisiOlarak Yayınlamak
Geliştirici için KazançlarGeliştirici için Kazançlar
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; }}
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
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
Microsoft Service Configuration EditorMicrosoft Service Configuration Editor
Geliştirici için Kazançlar
Daha Neler Var?Daha Neler Var?
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
Daha Ne Var?
Transaction YönetimiTransaction Yönetimi
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
Daha Ne Var?
Transaction YönetimiTransaction Yönetimi
Daha Ne Var?
Transaction YönetimiTransaction Yönetimi
Yardımcı KaynaklarYardımcı Kaynaklar
Yardımcı KaynaklarC#Nedir? (www.csharpnedir.com)Bsenyurt (www.bsenyurt.com)
Programming WCF ServicesJuval Löwy – O’Reilly
Professional WCF ProgrammingScott Klein – Wrox
Pro WCF - Practical Ms SOA ImplementationChris Peiris, Denis Mulder - APress
Michele Leroux Baustamante – WCF Web Cast Series
MSDN Magazine – Service Station
Soru - CevapSoru - Cevap
Küresel Isınma (Global Warm)
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
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ı.
Böyle OlacakBöyle Olacak
TeşekkürlerTeşekkürler