Architecture

OpenMAMA has since its inception been architected to be a modern, cross-platform, and modular client library. It is built around a core written in pure C, which is in turn supported by a library of common components, alongside a compatibility layer which facilitates cross platform development. The C library then exposes a high level client interface, through which client applications interact with both the library, and the underlying middlewares. This interface is also wrapped by a series of alternative language implementations, providing access to the same OpenMAMA library via C++, Java and C# language bindings.
 
The OpenMAMDA libraries are then provided as a secondary library implementation, which utilises the OpenMAMA C++ bindings, as well as the same common and compatibility libraries. OpenMAMDA is similarly wrapped by Java and C# languages wrappers, with some core functionality reimplemented within each binding library in order to improve performance. 
 
At the south side of the OpenMAMA C library are the OpenMAMA bridge interfaces. At present these provide interfaces for middleware and payload implementations, though we may wish to expand these in the future to include further dynamic functionality. Both interfaces specify a strict set of mandatory functions which a bridge must implement for it to interoperate with OpenMAMA, along with a set of recommended interfaces which we suggest bridges should implement if they are to provide core functionality that clients expect, and optional interfaces which are not required, are rarely used by clients, and which are not applicable to all middleware types.
 
Around these central libraries the OpenMAMA ecosystem has developed. At the south side this includes a growing selection of third party middleware and payload bridges, including offerings from Vela (Data Fabric), Solace, Tick42 (Bloomberg), Exegy, Informatica and Rai technologies, as well as the OpenMAMA supported Qpid Proton and Avis middleware bridges. At the north side a wide array of applications exist which support clients building on top of OpenMAMA. These include the full Vela suite of platform applications, as well as their Feed Handler SDK, offerings which already support MAMA such as OneTick's tick capture solution, ITRS monitoring and MDX's Microsoft Excel adapter, with a growing number third party applications currently in development.