WSE 3.0 Web Hizmetlerini WCF'ye Taşıma
WSE 3.0 Web hizmetlerini Windows Communication Foundation'a (WCF) geçirmenin avantajları arasında gelişmiş performans ve ek aktarım desteği, ek güvenlik senaryoları ve WS-* belirtimleri yer alır. WSE 3.0'dan WCF'ye geçirilen bir Web hizmeti %200 ile %400 arası performans geliştirmesi yaşayabilir. WCF tarafından desteklenen aktarımlar hakkında daha fazla bilgi için bkz . Taşıma Seçme. WCF tarafından desteklenen senaryoların listesi için bkz . Ortak Güvenlik Senaryoları. WCF tarafından desteklenen belirtimlerin listesi için bkz . Web Hizmetleri Protokolleri Birlikte Çalışabilirlik Kılavuzu.
Aşağıdaki bölümler, WSE 3.0 Web hizmetinin belirli bir özelliğini WCF'ye geçirme konusunda rehberlik sağlar.
Genel
WSE 3.0 ve WCF uygulamaları, kablo düzeyinde birlikte çalışabilirlik ve ortak bir terim kümesi içerir. WSE 3.0 ve WCF uygulamaları, her ikisinin de desteklediği WS-* belirtimleri kümesine göre kablo düzeyinde birlikte çalışabilir. WSE 3.0 veya WCF uygulaması geliştirildiğinde, WSE'deki anahtar teslimi güvenlik onaylarının adları ve kimlik doğrulama modları gibi yaygın bir terim kümesi vardır.
WCF ile ASP.NET veya WSE 3.0 programlama modelleri arasında birçok benzer özellik olsa da, bunlar farklıdır. WCF programlama modeli hakkında ayrıntılı bilgi için bkz . Temel Programlama Yaşam Döngüsü.
Not
WSE Web hizmetini WCF'ye geçirmek için ServiceModel Meta Veri Yardımcı Programı Aracı (Svcutil.exe) aracı bir istemci oluşturmak için kullanılabilir. Ancak bu istemci, WCF hizmeti için de başlangıç noktası olarak kullanılabilecek arabirimler ve sınıflar içerir. Oluşturulan arabirimler, özelliğinin OperationContractAttribute olarak ayarlandığı *
sözleşmenin ReplyAction üyelerine özniteliğini uygulamıştır. WSE istemcisi bu ayara sahip bir Web hizmetini çağırdığında şu özel durum oluşur: Web.Services3.ResponseProcessingException: WSE910: Yanıt iletisi işlenirken bir hata oluştu ve hatayı iç özel durumda bulabilirsiniz. Bunu azaltmak için özniteliğinin ReplyAction OperationContractAttribute özelliğini gibi değer olmayannull
bir değere http://Microsoft.WCF.Documentation/ResponseToOCAMethod
ayarlayın.
Güvenlik
İlke dosyası kullanılarak güvenliği sağlanan WSE 3.0 Web hizmetleri
WCF hizmetleri bir hizmetin güvenliğini sağlamak için bir yapılandırma dosyası kullanabilir ve bu mekanizma WSE 3.0 ilke dosyasına benzer. WSE 3.0'da bir web hizmetinin güvenliğini ilke dosyası kullanarak sağlarken anahtar teslimi bir güvenlik onayı veya özel ilke onayı kullanırsınız. Anahtar teslimi güvenlik onayları, WCF güvenlik bağlama öğesinin kimlik doğrulama moduyla yakından eşler. WCF kimlik doğrulama modları ve WSE 3.0 anahtar teslimi güvenlik onayları aynı veya benzer şekilde adlandırılır, aynı kimlik bilgisi türlerini kullanarak iletilerin güvenliğini sağlar. Örneğin, usernameForCertificate
WSE 3.0'daki anahtar teslimi güvenlik onayı WCF'deki kimlik doğrulama moduna eşler UsernameForCertificate
. Aşağıdaki kod örnekleri, WSE 3.0'da anahtar teslimi güvenlik onayını kullanan en düşük ilkenin usernameForCertificate
wcf'deki bir UsernameForCertificate
kimlik doğrulama moduna özel bağlamada nasıl eşlendiğini gösterir.
WSE 3.0
<policies>
<policy name="MyPolicy">
<usernameForCertificate messageProtectionOrder="SignBeforeEncrypt"
requireDeriveKeys="true"/>
</policy>
</policies>
WCF
<customBinding>
<binding name="MyBinding">
<security authenticationMode="UserNameForCertificate"
messageProtectionOrder="SignBeforeEncrypt"
requireDerivedKeys="true"/>
</binding>
</customBinding>
İlke dosyasında belirtilen WSE 3.0 Web hizmetinin güvenlik ayarlarını WCF'ye geçirmek için, yapılandırma dosyasında özel bir bağlama oluşturulmalıdır ve anahtar teslimi güvenlik onayı eşdeğer kimlik doğrulama moduna ayarlanmalıdır. Ayrıca, WSE 3.0 istemcileri hizmetle iletişim kurarken özel bağlamanın Ağustos 2004 WS-Addressing belirtimini kullanacak şekilde yapılandırılması gerekir. Geçirilen WCF hizmeti WSE 3.0 istemcileriyle iletişim gerektirmezse ve yalnızca güvenlik eşliğini koruması gerekiyorsa, özel bağlama oluşturmak yerine uygun güvenlik ayarlarıyla WCF sistem tanımlı bağlamaları kullanmayı göz önünde bulundurun.
Aşağıdaki tabloda WSE 3.0 ilke dosyası ile WCF'deki eşdeğer özel bağlama arasındaki eşleme listelenir.
WSE 3.0 Anahtar Teslimi Güvenlik Onayı | WCF özel bağlama yapılandırması |
---|---|
<usernameOverTransportSecurity /> | <customBinding> <binding name="MyBinding"> <security authenticationMode="UserNameOverTransport" /> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> |
<mutualCertificate10Güvenlik /> | <customBinding> <binding name="MyBinding"> <security messageSecurityVersion="WSSecurity10WSTrustFebruary2005WSSecureConversationFebruary2005WSSecurityPolicy11BasicSecurityProfile10" authenticationMode="MutualCertificate" /> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> |
<usernameForCertificateSecurity /> | <customBinding> <binding name="MyBinding"> <security authenticationMode="UsernameForCertificate"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> |
<anonymousForCertificateSecurity /> | <customBinding> <binding name="MyBinding"> <security authenticationMode="AnonymousForCertificate"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> |
<kerberosSecurity /> | <customBinding> <binding name="MyBinding"> <security authenticationMode="Kerberos"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> |
<mutualCertificate11Güvenlik /> | <customBinding> <binding name="MyBinding"> <security authenticationMode="MutualCertificate"/> <textMessageEncoding messageVersion="Soap12WSAddressingAugust2004" /> </binding> </customBinding> |
WCF'de özel bağlamalar oluşturma hakkında daha fazla bilgi için bkz . Özel Bağlamalar.
Uygulama kodu kullanılarak güvenliği sağlanan WSE 3.0 Web hizmetleri
WSE 3.0 veya WCF kullanılsın, güvenlik gereksinimleri yapılandırma yerine uygulama kodunda belirtilebilir. WSE 3.0'da bu, sınıfından Policy
türetilen bir sınıf oluşturarak ve ardından yöntemini çağırarak Add
gereksinimleri ekleyerek gerçekleştirilir. Kodda güvenlik gereksinimlerini belirtme hakkında daha fazla bilgi için bkz . Nasıl yapılır: İlke Dosyası Kullanmadan Web Hizmetinin Güvenliğini Sağlama. WCF'de, kodda güvenlik gereksinimlerini belirtmek için sınıfının bir örneğini BindingElementCollection oluşturun ve öğesine bir SecurityBindingElement BindingElementCollectionörneği ekleyin. Güvenlik onaylama gereksinimleri, sınıfın statik kimlik doğrulama modu yardımcı yöntemleri SecurityBindingElement kullanılarak ayarlanır. WCF kullanarak kodda güvenlik gereksinimlerini belirtme hakkında daha fazla ayrıntı için bkz . Nasıl yapılır: SecurityBindingElement Kullanarak Özel Bağlama Oluşturma ve Nasıl yapılır: Belirtilen Kimlik Doğrulama Modu için SecurityBindingElement Oluşturma.
WSE 3.0 Özel İlke Onayı
WSE 3.0'da iki tür özel ilke onayı vardır: SOAP iletisinin güvenliğini sağlayanlar ve SOAP iletisinin güvenliğini sağlamayanlar. Güvenli SOAP iletilerinin WSE 3.0 SecurityPolicyAssertion
sınıfından türetildiğini ve WCF'deki kavramsal eşdeğerin SecurityBindingElement sınıfı olduğunu belirten ilke onayları.
Dikkat edilmesi gereken önemli bir nokta, WSE 3.0 anahtar teslimi güvenlik onaylarının WCF kimlik doğrulama modlarının bir alt kümesi olmasıdır. WSE 3.0'da özel bir ilke onayı oluşturduysanız, eşdeğer bir WCF kimlik doğrulama modu olabilir. Örneğin, WSE 3.0 anahtar teslimi güvenlik onayına UsernameOverTransport
eşdeğer bir CertificateOverTransport güvenlik onayı sağlamaz, ancak istemci kimlik doğrulaması amacıyla bir X.509 sertifikası kullanır. Bu senaryo için kendi özel ilke onayınızı tanımladıysanız, WCF geçişi kolaylaştırır. WCF, bu senaryo için bir kimlik doğrulama modu tanımlar, bu nedenle wcfSecurityBindingElement yapılandırmak için statik kimlik doğrulama modu yardımcı yöntemlerinden yararlanabilirsiniz.
SOAP iletilerinin güvenliğini sağlayan, sınıfından veya AsymmetricSecurityBindingElementWCF sınıflarından TransportSecurityBindingElementSymmetricSecurityBindingElement bir sınıf türeten ve eşdeğer bağlama öğesini belirten özel ilke onaylarına eşdeğer bir WCF kimlik doğrulama modu olmadığında. Daha fazla ayrıntı için bkz . Nasıl yapılır: SecurityBindingElement Kullanarak Özel Bağlama Oluşturma.
SOAP iletisinin güvenliğini sağlamayan bir özel ilke onayını dönüştürmek için bkz . Filtreleme ve örnek Özel İleti Kesici.
WSE 3.0 Özel Güvenlik Belirteci
Özel belirteç oluşturmaya yönelik WCF programlama modeli WSE 3.0'dan farklıdır. WSE'de özel belirteç oluşturma hakkında ayrıntılı bilgi için bkz . Özel Güvenlik Belirteçleri Oluşturma. WCF'de özel belirteç oluşturma hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Özel Belirteç Oluşturma.
WSE 3.0 Özel Belirteç Yöneticisi
Özel belirteç yöneticisi oluşturmaya yönelik programlama modeli WCF'de WSE 3.0'dan farklıdır. Özel belirteç yöneticisi ve özel bir güvenlik belirteci için gereken diğer bileşenler oluşturma hakkında ayrıntılı bilgi için bkz . Nasıl yapılır: Özel Belirteç Oluşturma.
Not
Özel UsernameToken
bir güvenlik belirteci yöneticisi oluşturduysanız WCF, kimlik doğrulama mantığını belirtmek için özel bir güvenlik belirteci yöneticisi oluşturmaktan daha kolay bir mekanizma sağlar. Diğer ayrıntılar için bkz . Nasıl yapılır: Özel Kullanıcı Adı ve Parola Doğrulayıcı Kullanma.
MTOM ile kodlanmış SOAP iletilerini kullanan WSE 3.0 Web hizmetleri
WSE 3 uygulaması gibi WCF uygulaması da yapılandırmada MTOM ileti kodlamasını belirtebilir. Bu ayarı geçirmek için mtomMessageEncoding'i hizmetin bağlamasına ekleyin<.> Aşağıdaki kod örneği, WCF'de eşdeğer olan bir hizmet için WSE 3.0'da MTOM kodlamasının nasıl belirtildiğini gösterir.
WSE 3.0
<messaging>
<mtom clientMode="On"/>
</messaging>
WCF
<customBinding>
<binding name="MyBinding">
<mtomMessageEncoding/>
</binding>
</customBinding>
Mesajlaşma
WSE Mesajlaşma API'sini kullanan WSE 3.0 Uygulamaları
İstemci ve Web hizmeti arasında iletişim kuran XML'e doğrudan erişim elde etmek için WSE Mesajlaşma API'si kullanıldığında, uygulama "Düz Eski XML" (POX) kullanacak şekilde dönüştürülebilir. POX hakkında daha fazla ayrıntı için bkz . POX Uygulamalarıyla Birlikte Çalışabilirlik. WSE Mesajlaşma API'si hakkında daha fazla ayrıntı için bkz . WSE Mesajlaşma API'sini Kullanarak SOAP İletileri Gönderme ve Alma.
Taşımalar
TCP
Varsayılan olarak, TCP aktarımını kullanarak SOAP iletileri gönderen WSE 3.0 istemcileri ve Web hizmetleri WCF istemcileri ve Web hizmetleriyle birlikte çalışmaz. Bu uyumsuzluk, TCP protokolünde kullanılan çerçevedeki farklılıklardan ve performans nedenlerinden kaynaklanır. Ancak WCF örneği, WSE 3.0 ile birlikte çalışabilen özel bir TCP oturumlarının nasıl uygulandığını açıklar. Bu örnek hakkında ayrıntılı bilgi için bkz . Aktarım: WSE 3.0 TCP Birlikte Çalışabilirliği.
BIR WCF uygulamasının TCP aktarımını kullandığını belirtmek için netTcpBinding> kullanın<.
Özel Aktarım
WCF'de WSE 3.0 özel aktarımının eşdeğeri bir kanal uzantısıdır. Kanal uzantısı oluşturma hakkında ayrıntılı bilgi için bkz . Kanal Katmanını Genişletme.