MVP (Microsoft Most Valuable Professional) Nedir? Windows Communication Foundation(WCF) Burak Selim Şenyurt Connected System Developer INETA MEA Speaker selim@bsenyurt.com MVP (Microsoft Most Valuable Professional) Nedir? Microsoft’un En Değerli Profesyonelleri (MVP’ler) bir veya daha fazla sayıdaki Microsoft ürünü konusunda bilgisini kanıtlamış, bilgi ve deneyimlerini sektördeki diğer profesyonellerle gönüllü olarak paylaşan uzmanlardır. MVP’ler bilgi ve deneyimlerini çok farklı şekilde paylaşırlar. Bazıları kitap ve makale yazarken, bazıları Web sitesi ve blog barındırır, "Teknik kullanıcı grupları" liderliği yapar, seminerlerde konuşmacı olur, teknik habergrupları ve forumlarda gelen soruları cevaplandırırlar. Microsoft için müşterilerden alınan geri bildirimler hayati düzeyde önem taşımaktadır. Bu noktada MVP’ler, geri bildirim döngüsünün önemli bir parçası olmakta ve Microsoft ile müşterileri arasındaki bir başka iletişim yolunu oluşturmaktadırlar. MVP ödül programı on üç yıldan uzun süredir devam etmekte ve 90 ülkeden 4000’e yakın MVP ile temsil edilmektedir. 43 MVP ile Türkiye, Orta Doğu ve Afrika bölgesinde ilk sırada yer almaktadır. Detaylı bilgi için http://mvp.support.microsoft.com/ Türk MVP’leri: www.mvpturkey.org MVP Kitap: http://turkmvpdeneyimleri.blogspot.com
Gündem WCF Kimdir? WCF Hedefleri WCF Mimarisi WCF’ in ABC’si EndPoint Kavramı Hosting Seçenekleri Demo – Merhaba WCF Dünyası Örnek Vakalar Klasik Intranet Modeli Klasik Internet Modeli Güvenilir İş Ortağı Modeli Web Uygulaması Modeli Çoklu EndPoint Modeli Front – End Service Modeli
Gündem Geliştirici için Kazanımlar .Net 3.5 ile Gelen Bazı Yenilikler Visual Studio 2008 Yenilikleri Performans Asmx & WCF Asmx & WCF (Https) Asmx WSE 2.0 & WCF .Net Remoting & WCF Bulunduğumuz Noktada Yardımcı Kaynaklar
WCF Kimdir? Windows Communication Foundation, Servis Yönelimli Mimari(Service Oriented Architecture) uygulamalarının entegre, platform bağımsız, güçlü ve kolay geliştirilmesi için tasarlanmış bir Framework altyapısıdır. .Net Framework 3.0 ve 3.5’ in bir parçası olarak gelmektedir.
WCF Hedefleri
WCF Hedefleri Var olan dağıtık mimari geliştirme modellerini tek bir çatı altında birleştirmek. (Unified) Güvenlik(Security), Transaction gibi, dağıtık mimarilerde uygulanması zor kavramların, kolay bir şekilde ele alınabilmesini sağlamak. (Simplicity) Farklı platformlara destek verebilecek servislerin geliştirilmesini sağlamak. (Interoperability) Farklı tipte servislerin birbirleriyle olan entegrasyonunu daha kolay sağlamak. (Integration)
WCF Hedefleri - Entegrasyon COM+ .Net Remoting XML Web Services WSE WS-* MSMQ ... Entegrasyon
WCF Mimarisi
WCF Mimarisi – WCF’ in ABC’si AddressBindingContract
WCF Mimarisi – Adresler Adresler (Addresses) : Bir servisin nerede olduğunu, hangi protokol ile yayınlama yaptığını belirtir. net.tcp://localhost:4000/UrunServisi/Service.svc net.msmq://localhost:6789/MatSrv http://localhost:9001/MatSrv/Cebirci http://localhost:60001/UrunCek?urunId=1 http://localhost/ToplamaIslemi?sayi1=4&sayi2=6 http://localhost:60001/urunler/1
WCF Mimarisi – Bağlayıcılar(Bindings) Bağlayıcılar(Bindings) : Bağlayıcılar temel olarak servisler ile nasıl iletişim kurulacağını tanımlamak üzere kullanılırlar. Bir bağlayıcı tip (Binding Type), taşıma tipi (transport type), protokol(protocol) ve veri çözümlemesini(data encoding) mutlaka bildirir.
WCF Mimarisi – Bağlayıcılar(Bindings) Bağlayıcı Adı Açıklama Ver. BasicHttpBinding Asmx web servis modelini ve WS-I Basic 1.1 profilini destekler. 3.0/ 3.5 WsHttpBinding WS-* şartnamalerine uygun Web Servisi modelini destekler. WsDualHttpBinding İki yönlü seri iletişime(Dublex Communication) izin verir. WebHttpBinding XML ve JSON serileştirme desteği ile servisler üzerinde REST/POX tabanlı iletişime izin verir. WsFederationHttpBinding WS-* için Federation şartnamelerini destekler. Ws2007HttpBinding 2007 WS-* standartlarını destekler. 3.5 Ws2007FederationHttpBinding WsFederationHttpBinding için 2007 standartlarını destekler. NetTcpBinding İki .Net tabanlı sistem arasında Tcp bazlı iletişimi destekler. NetNamedPipeBinding Makine üzerinde bir veya daha fazla .Net tabanlı uygulama arasında iletişimi destekler. NetMsmqBinding MSMQ ile asenkron iletişimi destekler NetPeerTcpBinding Peer-To-Peer ağ uygulamaları arası iletişimi destekler. MsmqIntegrationBinding MSMQ tabanlı kuyruk modelini kullanarak mesaj göndirilip alınmasını destekler.
WCF Mimarisi – Bağlayıcılar(Bindings) İletişim Çeşidi Bağlayıcı (Binding) İletişim Seviysinde Güvenlik (Transport Level Security) Mesaj Seviyesinde Güvenlik (Message Level Security) WS-* Desteği WS-* Transaction Desteği Güvenilir Mesajlaşma (Reliable Messaging) Güvenilir Oturumlar (Reliable Sessions) Performans İstek / Cevap (Request / Reply) Tek Yön (One - Way) Çift Yön (Duplex) BasicHttpBinding 1 İyi WsHttpBinding WsDualHttpBinding WsFederationHttpBinding Ws2007HttpBinding Ws2007FederationHttpBinding NetTcpBinding Daha İyi NetNamedPipeBinding En İyi NetMsmqBinding NetPeerTcpBinding MsmqIntegrationBinding
WCF Mimarisi – Bağlayıcılar(Bindings) Interop Gerekli mi ? Yerel mi? Hayır Başla Evet NetNamedPipeBinding Evet Hayır Diğer MSMQ’ lar ile iletişim var mı? Interop Seviyesi Nedir ? Basic Kuyruk Gerekli mi ? Evet BasicHttpBinding Evet MsmqIntegration Binding WS-* Hayır Hayır Çift Yön (Duplex) Gerekli mi ? Evet NetMsmqBinding WsDualHttpBinding Hayır Hangi bağlayıcının seçileceğine nasıl karar verebiliriz? Peer Network Gerekli mi ? NetPeerTcpBinding Federatif Güvenlik Gerekli mi ? Evet Evet WsFederationHttpBinding Ws2007FederationHttpBindig Hayır Hayır WsHttpBinding Ws2007HttpBinding NetTcpBinding
WCF Mimarisi – Sözleşmeler(Contracts) Sözleşmeler(Contracts): bir servisin ne iş yaptığının bilinmesinde önemli rol oynarlar. Servis Sözleşmesi (Service Contract) Veri Sözleşmesi (Data Contract) Hata Sözleşmesi (Fault Contract) Mesaj Sözleşmesi (Message Contract)
WCF Mimarisi - EndPoint Client (İstemci) Servis (Service) Mesajlar (Messages) EndPoint EndPoint
WCF Mimarisi - EndPoint Client (İstemci) Servis (Service) A B C C B A Message A B C Address Binding Contract Nerede? Nasıl? Ne?
WCF Mimarisi - Hosting WCF Servisleri için Hosting Seçenekleri IIS Hosting Self Hosting Windows Activation Service (WAS) Windows Uygulamaları WPF/WinForms... Console Uygulamaları Windows Servisleri
Demo - Merhaba WCF Dünyası - IIS Tabanlı WCF Servisi
Örnek Vakalar
Klasik Intranet Modeli Active Directory NetTcpBinding Servis (Service) İş Nesnesi (Business Components) TCP TCP Veri Erişim Katmanı (DAL) Doğrulama (Authentication) İstemci
Klasik Internet Modeli HTTPS BasicHttpBinding S e r v i s İş N e s n i D A L Basic Profile Username AspNetDb Username HTTP WsHttpBinding WS* Profile
Güvenilir İş Ortağı Modeli S e r v i s İş N e s n i D A L WsHttpBinding HTTP HTTP İş Ortağı (Internet İstemcisi) Sertifika Deposu (Certificate Store)
Web Uygulaması Modeli S e r v i s İş N e s n i D A L NetTcpBinding Asp.Net App. HTTPS TCP (Internet İstemcisi) Sertifika Deposu (Certificate Store) AspNetDb
Çoklu EndPoint Modeli S e r v i s WsHttpBinding İş N e D s A L WsFederationHttpBinding NetTcpBinding İstemci MsmqIntegrationBinding Custom Binding
Front-End Service Modeli WCF Servisi A İstemci V EndPoint A Front – End WCF Servisi WCF Servisi B İstemci X EndPoint B EndPoint WCF Servisi C İstemci Y EndPoint C1 EndPoint C2 İstemci Z
Geliştirici için Kazanımlar
4,442 satır alt yapı hazırlığı Kod Bazında – 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; } 20,379 satır güvenlik 5,988 satır güvenilir mesajlaşma 25,507 satır transaction 4,442 satır alt yapı hazırlığı Toplam Satır 56,296
1,804 satır güvenilir mesajlaşma Kod Bazında – VS.Net 2003 & WSE 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; 10 satır güvenlik 1,804 satır güvenilir mesajlaşma 25,507 satır transactions Toplam Satır 27,321
Kod Bazında – WCF & VS 2005/2008 1 kod + 2 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> 1 kod + 2 config güvenlik 0 kod + 1 config güvenilir mesajlaşma 2 kod + 1 config (attr.) transactions Toplam Satır 3 kod+ 4 config
.Net 3.5 ile Gelen Bazı Yenilikler Web Destekli Programlama Modeli (Web-Based Programming Model-RESTful) Syndication(İçerik Paylaşımı) Desteği RSS 2.0 Atom 1.0 JSON(JavaScript Object Notation) – Ajax Desteği Ado.Net Data Services açılımı için zemin!
Visual Studio 2008 Yenilikleri WcfSvcHost.exe (Otomatik Host aracı) WcfTestClient.exe (Hazır test amaçlı istemci uygulama) WCF Service Library çeşitleri WCF Service Library Syndication Service Library Sequential Workflow Service Library State Machine Workflow Service Library Service Reference Settings
Performans
Asmx & WCF(BasicHttpBinding) Saniye Başına Operasyon Sayısı (Dört İşlemci) Servis tarafındaki metodumuz geriye sırasıyla 1, 10, 100 nesne gönderimi yapmaktadır. Buna göre servisin saniye başına operasyon işlemleri grafikte yer almaktadır. WCF Asmx
Asmx & WCF(Https - BasicHttpBinding) Saniye Başına Operasyon Sayısı (Dört İşlemci) Servis tarafındaki metodumuz geriye sırasıyla 1, 10, 100 nesne gönderimi yapmaktadır. Buna göre servisin saniye başına operasyon işlemleri grafikte yer almaktadır. Asmx Basic Profile 1.0 a göre mesaj yayını yapmaktadır. (Burada HTTPS Kullanılmıştır)
Asmx WSE 2.0 & WCF Saniye Başına Operasyon Sayısı (Dört İşlemci) Servis tarafındaki metodumuz geriye sırasıyla 1, 10, 100 nesne gönderimi yapmaktadır. Buna göre servisin saniye başına operasyon işlemleri grafikte yer almaktadır. Asmx Basic Profile 1.0 a göre mesaj yayını yapmaktadır ve WSE ile mesaj gönderimi gerçekleştirilmektedir. WSE tarafı XmlDocument kullanırken WCF XmlReader kullandığından belirgin bir performans farkı oluşmaktadır.
.Net Remoting & WCF Saniye Başına Operasyon Sayısı (Dört İşlemci) Bu seneryoda WCF tarafında NetNamedPipeBinding kullanılmış.
Standart SOA Çözümleri Bulunduğumuz Noktada WF ile Entegrasyon Standart SOA Çözümleri WCF Ado.Net Data Services RIA Silverlight Ajax Based Clients
Yardımcı Kaynaklar C#Nedir? (www.csharpnedir.com) NedirTv? (www.nedirtv.com) Bsenyurt (www.bsenyurt.com) selim@bsenyurt.com Essential Windows Communication Foundation For .Net Framework 3.5 Addison Wesley Professional Programming WCF Services Juval Löwy – O’Reilly Windows Communication Foundation 3.5 Unleashed (2nd Edition) (Unleashed) Sams Michele Leroux Baustamante – WCF Web Cast Series MSDN Magazine – Service Station
Teşekkürler
©. 2008 Microsoft Corporation. All rights reserved © 2008 Microsoft Corporation. All rights reserved. This presentation is for informational purposes only. MICROSOFT MAKES NO WARRANTIES, EXPRESS OR IMPLIED, IN THIS SUMMARY.