The product has been around for a couple of years now and Microsoft has consistently been adding new features to the product, improving its functional scope when compared to the existing vendor solutions on the market like Tibco GridServer and IBM/Platform Symphony.
The product has been natively supporting C# and the .Net stack, as well as offering an open-source Java client library (
There are a number of potential applications for this library but one of the most promising is the integration with financial software platforms such as Murex.
The library Excelian has implemented makes use of the four services exposed by the SOA component in HPC:
- Session Launcher
- Broker Launcher
- Data Service
- Broker Controller
The client library communicates with the SOA component in the Windows HPC cluster through SOAP (Simple Object Access Protocol) over the HTTP protocol. The SOA component is based on WCF and provides service on both the HTTP and the NET-TCP bindings, this second one not being available for the C++ bridge. Nevertheless, most of the .Net’s functionalities in HPC cluster are available through the C++ client library.
During the design phase of the library, several SOAP C ++ frameworks were evaluated considering not only their specifications but also licensing aspects. GSOAP was finally selected to generate the client-side SOAP stubs used by the client API. The figure below depicts the scenario described above.
The C++ Microsoft HPC Server Interoperability Bridge has been rigorously tested from the functional and performance perspectives, both in GNU Linux (Debian squeeze amd64) and Solaris (SunOS 5.10 Generic_147441-01 i86pc i386 i86pc). The evaluation was fully supervised by Microsoft and performance tests were carried out at Microsoft’s test bed grid in Redmond, using a 31-node Windows HPC Server 2008 R2 SP3 cluster composed by 1 head node, 3 broker nodes and 27 compute nodes, each one equipped with 24 cores.
Functional tests reproduced the scenarios considered in the Java client to HPC Server. As for the performance tests, the figures below show the results for the baseline tests using a multithreaded client (8 threads), where each thread submits a predefined number of requests. The comparison is based on the turnaround time and throughput (number of messages per second). The values in the tables correspond to average values. As part of the test, the client checks that the responses retrieved from the server match the expected output.
The library is available as an open-source library on GitHub (