Logan, Patrick D wrote:
>  > A protocol influencing an architecture is a specific example of
>  > tight-coupling. That means that any change to protocol requires
>  > change to architecture. Hoo-boy, that's badness.
> 
> That's arguable. A protocol like HTTP has been around the globe a
> while. One can assume fairly safely it will not change in a backward
> incompatible way. An architecture that takes advantage of the HTTP
> definition then might be a fairly stable one.

The issue is whether you are using HTTP because:

1. It is a type of interface you support.
2. You are using HTTP features to simplify your software coding.
3. You are using HTTP because it's what you know.

1) is where you should be.  2) starts to provide unnecessary coupling.
3) is the point where software architects get mad, and other developers call 
you 
names.

What is at issue is that typically, a software platform/language does not have 
a 
reasonable level of abstraction and SPI style APIs that provide you the ability 
to not have coupling to the transport or invocation semantics or messaging 
layer.

In the Java world, the RMI interface was the first attempt to create an RPC 
abstraction.  It works for Java to Java and CORBA IIOP.  The people that 
created 
RMI came back with version 2 in the form of the Jini Extensible Remote 
Invocation stack.  They did attempt to pitch as 2 JSRs, but the CORBA and app 
server folks still didn't understand the issues.  With JERI, the abstraction 
layer is RPC using RMI semantics.  You can plug in an invocation layer that 
translates that to SOAP, or something else.  You can plug in an endpoint 
implementation that connects using a wide range of wire protocols, including 
HTTP.

The issue with REST is that it considers HTTP as the invocation layer too, with 
the PUT, GET, POST, etc operations as the fixed set of "functions" that you can 
invoke.  In a more sophisticated invocation layer, you can imagine the use of 
multiple wire protocols such as HTTP being used to perform a single server side 
operation.

It is the specific ability of the API to handle multiple implementations of the 
semantics of the API that provide the level of decoupling that helps make it 
more likely that you can plug in a new protocol.  The conversion of the data 
from one format to another by the invocation layer is a good thing.

The issue I have with SOAP use is that the typical SOAP based application is 
dealing with XML in the programming environment directly, so if you want to 
plug 
in a native interface to the same programming language on the other end, and 
the 
language platform supports over the wire serialization/marshalling, you suffer 
from the overhead of multiple conversions when you really could just pass it 
natively.

If you are doing Java, you should be using just RMI based API interfaces to 
everything, and making using use of JERIs pluggable stack to give you the SOAP 
or other WS-* support you need to talk to non-Java clients/servers on the other 
side.  People still think that it's necessary to bring APIs such as JMS or SOAP 
right up to the door step when they really should be left out in the street 
where all the traffic flows are better managed.

Gregg Wonderly






 
Yahoo! Groups Links

<*> To visit your group on the web, go to:
    http://groups.yahoo.com/group/service-orientated-architecture/

<*> To unsubscribe from this group, send an email to:
    [EMAIL PROTECTED]

<*> Your use of Yahoo! Groups is subject to:
    http://docs.yahoo.com/info/terms/
 


Reply via email to