Email binding, notes

David Hull <[email protected]> Tue, 29 Aug 2006 01:31:02 -0400
Newsgroups gmane.text.xml.distributed
Message-ID <[email protected]>
Attached please find a sketch of a binding of the one-way MEP to email,
taking the existing email binding note as a starting point.  As one
would hope, the meat of it is in the mapping between properties and
email content (Table 2) and in the mapping of error conditions to SOAP
faults (which I've completely punted -- but then am I required to do
anything?).

Random notes taken along the way:

    * The original refers to the RequestingSOAPNode and
      RespondingSOAPNode roles.  We don't define these.
    * Hmm ... what if a given node gets the sent email twice?  This is a
      general issue.  I don't think we specifically mention it in the
      MEP spec yet.
    * It looks like it might be better to have a single Message
      property, instantiated at each node, rather than separate
      InboundMessage and OutboundMessage properties, with only one or
      the other instantiated at a given node.  Most of Table 2 is
      identical for sender and receiver.  This is the only exception.
    * The original binding treats SOAP nodes as being attached to email
      interfaces.  This seems good and right, and I follow it.  But I
      note that a given email interface need not have a SOAP node
      attached to it, in which case a message sent will normally reach a
      receiver, but not a SOAP node.  For that matter, there could be
      multiple SOAP nodes attached to a given email interface and
      address (or to the same address at different interfaces, depending
      on what we mean by an email interface).  In such cases, a single
      message sent to a single address will still reach multiple SOAP nodes.
    * Goodness, those state tables took up a lot of room.
one-way-email.htm (text/html, 13.4 KB)
<!DOCTYPE html PUBLIC "-W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <title>SOAP Version 1.2 Email One-way Binding</title>
  <meta content="&Ntilde;and&uacute; 0.6" name="GENERATOR">
  <meta content="text/html;charset=UTF-8" http-equiv="Content-Type">
</head>
<body>
<div class="head">
<a href="http://www.w3.org/"><img alt="W3C"
 src="http://www.w3.org/Icons/w3c_home" height="48" width="72"></a>
<h1>SOAP Version 1.2 Email One-way Binding</h1>
<h2>W3C Note 26 June 2002</h2>
<dl>
  <dt>This version:</dt>
  <dd><a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626">...</a></dd>
  <dt>Latest version:</dt>
  <dd><a href="http://www.w3.org/TR/soap12-email">...</a></dd>
  <dt>Authors:</dt>
  <dd><a href="mailto:[email protected]">David Hull</a>, TIBCO<br>
  </dd>
</dl>
<p class="copyright"><a
 href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Copyright">Copyright</a>&nbsp;&copy;&nbsp;2002&nbsp;<a
 href="http://www.w3.org/"><abbr title="World Wide Web Consortium">W3C</abbr></a><sup>&reg;</sup>
(<a href="http://www.lcs.mit.edu/"><abbr
 title="Massachusetts Institute of Technology">MIT</abbr></a>, <a
 href="http://www.inria.fr/"><abbr
 title="Institut National de Recherche en Informatique et Automatique"
 lang="fr">INRIA</abbr></a>,
<a href="http://www.keio.ac.jp/">Keio</a>), All Rights Reserved.
W3C <a
 href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#Legal_Disclaimer">
liability</a>, <a
 href="http://www.w3.org/Consortium/Legal/ipr-notice-20000612#W3C_Trademarks">
trademark</a>, <a
 href="http://www.w3.org/Consortium/Legal/copyright-documents-19990405">document
use</a>, and <a
 href="http://www.w3.org/Consortium/Legal/copyright-software-19980720">software
licensing</a> rules apply.</p>
</div>
<hr>
<h2><a name="abstract" id="abstract">Abstract</a></h2>
<p>This document is meant to supplement the <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626">existing
SOAP email binding</a> to implement the SOAP one-way MEP.&nbsp; In
practice, the material here unique to the one-way MEP binding would be
incorporated into the existing document.<br>
</p>
<h2><a name="status" id="status">Status of this document</a></h2>
<p>This document is a NOTE made available by the W3C for discussion
only. Publication of this Note by W3C indicates no endorsement of its
content by W3C, nor that W3C has, is, or will be allocating any
resources to the issues addressed by the Note.
This document is a work in progress and may be updated, replaced, or
rendered obsolete by other documents at any time.</p>
<p>This document is the result of the Transport Binding Task
Force(TBTF), which is part of the XML Protocol WG.</p>
<p>A list of current W3C technical documents can be found at the <a
 href="http://www.w3.org/TR/">Technical Reports page</a>.</p>
