Tuesday, December 6, 2011

UltraESB adds support for the routing and mediation based on Protocol Buffers

Protocol buffers are Google's language-neutral, platform-neutral, extensible mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages – Java, C++, or Python.

UltraESB is the best ESB in usability, performance and extensibility. As many organizations are now moving to protocol buffers to take advantage of its performance and multiple language support, it has been the right time that we introduced support for routing and mediating such messages based on protocol buffers.

In the first step, UltraESB has implemented two key features.
  1. The support to read a protocol buffers based message during mediation as a Java object, to make routing decisions, logging, auditing, persistence to a Database etc.
  2. The support to alter the message based on protocol buffers after any updates.
Both these features have already been implemented on the trunk and now available for you to try out from the nightly build with the sample 302.

While it is possible to parse the message without the generated protocol Java type classes, it is also possible to provide the generated type classes and get hold of the exact type object so that the user can use the protocol buffer semantics to read/alter the message and set it to back to the message in the mediation.

Even if you parse a protocol buffers based message, yet do not alter it - no serialization overhead will be incured, as the UltraESB will detect that the message (although parsed) was not modified, and when proxying, directly use the original bytes stream that it received from its client to send out to the desired endpoint again. This enables the routing of parsed protocol buffer messages, based on protocol buffer content with the least possible overhead, in the same way as how the UltraESB achieves high performance for XML/SOAP, JSON, Hessian etc content based routing.

This is just the start of the protocol buffers support with the UltraESB. Automated protocol buffers conversion to / from other message formats will soon be available such as:
  • XML/POX/SOAP to protocol buffers conversion and vice versa - enables the user to integrate new protocol buffers based services with legacy XML or SOAP services
  • JSON to protocol buffers conversion and vice versa - enables the user to integrate protocol buffers based back-end services with JSON front ends easily
  • HTML to protocols buffer conversion and vice versa - enables the user to efficiently transfer HTML using protocol buffers as the wire format.
Further to these, regular expression based routing without parsing the protocol buffer messages will also be possible in future in a very efficient manner.

0 comments: