Providing ESB Generic Functionality
The trend to adapt Service Oriented Architecture (SOA) based on the Web services (WS) standards in the corporate IT sector has definitely accelerated in the past couple of years. More and more companies are considering implementing some sort of Web Services-based solution to leverage great ROI down the road.
The early adapters of the Web Services may be wary of trying out a new product because of the past incompatibilities associated with specific vendor implementations of the WS technologies. However, the prevalent standardization of the protocols by the World Wide Web Consortium (W3C ), standardization of the processing of Simple Object Access Protocol (SOAP) messages, handling of the binary attachments, and the popularity of some of the current WS toolkits, generally eliminated any major issues or complexities of implementing WS architectures.
The benefits of the Service Oriented Architecture (SOA) are abundant, but choosing the scope of the implementation of WS in the corporate infrastructures can be tricky. Each company's IT department must decide either to implement a full blown "Enterprise Service Bus" (ESB) architecture, where all processes (such as all steps of the manufacturing process) are exposed as the Web Service and communicate via SOAP XML messages between themselves and the outside world, or to simply wrap several key transactional functions as Web Services and share them. The implementation also can involve writing much of the mediation functionality from scratch or using a commercial implementation of the ESB, which can tie a company to a specific ESB vendor.
The Apache WS projects and WS toolkits have proven to be a very popular choice among corporate developers seeking to implement SOA. Partly because of the free license model, but mostly because of the stringent adherence to the W3C standards, open source structure and community development process, which generally means faster releases and bug fixes.
The Apache Axis toolkit is already supported by all the major IDE vendors and is an implementation of SOAP that can be used to provide and consume Web Services. The newer project, Axis2, which will undoubtedly be also supported and "is an effort to re-implement both Axis/Java and Axis/C++ upon the 'handler chain' model of Axis1," with "a more flexible pipeline architecture" is at the time of this writing up to version 0.94.
Axis and Axis2 provide basic APIs for the creation and consumption of WS messages. A project dubbed "Synapse" has been introduced into Apache's incubation process by the startup WSO2 to provide more ESB generic functionality on top of Axis2.
The Synapse will serve as a SOAP intermediary solution with "XML centric view of the world," according to Paul Fremantle, Co-founder & Vice President of Technology at WSO2. Because the project is still in the incubation phase, it is not yet a full product. Nevertheless, it is shaping up to be a lightweight, simple, and clean implementation of the mediation framework for the WS messages on top of the Axis2 toolkit. The goal of the project is to be independent from a specific technology platform, such as J2EE or .NET and deliver ESB functionality with minimal configuration or custom extension of its APIs. The Synapse is not posed to be a state full-long-running model of an ESB, but rather a lightweight delivery and mediation framework.
The first milestone build of Synapse has been released and is available for download from the Apache site. In addition to generic services, features such as these exist:
- Logging, service lookup, performance mediation
- Versioning, failover, monitoring
- Fault management and tracing
Synapse milestone 1 release includes the following features:
- Transport mediation of messages: SOAP over TCP, based on regex and XPath rules
- URL virtualization: where the destination address can be virtual until the final redirect of the message
- Binary attachments: based on the MTOM specification implemented in Axis2 (SOAP Message Transmission Optimization Mechanism)
- Content-based routing: where the destination address is extrapolated from the massage
- XSLT transformation of messages: using standard libraries
- HTTP Proxy support: where Synapse can serve as a proxy by installing it in front of another ESP implementation and either log or redirect WS messages.
- Logging of WS messages with Log4j
One of the features planned for the future releases is the integration capability of Synapse with the messaging services, such as the Java message Service (JMS), for message consumption and delivery to the JMS sources. This can potentially add a lot of value for the corporate users.
Another feature that is available but needs polishing is security such as, message encryption, identity verification, and validation tokens. The security can be set up in the current release, but needs to be tweaked to work properly. Future releases plan to make easy security configuration available out of the box. Presently, Synapse is configured via XML and, if it gains backing from the major IDE vendors, a GUI configuration should be available.
The main contributors to Synapse are WSO2 and Infravio, but because it is an open-source project under the Apache sponsorship, Synapse is accepting new developers and corporate support. If this project gains popularity, as have many other Apache projects, contribution of the development time to the Synapse will definitely be very rewarding.
The Synapse project is shaping up to be a very functional implementation of a mediation framework based on Web Services specifications. If it gains acceptance among developers and backing from the major IDE vendors early on, as happened with other Apache foundation projects—such as Struts, Cocoon, and Tomcat—Synapse can become the choice of ESB implementations in the future. Other Apache Web Services toolkits, Axis and Axis2, already have a huge following and are supported by the major IDEs, such as Borland's JBuilder and IBM's WSAD (Web Sphere Application Developer). Therefore, Synapse is well positioned to capitalize on this recognition and benefit from the patronage of the Apache incubation process.
- WSO2 official site: http://www.wso2.com/
- The Synapse project official site: http://incubator.apache.org/synapse/
- Apache Axis: http://ws.apache.org/axis/
- Apache Axis2: http://ws.apache.org/axis2/
- Wikipedia: http://en.wikipedia.org/wiki
About the Author
Vlad Kofman is a Senior System Architect. He has implemented enterprise-scale projects for major Wall Street firms, defense contracts, and the U.S. government. His main interests are object-oriented programming methodologies and design patterns.