axis-java-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Rob Jellinghaus <r...@unrealities.com>
Subject INPUT, OUTPUT considered harmful
Date Fri, 01 Jun 2001 00:00:45 GMT
[Warning: naming discussion ahead!]

Some discussions with Glen over the last couple of days have convinced me
that INPUT and OUTPUT are confusing names to be using in our constants and
our chains.

The reason is that, depending on where you stand, it's possible to have
different opinions about which direction is INPUT and which is OUTPUT.
Specifically, it seems to me that INPUT is always "towards the provider"
and OUTPUT is always "away from the provider".  But to Glen, INPUT is "from
the network" and OUTPUT is "towards the network".  Thus, in my world, the
client's INPUT chain gets routed (over the network) to the server's INPUT
chain, and server OUTPUT goes (over the net) to client OUTPUT.  But in
Glen's world, the client's OUTPUT chain gets routed (over net) to the
server's INPUT chain, and the server's OUTPUT gets routed (over net) to the
client's INPUT.

Either interpretation is valid.  But we have to pick one, and we have to be
consistent about it throughout all the code.

I would rather we not use words that have multiple valid interpretations.
I recommend using REQUEST and RESPONSE instead of INPUT and OUTPUT.  Then
the directionality is always clear, whether you are on the client or the
server... REQUEST chains are always towards the ultimate provider, and
RESPONSE chains are always back towards the original client.  (For one-way
messages, there is either no RESPONSE chain at all, or there is an
immediate null response -- just as with OUTPUT chains.)

We also talked about gateways (Axis engines that are set up to route
incoming messages on to other endpoints).  In a gateway, you may have a
server chain that ends at a GatewayProvider (or something) which then
creates Clients and routes the messages to them.  In other words, you can
have both server chains and client chains within one Axis process (though
not within one MessageContext).

So, the full namespace of chains is:
{SERVER,CLIENT}_{TRANSPORT,GLOBAL,SERVICE}_{REQUEST,RESPONSE} -- and in a
gateway environment, you will have all of the permutations in use.

What I want to do is to use REQUEST and RESPONSE uniformly (replacing INPUT
and OUTPUT as appropriate).  I am volunteering to do this in the next
couple of days.

Why do this when so many other things are more important?  Because this has
already caused confusion just among us, and it'll cause more confusion later.

Thoughts?
Cheers,
Rob



Mime
View raw message