<h2><a name="motivation" id="motication">Motivation</a></h2>
<p>The motivation for this document is to illustrate the SOAP 1.2
Protocol Binding Framework and the creation of a protocol binding for
the proposed SOAP one-way MEP. This
binding is meant to validate the one-way MEP for completeness and
usability. Please note that this document is a
non-normative description of an Email Binding.</p>
<p>It is not the responsibility of this SOAP binding to mandate a
specific email infrastructure, therefore specific email
infrastructure protocol commands (such as SMTP, POP3, etc) are not
covered in this binding document. The underlying email
infrastructure and the associated commands of specific email
clients and servers along the message path are outside the scope of
this email binding.</p>
<h3><a name="nc" id="nc">Notational Conventions</a></h3>
<p>The keywords "MUST", "MUST NOT", "REQUIRED", "SHALL",
"SHALLNOT", "SHOULD", "SHOULD NOT", "RECOMMENDED", "MAY", and
"OPTIONAL" in this document are to be interpreted as described in
RFC2119 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#KEYWORDS">[KEYWORDS]</a>.</p>
<p>Namespace URIs of the general form "some-URI" represent some
application-dependent or context-dependent URI as defined in
RFC2396 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#URI">[URI]</a>.
The namespace prefixes "SOAP-ENV" and "ds" used in this document
are associated with the namespaces
"http://schemas.xmlsoap.org/soap/envelope/" and
"http://www.w3.org/2000/09/xmldsig#", respectively.</p>
<div class="div1">
<h2><a name="toc" id="toc">Table of Contents</a></h2>
1 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NDAD">Introduction</a><br>
2<a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NE1F">Binding
Name</a><br>
3 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NE33">Supported
Message Exchange Patterns</a><br>
4 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NE69">Request-Response
Exchanges</a><br>
4.1 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NEAB">Behaviour
of Requesting SOAP Node</a><br>
4.1.1 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NED7">Init</a><br>
4.1.2 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NFDC">Sending</a><br>
4.1.3 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N131C">Sending
+ Receiving</a><br>
4.1.4 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N13DE">Success
and Fail</a><br>
4.2 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N13E7">Behaviour
of Responding SOAP Node</a><br>
4.2.1 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N1413">Init</a><br>
4.2.2 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N1550">Receiving</a><br>
4.2.3 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N15E3">Receiving
+ Sending</a><br>
4.2.4 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N1750">Success
and Fail</a><br>
5 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N176C">Features
Expressed External to the Message Envelope</a><br>
5.1 <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#correlation">
Message Correlation Using msg-id</a><br>
6 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#N18F7">SOAP
Email Examples</a><br>
7 <a href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#ref">References</a><br>
</div>
<div class="div2">
<h3><a name="NDAD" id="NDAD"></a>1 Introduction</h3>
<p>This SOAP binding specification adheres to the SOAP Protocol
Binding Framework (see <a
 href="http://www.w3.org/TR/2002/WD-soap12-part1-20020626/#transpbindframew">
SOAP Protocol Binding Framework</a>), and as such uses abstract
properties as a descriptive tool for defining the functionality of
certain features.</p>
<p>Properties are named with XML qualified names (QNames). Property
values are determined by the Schema type of the property, as
defined in the specification which introduces the property. The
following tables lists the standard prefix mappings which we assume
to hold throughout this specification:</p>
<table border="1">
  <caption>Table 1: Standard prefix mappings</caption>
  <tbody>
    <tr>
      <th>Prefix</th>
      <th>Namespace</th>
    </tr>
    <tr>
      <td>context</td>
      <td>
http://www.example.org/2001/12/soap/bindingFramework/ExchangeContext/</td>
    </tr>
    <tr>
      <td>mep</td>
      <td>http://www.example.org/2001/12/soap/mep/</td>
    </tr>
    <tr>
      <td>fail</td>
      <td>http://www.example.org/2001/12/soap/mep/FailureReasons/</td>
    </tr>
    <tr>
      <td>reqresp</td>
      <td>http://www.example.org/2001/12/soap/mep/request-response/</td>
    </tr>
  </tbody>
</table>
<p>Email applications MUST use the media type
"application/soap+xml" according to <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#soap-media-type">
[soap-media-type]</a> when including SOAP 1.2 messages in Email
exchanges. See <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#soap-media-type">
[soap-media-type]</a> for parameters defined by this media type and
their recommended use.</p>
</div>
<div class="div2">
<h3><a name="NE1F" id="NE1F"></a>2 Binding Name</h3>
<p>The binding described here is identified with the URI:</p>
<ul>
  <li>
    <p>http://www.example.org/2002/02/soap/bindings/Email/one-way</p>
  </li>
</ul>
<p>This binding is provided as an example binding when using Email
and the standard Internet Message Format described in rfc2822.
Unlike HTTP, Email does not inherently provide a request/response
Message Exchange Operation. An Email message meant to be a response
to the original request will be sent back to the original sender. A
means of correlating the original request to the resulting response
will be descibed as a binding feature.</p>
</div>
<div class="div2">
<h3><a name="NE33" id="NE33"></a>3 Supported Message Exchange Patterns</h3>
<p>An instance of a binding to Email<a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#RFC2822">[RFC2822]</a>
conforming to this binding specification MUST support the following
message exchange pattern:</p>
<ul>
  <li>
    <p>http://www.example.org/2001/12/soap/mep/one-way/&nbsp;</p>
  </li>
