[AM] Comments on sample protocol bindings (5.1.4)

HTTP
====

The current HTTP sample mapping on the initiator side is:
 
   		Initiator
   Binding Primitive Binding Action
   OP.start-req
                     Confirm address validity
   OP.start-conf
   MSG.req
                     Send POST data
                     Receive POST results
   MSG.ind
   OP.end-req
                     Close connection
   OP.end-conf

1) What does "Confirm address validity" mean?
   Is that a syntax checking on the URI of the destination?

2) There is a "Close connection" option but no "Open connection" which
   looks assymetric to me.

Moreover, I was wondering what the boundary between OP.start-req and
MSG.req was. I see the following steps to do in order to do an XMLP
request via HTTP:
1) establish a connection to the server or reuse an existing connection.
2) send the request line (e.g. "POST /my_xml_service HTTP/1.1").
3) send a few miscellaneous headers (Host, User-Agent headers, etc).
4) send some XMLP specific headers (in the spirit of SOAPAction).
5) send the message body (XMLP message = POST data).
6) receive the HTTP response.
7) close the connection or keep the connection alive.

1 requires the knowledge of a host name and a port number.
2 and 3 require knowledge of the URI of the request.
4 and 5 require knowledge of the message.

I think that step 1 is in OP.start-req, and steps 2, 3, 4 and 5 in
MSG.req's scope, and step 7 in OP.end-req.

I would therefore, not including for now the address validity check
which is obscure to me, do the following:

   		Initiator
   Binding Primitive Binding Action
   OP.start-req
                     Open connection
   OP.start-conf
   MSG.req
                     Send POST request
                     Receive POST results
   MSG.ind
   OP.end-req
                     Close connection
   OP.end-conf

                Responder
   Binding Primitive Binding Action
                     Accept new connection
                     Receive POST request
   OP.start-ind
   OP.start-resp
   MSG.ind
   MSG.req
                     Send POST results
                     Receive connection close
   OP.end-ind
   OP.end-resp

I replaced "POST data" by "POST request" because in my model MSG.req
is really an HTTP request, whereas "POST data" makes me think of the
message body of the HTTP request.

SMTP
====

Let's consider the SMTP binding now, comparing it to the HTTP one. It
does not have this address validation step, that I am going to leave
out.

An SMTP request would be modelled that way:
1) open a connection to a server or reuse an open connection.
2) send a HELO command (not required if the connection is already
   open, but let's keep it simple).
3) initiate message delivery (e.g. "MAIL FROM:<whatever@example.org>").
4) specify recipient (e.g. "RCPT TO:<my_xmlp_stuff@example.com>").
5) start data transder with DATA command.
6) send XMLP message.
7) finish transaction (with a ".").
8) disconnection (QUIT command) or keep the connection open.

1 requires a host name and a port number.
4 requires knowledge of the URI (a mailto: URI) of the destination.
6 requires knowledge of the XMLP message.

I see the steps organized like this:
OP.start-req: steps 1 and 2. (opening of the SMTP session)
MSG.req: steps 3 to 7.
OP.end-req: step 8. (termination of the SMTP session)

I would therefore use, for SMTP:

              Initiator
   Binding Primitive Binding Action
   OP.start-req
                     Open SMTP session
   OP.start-conf
   MSG.req
                     Send message
   OP.end-req
                     Terminate SMTP session
   OP.end-conf

               Responder
   Binding Primitive Binding Action
                     Begin SMTP transaction
                     Receive mail message
                     End SMTP transaction
   OP.start-ind
   OP.start-resp
   MSG.ind
   OP.end-ind
   OP.end-resp

-- 
Hugo Haas - W3C
mailto:hugo@w3.org - http://www.w3.org/People/Hugo/ - tel:+1-617-452-2092

Received on Friday, 23 March 2001 20:26:43 UTC