Saturday, October 11, 2008

Messaging Completes a Full Circle

"riverrun, past Eve and Adam's, from swerve of shore to bend of bay, brings us by a commodius vicus of recirculation back to Howth Castle and Environs." James Joyce, Finnegans Wake
In the beginning there was RPC or Remote Procedure Call, later mostly standardised as Distributed Computing Environment or DCE-RPC and reappearing as Microsoft's MSRPC. XDR is a protocol for the description and encoding of data and is useful for transferring data between different computer architectures - roughly analogous in purpose to Abstract Syntax Notation (ASN). Often used for C programming but with bindings to numerous languages on many platforms.

Time passed and Corba or Common Object Request Broker Architecture appeared, less well known in modern incarnations as the most-widely deployed interoperability standard, IIOP (Internet Inter Orb Protocol), also underlying RMI-IIOP and EJB-IIOP in the Java stable, and deployed with every web browser, most mobile phones and other devices. Corba and IDL (Interface Definition Language) allows many languages and platforms to interoperate transparently using objects often written in C++, Java or C# but possibly in almost any language. Regular claims that Corba is dead are premature and show ignorance or denial of reality.

Various message queuing technologies soon appeared on the computing horizon to start the trend towards loosely-coupled systems. IBM MQ Series, more recently called WebSphere MQ, Microsoft Message Queue (MSMQ) and Java Messaging Service (JMS) offer interoperability options that may cross platforms depending upon vendor support. WebSphere MQ is offered by IBM at a fee on virtually every platform imaginable; MSMQ is a Microsoft-centric technology; and JMS is a community-defined standard with many cross-platform implementations.

Bringing us to recent times where the buzz word for loosely-coupled systems is SOA or Service Oriented Architecture, often built upon web services. Over the past few years, the WS-standard stack or web service protocols, including WSDL (web service definition), SOAP (message protocol) and UDDI (discovery) that leverage XML, have appeared. Unsurprisingly they closely mirror the Corba stack, using XSD (XML schema definitions) as the new IDL.

Web services define function interfaces like RPC XDR, not object interfaces like Corba IDL, so have we just completed a full circle and returned back to where we started?

XML compared to IDL, XML first:
<message name="SayHelloRequest">
<part name="firstName" type="xsd:string"/>
</message>

<message name="SayHelloResponse">
<part name="greeting" type="xsd:string"/>
</message>

<porttype name="Hello_PortType">
<operation name="sayHello"/>
<input message="SayHelloRequest"/>
<output message="SayHelloResponse"/>
</porttype>
Now IDL:
struct SayHelloRequest {
string firstName;
};

struct SayHelloResponse {
string greeting;
};

program Hello_Server {
version Hello_Version {
SayHelloResponse sayHello(SayHelloRequest) = 1;
} = 1;
} = 0x20000001;
Part of the answer is that SOA or Service-Oriented Architecture is one characterised by:
  • Loosely coupled services.
  • Platform-agnostic interfaces.
  • Dynamic discovery and invocation.
SOA is an approach to system integration centred around business processes.

Another part of the puzzle is found in BPM or Business Process Management, which embodies:
  • The concept of choreographing work items through a multi-step process or orchestration.
  • The work items are identified and tracked as they move through each step, with either specified people or applications processing the information.
  • The process flow is determined by choreography with the applications themselves playing no role in determining where the messages are sent.
MDA or Model Driven Architecture, as defined by the OMG or Object Management Group, fills in the technological process of managing the transition between the artifacts generated by the business and those used by IT:


Zachman's framework for enterprise architecture is the final piece of the puzzle for slotting it all together:


So there you have it, we have finally gained the hard-won knowledge accumulated through experience that the business should drive IT systems development (fancy that) and that models have greater and longer-lasting value than technology implementations (who would have guessed).
Now quieten down and listen to me, messaging was actually a dead end and the next big thing in enterprise integration and software development is...