</ul>
</div>
<div class="div2">
<h3><a name="NE69" id="NE69"></a>4 One-way Message Exchange
Operation</h3>
<div class="div3">
<p>The "http://www.w3.org/2002/06/soap/mep/one-way/"
message pattern is described in ...</p>
<p>For binding instances conforming to this specification:</p>
<ul>
  <li>
    <p>A SOAP Node instantiated at an email protocol interface may take
on the role (i.e. the property <span style="font-family: monospace;">one-way</span><code>:Role</code>)
of <span style="font-family: monospace;">Sending</span><code>SOAPNode</code>.</p>
  </li>
  <li>
    <p>A SOAP Node instantiated at an email protocol interface may take
on the role (ie. the property <span style="font-family: monospace;">one-way</span><code>:Role</code>)
of <span style="font-family: monospace;">Receiving</span><code>SOAPNode</code>.</p>
  </li>
</ul>
<p>The remainder of this section consists of descriptions of the
MEP properties, and their particular relation to RFC 2822. <br>
</p>
<div class="div4">
<div class="div5">
<h6>4.1 Mapping of MEP properties to email fields<br>
</h6>
In sending and receiving SOAP messages, the properties of the exchange
context correspond to the content of an email message as follows:<br>
<br>
<table border="1">
  <caption>Table 2: Email Fields</caption>
  <tbody>
    <tr>
      <td>Field Descriptions</td>
      <td><br>
      </td>
    </tr>
    <tr>
      <td>Originator and Destination Fields</td>
      <td>"From:" sender-uri CRLF<br>
"To:" receiver-uri CRLF<br>
"Message-ID:" correlation:requestMessageID CRLF<br>
      </td>
    </tr>
    <tr>
      <td>Sender URI</td>
      <td>The value of the URI carried in the <span
 style="font-family: monospace;">one-way</span><code>:ImmediateSender</code>
property of the message
exchange context.</td>
    </tr>
    <tr>
      <td>Receiver URI</td>
      <td>The value of the URI carried in the <span
 style="font-family: monospace;">one-way</span><code>:ImmediateDestination</code>
property of the transport
message exchange context.</td>
    </tr>
    <tr>
      <td>Correlation Request Message ID</td>
      <td>The Request email msg-id value is automatically generated at
the requesting node's email interface. The correlation feature
      <code>correlation:requestMessageID</code> is described in Section
5.1.</td>
    </tr>
    <tr>
      <td>Content-Type (MIME) header</td>
      <td>"application/soap+xml" (see <a
 href="http://www.w3.org/TR/2002/NOTE-soap12-email-20020626#NDAD"><b>Introduction</b></a>)</td>
    </tr>
    <tr>
      <td>Email message body</td>
      <td>XML 1.0 serialisation of the SOAP message XML Infoset carried
in the <code>one-way:OutboundMessage </code>property (or <code>one-way:InboundMessage</code>
property, for a receiving node) of the transport message
exchange context.</td>
    </tr>
  </tbody>
</table>
</div>
<div class="div5">
<h6><a name="NFDC" id="NFDC"></a></h6>
</div>
<h5><a name="NEAB" id="NEAB"></a>4.2 Behaviour of Sending SOAP Node</h5>
<p>The overall flow of the behaviour of a Requesting SOAP Node
follows the&nbsp; description contained in <a
 href="http://www.w3.org/TR/2002/WD-soap12-part2-20020626/#singlereqrespmep"><b>...</b></a>
In each instance of the MEP, the sending node formulates an email
message from the properties of the exchange context according to table
2 above.<br>
</p>
<h6><a name="NED7" id="NED7"></a></h6>
</div>
<div class="div4">
<h5><a name="N13E7" id="N13E7"></a>4.3 Behaviour of Receiving SOAP Nodes</h5>
<p>In each instance of the one-way MEP, each receiving SOAP node whose
email interface receives the message sent populates the properties of
the exchange context from the content of the email message as described
in table 2 above.&nbsp; As per the normal rules of email, there may be
zero or more receivers for any particular message.</p>
<div class="div5">
<h6><a name="N1413" id="N1413"></a></h6>
</div>
</div>
</div>
</div>
<div class="div2">
<h3><a name="N176C" id="N176C">5. Features Expressed External to the
Message
Envelope</a></h3>
<span style="font-style: italic;">This section is identical to the
original</span><br>
<div class="div3"><br>
</div>
<h3><a name="N18F7" id="N18F7">6. SOAP Email Examples</a></h3>
<span style="text-decoration: underline; font-style: italic;">TBD</span><a
 href="http://www.w3.org/TR/2002/WD-soap12-part0-20020626/#SMTP"></a>
<h3><a name="ref" id="ref">7. References</a></h3>
<dl>
  <dt><a name="KEYWORDS" id="KEYWORDS"><span style="font-style: italic;">This
section is identical to the original, except for references to the MEP
in question<br>
    </span></a></dt>
</dl>
</div>
</body>
</html>