Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu konu, HTTP aktarımını kullanarak birlikte çalışma için gereken WS-ReliableMessaging Şubat 2007 (sürüm 1.1) protokolü için Windows Communication Foundation (WCF) uygulama ayrıntılarını kapsar. WCF, bu konuda açıklanan kısıtlamalar ve açıklamalar ile WS-ReliableMessaging belirtimini izler. WS-ReliableMessaging sürüm 1.1 protokollerinin .NET Framework 3.5'den başlayarak uygulandığını unutmayın.
WS-ReliableMessaging Şubat 2007 protokolü, ReliableSessionBindingElement tarafından WCF'de uygulanır.
Kolaylık sağlamak için konu başlığı altında aşağıdaki roller kullanılır:
Başlatıcı: WS-Reliable İleti dizisi oluşturma işlemini başlatan istemci.
Yanıtlayıcı: Başlatıcının isteklerini alan hizmet.
Bu belge aşağıdaki tabloda yer alan ön ekleri ve ad alanlarını kullanır.
| Önek | Namespace |
|---|---|
| wsrm | http://docs.oasis-open.org/ws-rx/wsrm/200702 |
| netrm | http://schemas.microsoft.com/ws/2006/05/rm |
| s | http://www.w3.org/2003/05/soap-envelope |
| wsa | http://schemas.xmlsoap.org/ws/2005/08/addressing |
| wsse | http://docs.oasis-open.org/wss/2004/01/oasis-200401-wssecurity-secext-1.0.xsd |
| wsrmp | http://docs.oasis-open.org/ws-rx/wsrmp/200702 |
| netrmp | http://schemas.microsoft.com/ws-rx/wsrmp/200702 |
| wsp | (WS-Policy 1.2 veya WS-Policy 1.5) |
Mesajlaşma
Sıra Oluşturma
WCF, güvenilir bir mesajlaşma dizisi oluşturmak için CreateSequence ve CreateSequenceResponse iletilerini uygular. Aşağıdaki kısıtlamalar geçerlidir:
B1101: WCF Başlatıcısı, iletinin
CreateSequence,ReplyTo,AcksToveOffer/Endpointile aynı uç nokta başvurularını kullanır.R1102:
AcksTo,ReplyToveOffer/Endpointuç nokta başvuruları,CreateSequenceiletisindeki adres değerlerinin, sekizlik bazında tam olarak eşleşecek şekilde aynı dize gösterimleri ile belirtilmiş olması gerekmektedir.- WCF Yanıtlayıcısı, bir dizi oluşturmadan önce ,
AcksToveReplyTouç nokta başvurularının URI bölümününEndpointaynı olduğunu doğrular.
- WCF Yanıtlayıcısı, bir dizi oluşturmadan önce ,
R1103:
AcksTo,ReplyToveOffer/Endpointuç nokta başvurularıCreateSequenceiletisindeki aynı referans parametreleri kümesine sahip olmalıdır.- WCF zorlamaz, ancak
AcksToüzerindeki uç nokta başvurularınınReplyTo,Offer/EndpointveCreateSequenceile aynı olduğunu varsayar veReplyTouç nokta başvurusundaki başvuru parametrelerini onaylar ve ters dizili iletiler için kullanır.
- WCF zorlamaz, ancak
B1104: WCF Başlatıcısı,
Expiresiletisinde isteğe bağlıOffer/ExpiresveyaCreateSequenceöğesini üretmez.B1105:
CreateSequenceiletisine erişirken, WCF Yanıtlayıcısı,ExpiresöğesindekiCreateSequencedeğerini,ExpiresöğesindekiCreateSequenceResponsedeğeri olarak kullanır. Aksi takdirde, WCF YanıtlayıcısıExpiresveOffer/Expiresdeğerlerini okur ve yoksayar.B1106: İletiye
CreateSequenceResponseerişirken, WCF Başlatıcısı isteğe bağlıExpiresdeğeri okur ancak kullanmaz.B1107: WCF Başlatıcısı ve Yanıtlayıcı her zaman
IncompleteSequenceBehaviorveCreateSequence/Offeröğelerinde isteğe bağlıCreateSequenceResponseöğesini oluşturur.B1108: WCF, yalnızca
DiscardFollowingFirstGapöğesindekiNoDiscardveIncompleteSequenceBehaviordeğerlerini kullanır.- WS-ReliableMessaging, bir oturumu oluşturan iki karşıt ve bağıntılı diziyi oluşturmak için
Offermekanizmasını kullanır.
- WS-ReliableMessaging, bir oturumu oluşturan iki karşıt ve bağıntılı diziyi oluşturmak için
B1109: Eğer
CreateSequencebirOfferöğesi içeriyorsa, WCF Yanıtlayıcısı'nın, birCreateSequenceResponseöğesi olmadanAcceptile yanıt vererek sunulan sırayı reddetmesinin tek yolu budur.B1110: Reliable Messaging Yanıtlayıcısı sunulan sırayı reddederse, WCF Başlatıcısı yeni oluşturulan dizide hata verir.
B1111: Bir
CreateSequenceöğe içermiyorsaOffer, iki yönlü WCF Yanıtlayıcısı birCreateSequenceRefusedhatayla yanıt vererek sunulan sırayı reddeder.R1112: Mekanizma kullanılarak
Offeriki ters dizi oluşturulduğunda,[address]uç nokta başvurusununCreateSequenceResponse/Accept/AcksToözelliği bayt için ileti baytınınCreateSequencehedef URI'sine uymalıdır.R1113: Mekanizma kullanılarak
Offeriki ters dizi oluşturulduğunda, başlatıcıdan Yanıtlayıcı'ya akan her iki dizideki tüm iletiler aynı uç nokta başvurusuna gönderilmelidir.
WCF, Başlatıcı ile Yanıtlayıcı arasında güvenilir oturumlar oluşturmak için WS-ReliableMessaging kullanır. WCF WS-ReliableMessaging uygulaması tek yönlü, istek-yanıt ve tam çift yönlü mesajlaşma desenleri için güvenilir bir oturum sağlar.
Offer ve CreateSequence üzerindeki WS-ReliableMessaging CreateSequenceResponse mekanizması, iki bağıntılı ters diziyi oluşturmanıza olanak tanır ve tüm ileti uç noktaları için uygun bir oturum protokolü sağlar. WCF, oturum bütünlüğü için uçtan uca koruma da dahil olmak üzere böyle bir oturum için güvenlik garantisi sağladığından, aynı tarafa yönelik iletilerin aynı hedefe ulaştığından emin olmak pratiktir. Bu, uygulama iletilerinde sıra onaylarının ek olarak gönderilmesine de olanak tanır. Bu nedenle, R1102, R1112 ve R1113 kısıtlamaları WCF için geçerlidir.
Bir ileti örneği CreateSequence.
<s:Envelope>
<s:Header>
<wsa:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequence</wsa:Action>
<wsa:MessageID>urn:uuid:949cca61-8813-42ff-ab33-18d9e3fa82fa</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/clientA</wsa:Address>
</wsa:ReplyTo>
<wsa:To s:mustUnderstand="1">http://BusinessABC.com/serviceA</wsa:To>
</s:Header>
<s:Body>
<wsrm:CreateSequence>
<wsrm:AcksTo>
<wsa:Address>http://Business456.com/clientA</wsa:Address>
</wsrm:AcksTo>
<wsrm:Offer>
<wsrm:Identifier>urn:uuid:066b4730-fc82-458a-a5c1-210be4fb4e4e</wsrm:Identifier>
<wsrm:Endpoint>
<wsa:Address>http://Business456.com/clientA</wsa:Address>
</wsrm:Endpoint>
<wsrm:IncompleteSequenceBehavior>DiscardFollowingFirstGap</wsrm:IncompleteSequenceBehavior>
</wsrm:Offer>
</wsrm:CreateSequence>
</s:Body>
</s:Envelope>
Bir ileti örneği CreateSequenceResponse.
<s:Envelope>
<s:Header>
<wsa:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/CreateSequenceResponse</wsa:Action>
<wsa:RelatesTo>urn:uuid:949cca61-8813-42ff-ab33-18d9e3fa82fa</wsa:RelatesTo>
<wsa:To s:mustUnderstand="1">http://Business456.com/clientA</wsa:To>
</s:Header>
<s:Body>
<wsrm:CreateSequenceResponse>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:IncompleteSequenceBehavior>DiscardFollowingFirstGap</wsrm:IncompleteSequenceBehavior>
<wsrm:Accept>
<wsrm:AcksTo>
<wsa:Address>http://BusinessABC.com/serviceA</wsa:Address>
</wsrm:AcksTo>
</wsrm:Accept>
</wsrm:CreateSequenceResponse>
</s:Body>
</s:Envelope>
Sırayı Kapatma
WCF, Güvenilir Mesajlaşma kaynağı tarafından başlatılan kapatma için CloseSequence ve CloseSequenceResponse iletilerini kullanır. WCF Reliable Messaging hedefi kapatma işlemini başlatmaz ve WCF Reliable Messaging kaynağı, Reliable Messaging hedef tarafından başlatılan kapatma işlemini desteklemediğini belirtir. Aşağıdaki kısıtlamalar geçerlidir:
B1201: WCF Reliable Messaging kaynağı her zaman diziyi kapatmak için bir
CloseSequenceileti gönderir.B1202: Reliable Messaging kaynağı,
CloseSequencemesajını göndermeden önce tüm dizi iletilerinin onaylanmasını bekler.B1203: Dizide ileti olmadıkça, Reliable Messaging kaynağı her zaman isteğe bağlı
LastMsgNumberöğesini içerir.R1204: Reliable Messaging hedefi, bir
CloseSequenceileti göndererek kapatmayı başlatmamalıdır.B1205: Bir
CloseSequenceileti aldıktan sonra, WCF Reliable Messaging kaynağı sıranın tamamlanmamış olduğunu düşünür ve bir hata gönderir.
Bir ileti örneği CloseSequence.
<s:Envelope>
<s:Header>
<wsa:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/CloseSequence</wsa:Action>
<wsa:MessageID>urn:uuid:6ce1d4c3-e1c1-474f-a8c9-4210e37f7877</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/clientA</wsa:Address>
</wsa:ReplyTo>
<wsa:To s:mustUnderstand="1">http://BusinessABC.com/serviceA</wsa:To>
</s:Header>
<s:Body>
<wsrm:CloseSequence>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:LastMsgNumber>30</wsrm:LastMsgNumber>
</wsrm:CloseSequence>
</s:Body>
</s:Envelope>
Örnek CloseSequenceResponse ileti:
<s:Envelope>
<s:Header>
<wsrm:SequenceAcknowledgement>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:AcknowledgementRange Lower="1" Upper="30"></wsrm:AcknowledgementRange>
<wsrm:Final></wsrm:Final>
<netrm:BufferRemaining>8</netrm:BufferRemaining>
</wsrm:SequenceAcknowledgement>
<wsa:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/CloseSequenceResponse</wsa:Action>
<wsa:RelatesTo>urn:uuid:6ce1d4c3-e1c1-474f-a8c9-4210e37f7877</wsa:RelatesTo>
<wsa:To s:mustUnderstand="1">http://Business456.com/clientA</wsa:To>
</s:Header>
<s:Body>
<wsrm:CloseSequenceResponse>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
</wsrm:CloseSequenceResponse>
</s:Body>
</s:Envelope>
Dizi Sonlandırma
WCF, TerminateSequence/TerminateSequenceResponse el sıkışmasını tamamladıktan sonra esas olarak CloseSequence/CloseSequenceResponse el sıkışma protokolünü kullanır. WCF Reliable Messaging hedefi sonlandırma başlatmaz ve Reliable Messaging kaynağı, Reliable Messaging hedefi tarafından başlatılan sonlandırmayı desteklemez. Aşağıdaki kısıtlamalar geçerlidir:
B1301: WCF Başlatıcısı yalnızca el sıkışması
TerminateSequencebaşarıyla tamamlandıktanCloseSequence/CloseSequenceResponsesonra iletiyi gönderir.R1302: WCF, belirli bir dizi için
LastMsgNumberöğesinin tümCloseSequenceveTerminateSequenceiletiler arasında tutarlı olduğunu doğrular. Bu,LastMsgNumber'ün ya tümCloseSequenceveTerminateSequenceiletilerde mevcut olmadığı ya da tümCloseSequenceveTerminateSequenceiletilerde mevcut olup aynı olduğu anlamına gelir.B1303: El sıkışması sonrasında
TerminateSequencebirCloseSequence/CloseSequenceResponseileti alındığında Güvenilir Mesajlaşma hedefi birTerminateSequenceResponseiletiyle yanıt verir. Reliable Messaging kaynağı iletiyi göndermedenTerminateSequenceönce son onaya sahip olduğundan, Reliable Messaging hedefi şüphesiz sıranın sona erdiğini bilir ve kaynakları hemen geri alır.B1304: El sıkışmadan
TerminateSequenceönce birCloseSequence/CloseSequenceResponseileti alındığında, WCF Reliable Messaging hedefi birTerminateSequenceResponseiletiyle yanıt verir. Reliable Messaging hedefi, dizide tutarsızlık olmadığını belirlerse, Reliable Messaging hedefi, istemcinin son onayı alma şansını elde etmek için kaynakları geri kazanmadan önce uygulama hedefi tarafından belirtilen süreyi bekler. Aksi takdirde Reliable Messaging hedefi kaynakları hemen geri alır ve uygulama hedefine olayı yükselterekFaulteddizinin şüpheyle sona erdiğini gösterir.
Bir ileti örneği TerminateSequence.
<s:Envelope>
<s:Header>
<wsa:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/TerminateSequence</wsa:Action>
<wsa:MessageID>urn:uuid:3597a398-4f3c-40f4-9335-8f1515572fdf</wsa:MessageID>
<wsa:ReplyTo>
<wsa:Address>http://Business456.com/clientA</wsa:Address>
</wsa:ReplyTo>
<wsa:To s:mustUnderstand="1">http://BusinessABC.com/serviceA</wsa:To>
</s:Header>
<s:Body>
<wsrm:TerminateSequence>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:LastMsgNumber>30</wsrm:LastMsgNumber>
</wsrm:TerminateSequence>
</s:Body>
</s:Envelope>
Örnek TerminateSequenceResponse ileti:
<s:Envelope>
<s:Header>
<wsrm:SequenceAcknowledgement>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:AcknowledgementRange Lower="1" Upper="30"></wsrm:AcknowledgementRange>
<wsrm:Final></wsrm:Final>
<netrm:BufferRemaining>8</netrm:BufferRemaining>
</wsrm:SequenceAcknowledgement>
<wsa:Action s:mustUnderstand="1">http://docs.oasis-open.org/ws-rx/wsrm/200702/TerminateSequenceResponse</wsa:Action>
<wsa:RelatesTo>urn:uuid:3597a398-4f3c-40f4-9335-8f1515572fdf</wsa:RelatesTo>
<wsa:To s:mustUnderstand="1">://Business456.com/clientA</wsa:To>
</s:Header>
<s:Body>
<wsrm:TerminateSequenceResponse>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
</wsrm:TerminateSequenceResponse>
</s:Body>
</s:Envelope>
Sekanslar
Sıralara uygulanan kısıtlamaların listesi aşağıdadır:
- B1401:WCF, 'nin en büyük kapsayıcı değeri olan 9223372036854775807'den
xs:longyüksek olmayan sıra numaraları oluşturur ve bu sayılara erişir.
Bir Sequence başlık örneği.
<wsrm:Sequence s:mustUnderstand="1">
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:MessageNumber>1</wsrm:MessageNumber>
</wsrm:Sequence>
Onay İste
WCF, AckRequested üst bilgisini canlı kalma mekanizması olarak kullanır.
Bir AckRequested başlık örneği.
<wsrm:AckRequested>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
</wsrm:AckRequested>
Dizi Onayı
WCF, WS-Reliable Mesajlaşmada sağlanan sıralı onaylar için bir "ek yük" mekanizması kullanır. Aşağıdaki kısıtlamalar geçerlidir:
R1601: İki ters dizi mekanizma
Offerkullanılarak oluşturulduğunda,SequenceAcknowledgementüst bilgisi istenen alıcıya iletilen herhangi bir uygulama mesajına eklenebilir. Uzak uç noktanınSequenceAcknowledgementpiggyback edilmiş bir üst bilgiye erişebilmesi gerekir.B1602: WCF
SequenceAcknowledgementöğeleri içerenNacküst bilgiler oluşturmaz. WCF, herNacköğesinin bir sıra numarası içerdiğini doğrular, aksi takdirdeNacköğesini ve değerini yoksayar.
Bir SequenceAcknowledgement başlık örneği.
<wsrm:SequenceAcknowledgement>
<wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier>
<wsrm:AcknowledgementRange Lower="1" Upper="1"></wsrm:AcknowledgementRange>
</wsrm:SequenceAcknowledgement>
WS-ReliableMessaging Hataları
Aşağıda, WS-ReliableMessaging hatalarının WCF uygulamasına uygulanan kısıtlamaların listesi yer alır. Aşağıdaki kısıtlamalar geçerlidir:
B1701: WCF hata oluşturmaz
MessageNumberRollover.B1702: SOAP 1.2 üzerinden, hizmet uç noktası bağlantı sınırına ulaştığında ve yeni bağlantıları işleyemediğinde, WCF aşağıdaki örnekte gösterildiği gibi iç içe
CreateSequenceRefusedgeçmiş bir hata alt kodunetrm:ConnectionLimitReachedoluşturur.
<s:Envelope>
<s:Header>
<wsa:Action>http://docs.oasis-open.org/ws-rx/wsrm/200702/fault</wsa:Action>
</s:Header>
<s:Body>
<s:Fault>
<s:Code>
<s:Value>s:Receiver</s:Value>
<s:Subcode>
<s:Value>wsrm:CreateSequenceRefused</s:Value>
<s:Subcode>
<s:Value>netrm:ConnectionLimitReached</s:Value>
</s:Subcode>
</s:Subcode>
</s:Code>
<s:Reason>
<s:Text xml:lang="en">Server 'http://BusinessABC.com/serviceA' is too busy to process this request. Try again later.</s:Text>
</s:Reason>
</s:Fault>
</s:Body>
</s:Envelope>
WS-Addressing Hataları
WS-ReliableMessaging WS-Addressing kullandığından, WCF WS-ReliableMessaging uygulaması WS-Addressing hataları oluşturabilir ve iletebilir. Bu bölüm, WCF'nin WS-ReliableMessaging katmanında açıkça oluşturduğu ve ilettiği WS-Addressing hataları kapsar:
B1801:WCF, aşağıdakilerden biri doğru olduğunda hatayı oluşturur ve iletir
Message Addressing Header Required:Bir
CreateSequence,CloseSequenceya daTerminateSequenceiletisindeMessageIdbaşlık eksik.Bir
CreateSequence,CloseSequenceya daTerminateSequenceiletisindeReplyTobaşlık eksik.Bir
CreateSequenceResponse,CloseSequenceResponseveyaTerminateSequenceResponseiletisindeRelatesTobaşlık bilgisi eksik.
B1802: WCF,
Endpoint Unavailablemesajındaki adresleme üst bilgilerinin incelenmesine dayanarak sırayı işleyebilen bir uç noktanın dinlemediğini belirtmek içinCreateSequencehatasını oluşturur ve iletir.
Protokol Oluşturma
WS-Addressing ile kompozisyon
WCF, WS-Addressing'in iki sürümünü destekler: WS-Addressing 2004/08 [WS-ADDR] ve W3C WS-Addressing 1.0 Önerileri [WS-ADDR-CORE] ve [WS-ADDR-SOAP].
WS-ReliableMessaging belirtimi yalnızca WS-Addressing 2004/08'den bahsedse de, kullanılacak WS-Addressing sürümünü kısıtlamaz. WCF için geçerli olan kısıtlamaların listesi aşağıdadır:
R2101: hem WS-Addressing 2004/08 hem de WS-Addressing 1.0, WS-Reliable Mesajlaşma ile kullanılabilir.
R2102: Verilen bir WS-ReliableMessaging dizisi boyunca veya
Offermekanizması kullanılarak ilişkilendirilen bir çift zıt dizi boyunca tek bir WS-Addressing sürümü kullanılmalıdır.
SOAP ile kompozisyon
WCF, WS-Reliable Mesajlaşma ile hem SOAP 1.1 hem de SOAP 1.2 kullanımını destekler.
WS-Security ve WS-SecureConversation ile kompozisyon
WCF, güvenli Aktarım (HTTPS), WS-Security ile oluşturma ve WS-Secure Konuşma ile oluşturma kullanarak WS-ReliableMessaging dizileri için koruma sağlar. WS-ReliableMessaging 1.1 protokolü, WS-Security 1.1 ve WS-Secure Konuşma 1.3 protokolü birlikte kullanılmalıdır. WCF için geçerli olan kısıtlamaların listesi aşağıdadır:
R2301: WCF, kişisel iletilerin bütünlüğü ve gizliliğine ek olarak bir WS-ReliableMessaging dizisinin bütünlüğünü korumak için WS-Secure Konuşmanın kullanılması gerekir.
R2302: WS-ReliableMessaging dizileri oluşturulmadan önceAWS-Secure Konuşma oturumu oluşturulmalıdır.
R2303: WS-ReliableMessaging dizisinin ömrü WS-Secure Konuşma oturumunun ömrünü aşarsa,
SecurityContextTokenWS-Secure Konuşma kullanılarak oluşturulan, ilgili WS-Secure Konuşma Yenileme bağlaması kullanılarak yenilenmelidir.B2304:WS-ReliableMessaging dizisi veya bir çift bağıntılı ters dizi her zaman tek bir WS-SecureConversation oturumuna bağlıdır.
R2305: WS-Secure Konuşma ile oluşturulduğunda, WCF yanıtlayıcısı
CreateSequencemesajınınwsse:SecurityTokenReferenceöğesini vewsrm:UsesSequenceSTRüst bilgisini içermesini gerektirir.
Bir UsesSequenceSTR başlık örneği.
<wsrm:UsesSequenceSTR></wsrm:UsesSequenceSTR>
SSL/TLS oturumlarıyla oluşturma
WCF, SSL/TLS oturumlarıyla bileşimi desteklemez:
B2401: WCF
wsrm:UsesSequenceSSLüst bilgisini oluşturmaz.R2402: Güvenilir Mesajlaşma Başlatıcısı, WCF Yanıtlayıcısına
CreateSequenceüst bilgisi ile birwsrm:UsesSequenceSSLmesaj göndermemelidir.
WS-Policy ile kompozisyon
WCF, WS İlkesi'nin iki sürümünü destekler: WS-Policy 1.2 ve WS-Policy 1.5.
WS-ReliableMessaging WS-Policy Doğrulama
WCF, uç nokta özelliklerini açıklamak için WS-ReliableMessaging WS-Policy Onay wsrm:RMAssertion kullanır. WCF için geçerli olan kısıtlamaların listesi aşağıdadır:
B3001: WCF öğelere
wsrmn:RMAssertionWS-Policy Onay eklerwsdl:binding. WCF,wsdl:bindingvewsdl:portöğelerine ekleri destekler.B3002: WCF hiçbir zaman etiketi oluşturmaz
wsp:Optional.B3003:
wsrmp:RMAssertionWS-Policy Onayına erişirken WCF,wsp:Optionaletiketini görmezden gelir ve WS-RM ilkesini zorunlu olarak ele alır.R3004: WCF, SSL/TLS oturumlarıyla bütünleşmediğinden,
wsrmp:SequenceTransportSecurityilkesini belirten politikayı kabul etmez.B3005: WCF her zaman öğesini oluşturur
wsrmp:DeliveryAssurance.B3006: WCF her zaman teslim güvencesini
wsrmp:ExactlyOncebelirtir.B3007: WCF, WS-ReliableMessaging onayının aşağıdaki özelliklerini oluşturur ve okur ve WCF
ReliableSessionBindingElementüzerinde bunlar üzerinde denetim sağlar:netrmp:InactivityTimeoutnetrmp:AcknowledgementInterval
Bir örnek
RMAssertion.<wsrmp:RMAssertion> <wsp:Policy> <wsrmp:SequenceSTR/> <wsrmp:DeliveryAssurance> <wsp:Policy> <wsrmp:ExactlyOnce/> <wsrmp:InOrder/> </wsp:Policy> </wsrmp:DeliveryAssurance> </wsp:Policy> <netrmp:InactivityTimeout Milliseconds="600000"/> <netrmp:AcknowledgementInterval Milliseconds="200"/> </wsrmp:RMAssertion>
Akış Denetimi WS-ReliableMessaging Uzantısı
WCF, sıralı ileti akışı üzerinde isteğe bağlı ek daha sıkı denetim sağlamak için WS-ReliableMessaging genişletilebilirlik kullanır.
ReliableSessionBindingElement.FlowControlEnabled özelliği true olarak ayarlanarak akış denetimi etkinleştirilir. WCF için geçerli olan kısıtlamaların listesi aşağıdadır:
B4001: Güvenilir Mesajlaşma Akış Kontrolü etkinleştirildiğinde, WCF aşağıdaki örnekte gösterildiği gibi
netrm:BufferRemainingbaşlığının öğe genişletilebilirliğinde birSequenceAcknowledgementöğesi oluşturur.<wsrm:SequenceAcknowledgement> <wsrm:Identifier>urn:uuid:656652b8-9af2-4e94-9d07-2dc21c05ed27</wsrm:Identifier> <wsrm:AcknowledgementRange Upper="1" Lower="1"/> <netrm:BufferRemaining>8</netrm:BufferRemaining> </wsrm:SequenceAcknowledgement>B4002: WCF, Reliable Messaging Flow Control etkinleştirildiğinde dahi üst bilgide bir
netrm:BufferRemainingöğesi gerektirmez.B4003: WCF Reliable Messaging Destination, arabelleğe alınabilecek yeni ileti sayısını belirtmek için
netrm:BufferRemainingkullanır.B4004: Güvenilir Mesajlaşma Akış Kontrolü etkinleştirildiğinde, WCF Güvenilir Mesajlaşma Kaynağı, mesaj iletimini sınırlamak için
netrm:BufferRemainingdeğerini kullanır.B4005: WCF, 0 ile 4096 (dahil) arasında tamsayı değerleri oluşturur
netrm:BufferRemainingve 0 ilexs:int'ninmaxInclusivedeğeri 214748364 dahil olmak üzere tamsayı değerlerini okur.
İleti Değişimi Desenleri
Bu bölümde, farklı İleti Değişimi Desenleri için WS-ReliableMessaging kullanıldığında WCF'nin davranışı açıklanmaktadır. Her İleti Değişimi Düzeni için aşağıdaki iki dağıtım senaryosu dikkate alınır:
Adreslenemeyen Başlatıcı: Başlatıcı bir güvenlik duvarının arkasındadır; Yanıtlayıcı, iletileri başlatıcıya yalnızca HTTP yanıtlarında teslim edebilir.
Adreslenebilir Başlatıcı: Hem Başlatıcı hem de Yanıtlayıcı HTTP isteklerini alabilir; diğer bir ifadeyle, iki ters HTTP bağlantısı kurulabilir.
Tek yönlü, Adreslenebilir Olmayan Başlatıcı
Bağlayıcılık
WCF, bir HTTP kanalı üzerinden tek bir sıra kullanarak tek yönlü bir ileti değişimi düzeni sağlar. WCF, Başlatıcıdaki tüm iletileri Yanıtlayıcıya iletmek için HTTP isteklerini ve Yanıtlayıcıdaki tüm iletileri Başlatıcıya iletmek için HTTP yanıtlarını kullanır.
CreateSequence Exchange
WCF Başlatıcısı, bir HTTP isteğinde CreateSequence öğesi olmadan bir Offer ileti iletir ve HTTP yanıtında CreateSequenceResponse iletiyi bekler. WCF Yanıtlayıcısı bir dizi oluşturur ve HTTP yanıtında herhangi bir CreateSequenceResponse öğesi olmadan Accept iletiyi iletir.
Dizi Onayı
WCF Başlatıcısı, CreateSequence mesajı ve hata mesajları hariç tüm mesajların onaylarını işler. WCF Yanıtlayıcı, HTTP yanıtında her zaman tüm dizilere ve AckRequested iletilere bağımsız bir onay gönderir.
CloseSequence Exchange
WCF Başlatıcısı, bir HTTP isteği üzerinde CloseSequence iletisini gönderir ve CreateSequenceResponse iletisini HTTP yanıtında bekler. WCF Yanıtlayıcısı CloseSequenceResponse iletisini HTTP yanıtında iletir.
TerminateSequence Exchange
WCF Başlatıcısı, bir HTTP isteği üzerinde TerminateSequence iletisini gönderir ve TerminateSequenceResponse iletisini HTTP yanıtında bekler. WCF Yanıtlayıcısı TerminateSequenceResponse iletisini HTTP yanıtında iletir.
Tek Yönlü, Adreslenebilir Başlatıcı
Bağlayıcılık
WCF, bir gelen ve bir giden HTTP kanalı üzerinden bir sıra kullanarak tek yönlü bir ileti değişimi düzeni sağlar. WCF, tüm iletileri iletmek için HTTP isteklerini kullanır. Tüm HTTP yanıtları boş bir gövdeye ve HTTP 202 durum koduna sahiptir.
CreateSequence Exchange
WCF Başlatıcısı, HTTP isteğinde CreateSequence öğesi olmayan bir Offer ileti gönderir. WCF Yanıtlayıcı bir dizi oluşturur ve HTTP isteğinde CreateSequenceResponse öğesi olmayan Accept mesajını iletir.
Çift yönlü, Adreslenebilir Başlatıcı
Bağlayıcılık
WCF, bir gelen ve bir giden HTTP kanalı üzerinden iki dizi kullanarak tam olarak zaman uyumsuz, iki yönlü bir ileti değişimi düzeni sağlar. Bu ileti değişimi deseni, Request/Reply ve Addressable Başlatıcı mesaj değişim deseni ile belirli koşullar altında karıştırılabilir. WCF, tüm iletileri iletmek için HTTP isteklerini kullanır. Tüm HTTP yanıtları boş bir gövdeye ve HTTP 202 durum koduna sahiptir.
CreateSequence Exchange
WCF Başlatıcısı, HTTP isteğinde bir CreateSequence öğesi içeren bir Offer iletisi gönderir. WCF Yanıtlayıcısı, CreateSequence öğesinin bir Offer öğesi içerdiğinden emin olur, ardından bir dizi oluşturur ve CreateSequenceResponse öğesiyle Accept mesajını iletir.
Sıra Ömrü
WCF, iki diziyi tam çift yönlü bir oturum olarak ele alır.
Bir sırayı etkileyen bir hata oluşturulduğunda, WCF, uzak uç noktanın her iki sırada da hata vermesini bekler. Bir sıradaki hatayı okuduktan sonra, WCF her iki sırayı da hataya geçirir.
WCF giden sırasını kapatabilir ve gelen dizisinde iletileri işlemeye devam edebilir. Buna karşılık, WCF gelen sıranın kapanışını işleyebilir ve giden ardışık düzeninde ileti göndermeyi sürdürebilir.
Request-Reply ve Tek Yönlü, Adreslenemeyen Başlatıcı
Bağlayıcılık
WCF, bir HTTP kanalı üzerinden iki dizi kullanarak tek yönlü ve istek-yanıt iletisi değişim düzeni sağlar. WCF, Başlatıcıdaki tüm iletileri Yanıtlayıcıya iletmek için HTTP isteklerini ve Yanıtlayıcıdaki tüm iletileri Başlatıcıya iletmek için HTTP yanıtlarını kullanır.
CreateSequence Exchange
WCF Başlatıcısı, bir HTTP isteğinde bir CreateSequence öğesi içeren Offer mesajı iletir ve HTTP yanıtında CreateSequenceResponse mesajını bekler. WCF Yanıtlayıcı bir dizi oluşturur ve HTTP yanıtı üzerinde bir CreateSequenceResponse öğesiyle Accept iletiyi iletir.
Tek Yönlü İleti
Tek yönlü ileti değişimini başarıyla tamamlamak için WCF Başlatıcısı HTTP isteğinde bir istek dizisi iletisi iletir ve HTTP yanıtında tek başına SequenceAcknowledgement bir ileti alır. , SequenceAcknowledgement iletilen iletiyi kabul etmelidir.
WCF Yanıtlayıcısı, isteğe bir onay, bir hata veya boş bir gövdeyle ve HTTP 202 durum koduyla yanıt verebilir.
İki Yönlü İletiler
İki yönlü ileti değişim protokollerini başarıyla tamamlamak için, WCF Başlatıcısı HTTP isteğinde bir istek dizisi iletisi iletir ve HTTP yanıtında bir yanıt dizisi iletisi alır. Yanıt, iletilen istek dizisi iletisini onaylayıcı bir SequenceAcknowledgement taşımalıdır.
WCF Yanıtlayıcısı isteği bir uygulama yanıtı, bir hata veya boş gövdeli bir yanıt ve HTTP 202 durum koduyla yanıtlayabilir.
Tek yönlü iletilerin varlığı ve uygulama yanıtlarının zamanlaması nedeniyle, istek dizisi iletisinin sıra numarası ile yanıt iletisinin sıra numarası arasında bağıntı yoktur.
Yanıtları Yeniden Deneme
WCF, iki yönlü ileti değişim protokolü bağıntısı için HTTP istek-yanıt bağıntısını kullanır. Bu nedenle, WCF Başlatıcısı istek dizisi iletisi onaylandığında değil, HTTP yanıtı bir , uygulama yanıtı veya hata taşıdığında istek SequenceAcknowledgementdizisi iletisini yeniden denemeyi durdurmaz. WCF Yanıtlayıcısı, yanıtların ilişkilendirildiği isteğin HTTP yanıtında yanıtları yeniden dener.
CloseSequence Exchange
Tüm tek yönlü istek dizisi iletileri için tüm yanıt dizisi iletilerini ve onaylarını aldıktan sonra, WCF Girişimcisi bir HTTP isteğinde istek dizisi için bir CloseSequence ileti iletir ve HTTP yanıtında CloseSequenceResponse öğesini bekler.
İstek sırasının kapatılması, yanıt dizisini örtük olarak kapatır. Bu, WCF Başlatıcısı'nın SequenceAcknowledgement iletisinde yanıt dizisinin Son'unu CloseSequence içerdiği ve yanıt dizisinin bir CloseSequence değişimi bulunmadığı anlamına gelir.
WCF Yanıtlayıcısı tüm yanıtların kabul edilmesini sağlar ve iletiyi HTTP yanıtına iletir CloseSequenceResponse .
TerminateSequence Exchange
İletiyi CloseSequenceResponse aldıktan sonra, WCF Başlatıcı bir HTTP isteğinde istek sırası için bir TerminateSequence ileti iletir ve TerminateSequenceResponse öğesini HTTP yanıtında bekler.
Değişimde olduğu CloseSequence gibi, istek dizisinin sonlandırılması da yanıt dizisini örtük olarak sonlandırır. Bu, WCF Başlatıcısı'nın yanıt dizisinin son SequenceAcknowledgement bileşenini TerminateSequence mesajında içerdiği ve yanıt dizisinin bir TerminateSequence değişimi olmadığı anlamına gelir.
WCF Yanıtlayıcısı TerminateSequenceResponse iletisini HTTP yanıtında iletir.
İstek/Yanıt, Adreslenebilir Başlatıcı
Bağlayıcılık
WCF, bir gelen ve bir giden HTTP kanalı üzerinden iki dizi kullanan bir istek-yanıt iletisi değişim düzeni sağlar. Bu mesaj alışveriş modeli, Duplex, Addressable Başlatıcı mesaj alışveriş modeliyle sınırlı bir şekilde karıştırılabilir. WCF, tüm iletileri iletmek için HTTP isteklerini kullanır. Tüm HTTP yanıtları boş bir gövdeye ve HTTP 202 durum koduna sahiptir.
CreateSequence Exchange
WCF Başlatıcısı, HTTP isteğinde bir CreateSequence öğesi içeren bir Offer iletisi gönderir. WCF Yanıtlayıcı, CreateSequence bir öğeye sahip olduğundan emin olduktan sonra bir dizi oluşturur ve Offer iletisinin bir CreateSequenceResponse öğeyle iletilmesini sağlar.
İstek/Yanıt Bağıntısı
Aşağıdakiler tüm bağıntılı istekler ve yanıtlar için geçerlidir:
WCF, tüm uygulama isteği iletilerinin bir
ReplyTouç nokta başvurusu ve birMessageIdolmasını sağlar.WCF, her uygulama istek iletisinin
ReplyToolarak yerel uç nokta referansını uygular. Yerel uç nokta başvurusu, Başlatıcı içinCreateSequenceiletisininReplyTove Yanıtlayıcı içinCreateSequenceiletisininTokısmıdır.WCF, gelen istek iletilerinin bir
MessageIdve birReplyTotaşımasını sağlar.WCF, tüm uygulama isteği iletilerinin
ReplyTouç nokta başvurusunun URI'sinin daha önce tanımlandığı gibi yerel uç nokta başvurusuyla eşleşmesini sağlar.WCF, istek/yanıt bağıntı kurallarını izleyen
RelatesTotüm yanıtların doğruTovewsaüst bilgileri taşımasını sağlar.