I had a conversation yesterday that reminded me how confusing I found WS Make Connection the first time I saw it in action. It’s a really simple specification designed to do something really simple, but the names used in the messages can cause no end of confusion.
Though Make Connection can be used standalone, it’s currently primarily used to provide retransmission capability for WS-Reliable Messaging 1.1, so I’ll focus on that scenario.
When providing reliability in an environment where the service provider cannot open a connection to the client (e.g. because it’s behind a NAT device), the service provider still needs a way to send messages to that client.
An example would be retransmitting a response message to a client because the original transmission of it failed.
In this case the client needs to connect to the service provider to provide a connection for the service provider to use to send the response. That’s what Make Connection is. It’s a specification which defines a single one-way message which a client can send to a server, which allows a server to send a message to the client using the HTTP response channel.
i.e MakeConnection message=’Hi, I’m client xxx, and here’s an HTTP connection you can use to send me a message if you want to’.
The confusion: People used to session oriented technologes (including WS-RM of all things) see a ‘MakeConnection’ message and assume it’s setting up a long running connection that will be used later on. This is not the case. A MakeConnection message only has meaning for the length of the HTTP request/response interaction it is sent in. For subsequent messages from the server, additional MakeConnection messages must be sent by the client.
