JBI/SOA Tips: Collaboration Design for 'Wire' Centric Integration
By gopalan on May 14, 2007
The Wire is cross-platform and heterogeneous in nature. Collaborations take place through the message-based wire. In doing so, we have to ensure that we collaborate with the least amount of overhead. An important consideration in designing for wire-centric integration is to separate the collaboration design from the individual implementation details. It is important to look into the individual pieces that make up the collaboration and discuss how to handle:
- Information Exchange
- Versioning issues in XML Schema: The XML Infoset makes it extremely easy to extend the document design. Add attributes and elements anywhere you want and extend the document design it’s that easy. In most cases, people do not even think of it as extensions.
The focus of the collaboration design in wire-centric integrations is the architecture of the collaboration itself - it is not the architecture of the individual components that participate in the collaboration or their implementation details. In a wire-centric integration design, there are no ambiguous messages. Therefore, the best practices for designing global collaborations are to have a consistent collaboration design. To do that, we have to consistently evolve the collaboration in Toto. Messages have to be self-defining in a formal sense to clearly interact with the version of the collaboration that they are dealing with. In a global collaboration, all conversations - whether they are bi-directional or multi-partner - occur within a specific version of the collaboration.
Capturing Collaboration Design
Capture broad use-cases. Have a Formal Schema Design for your Information Model that may evolve over time. The design of the collaboration should be succinct yet complete. It should capture the Collaboration. Remember that WSDL plays only a very small part in all of this since WSDL defines the output of a Collaboration design, rather than a description of the Collaboration.
A Wire Design Separates the Wire From the Applications That Use It
The Collaboration design is a complete design element that captures the full semantic content of the collaboration and stands apart from the applications. Even if you throw away the implementation of the roles, you should still be left with a complete collaboration design that documents well-defined semantics. A third-party should be able to follow everything that’s going on, about all the messages that flow through the system by just looking at the design.
In subsequent web logs, I intend to identify some simple basic best-practices to do good collaboration design for Wire-centric Integration.
Like this write-up? Subscribe to receive more like it.