ࡱ > a *8 bjbj͚ < I\I\{ X X К К К К К D 8 b " @ 0 H$ x l 8 \ \ \ \ \ \ \ $ d g *
] К 0 0
] К К H a z К К \ \ . 5? =G vQBu . @ \ a 0 b B T g P g IG WG g К kG h
]
] b g X > : [MC-NETCEX]: .NET Context Exchange Protocol
Intellectual Property Rights Notice for Open Specifications Documentation
Technical Documentation. Microsoft publishes Open Specifications documentation for protocols, file formats, languages, standards as well as overviews of the interaction among each of these technologies.
Copyrights. This documentation is covered by Microsoft copyrights. Regardless of any other terms that are contained in the terms of use for the Microsoft website that hosts this documentation, you may make copies of it in order to develop implementations of the technologies described in the Open Specifications and may distribute portions of it in your implementations using these technologies or your documentation as necessary to properly document the implementation. You may also distribute in your implementation, with or without modification, any schema, IDLs, or code samples that are included in the documentation. This permission also applies to any documents that are referenced in the Open Specifications.
No Trade Secrets. Microsoft does not claim any trade secret rights in this documentation.
Patents. Microsoft has patents that may cover your implementations of the technologies described in the Open Specifications. Neither this notice nor Microsoft's delivery of the documentation grants any licenses under those or any other Microsoft patents. However, a given Open Specification may be covered by Microsoft HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=214445" Open Specification Promise or the HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=214448" Community Promise. If you would prefer a written license, or if the technologies described in the Open Specifications are not covered by the Open Specifications Promise or Community Promise, as applicable, patent licenses are available by contacting HYPERLINK "mailto:iplg@microsoft.com" iplg@microsoft.com.
Trademarks. The names of companies and products contained in this documentation may be covered by trademarks or similar intellectual property rights. This notice does not grant any licenses under those rights. For a list of Microsoft trademarks, visit HYPERLINK "http://www.microsoft.com/trademarks" www.microsoft.com/trademarks.
Fictitious Names. The example companies, organizations, products, domain names, email addresses, logos, people, places, and events depicted in this documentation are fictitious. No association with any real company, organization, product, domain name, email address, logo, person, place, or event is intended or should be inferred.
Reservation of Rights. All other rights are reserved, and this notice does not grant any rights other than specifically described above, whether by implication, estoppel, or otherwise.
Tools. The Open Specifications do not require the use of Microsoft programming tools or programming environments in order for you to develop an implementation. If you have access to Microsoft programming tools and environments you are free to take advantage of them. Certain Open Specifications are intended for use in conjunction with publicly available standard specifications and network programming art, and assumes that the reader either is familiar with the aforementioned material or has immediate access to it.
Revision Summary
DateRevision HistoryRevision ClassComments04/08/20080.1 Initial availability.05/16/20080.1.1EditorialRevised and edited the technical content.06/20/20080.1.2EditorialRevised and edited the technical content.07/25/20080.1.3EditorialRevised and edited the technical content.08/29/20080.1.4EditorialRevised and edited the technical content.10/24/20080.1.5EditorialRevised and edited the technical content.12/05/20080.1.6EditorialRevised and edited the technical content.01/16/20090.1.7EditorialRevised and edited the technical content.02/27/20091.0MajorUpdated and revised the technical content.04/10/20091.0.1EditorialRevised and edited the technical content.05/22/20091.0.2EditorialRevised and edited the technical content.07/02/20091.0.3EditorialRevised and edited the technical content.08/14/20091.0.4EditorialRevised and edited the technical content.09/25/20091.1MinorUpdated the technical content.11/06/20091.1.1EditorialRevised and edited the technical content.12/18/20091.1.2EditorialRevised and edited the technical content.01/29/20101.2MinorUpdated the technical content.03/12/20101.2.1EditorialRevised and edited the technical content.04/23/20101.2.2EditorialRevised and edited the technical content.06/04/20101.2.3EditorialRevised and edited the technical content.07/16/20102.0MajorSignificantly changed the technical content.08/27/20102.0No changeNo changes to the meaning, language, or formatting of the technical content.10/08/20102.0No changeNo changes to the meaning, language, or formatting of the technical content.11/19/20102.0No changeNo changes to the meaning, language, or formatting of the technical content.01/07/20112.0No changeNo changes to the meaning, language, or formatting of the technical content.02/11/20112.0No changeNo changes to the meaning, language, or formatting of the technical content.03/25/20112.0No changeNo changes to the meaning, language, or formatting of the technical content.05/06/20112.0No changeNo changes to the meaning, language, or formatting of the technical content.06/17/20112.1MinorClarified the meaning of the technical content.09/23/20112.1No changeNo changes to the meaning, language, or formatting of the technical content.12/16/20113.0MajorSignificantly changed the technical content.03/30/20123.0No changeNo changes to the meaning, language, or formatting of the technical content.07/12/20123.0No changeNo changes to the meaning, language, or formatting of the technical content.10/25/20123.0No changeNo changes to the meaning, language, or formatting of the technical content.01/31/20133.0No changeNo changes to the meaning, language, or formatting of the technical content.08/08/20133.0No changeNo changes to the meaning, language, or formatting of the technical content.
Contents
TOC \f \h \t "DSTOC1-1,1,DSTOC1-2,2,DSTOC1-3,3,DSTOC1-4,4,DSTOC1-5,5,DSTOC1-6,6,DSTOC1-7,7,DSTOC1-8,8,DSTOC1-9,9,DSTOC2-2,2,DSTOC2-3,3,DSTOC2-4,4,DSTOC2-5,5,DSTOC2-6,6,DSTOC2-7,7,DSTOC2-8,8,DSTOC2-9,9,DSTOC3-3,3,DSTOC3-4,4,DSTOC3-5,5,DSTOC3-6,6,DSTOC3-7,7,DST HYPERLINK \l "_Toc362246540" 1 Introduction PAGEREF _Toc362246540 \h 6
HYPERLINK \l "_Toc362246541" 1.1 Glossary PAGEREF _Toc362246541 \h 6
HYPERLINK \l "_Toc362246542" 1.2 References PAGEREF _Toc362246542 \h 7
HYPERLINK \l "_Toc362246543" 1.2.1 Normative References PAGEREF _Toc362246543 \h 7
HYPERLINK \l "_Toc362246544" 1.2.2 Informative References PAGEREF _Toc362246544 \h 8
HYPERLINK \l "_Toc362246545" 1.3 Overview PAGEREF _Toc362246545 \h 8
HYPERLINK \l "_Toc362246546" 1.4 Relationship to Other Protocols PAGEREF _Toc362246546 \h 12
HYPERLINK \l "_Toc362246547" 1.5 Prerequisites/Preconditions PAGEREF _Toc362246547 \h 12
HYPERLINK \l "_Toc362246548" 1.6 Applicability Statement PAGEREF _Toc362246548 \h 12
HYPERLINK \l "_Toc362246549" 1.7 Versioning and Capability Negotiation PAGEREF _Toc362246549 \h 12
HYPERLINK \l "_Toc362246550" 1.8 Vendor-Extensible Fields PAGEREF _Toc362246550 \h 13
HYPERLINK \l "_Toc362246551" 1.9 Standards Assignments PAGEREF _Toc362246551 \h 13
HYPERLINK \l "_Toc362246552" 2 Messages PAGEREF _Toc362246552 \h 14
HYPERLINK \l "_Toc362246553" 2.1 Transport PAGEREF _Toc362246553 \h 14
HYPERLINK \l "_Toc362246554" 2.2 Message Syntax PAGEREF _Toc362246554 \h 14
HYPERLINK \l "_Toc362246555" 2.2.1 CONTEXT_XML PAGEREF _Toc362246555 \h 15
HYPERLINK \l "_Toc362246556" 2.2.2 CALLBACK_CONTEXT_XML PAGEREF _Toc362246556 \h 16
HYPERLINK \l "_Toc362246557" 2.2.3 CONTEXT_NV PAGEREF _Toc362246557 \h 17
HYPERLINK \l "_Toc362246558" 2.2.4 HTTP Client Message Header PAGEREF _Toc362246558 \h 17
HYPERLINK \l "_Toc362246559" 2.2.5 HTTP Server Message Header PAGEREF _Toc362246559 \h 17
HYPERLINK \l "_Toc362246560" 2.2.6 Server Context Establishing Message PAGEREF _Toc362246560 \h 18
HYPERLINK \l "_Toc362246561" 2.2.7 Context Participating Message PAGEREF _Toc362246561 \h 18
HYPERLINK \l "_Toc362246562" 3 Protocol Details PAGEREF _Toc362246562 \h 19
HYPERLINK \l "_Toc362246563" 3.1 Context Exchange Client Role Details PAGEREF _Toc362246563 \h 19
HYPERLINK \l "_Toc362246564" 3.1.1 Abstract Data Model PAGEREF _Toc362246564 \h 19
HYPERLINK \l "_Toc362246565" 3.1.1.1 IDLE State PAGEREF _Toc362246565 \h 20
HYPERLINK \l "_Toc362246566" 3.1.1.2 WAIT_CORRELATED_SM State PAGEREF _Toc362246566 \h 20
HYPERLINK \l "_Toc362246567" 3.1.1.3 WAIT_SM State PAGEREF _Toc362246567 \h 20
HYPERLINK \l "_Toc362246568" 3.1.1.4 ENDED State PAGEREF _Toc362246568 \h 21
HYPERLINK \l "_Toc362246569" 3.1.2 Timers PAGEREF _Toc362246569 \h 21
HYPERLINK \l "_Toc362246570" 3.1.3 Initialization PAGEREF _Toc362246570 \h 21
HYPERLINK \l "_Toc362246571" 3.1.4 Higher-Layer Triggered Events PAGEREF _Toc362246571 \h 21
HYPERLINK \l "_Toc362246572" 3.1.4.1 SEND_CM PAGEREF _Toc362246572 \h 21
HYPERLINK \l "_Toc362246573" 3.1.4.2 TERMINATE PAGEREF _Toc362246573 \h 22
HYPERLINK \l "_Toc362246574" 3.1.5 Message Processing Events and Sequencing Rules PAGEREF _Toc362246574 \h 22
HYPERLINK \l "_Toc362246575" 3.1.5.1 RECEIVE_SM PAGEREF _Toc362246575 \h 22
HYPERLINK \l "_Toc362246576" 3.1.6 Timer Events PAGEREF _Toc362246576 \h 23
HYPERLINK \l "_Toc362246577" 3.1.7 Other Local Events PAGEREF _Toc362246577 \h 23
HYPERLINK \l "_Toc362246578" 3.2 Context Exchange Server Role Details PAGEREF _Toc362246578 \h 23
HYPERLINK \l "_Toc362246579" 3.2.1 Abstract Data Model PAGEREF _Toc362246579 \h 23
HYPERLINK \l "_Toc362246580" 3.2.1.1 WAIT_CM State PAGEREF _Toc362246580 \h 24
HYPERLINK \l "_Toc362246581" 3.2.1.2 ENDED State PAGEREF _Toc362246581 \h 24
HYPERLINK \l "_Toc362246582" 3.2.2 Timers PAGEREF _Toc362246582 \h 24
HYPERLINK \l "_Toc362246583" 3.2.3 Initialization PAGEREF _Toc362246583 \h 24
HYPERLINK \l "_Toc362246584" 3.2.4 Higher-Layer Triggered Events PAGEREF _Toc362246584 \h 25
HYPERLINK \l "_Toc362246585" 3.2.4.1 TERMINATE PAGEREF _Toc362246585 \h 25
HYPERLINK \l "_Toc362246586" 3.2.5 Message Processing Events and Sequencing Rules PAGEREF _Toc362246586 \h 25
HYPERLINK \l "_Toc362246587" 3.2.5.1 RECEIVE_CM PAGEREF _Toc362246587 \h 25
HYPERLINK \l "_Toc362246588" 3.2.6 Timer Events PAGEREF _Toc362246588 \h 27
HYPERLINK \l "_Toc362246589" 3.2.7 Other Local Events PAGEREF _Toc362246589 \h 27
HYPERLINK \l "_Toc362246590" 3.3 Callback Context Exchange Client Role Details PAGEREF _Toc362246590 \h 27
HYPERLINK \l "_Toc362246591" 3.3.1 Abstract Data Model PAGEREF _Toc362246591 \h 27
HYPERLINK \l "_Toc362246592" 3.3.1.1 WAIT_SM State PAGEREF _Toc362246592 \h 27
HYPERLINK \l "_Toc362246593" 3.3.1.2 ENDED State PAGEREF _Toc362246593 \h 28
HYPERLINK \l "_Toc362246594" 3.3.2 Timers PAGEREF _Toc362246594 \h 28
HYPERLINK \l "_Toc362246595" 3.3.3 Initialization PAGEREF _Toc362246595 \h 28
HYPERLINK \l "_Toc362246596" 3.3.4 Higher-Layer Triggered Events PAGEREF _Toc362246596 \h 28
HYPERLINK \l "_Toc362246597" 3.3.4.1 TERMINATE PAGEREF _Toc362246597 \h 28
HYPERLINK \l "_Toc362246598" 3.3.5 Message Processing Events and Sequencing Rules PAGEREF _Toc362246598 \h 28
HYPERLINK \l "_Toc362246599" 3.3.5.1 SEND_CM PAGEREF _Toc362246599 \h 28
HYPERLINK \l "_Toc362246600" 3.3.5.2 RECEIVE_SM PAGEREF _Toc362246600 \h 29
HYPERLINK \l "_Toc362246601" 3.3.6 Timer Events PAGEREF _Toc362246601 \h 29
HYPERLINK \l "_Toc362246602" 3.3.7 Other Local Events PAGEREF _Toc362246602 \h 29
HYPERLINK \l "_Toc362246603" 3.4 Callback Context Exchange Server Role Details PAGEREF _Toc362246603 \h 30
HYPERLINK \l "_Toc362246604" 3.4.1 Abstract Data Model PAGEREF _Toc362246604 \h 30
HYPERLINK \l "_Toc362246605" 3.4.1.1 WAIT_CM State PAGEREF _Toc362246605 \h 30
HYPERLINK \l "_Toc362246606" 3.4.1.2 ENDED State PAGEREF _Toc362246606 \h 30
HYPERLINK \l "_Toc362246607" 3.4.2 Timers PAGEREF _Toc362246607 \h 30
HYPERLINK \l "_Toc362246608" 3.4.3 Initialization PAGEREF _Toc362246608 \h 31
HYPERLINK \l "_Toc362246609" 3.4.4 Higher-Layer Triggered Events PAGEREF _Toc362246609 \h 31
HYPERLINK \l "_Toc362246610" 3.4.4.1 TERMINATE PAGEREF _Toc362246610 \h 31
HYPERLINK \l "_Toc362246611" 3.4.5 Message Processing Events and Sequencing Rules PAGEREF _Toc362246611 \h 31
HYPERLINK \l "_Toc362246612" 3.4.5.1 RECEIVE_CM PAGEREF _Toc362246612 \h 31
HYPERLINK \l "_Toc362246613" 3.4.5.2 SEND_SM PAGEREF _Toc362246613 \h 31
HYPERLINK \l "_Toc362246614" 3.4.6 Timer Events PAGEREF _Toc362246614 \h 32
HYPERLINK \l "_Toc362246615" 3.4.7 Other Local Events PAGEREF _Toc362246615 \h 32
HYPERLINK \l "_Toc362246616" 4 Protocol Examples PAGEREF _Toc362246616 \h 33
HYPERLINK \l "_Toc362246617" 4.1 Using the .NET Context Exchange Protocol with SOAP 1.2 PAGEREF _Toc362246617 \h 33
HYPERLINK \l "_Toc362246618" 4.1.1 Establishing Context Using SOAP 1.2 PAGEREF _Toc362246618 \h 33
HYPERLINK \l "_Toc362246619" 4.1.2 Subsequent Context Participating Messages Using SOAP 1.2 PAGEREF _Toc362246619 \h 34
HYPERLINK \l "_Toc362246620" 4.1.3 Continue Using Context Using SOAP 1.2 PAGEREF _Toc362246620 \h 35
HYPERLINK \l "_Toc362246621" 4.1.4 Establish a Callback Context PAGEREF _Toc362246621 \h 35
HYPERLINK \l "_Toc362246622" 4.1.5 Subsequent Callback Messages PAGEREF _Toc362246622 \h 36
HYPERLINK \l "_Toc362246623" 4.2 Using the .NET Context Exchange Protocol with HTTP PAGEREF _Toc362246623 \h 37
HYPERLINK \l "_Toc362246624" 4.2.1 Establishing Context Using HTTP PAGEREF _Toc362246624 \h 37
HYPERLINK \l "_Toc362246625" 4.2.2 Subsequent Context Participating Messages Using HTTP PAGEREF _Toc362246625 \h 38
HYPERLINK \l "_Toc362246626" 4.2.3 Continue Using the Context Using HTTP PAGEREF _Toc362246626 \h 38
HYPERLINK \l "_Toc362246627" 4.3 Processing an Unrecognized Context Using SOAP 1.2 PAGEREF _Toc362246627 \h 38
HYPERLINK \l "_Toc362246628" 4.4 Processing an Unrecognized Context Using HTTP PAGEREF _Toc362246628 \h 39
HYPERLINK \l "_Toc362246629" 5 Security PAGEREF _Toc362246629 \h 41
HYPERLINK \l "_Toc362246630" 5.1 Security Considerations for Implementers PAGEREF _Toc362246630 \h 41
HYPERLINK \l "_Toc362246631" 5.2 Index of Security Parameters PAGEREF _Toc362246631 \h 41
HYPERLINK \l "_Toc362246632" 6 Appendix A: Product Behavior PAGEREF _Toc362246632 \h 42
HYPERLINK \l "_Toc362246633" 7 Change Tracking PAGEREF _Toc362246633 \h 43
HYPERLINK \l "_Toc362246634" 8 Index PAGEREF _Toc362246634 \h 44
1 Introduction
This document specifies the .NET Context Exchange Protocol, which specifies a message syntax for identifying context that is shared between a client and a server, and a protocol for establishing that context.
Sections 1.8, 2, and 3 of this specification are normative and can contain the terms MAY, SHOULD, MUST, MUST NOT, and SHOULD NOT as defined in RFC 2119. Sections 1.5 and 1.9 are also normative but cannot contain those terms. All other sections and examples in this specification are informative.
1.1 Glossary
The following terms are defined in HYPERLINK "[MS-GLOS].pdf" [MS-GLOS]:
base64clientendpoint.NET FrameworkserverSOAP envelopeSOAP faultSOAP headerSOAP messageUTF-8
The following terms are specific to this document:
callback context: The context that is needed for a HYPERLINK "[MS-GLOS].pdf" server to make callbacks to a HYPERLINK "[MS-GLOS].pdf" client. A callback context consists of an endpoint reference for a HYPERLINK "[MS-GLOS].pdf" client HYPERLINK "[MS-GLOS].pdf" endpoint with an optional context identifier.
Client Context Initiating Message: A client message that requests a server to establish a context.
client message: A message that is sent from a HYPERLINK "[MS-GLOS].pdf" client to a HYPERLINK "[MS-GLOS].pdf" server.
connection: A time-bounded association between two HYPERLINK "[MS-GLOS].pdf" endpoints that allows the two HYPERLINK "[MS-GLOS].pdf" endpoints to exchange messages.
context: An abstract concept that represents an association between a resource and a set of messages that are exchanged between a HYPERLINK "[MS-GLOS].pdf" client and a HYPERLINK "[MS-GLOS].pdf" server. A context is uniquely identified by a context identifier.
context identifier: A set of name-value pairs, where each name in the set is unique.
Context Participating Message: A client message or a server message that is one of a set of messages associated with a context.
endpoint reference: Conveys the information that is needed to address an HYPERLINK "[MS-GLOS].pdf" endpoint.
Server Context Establishing Message: A server message that establishes a new context and is correlated to a Client Context Initiating Message.
server message: A message that is sent from a HYPERLINK "[MS-GLOS].pdf" server to a HYPERLINK "[MS-GLOS].pdf" client.
Simple Object Access Protocol (SOAP): Either the Simple Object Access Protocol (SOAP) 1.1 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90520" [SOAP1.1] or SOAP 1.2 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007]. This term is used in cases where the difference between the two SOAP version specifications has no impact on the specification of the .NET Context Exchange Protocol.
MAY, SHOULD, MUST, SHOULD NOT, MUST NOT: These terms (in all caps) are used as described in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90317" [RFC2119]. All statements of optional behavior use either MAY, SHOULD, or SHOULD NOT.
1.2 References
References to Microsoft Open Specifications documentation do not include a publishing year because links are to the latest version of the documents, which are updated frequently. References to other documents include a publishing year when one is available.
A reference marked "(Archived)" means that the reference document was either retired and is no longer being maintained or was replaced with a new document that provides current implementation details. We archive our documents online HYPERLINK "http://msdn.microsoft.com/en-us/library/jj633107.aspx " [Windows Protocol].
1.2.1 Normative References
We conduct frequent surveys of the normative references to assure their continued availability. If you have any issue with finding a normative reference, please contact HYPERLINK "mailto:dochelp@microsoft.com" dochelp@microsoft.com. We will assist you in finding the relevant information. Please check the archive site, HYPERLINK "http://msdn2.microsoft.com/en-us/library/E4BD6494-06AD-4aed-9823-445E921C9624" http://msdn2.microsoft.com/en-us/library/E4BD6494-06AD-4aed-9823-445E921C9624, as an additional source.
[RFC2119] Bradner, S., "Key words for use in RFCs to Indicate Requirement Levels", BCP 14, RFC 2119, March 1997, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90317" http://www.rfc-editor.org/rfc/rfc2119.txt
[RFC2234] Crocker, D., and Overell, P., "Augmented BNF for Syntax Specifications: ABNF", RFC 2234, November 1997, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" http://www.ietf.org/rfc/rfc2234.txt
[RFC2616] Fielding, R., Gettys, J., Mogul, J., et al., "Hypertext Transfer Protocol -- HTTP/1.1", RFC 2616, June 1999, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" http://www.ietf.org/rfc/rfc2616.txt
[RFC3548] Josefsson, S., Ed., "The Base16, Base32, and Base64 Data Encodings", RFC 3548, July 2003, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90432" http://www.ietf.org/rfc/rfc3548.txt
[RFC3629] Yergeau, F., "UTF-8, A Transformation Format of ISO 10646", STD 63, RFC 3629, November 2003, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90439" http://www.ietf.org/rfc/rfc3629.txt
[SOAP1.1] Box, D., Ehnebuske, D., Kakivaya, G., et al., "Simple Object Access Protocol (SOAP) 1.1", May 2000, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90520" http://www.w3.org/TR/2000/NOTE-SOAP-20000508/
[SOAP1.2-1/2007] Gudgin, M., Hadley, M., Mendelsohn, N., et al., "SOAP Version 1.2 Part 1: Messaging Framework (Second Edition) ", W3C Recommendation 27, April 2007, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" http://www.w3.org/TR/2007/REC-soap12-part1-20070427/
[W3C-XSD] World Wide Web Consortium, "XML Schema Part 2: Datatypes Second Edition", October 2004, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90563" http://www.w3.org/TR/2004/REC-xmlschema-2-20041028
[WSA] Gudgin, M., Hadley, M., and Rogers, T., "Web Services Addressing 1.0 - Core", W3C Recommendation, May 2006, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=120448" http://www.w3.org/TR/2006/REC-ws-addr-core-20060509/
[XML1.0] Bray, T., Paoli, J., Sperberg-McQueen, C.M., and Maler, E., "Extensible Markup Language (XML) 1.0 (Second Edition)", W3C Recommendation, October 2000, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90599" http://www.w3.org/TR/2000/REC-xml-20001006
1.2.2 Informative References
[MS-GLOS] Microsoft Corporation, " HYPERLINK "[MS-GLOS].pdf" Windows Protocols Master Glossary".
[RFC2109] Kristol, D., and Montulli, L., "HTTP State Management Mechanism", RFC 2109, February 1997, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90315" http://www.ietf.org/rfc/rfc2109.txt
[RFC2965] Kristol, D., and Montulli, L., "HTTP State Management Mechanism", RFC 2965, October 2000, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90399" http://www.ietf.org/rfc/rfc2965.txt
[RFC4346] Dierks, T., and Rescorla, E., "The Transport Layer Security (TLS) Protocol Version 1.1", RFC 4346, April 2006, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90474" http://www.ietf.org/rfc/rfc4346.txt
[WSS1] Nadalin, A., Kaler, C., Hallam-Baker, P., et al., "Web Services Security: SOAP Message Security 1.0 (WS-Security 2004)", March 2004, HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=131547" http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0.pdf
1.3 Overview
The .NET Context Exchange Protocol specifies a message syntax for identifying HYPERLINK \l "z5" context that is shared between a HYPERLINK "[MS-GLOS].pdf" client and a HYPERLINK "[MS-GLOS].pdf" server independent of HYPERLINK \l "z4" connection usage, and a protocol for establishing that context. For example, in some scenarios, the connection between a client and a server is sufficient for the server to relate the HYPERLINK \l "z3" client messages to specific resources; a chat application can define a conversation resource and relate chat messages to a conversation by associatingthe conversation with chat messages that arrive over a particular connection.
It is typical, however, for a set of client messages to be associated with a resource that is independent of a connection. For example, a HYPERLINK \l "z11" SOAP-based shopping application can define a shopping cart resource and relate client messages to the shopping cart even if the first few messages arrive on one connection and the remaining messages arrive on a different connection. The .NET Context Exchange Protocol facilitates this more general connection-independent case.
The .NET Context Exchange Protocol can be used in one of two modes: stateless or stateful. In stateless mode, a client and server use the message syntax specified in section HYPERLINK \l "z9d738ea8049a42ac9aa306a561e8876d" 2.2; however, the interpretation of this syntax is defined by the client and server implementations. In stateful mode the client and server must interpret the message syntax as specified in section HYPERLINK \l "z4b94d26f2ebe48d88a697fc946e7717d" 3. Unless explicitly mentioned, this document discusses the .NET Context Exchange Protocol in stateful mode.
This protocol specifies two roles for context exchange: a client role and a server role. The server role is responsible for creating HYPERLINK \l "z6" context identifiers in response to client requests and associating context identifiers with resources. For example, a shopping service may create a context identifier with the following (property name, property value) pair.
Property name Property value shoppingCartId1a1913b1-cb24-4d94-91d2-cf414a569481It may then store a shopping cart resource by using the value of the shoppingCartId as a key.
The client role initiates communication with the server role, captures the context identifier that is sent from the server role, and attaches the context identifier to all subsequent client messages that are related to the resources in question. For example, a client shopping application may use the previously mentioned shopping service to create a shopping cart resource using the .NET Context Exchange Protocol. The client stores the context identifier that is generated by the server and attaches it to each message that is intended to manipulate the shopping cart.
The protocol also specifies two roles for HYPERLINK \l "z1" callback context exchange: a client role and a server role. HYPERLINK \l "z14" <1> The initial communication of the client role with the server role may specify a callback context to enable duplex communication. The callback context consists of an HYPERLINK \l "z8" endpoint reference that specifies the address of the client HYPERLINK "[MS-GLOS].pdf" endpoint. The endpoint reference may optionally contain a context identifier that is associated with resources by the client. For example, a customer of a shopping service may create a context identifier with the following (property name, property value) pair.
Property name Property value customerId9b0e43f0-e783-4cb9-8343-106d677c4ed7Note that the roles for context exchange and callback context exchange compose. For example, the entity acting as the client role for context exchange may also act as the client role for callback context exchange.
The following figure describes the typical use of the .NET Context Exchange Protocol.
Figure 1: Typical use of the .NET Context Exchange Protocol
Each message that is exchanged between client and server is an application-specific message. This protocol is a header-based protocol that composes into client and server messages:
1. The client sends a HYPERLINK \l "z2" Client Context Initiating Message to the server. The server recognizes this message as a Client Context Initiating Message because it does not have a context identifier attached.
2. The server creates a resource (for example, a shopping cart) and a new context identifier. It then associates the resource with the new context identifier.
3. The server returns a HYPERLINK \l "z9" Server Context Establishing Message to the client with the newly created context identifier attached.
4. The client stores the attached context identifier so that it can be retrieved even if the client process is restarted.
5. The client sends the server a HYPERLINK \l "z7" Context Participating Message with the context identifier attached. This message is intended to manipulate the resource that is created in step 2. For example, it may be intended to add an item to the shopping cart.
6. The server dereferences the resource using the context identifier. For example, it may use the property value of the property named "shoppingCartId" in the predicate of a database query to retrieve the shopping cart. It may then act on the resource according to the message it received.
7. The server sends a response back to the client.
8. At some point later on a different connection, the client retrieves the context identifier that it stored earlier in step 4.
9. The client then sends the server a Context Participating Message that has the context identifier attached. This message is intended to manipulate the resource that was created in step 2. For example, it may be intended to purchase the items in the shopping cart.
The message that is sent by the client is also a Callback Context Establishing Message that has a callback context attached. This allows the server to engage in a duplex conversation with the client. For example, it allows the server to notify the client when the purchased items have shipped.
10. The server dereferences the resource from the context identifier, as described in step 6.
11. The server stores the endpoint reference that is sent in the callback context from the client.
12. The server sends a response back to the client. For example, the server acknowledges that the items in the shopping cart have been purchased.
13. At some point later on a different connection, the server retrieves the endpoint reference that it stored earlier in step 11.
14. The server sends a Context Participating Message to the endpoint reference from the callback context. For example, it notifies the specific customer that purchased items have been shipped.
These examples and the examples in section HYPERLINK \l "zc1eb0f0904f54a838bfaa891afdc5768" 4 of this document demonstrate sending a context identifier from a server to a client in a HYPERLINK \l "z1ce0507b1ac74cde9f8e4ba4bec7804c" Server Context Establishing Message. This protocol does not require a client and server to exchange a context identifier by using a Client Context Initiating Message and a Server Context Establishing Message. A client and server may agree on a context identifier without this initial exchange. The protocol that is specified in section HYPERLINK \l "z4b94d26f2ebe48d88a697fc946e7717d" 3 allows the client to acquire a context identifier by using a Client Context Initiating Message and a Server Context Establishing Message; then subsequently, to send Context Participating Messages.
Alternatively, this protocol allows an implementation-specific context exchangemechanism to be leveraged to initialize the protocol with a context identifier. This context identifier can then be attached to subsequent Context Participating Messages.
Similarly, the callback context need not be established using a Callback Context Establishing Message, but could instead be established through an implementation-specific callback context exchange mechanism.
1.4 Relationship to Other Protocols
The .NET Context Exchange Protocol can be used with HTTP HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] or SOAP-formatted messages HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007] HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90520" [SOAP1.1]. The following figure shows a protocol stack.
Figure 2: Protocol stack for the .NET Context Exchange Protocol
1.5 Prerequisites/Preconditions
The .NET Context Exchange Protocol requires that the client role can communicate with a server role so that client messages and server messages can be exchanged.
The .NET Context Exchange Protocol requires an underlying protocol in which a HYPERLINK \l "z10" server message can be correlated to a unique client message.
1.6 Applicability Statement
The .NET Context Exchange Protocol is applicable to scenarios where a client and server application requires a set of client m e s s a g e s t o b e a s s o c i a t e d w i t h a r e s o u r c e i n d e p e n d e n t o f a c o n n e c t i o n . T h e c l i e n t a n d s e r v e r a p p l i c a t i o n u s e t h i s p r o t o c o l t o s h a r e c o n t e x t .
1 . 7 V e r s i o n i n g a n d C a p a b i l i t y N e g o t i a t i o n
T h i s d o c u m e n t c o v e r s v e r s i o n i n g i s s u e s i n t h e f o l l o w i n g a r e a s :
S u p p orted Transports: This protocol can be implemented by using transports that support sending HTTP HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] or SOAP messages, as discussed in section HYPERLINK \l "z7b42abb2de1e49b8b938dc7328e7aef1" 2.1.
P r o t o c o l V e r s i o n s : W h e n t h i s p r o t o c o l i s i m p l e m e n t e d b y u s i n g S O A P , i t r e q u i r e s t h e u s e o f S O A P m e s s a g i n g v e r s i o n 1 . 1 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 5 2 0 " [ S O A P 1 . 1 ] o r S O A P m e s s a g i n g 1 . 2 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 4 6 6 4 " [ S O A P 1 . 2 - 1 / 2 0 0 7 ] . W h e n t h i s p r o t o c o l i s i m p l e m e n t e d b y u s i n g H T T P , i t r e q u i r e s t h e u s e o f H T T P v e r s i o n 1 . 1 .
C a p a b i l i t y N e g o t i a t i o n : T h e . N E T C o n t e x t E x c h a n g e P r o t o c o l d o e s n o t s u p p o r t n e g o t i a t i o n o f t h e v e r s i o n t o u s e . I n s t e a d , a n i m p lementation must be configured to process only messages as described in section HYPERLINK \l "z7b42abb2de1e49b8b938dc7328e7aef1" 2.1.
1.8 Vendor-Extensible Fields
Vendors and implementers MAY extend the protocol by including additional attributes HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90599" [XML1.0] on the HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element or its child Property element. The interpretation of these attributes is defined by the implementation. For ex a m p l e , a n e x t e n s i o n M A Y b e u s e d t o :
C o n v e y l i f e t i m e i n f o r m a t i o n f o r a p a r t i c u l a r c o n t e x t i d e n t i f i e r .
C o n v e y m e t a d a t a a b o u t t h e a p p l i c a b i l i t y o f t h e c o n t e x t i d e n t i f i e r .
S i m i l a r l y , v e n d o r s a n d i m p l e m e n t e r s M A Y e x t e n d t h e p r o t o c o l b y i n c l u d i n g a d d i t i o n al attributes HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90599" [XML1.0] on the HYPERLINK \l "z5c9a383a07e54de6b6c33a10d048f762" CALLBACK_CONTEXT_XML element. The interpretation of these attributes is defined by the implementation.
1.9 Standards Assignments
There are no standards assignments for this protocol.
2 Messages
2.1 Transport
The .NET Context Exchange Protocol can be used over any transport protocol that supports transmitting messages that are specified by the following protocol s :
H T T P 1 . 1 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ]
S O A P 1 . 1 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 5 2 0 " [ S O A P 1 . 1 ]
S O A P 1 . 2 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 4 6 6 4 " [ S O A P 1 . 2 - 1 / 2 0 0 7 ]
This specification uses the term SOAP to mean either SOAP 1.1 or SOAP 1.2. Where the differences between the two versions of SOAP are significant, either SOAP 1.1 or SOAP 1.2 is referenced.
An implementation of the .NET Context Exchange Protocol MUST support the processing of messages that are specified by HTTP 1.1 or either of the SOAP versions. This section specifies the format of .NET Context Exchange Protocol messages using the message formats of both HTTP 1.1 and SOAP.
2.2 Message Syntax
This section specifies the messages that are used by the .NETContext Exchange Protocol and their relationship to HTTP 1.1 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] and SOAP.
When used with SOAP, the .NET Context Exchange Protocol uses a HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element as a HYPERLINK "[MS-GLOS].pdf" SOAP header using the SOAP extensibility model, specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007] section 3, to form a HYPERLINK \l "z1ce0507b1ac74cde9f8e4ba4bec7804c" Server Context Establishing Message or a Context Participating Message. The following figure shows the containment of CONTEXT_XML in a HYPERLINK "[MS-GLOS].pdf" SOAP envelope.
Figure 3: Context Participating Message or Server Context Establishing Message using SOAP
The .NET Context Exchange Protocol uses HYPERLINK \l "z5c9a383a07e54de6b6c33a10d048f762" CALLBACK_CONTEXT_XML as a SOAP header using the SOAP extensibility model, specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007] section 3, to form a Callback Context Establishing Message. The following figure shows the containment of CALLBACK_CONTEXT_XML in a SOAP envelope.
Figure 4: Callback Context Establishing Message using SOAP
When used with HTTP 1.1, the .NET Context Exchange Protocol uses:
A n H Y P E R L I N K \ l " z d 4 d d f d 2 a f b 0 3 4 0 7 e 8 b 0 9 3 d 1 9 1 5 6 5 c f 3 6 " H T T P C l i e n t M e s s a g e H e a d e r a s a n H T T P h e a d e r i n a n H T T P r e q u e s t m e s s a g e t o f o r m a C o n t e x t P a r t i c i p a t i n g M e s s a g e ; o r
A n H Y P E R L I N K \ l " z 0 e f b 1 f 6 4 4 2 e 4 4 a 4 7 a 5 d d 8 f 9 2 5 7 7 d b 9 d d " H T T P S e r v e r M e s s a g e H e a d e r as an HTTP header in an HTTP response message to form a Server Context Establishing Message.
The next figure shows the containment of message structures, which are defined in section HYPERLINK \l "zc5d83a6be11f49808b6185fce64e7cec" 2, within an HTTP request message.
Figure 5: Client Context Participating Message using HTTP 1.1
The following figure shows the containment of message structures, which are defined in section HYPERLINK \l "zc5d83a6be11f49808b6185fce64e7cec" 2, within an HTTP response message.
Figure 6: Server Context Establishing Message using HTTP 1.1
2.2.1 CONTEXT_XML
CONTEXT_XML is an XML element HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90599" [XML1.0] that represents a context identifier, as specified by the following XML schema HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90563" [W3C-XSD].
For a context identifier and a CONTEXT_XML element to be isomorphic, all the following statements MUST be true:
T h e n u m b e r o f P r o p e r t y X M L e l e m e n t s i n t h e C O N T E X T _ X M L e l e m e n t i s e q u a l t o t h e n u m b e r o f ( p r o p e r t y n a m e , p r o p e r t y v a l u e ) p a i r s i n t h e c o n t e x t i d e n t i f i e r .
N o t w o P r o p e r t y X M L e l e m e n t s , w h e n i n s i d e t h e C O N T E X T _ X M L e l e m e n t , h a v e t h e s a m e v a l u e a s t h e n a m e X M L a t t r i b u t e .
F o r e a c h P r o p e r t y X M L e l e m e n t t h a t i s i n s i d e t h e C O N T E X T _ X M L e l e m e n t , t h e r e i s e x a c t l y o n e ( p r o p e r t y n a m e , p r o p e r t y v a l u e ) p a i r i n t h e c o n t e x t i d e n t i f i e r s o t h a t :
T h e P r o p e r t y n a m e i s e q u a l t o t h e v a l u e o f t h e n a m e X M L a t t r i b u t e o f t h e P r o p e r t y X M L e l e m e n t , a n d
T h e P r o p e r t y v a l u e i s e q u a l t o t h e v a l u e o f t h e c o n t e n t o f t h e P r o p e r t y X M L e l e m e n t .
2 . 2 . 2 C A L L B A C K _ C O N T E X T _ X M L
C A L L B A C K _ C O N T E X T _ X M L i s a n X M L e l e m e n t H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 5 9 9 " [ X M L 1 . 0 ] t h a t represents a callback context, as specified by the following XML schema HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90563" [W3C-XSD].
To specify a context identifier as part of the callback context, a HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element MUST be included as a reference parameter of the endpoint reference that is specified by the CallbackEndpointReference element.
For a callback context and a CALLBACK_CONTEXT_XML element to be isomorphic, the following statement MUST be true:
T h e C a l l b a c k E n d p o i n t R e f e r e n c e e l e m e n t i n t h e C A L L B A C K _ C O N T E X T _ X M L e l e m e n t i s a n X M L I n f o s e t r e p r e s e n t a t i o n o f t h e e n d p o i n t r e f e r e n c e f r o m t h e c a l l b a c k c o n t e x t a s d e f i n e d b y H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 2 0 4 4 8 " [ W S A ] .
2 . 2 . 3 C O N T EXT_NV
CONTEXT_NV specifies a literal that results from resolving the following context_nv Augmented Backus-Naur Form (ABNF) rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
context-nv = %x57.73.63.43.6F.6E.74.65.78.74 ; WscContext
lws "=" lws
%x22 context-v %x22
context-v = *base64
base64 = %x30-39 / %x41-5A / %x61-7A / %x2B / %x2F / %x3D
lws = *(%x0D.0A / %x09 / %x20) ; CRLF, space, or tab
For a context identifier and a CONTEXT_NV literal to be isomorphic, the value of context-v MUST be a HYPERLINK "[MS-GLOS].pdf" base64 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90432" [RFC3548] encoding of a HYPERLINK "[MS-GLOS].pdf" UTF-8 encoding HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90439" [RFC3629] of a HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element that is isomorphic to the context identifier.
2.2.4 HTTP Client Message Header
The HTTP Client Message Header is an HTTP header HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] that results from resolving the following client_context_header ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
client_context_header = lws "Cookie" lws ":"
*(any-nv ";") lws
context-nv
lws *(";" any-nv)
any-nv = lws token lws "=" lws (token / quoted-string) lws
lws = *(%x0D.0A / %x09 / %x20) ; CRLF, space, or tab
This is a new header which does not have any relation with the "Cookie" header as described in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90315" [RFC2109] and HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90399" [RFC2965].
The rules token and quoted-string of this grammar are specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] section 2.2.
The context_nv rule MUST resolve to a HYPERLINK \l "z564a992c6105493e8ceb94bf592e9972" CONTEXT_NV literal.
For a context identifier and an HTTP Client Message Header to be isomorphic, the context_nv rule MUST resolve to a value that is isomorphic to the context identifier, as specified in CONTEXT_NV.
2.2.5 HTTP Server Message Header
The HTTP Server Message Header is an HTTP header HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] that results from resolving the following server_context_header ABNF rule HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90323" [RFC2234].
server_context_header = lws "Set-Cookie" lws ":"
*(any-nv ";") lws
context-nv
lws *(";" any-nv)
any-nv = lws token lws "=" lws (token / quoted-string) lws
lws = *(%x0D.0A / %x09 / %x20) ; CRLF, space, or tab
This is a new header which does not have any relation with the "Set-Cookie" header as described in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90315" [RFC2109].
The rules token and quoted-string of this grammar are specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=90372" [RFC2616] section 2.2.
The context_nv rule MUST resolve to a HYPERLINK \l "z564a992c6105493e8ceb94bf592e9972" CONTEXT_NV literal.
For a context identifier and an HTTP Server Message Header to be isomorphic, the context_nv rule MUST resolve to a value that is isomorphic to the context identifier, as specified in CONTEXT_NV.
2.2.6 Server Context Establishing Message
The Server Context Establishing Message M U S T b e e i t h e r :
A s e r v e r m e s s a g e t h a t i s a n H T T P r e s p o n s e m e s s a g e H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] t h a t c o n t a i n s a n H Y P E R L I N K \ l " z 0 e f b 1 f 6 4 4 2 e 4 4 a 4 7 a 5 d d 8 f 9 2 5 7 7 d b 9 d d " H T T P S e r v e r M e s s a g e H e a d e r .
A s e r v e r m e s s a g e t h a t i s a S O A P e n v e l o p e t h a t c o n t a i n s a H Y P E R L I N K \ l " z 0 3 a 5 0 d f 8 b 6 1 7 4 8 a a 9 e 1 c 9 5 5 4 7 6 2 5 6 1 7 6 " C O N T E X T _ X M L e l e m e n t a s a S O A P h e a d e r .
2 . 2 . 7 C o n t e x t P a r t i c i p a t i n g M e s s a g e
T h e C o n t e x t P a r t i c i p a t i n g M e s s a g e M U S T b e e i t h e r :
A c l i e n t m e s s a g e t h a t i s a n H T T P r e q u e s t m e s s a g e H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] t h a t c o n t a i n s a n H Y P E R L I N K \ l " z d 4 d d f d 2 a f b 0 3 4 0 7 e 8 b 0 9 3 d 1 9 1 5 6 5 c f 3 6 " H T T P C l i e n t M e s s a g e H e a d e r .
A c l i e n t m e s s a g e t h a t i s a S O A P e n v e l o p e t h a t c o n t a i n s a H Y P E R L I N K \ l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element as a SOAP header.
3 Protocol Details
3.1 Context Exchange Client Role Details
In this section, "client role" refers to the client role for context exchange.
3.1.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not manda t e t h a t i m p l e m e n t a t i o n s a d h e r e t o t h i s m o d e l a s l o n g a s t h e i r e x t e r n a l b e h a v i o r i s c o n s i s t e n t w i t h t h e b e h a v i o r t h a t i s d e s c r i b e d i n t h i s d o c u m e n t .
T h e c l i e n t r o l e M U S T m a i n t a i n t h e f o l l o w i n g d a t a e l e m e n t s :
C o n t e x t I d e n t i f i e r S t o r e : A d a t a e l e m e n t t h a t i s c a p a b l e o f h o l d i n g a n i n s t a n c e o f a c o n t e x t i d e n t i f i e r o r a n e m p t y v a l u e .
S t a t e : A n e n u m e r a t i o n t h a t i d e n t i f i e s t h e c u r r e n t s t a t e o f t h e c l i e n t r o l e w i t h t h e f o l l o w i n g p o s s i b l e v a l u e s :
I D L E
W A I T _ C O R R E L A T E D _ S M
W A I T _ S M
E N D E D
T h e f o l l o w i n g f i g u r e s h o w s t h e r e l a t i o n s h i p b e t w e e n t h e c l i e n t r o l e s t a t e s .
F i g u r e 7 : S t a t e d i a g r a m f o r t h e c l i e n t r o l e
3 . 1 . 1 . 1 I D L E S t a t e
I D L E i s t h e i n i t i a l s t a t e . T h e f o l l o w i n g e v e n t s a r e p r o c e s s e d i n t h i s s t a t e :
S E N D _ C M
T E R M I N A T E
3 . 1 . 1 . 2 W A I T _ C O R R E L A T E D _ S M S t a t e
T h e f o l l o w i n g e v e n t s a r e p r o c e s s e d i n t h e W A I T _ C O R R E L A T E D _ S M s t a t e :
R E C E I V E _ S M
T E R M I N A T E
3 . 1 . 1 . 3 W A I T _ S M S t a t e
T h e f o l l o w i n g e v e n t s a r e p r o c e s s e d i n t h e W A I T _ S M s t a t e :
R E C E I V E _ S M
T E R M I N A T E
3 . 1 . 1 . 4 E N D E D S t a t e
T h e E N D E D s t a t e i s t h e f i n a l s t a t e .
3 . 1 . 2 T i m e r s
N o n e .
3 . 1 . 3 I n i t i a l i z a t i o n
W h e n t h e c l i e n t r o l e i s i n i t i a l i z e d :
T h e S t a t e f i e l d M U S T b e s e t t o I D L E .
T h e C o n t e x t I d e n t i f i e r S t o r e f i e l d M U S T b e s e t t o a v a l u e t h a t i s o b t a i n e d f r o m a n i m p l e m e n t a t i o n - s p e c i f i c s o u r c e .
3 . 1 . 4 H i g h e r - L a y e r T r i g g e r e d E v e n t s
3 . 1 . 4 . 1 S E N D _ C M
T h e S E N D _ C M e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c w i t h t h e f o l l o w i n g a r g u m e n t s :
T h e C l i e n t M e s s a g e a r g u m e n t .
T h e P r o t o c o l a r g u m e n t w i t h t w o p o s s i b l e v a l u e s : H T T P o r S O A P .
T h e S e r v e r M e s s a g e E x p e c t e d a r g u m e n t w i t h t w o p o s s i b l e v a l u e s : t r u e o r f a l s e .
I f t h e S E N D _ C M e v e n t i s s i g n a l e d , t h e c l i e n t r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
I f t h e C o n t e x t I d e n t i f i e r S t o r e c o n t a i n s a n e m p t y v a l u e :
S e n d t h e c l i e n t m e s s a g e t o t h e s e r v e r r o l e b y u s i n g t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
S e t t h e S t a t e f i e l d t o W A I T _ C O R R E L A T E D _ S M .
O t h e r w i s e :
T r a n s f o r m t h e c l i e n t m e s s a g e t o a H Y P E R L I N K \ l " z 1 1 7 7 a e 9 2 a f a 8 4 2 f d a 3 2 5 8 1 5 3 2 b 4 f b 4 b 4 " C o n t e x t P a r t i c i p a t i n g M e s s a g e b y p e r f o r m i n g t h e f o l l o w i n g s t e p s :
I f t h e P r o t o c o l v a l u e i s H T T P a n d t h e c l i e n t m e s s a g e i s a n H T T P r e q u e s t m e s s a g e H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] :
C r e a t e a n H Y P E R L I N K \ l " z d 4 d d f d 2 a f b 0 3 4 0 7 e 8 b 0 9 3 d 1 9 1 5 6 5 c f 3 6 " H T T P C l i e n t M e s s a g e H e a d e r t h a t i s i s o m o r p h i c w i t h t h e v a l u e o f t h e C o n t e x t I d e n t i f i e r S t o r e .
A d d t h e H T T P C l i e n t M e s s a g e H e a d e r t o t h e c l i e n t m e s s a g e .
E l s e i f t h e P r o t o c o l v a l u e i s S O A P a n d t h e c l i e n t m e s s a g e i s a S O A P e n v e l o p e :
C r e a t e a H Y P E R L I N K \ l " z 0 3 a 5 0 d f 8 b 6 1 7 4 8 a a 9 e 1 c 9 5 5 4 7 6 2 5 6 1 7 6 " C O N T E X T _ X M L e l e m e n t t h a t i s i s o m o r p h i c w i t h t h e v a l u e o f t h e C o n t e x t I d e n t i f i e r S t o r e .
A d d t h e C O N T E X T _ X M L e l e m e n t t o t h e c l i e n t m e s s a g e a s a S O A P h e a d e r .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
S e n d t h e C o n t e x t P a r t i c i p a t i n g M e s s a g e t o t h e s e r v e r r o l e b y u s i n g t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
I f t h e S e r v e r M e s s a g e E x p e c t e d v a l u e i s t r u e :
S e t t h e S t a t e f i e l d t o W A I T _ S M .
3 . 1 . 4 . 2 T E R M I N A T E
T h e T E R M I N A T E e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I f t h e T E R M I N A T E e v e n t i s s i g n a l e d , t h e c l i e n t r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n :
S e t t h e S t a t e f i e l d t o E N D E D .
3 . 1 . 5 M e s s a g e P r o c e s s i n g E v e n t s a n d S e q u e n c i n g R u l e s
3 . 1 . 5 . 1 R E C E I V E _ S M
T h e R E C E I V E _ S M e v e n t M U S T b e s i g n a l e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l w i t h t h e f o l l o w i n g a r g u m e n t s :
T h e S e r v e r M e s s a g e a r g u m e n t .
T h e P r o t o c o l a r g u m e n t w i t h t w o p o s s i b l e v a l u e s : H T T P o r S O A P .
T h e S e r v e r M e s s a g e E x p e c t e d a r g u m e n t w i t h t w o p o s s i b l e v a l u e s : t r u e o r f a l s e .
I f t h e R E C E I V E _ S M e v e n t i s s i g n a l e d , t h e c l i e n t r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
I f t h e S t a t e f i e l d i s W A I T _ C O R R E L A T E D _ S M :
I f t h e s e r v e r m e s s a g e i s a H Y P E R L I N K \ l " z 1 c e 0 5 0 7 b 1 a c 7 4 c d e 9 f 8 e 4 b a 4 b e c 7 8 0 4 c " S e r v e r C o n t e x t E s t a b l i s h i n g M e s s a g e :
C r e a t e t h e c o n t e x t i d e n t i f i e r f r o m t h e S e r v e r C o n t e x t E s t a b l i s h i n g M e s s a g e b y p e r f o r m i n g t h e f o l l o w i n g s t e p s :
I f t h e P r o t o c o l v a l u e i s H T T P a n d t h e s e r v e r m e s s a g e c o n t a i n s a n H Y P E R L I N K \ l " z 0 e f b 1 f 6 4 4 2 e 4 4 a 4 7 a 5 d d 8 f 9 2 5 7 7 d b 9 d d " H T T P S e r v e r M e s s a g e H e a d e r :
C r e a t e a c o n t e x t i d e n t i f i e r t h a t i s i s o m o r p h i c w i t h t h e H T T P S e r v e r M e s s a g e H e a d e r f r o m t h e s e r v e r m e s s a g e .
E l s e i f t h e P r o t o c o l v a l u e i s S O A P a n d t h e s e r v e r m e s s a g e c o n t a i n s a S O A P h e a d e r t h a t m a t c h e s a H Y P E R L I N K \ l " z 0 3 a 5 0 d f 8 b 6 1 7 4 8 a a 9 e 1 c 9 5 5 4 7 6 2 5 6 1 7 6 " C O N T E X T _ X M L e l e m e n t :
C r e a t e a c o n t e x t i d e n t i f i e r t h a t i s i s o m o r p h i c w i t h t h e S O A P h e a d e r f r o m t h e s e r v e r m e s s a g e t h a t m a t c h e s a C O N T E X T _ X M L e l e m e n t .
O t h e r w i s e :
S e t t h e S t a t e f i e l d t o E N D E D .
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
S e t t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d t o t h e v a l u e o f t h e c r e a t e d c o n t e x t i d e n t i f i e r .
P r o v i d e t h e s e r v e r m e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
S e t t h e S t a t e f i e l d t o E N D E D .
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
I f t h e s e r v e r m e s s a g e i s a S e r v e r C o n t e x t E s t a b l i s h i n g M e s s a g e :
S e t t h e S t a t e f i e l d t o E N D E D .
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
P r o v i d e t h e s e r v e r m e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I f t h e S e r v e r M e s s a g e E x p e c t e d v a l u e i s t r u e :
S e t t h e S t a t e f i e l d t o W A I T _ S M .
O t h e r w i s e :
S e t t h e S t a t e f i e l d t o I D L E .
3 . 1 . 6 T i m er Events
None.
3.1.7 Other Local Events
None.
3.2 Context Exchange Server Role Details
In this section "server role" refers to the server role for context exchange.
3.2.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as lon g a s t h e i r e x t e r n a l b e h a v i o r i s c o n s i s t e n t w i t h t h e b e h a v i o r t h a t i s d e s c r i b e d i n t h i s d o c u m e n t .
T h e s e r v e r r o l e M U S T m a i n t a i n t h e f o l l o w i n g d a t a e l e m e n t s :
C o n t e x t I d e n t i f i e r S t o r e : A d a t a e l e m e n t t h a t i s c a p a b l e o f h o l d i n g a n i n s t a n c e o f a c o n t e x t i d e n t i f i e r o r a n e m p t y v a l u e .
S t a t e : A n e n u m e r a t i o n t h a t i d e n t i f i e s t h e c u r r e n t s t a t e o f t h e s e r v e r r o l e w i t h t h e f o l l o w i n g p o s s i b l e v a l u e s :
W A I T _ C M
E N D E D
T h e f o l l o w i n g f i g u r e s h o w s t h e r e l a t i o n s h i p b e t w e e n s e r v e r r o l e s t a t e s .
F i g u r e 8 : S t a t e d i a g r a m f o r t h e s e r v e r r o l e
3 . 2 . 1 . 1 W A I T _ C M S t a t e
T h e W A I T _ C M s t a t e i s t h e i n i t i a l s t a t e . T h e f o l l o w i n g e v e n t s a r e p r o c e s s e d i n t h e W A I T _ C M s t a t e :
R E C E I V E _ C M
T E R M I N A T E
3 . 2 . 1 . 2 E N D E D S t a t e
T h e E N D E D s t a t e i s t h e f i n a l s t a t e .
3 . 2 . 2 T i m e r s
N o n e .
3 . 2 . 3 I n i t i a l i z a t i o n
W h e n t h e s e r v e r r o l e i s i n i t i a l i z e d :
T h e S t a t e f i e l d M U S T b e s e t t o W A I T _ C M .
T h e C o n t e x t I d e n t i f i e r S t o r e f i e l d M U S T b e s e t t o a v a l u e t h a t i s o b t a i n e d f r o m a n i m p l e m e n t a t i o n - s p e c i f i c s o u r c e .
3 . 2 . 4 H i g h e r - L a y e r T r i g g e r e d E v e n t s
3 . 2 . 4 . 1 T E R M I N A T E
T h e T E R M I N A T E e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I f t h e T E R M I N A T E e v e n t i s s i g n a l e d , t h e s e r v e r r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n :
S e t t h e S t a t e f i e l d t o E N D E D .
3 . 2 . 5 M e s s a g e P r o c e s s i n g E v e n t s a n d S e q u e n c i n g R u l e s
3 . 2 . 5 . 1 R E C E I V E _ C M
T h e R E C E I V E _ C M e v e n t M U S T b e s i g n a l e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l w i t h t h e f o l l o w i n g a r g u m e n t s :
T h e C l i e n t M e s s a g e a r g u m e n t .
T h e P r o t o c o l a r g u m e n t w i t h t w o p o s s i b l e v a l u e s : H T T P o r S O A P .
I f t h e R E C E I V E _ C M e v e n t i s s i g n a l e d , t h e s e r v e r r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
I n i t i a l i z e t h e N E W _ C O N T E X T B o o l e a n l o c a l d a t a e l e m e n t t o f a l s e .
I f t h e c l i e n t m e s s a g e i s a H Y P E R L I N K \ l " z 1 1 7 7 a e 9 2 a f a 8 4 2 f d a 3 2 5 8 1 5 3 2 b 4 f b 4 b 4 " C o n t e x t P a r t i c i p a t i n g M e s s a g e :
C r e a t e t h e c o n t e x t i d e n t i f i e r f r o m t h e C o n t e x t P a r t i c i p a t i n g M e s s a g e b y p e r f o r m i n g t h e f o l l o w i n g s t e p s :
I f t h e P r o t o c o l v a l u e i s H T T P a n d t h e c l i e n t m e s s a g e i s a n H T T P r e q u e s t m e s s a g e H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] :
C r e a t e a c o n t e x t i d e n t i f i e r t h a t i s i s o m o r p h i c w i t h t h e H Y P E R L I N K \ l " z d 4 d d f d 2 a f b 0 3 4 0 7 e 8 b 0 9 3 d 1 9 1 5 6 5 c f 3 6 " H T T P C l i e n t M e s s a g e H e a d e r f r o m t h e c l i e n t m e s s a g e .
E l s e i f t h e P r o t o c o l v a l u e i s S O A P a n d t h e s e r v e r m e s s a g e i s a S O A P e n v e l o p e :
C r e a t e a c o n t e x t i d e n t i f i e r t h a t i s i s o m o r p h i c w i t h t h e S O A P h e a d e r f r o m t h e c l i e n t m e s s a g e t h a t m a t c h e s t h e H Y P E R L I N K \ l " z 0 3 a 5 0 d f 8 b 6 1 7 4 8 a a 9 e 1 c 9 5 5 4 7 6 2 5 6 1 7 6 " C O N T E X T _ X M L e l e m e n t .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I n v o k e a f u n c t i o n i n t h e h i g h e r - l a y e r b u s i n e s s l o g i c t h a t a c c e p t s t h e c r e a t e d c o n t e x t i d e n t i f i e r a n d t h e v a l u e f r o m t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d ; a n d r e t u r n s o n e o f t h r e e v a l u e s : P A R T I C I P A T E , N E W , o r F A I L .
I f t h e v a l u e t h a t i s r e t u r n e d f r o m t h e h i g h e r - l a y e r b u s i n e s s l o g i c i s P A R T I C I P A T E :
P r o v i d e t h e c l i e n t m e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
S e t N E W _ C O N T E X T t o f a l s e .
E l s e i f t h e v a l u e t h a t i s r e t u r n e d f r o m t h e h i g h e r - l a y e r b u s i n e s s l o g i c i s N E W :
S e t t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d t o a n e m p t y v a l u e .
S e t N E W _ C O N T E X T t o t r u e .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
S e t N E W _ C O N T E X T t o t r u e .
I f N E W _ C O N T E X T i s t r u e :
I f t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d i s e m p t y :
I n v o k e a f u n c t i o n i n t h e h i g h e r - l a y e r b u s i n e s s l o g i c t h a t r e t u r n s a c o n t e x t i d e n t i f i e r .
I n v o k e a f u n c t i o n i n t h e h i g h e r - l a y e r b u s i n e s s l o g i c t h a t a c c e p t s t h e c l i e n t m e s s a g e a n d r e t u r n s a c o r r e l a t e d s e r v e r m e s s a g e u s i n g a c o r r e l a t i o n m e c h a n i s m t h a t i s s u p p l i e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
T r a n s f o r m t h e s e r v e r m e s s a g e t o a H Y P E R L I N K \ l " z 1 c e 0 5 0 7 b 1 a c 7 4 c d e 9 f 8 e 4 b a 4 b e c 7 8 0 4 c " S e r v e r C o n t e x t E s t a b l i s h i n g M e s s a g e b y p e r f o r m i n g t h e f o l l o w i n g s t e p s :
I f t h e P r o t o c o l v a l u e i s H T T P a n d t h e s e r v e r m e s s a g e i s a n H T T P r e s p o n s e m e s s a g e H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] :
C r e a t e a n H Y P E R L I N K \ l " z 0 e f b 1 f 6 4 4 2 e 4 4 a 4 7 a 5 d d 8 f 9 2 5 7 7 d b 9 d d " H T T P S e r v e r M e s s a g e H e a d e r t h a t i s i s o m o r p h i c w i t h t h e c o n t e x t i d e n t i f i e r .
A d d t h e H T T P S e r v e r M e s s a g e H e a d e r t o t h e s e r v e r m e s s a g e H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] .
E l s e i f t h e P r o t o c o l v a l u e i s S O A P a n d t h e s e r v e r m e s s a g e i s a S O A P e n v e l o p e :
C r e a t e a C O N T E X T _ X M L e l e m e n t t h a t i s i s o m o r p h i c w i t h t h e c o n t e x t i d e n t i f i e r .
A d d t h e C O N T E X T _ X M L e l e m e n t t o t h e s e r v e r m e s s a g e a s a S O A P h e a d e r .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
S e n d t h e S e r v e r C o n t e x t E s t a b l i s h i n g M e s s a g e t o t h e c l i e n t r o l e b y u s i n g t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
S e t t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d t o t h e v a l u e o f t h e c o n t e x t i d e n t i f i e r t h a t i s r e t u r n e d b y h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I n v o k e a f u n c t i o n i n t h e h i g h e r - l a y e r b u s i n e s s l o g i c t h a t a c c e p t s t h e c l i e n t m e s s a g e a n d r e t u r n s a ( p o s s i b l y e m p t y ) c o l l e c t i o n o f c o r r e l a t e d s e r v e r m e s s a g e s b y u s i n g a c o r r e l a t i o n m e c h a n i s m t h a t i s s u p p l i e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
F o r e a c h s e r v e r m e s s a g e i n t h e c o l l e c t i o n o f t h e s e r v e r m e s s a g e s :
S e n d t h e s e r v e r m e s s a g e t o t h e c l i e n t r o l e b y u s i n g t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
3 . 2 . 6 T i m e r E v e n t s
N o n e .
3 . 2 . 7 O t h e r L o c a l E v e n t s
None.
3.3 Callback Context Exchange Client Role Details
In this section, "client role" refers to the client role for callback context exchange.
3.3.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external be h a v i o r i s c o n s i s t e n t w i t h t h e b e h a v i o r t h a t i s d e s c r i b e d i n t h i s d o c u m e n t .
T h e c l i e n t r o l e M U S T m a i n t a i n t h e f o l l o w i n g d a t a e l e m e n t s :
C o n t e x t I d e n t i f i e r S t o r e : A d a t a e l e m e n t t h a t i s c a p a b l e o f h o l d i n g a n i n s t a n c e o f a c o n t e x t i d e n t i f i e r o r a n e m p t y v a l u e .
S t a t e : A n e n u m e r a t i o n t h a t i d e n t i f i e s t h e c u r r e n t s t a t e o f t h e c l i e n t r o l e w i t h t h e f o l l o w i n g p o s s i b l e v a l u e s :
W A I T _ S M
E N D E D
T h e f o l l o w i n g f i g u r e s h o w s t h e r e l a t i o n s h i p b e t w e e n t h e c l i e n t r o l e s t a t e s .
F i g u r e 9 : S t a t e d i a g r a m f o r t h e c a l l b a c k c o n t e x t e x c h a n g e c l i e n t r o l e
3 . 3 . 1 . 1 W A I T _ S M S t a t e
T h e W A I T _ S M s t a t e i s t h e i n i t i a l s t a t e . T h e f o l l o w i n g e v e n t s a r e p r o c e s s e d i n t h e W A I T _ S M s t a t e :
S E N D _ C M
R E C E I V E _ S M
T E R M I N A T E
3 . 3 . 1 . 2 E N D E D S t a t e
T h e E N D E D s t a t e i s t h e f i n a l s t a t e .
3 . 3 . 2 T i m e r s
T h e r e a r e n o t i m e r s s p e c i f i e d f o r t h e c l i e n t r o l e .
3 . 3 . 3 I n i t i a l i z a t i o n
W h e n t h e c l i e n t r o l e i s i n i t i a l i z e d :
T h e S t a t e f i e l d M U S T b e s e t t o W A I T _ S M .
T h e C o n t e x t I d e n t i f i e r S t o r e f i e l d M U S T b e s e t t o a v a l u e t h a t i s o b t a i n e d f r o m a n i m p l e m e n t a t i o n - s p e c i f i c s o u r c e .
3 . 3 . 4 H i g h e r - L a y e r T r i g g e r e d E v e n t s
3 . 3 . 4 . 1 T E R M I N A T E
T h e T E R M I N A T E e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I f t h e T E R M I N A T E e v e n t i s s i g n a l e d , t h e c l i e n t r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
S e t t h e S t a t e f i e l d t o E N D E D .
3 . 3 . 5 M e s s a g e P r o c e s s i n g E v e n t s a n d S e q u e n c i n g R u l e s
3 . 3 . 5 . 1 S E N D _ C M
T h e S E N D _ C M e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c w i t h t h e f o l l o w i n g a r g u m e n t s :
T h e C l i e n t M e s s a g e a r g u m e n t .
T h e C a l l b a c k C o n t e x t a r g u m e n t .
I f t h e S E N D _ C M e v e n t i s s i g n a l e d , t h e c l i e n t r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
T r a n s f o r m t h e c l i e n t m e s s a g e t o a C a l l b a c k C o n t e x t E s t a b l i s h i n g M e s s a g e b y p e r f o r m i n g t h e f o l l o w i n g s t e p s :
I f t h e c l i e n t m e s s a g e i s a S O A P e n v e l o p e :
C r e a t e a H Y P E R L I N K \ l " z 5 c 9 a 3 8 3 a 0 7 e 5 4 d e 6 b 6 c 3 3 a 1 0 d 0 4 8 f 7 6 2 " C A L L B A C K _ C O N T E X T _ X M L e l e m e n t t h a t i s i s o m o r p h i c w i t h t h e c a l l b a c k c o n t e x t .
A d d t h e C A L L B A C K _ C O N T E X T _ X M L e l e m e n t t o t h e c l i e n t m e s s a g e a s a S O A P h e a d e r .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
S e n d t h e C a l l b a c k C o n t e x t E s t a b l i s h i n g M e s s a g e t o t h e s e r v e r r o l e b y u s i n g t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
I f t h e c a l l b a c k c o n t e x t s p e c i f i e s a c o n t e x t i d e n t i f i e r :
S e t t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d t o t h e v a l u e o f t h e c o n t e x t i d e n t i f i e r .
3 . 3 . 5 . 2 R E C E I V E _ S M
T h e R E C E I V E _ S M e v e n t M U S T b e s i g n a l e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l w i t h t h e f o l l o w i n g a r g u m e n t s :
T h e S e r v e r M e s s a g e a r g u m e n t .
I f t h e R E C E I V E _ S M e v e n t i s s i g n a l e d , t h e c l i e n t r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
I f t h e s e r v e r m e s s a g e i s a C o n t e x t P a r t i c i p a t i n g M e s s a g e :
C r e a t e t h e c o n t e x t i d e n t i f i e r f r o m t h e C o n t e x t P a r t i c i p a t i n g M e s s a g e b y p e r f o r m i n g t h e f o l l o w i n g s t e p s :
I f t h e s e r v e r m e s s a g e i s a S O A P e n v e l o p e :
C r e a t e a c o n t e x t i d e n t i f i e r t h a t i s i s o m o r p h i c w i t h t h e S O A P h e a d e r f r o m t h e s e r v e r m e s s a g e t h a t m a t c h e s t h e H Y P E R L I N K \ l " z 0 3 a 5 0 d f 8 b 6 1 7 4 8 a a 9 e 1 c 9 5 5 4 7 6 2 5 6 1 7 6 " C O N T E X T _ X M L e l e m e n t .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I n v o k e a f u n c t i o n i n t h e h i g h e r - l a y e r b u s i n e s s l o g i c t h a t a c c e p t s t h e c r e a t e d c o n t e x t i d e n t i f i e r a n d t h e v a l u e f r o m t h e C o n t e x t I d e n t i f i e r S t o r e f i e l d a n d r e t u r n s o n e o f t w o v a l u e s : P A R T I C I P A T E o r F A I L .
I f t h e v a l u e t h a t i s r e t u r n e d f r o m t h e h i g h e r - l a y e r b u s i n e s s l o g i c i s P A R T I C I P A T E :
P r o v i d e t h e c l i e n t m e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I n v o k e a f u n c t i o n i n t h e h i g h e r - l a y e r b u s i n e s s l o g i c t h a t a c c e p t s t h e s e r v e r m e s s a g e a n d r e t u r n s a ( p o s s i b l y e m p t y ) c o l l e c t i o n o f c o r r e l a t e d c l i e n t m e s s a g e s u s i n g a c o r r e l a t i o n m e c h a n i s m t h a t i s s u p p l i e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
F o r e a c h c l i e n t m e s s a g e i n t h e c o l l e c t i o n o f t h e c l i e n t m e s s a g e s :
S e n d t h e c l i e n t m e s s a g e t o t h e s e r v e r r o l e b y u s i n g t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l .
3 . 3 . 6 T i m e r E v e n t s
N o n e .
3 . 3 . 7 O t h e r L o c a l E v e n t s
N o n e .
3 . 4 C a l l b a c k C o n t e x t E x c h a n g e S e r v e r R o l e D e t a i l s
In this section, "server role" refers to the server role for the callback context exchange.
3.4.1 Abstract Data Model
This section describes a conceptual model of possible data organization that an implementation maintains to participate in this protocol. The described organization is provided to facilitate the explanation of how the protocol behaves. This document does not mandate that implementations adhere to this model as long as their external behavior is consistent with the behavior that is describe d i n t h i s d o c u m e n t .
T h e s e r v e r r o l e M U S T m a i n t a i n t h e f o l l o w i n g d a t a e l e m e n t s :
E n d p o i n t R e f e r e n c e S t o r e : A d a t a e l e m e n t t h a t i s c a p a b l e o f h o l d i n g a n i n s t a n c e o f a n e n d p o i n t r e f e r e n c e o r a n e m p t y v a l u e .
S t a t e : A n e n u m e r a t i o n t h a t i d e n t i f i e s t h e c u r r e n t s t a t e o f t h e s e r v e r r o l e w i t h t h e f o l l o w i n g p o s s i b l e v a l u e s :
W A I T _ C M
E N D E D
T h e f o l l o w i n g f i g u r e s h o w s t h e r e l a t i o n s h i p b e t w e e n s e r v e r r o l e s t a t e s .
F i g u r e 1 0 : S t a t e d i a g r a m f o r t h e c a l l b a c k c o n t e x t e x c h a n g e s e r v e r r o l e
3 . 4 . 1 . 1 W A I T _ C M S t a t e
T h e W A I T _ C M s t a t e i s t h e i n i t i a l s t a t e . T h e f o l l o w i n g e v e n t s a r e p r o c e s s e d i n t h e W A I T _ C M s t a t e :
R E C E I V E _ C M
S E N D _ S M
T E R M I N A T E
3 . 4 . 1 . 2 E N D E D S t a t e
T h e E N D E D s t a t e i s t h e f i n a l s t a t e .
3 . 4 . 2 T i m e r s
N o n e .
3 . 4 . 3 I n i t i a l i z a t i o n
W h e n t h e s e r v e r r o l e i s i n i t i a l i z e d :
T h e S t a t e f i e l d M U S T b e s e t t o W A I T _ C M .
T h e E n d p o i n t R e f e r e n c e S t o r e f i e l d M U S T b e s e t t o a v a l u e t h a t i s o b t a i n e d f r o m a n i m p l e m e n t a t i o n - s p e c i f i c s o u r c e .
3 . 4 . 4 H i g h e r - L a y e r T r i g g e r e d E v e n t s
3 . 4 . 4 . 1 T E R M I N A T E
T h e T E R M I N A T E e v e n t M U S T b e s i g n a l e d b y t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
I f t h e T E R M I N A T E e v e n t i s s i g n a l e d , t h e s e r v e r r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
S e t t h e S t a t e f i e l d t o E N D E D .
3 . 4 . 5 M e s s a g e P r o c e s s i n g E v e n t s a n d S e q u e n c i n g R u l e s
3 . 4 . 5 . 1 R E C E I V E _ C M
T h e R E C E I V E _ C M e v e n t M U S T b e s i g n a l e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l w i t h t h e f o l l o w i n g a r g u m e n t s :
T h e C l i e n t M e s s a g e a r g u m e n t .
I f t h e R E C E I V E _ C M e v e n t i s s i g n a l e d , t h e s e r v e r r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
I f t h e c l i e n t m e s s a g e i s a C a l l b a c k C o n t e x t E s t a b l i s h i n g M e s s a g e :
I f t h e c l i e n t m e s s a g e c o n t a i n s a S O A P h e a d e r t h a t m a t c h e s a H Y P E R L I N K \ l " z 5 c 9 a 3 8 3 a 0 7 e 5 4 d e 6 b 6 c 3 3 a 1 0 d 0 4 8 f 7 6 2 " C A L L B A C K _ C O N T E X T _ X M L e l e m e n t :
C r e a t e a c a l l b a c k c o n t e x t t h a t i s i s o m o r p h i c w i t h t h e S O A P h e a d e r f r o m t h e c l i e n t m e s s a g e t h a t m a t c h e s t h e C A L L B A C K _ C O N T E X T _ X M L e l e m e n t .
S e t t h e E n d p o i n t R e f e r e n c e S t o r e f i e l d t o t h e v a l u e o f t h e e n d p o i n t r e f e r e n c e f r o m t h e c r e a t e d c a l l b a c k c o n t e x t .
P r o v i d e t h e c l i e n t m e s s a g e t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
3 . 4 . 5 . 2 S E N D _ S M
T h e S E N D _ S M e v e n t M U S T b e s i g n a l e d b y t h e u n d e r l y i n g t r a n s p o r t p r o t o c o l w i t h t h e f o l l o w i n g a r g u m e n t :
T h e S e r v e r M e s s a g e a r g u m e n t .
I f t h e S E N D _ S M e v e n t i s s i g n a l e d , t h e s e r v e r r o l e i m p l e m e n t a t i o n M U S T p e r f o r m t h e f o l l o w i n g a c t i o n s :
I f t h e s e r v e r m e s s a g e i s a H Y P E R L I N K " [ M S - G L O S ] . p d f " S O A P m e s s a g e :
I f t h e E n d p o i n t R e f e r e n c e S t o r e f i e l d i s n o t e m p t y :
S e n d t h e s e r v e r m e s s a g e t o t h e e n d p o i n t r e f e r e n c e t h a t i s s t o r e d i n t h e E n d p o i n t R e f e r e n c e S t o r e f i e l d b y u s i n g t h e p r o c e s s t h a t i s s p e c i f i e d i n H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 1 2 0 4 4 8 " [ W S A ] s e c t i o n 3 . 3 .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
O t h e r w i s e :
R e t u r n a n i m p l e m e n t a t i o n - s p e c i f i c f a i l u r e r e s u l t t o t h e h i g h e r - l a y e r b u s i n e s s l o g i c .
3 . 4 . 6 T i m e r E v e n t s
N o n e .
3 . 4 . 7 O t h e r L o c a l E v e n t s
N o n e .
4 P r o t o c o l E x a m p l e s
T h e f o l l o w i n g s e c t i o n s d e s c r i b e c o m m o n s c e n a r i o s t o i l l u s t r a t e t y p i c a l u s e o f t h e . N E T C o n t e x t E x c h a n g e P r o t o c o l :
U s i n g t h e . N E T C o n t e x t E x c h a n g e P r o t o c o l w i t h S O A P 1 . 2 H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 4 6 6 4 " [ S O A P 1 . 2 - 1 / 2 0 0 7 ] .
U s i n g t h e . N E T C o n t e x t E x c h a n g e P r o t o c o l w i t h H T T P H Y P E R L I N K " h t t p : / / g o . m i c r o s o f t . c o m / f w l i n k / ? L i n k I d = 9 0 3 7 2 " [ R F C 2 6 1 6 ] .
P r o c e s s ing an Unrecognized Context Using SOAP 1.2 HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007].
These examples assume that the client role can establish a connection with the server role by using a transport protocol that supports exchanging HTTP or SOAP messages.
4.1 Using the .NET Context Exchange Protocol with SOAP 1.2
This scenario shows how a client establishes a context with a server that associates HYPERLINK \l "z1177ae92afa842fda32581532b4fb4b4" Context Participating Messages to a shopping cart resource. The scenario also shows how the client reestablishes that context after the original connection with the server is closed. Finally the scenario shows how the client establishes a callback context with the server.
The scenario starts after the client connects to the server by using a transport protocol that supports the exchange of SOAP messages.
All messages that are exchanged in this scenario use HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007].
4.1.1 Establishing Context Using SOAP 1.2
A client establishes context with a server by sending the server a Client Context Initiating Message. This message is a SOAP message HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007] that does not contain HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML as a SOAP header.
http://machine1.example.org/Sample/IShoppingCart/Create
urn:uuid:04133e99-4c4f-4433-b2de-4aca4132e78f
http://www.w3.org/2005/08/addressing/anonymous
http://machine2.example.org/ShoppingCart
571
When the server receives this message, it invokes a business logic function according to its rules for processing SOAP messages ( HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007] section 2.6). This function creates a new shopping cart resource, associates it with a new context identifier, and creates a response message. The context identifier has a single pair (property name, property value).
Property name Property value instanceId1a1913b1-cb24-4d94-91d2-cf414a569481The server then transforms the response message into a HYPERLINK \l "z1ce0507b1ac74cde9f8e4ba4bec7804c" Server Context Establishing Message by adding a SOAP header and sends it to the client. This header is a CONTEXT_XML element that is isomorphic to the context identifier that is associated with the shopping cart.
http://machine1.example.org/Sample/IShoppingCart/CreateResponse
urn:uuid:04133e99-4c4f-4433-b2de-4aca4132e78f
1a1913b1-cb24-4d94-91d2-cf414a569481
When the client receives the Server Context Establishing Message, it creates a context identifier that is isomorphic to the CONTEXT_XML element from the SOAP message and stores it.
4.1.2 Subsequent Context Participating Messages Using SOAP 1.2
After the context is established as described in section HYPERLINK \l "z883e7db867c641468decb46d74908b0e" 4.1.1, the client sends SOAP messages HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007] that are intended to manipulate the associated shopping cart. All these messages are HYPERLINK \l "z1177ae92afa842fda32581532b4fb4b4" Context Participating Messages with a HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element that is isomorphic to the clients stored context identifier, as shown in the following example.
http://machine1.example.org/Sample/IShoppingCart/AddItem
urn:uuid:a807e1f4-2096-40f3-9c6c-bbc3f45bc509
http://www.w3.org/2005/08/addressing/anonymous
1a1913b1-cb24-4d94-91d2-cf414a569481
http://machine2.example.org /ShoppingCart
- scarf
When the server receives each message, it creates a context identifier that is isomorphic to the CONTEXT_XML element from the SOAP message and invokes a business logic function according to its rules for processing SOAP messages. This function determines that a shopping cart exists for the provided context identifier and performs the appropriate action on the shopping cart by using the content of the SOAP message.
The client then closes the connection to the server.
4.1.3 Continue Using Context Using SOAP 1.2
To continue using the context that is associated with the shopping cart that was created in section HYPERLINK \l "z883e7db867c641468decb46d74908b0e" 4.1.1, the client connects to the server by using a transport protocol that supports the exchange of SOAP messages HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007]. It then sends HYPERLINK \l "z1177ae92afa842fda32581532b4fb4b4" Context Participating Messages to the server. The creation, transmission, and processing of these messages is as described in section HYPERLINK \l "z861191288a1a4fefa5b5461cbffc3476" 4.1.2.
4.1.4 Establish a Callback Context
To enable duplex communication with the server, the client sends another Context Participating Message to the server (as in section HYPERLINK \l "z861191288a1a4fefa5b5461cbffc3476" 4.1.2) that is also a Callback Context Establishing Message.
The client invokes a business logic function that creates a new customer resource and associates it with a new context identifier. The context identifier has a single pair (property name, property value).
Property nameProperty valueinstanceIdc4b4e186-a5eb-4a8c-9f64-f8bb099e84ebThe client adds a HYPERLINK \l "z5c9a383a07e54de6b6c33a10d048f762" CALLBACK_CONTEXT_XML element as a SOAP header to the message to specify the endpoint reference to which callback messages should be sent. The endpoint reference also contains a context identifier for the client.
http://machine1.example.org/Sample/IShoppingCart/Purchase
urn:uuid:31d9ce06-a90b-4d81-9a0b-b1b8eaf67b28
http://www.w3.org/2005/08/addressing/anonymous
1a1913b1-cb24-4d94-91d2-cf414a569481
http://machine3.example.org
c4b4e186-a5eb-4a8c-9f64-f8bb099e84eb
http://machine2.example.org/ShoppingCart
571
When the server receives the Server Context Establishing Message, it creates an endpoint reference that is isomorphic to the endpoint reference in the CALLBACK_CONTEXT_XML element from the SOAP message and stores it.
The client then closes the connection with the server.
4.1.5 Subsequent Callback Messages
After the callback context is established as described in section HYPERLINK \l "z3a9c9b98850a4c278e38c0aadc7016a2" 4.1.4, the client connects to the server by using a transport protocol that supports exchanging SOAP messages as specified in HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=94664" [SOAP1.2-1/2007]. The server then sends a SOAP message that is intended for the associated customer. The server sends this message to the endpoint reference that was stored when the callback context was established. The context identifier for the customer is as described in WS-Addressing HYPERLINK "http://go.microsoft.com/fwlink/?LinkId=120448" [WSA].
http://machine1.example.org/Sample/INotifyCustomer/ShippedItems
urn:uuid:323d365c-e69a-4d9e-99f1-3c2a57490926
http://www.w3.org/2005/08/addressing/anonymous
c4b4e186-a5eb-4a8c-9f64-f8bb099e84eb
http://machine3.example.org
- scarf
When the client receives the message, it creates a context identifier that is isomorphic to the HYPERLINK \l "z03a50df8b61748aa9e1c955476256176" CONTEXT_XML element from the SOAP message and invokes a business logic function according to its rules for processing SOAP messages. This function determines that the customer exists for . w x D O $ m u
H I Z [ D E l m ~ 3 b c h! i! j! k! ! ! ! ! ! ! *jh h{ hec 0J UmH nH u hec mH nH uh{ hec 0J mH nH u$j h{ hec 0J UmH nH u hec hec 5j h' hec 0J U
hec 0J j hec U
hec 0Jh hec 8 - . x D m $If gdv gdec [ gdec gdec gdec gdec ( , , # # $If gdv kd $$If V 4 \
oE#
t ( 0 (#6 4 4
a p( ytec , . D E P V ` ? kd$ $$If V \
oE#
t 0 (#6 4 4
a p( ytec $If gdv H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec " ( 2 \ H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec \ ] h n x H ? ? ? ? $If gdv kdH $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec . H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec . / : > D o H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec o p { H ? ? ? ? $If gdv kdl $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd5 $$If V \
oE#
t 0 (#6 4 4
a p( ytec
A H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec A B M S ] H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd
$$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kdY $$If V \
oE#
t 0 (#6 4 4
a p( ytec H H ? ? ? ? $If gdv kd" $$If V \
oE#
t 0 (#6 4 4
a p( ytec H I T X ^ } H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec } ~ H ? ? ? ? $If gdv kd
$$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd} $$If V \
oE#
t 0 (#6 4 4
a p( ytec
% O H ? ? ? ? $If gdv kdF $$If V \
oE#
t 0 (#6 4 4
a p( ytec O P [ _ e H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec ` H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec ` a l p z H ? ? ? ? $If gdv kdj $$If V \
oE#
t 0 (#6 4 4
a p( ytec . H ? ? ? ? $If gdv kd3 $$If V \
oE#
t 0 (#6 4 4
a p( ytec . / : > H H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec c H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec c d o s y H ? ? ? ? $If gdv kdW $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec & S H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec S T _ c m H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec ! H ? ? ? ? $If gdv kd{ $$If V \
oE#
t 0 (#6 4 4
a p( ytec ! " - 1 ; H ? ? ? ? $If gdv kdD $$If V \
oE#
t 0 (#6 4 4
a p( ytec H ? ? ? ? $If gdv kd
$$If V \
oE#
t 0 (#6 4 4
a p( ytec V H ? ? ? ? $If gdv kd $$If V \
oE#
t 0 (#6 4 4
a p( ytec V W X Y b !
" H C > > <