views:

387

answers:

3

Hi, The company I work for has a large webapp written in C++ as an ISAPI extension (not a filter). We're currently enhancing our system to integrate with several 3rd party tools that have SOAP interfaces. Rather than roll our own, I think it would probably be best if we used some SOAP library. Ideally, it would be free and open source, but have a license compatible with closed-source commercial software. We also need to support SSL for both incoming and outgoing SOAP messages.

One of the biggest concerns I have is that every SOAP library that I've looked at seems to have 2 modes of operation: standalone server and server module (either Apache module or ISAPI filter). Obviously, we can't use the standalone server. It seems to me that if it is running as a module, it won't be part of my app -- it won't have access to the rest of my code, so it won't be able to share data structures, etc. Is that a correct assumption? Each HTTP request processed by our app is handled by a separate thread (we manage our own thread pool), but we have lots of persistent data that is shared between those threads. I think the type of integration I'm looking for is to add some code to my app that looks at the request URL, sees that it is trying to access a SOAP service, and calls some function like soapService.handleRequest(). I'm not aware of anything that offers this sort of integration. We must be able to utilize data structures from our main app in the SOAP handler functions.

In addition to handling incoming SOAP requests, we're also going to be generating them (bi-directional communication with the 3rd parties). I assume pretty much any SOAP library will fulfill that purpose, right?

Can anyone suggest a SOAP library that is capable of this, or offer a suggestion on how to use a different paradigm? I've already looked at Apache Axis2, gSOAP and AlchemySOAP, but perhaps there's some feature of these that I overlooked. Thanks.

A: 

Take a look at ATL Server This library used to be shipped with Visual C++, but now it is a separate open source project

Nemanja Trifunovic
I think ATL Server is probably overkill for what we need... that seems like it could replace half of our webapp. Also, I'm a bit hesitant to go with MS SOAP technologies since their track record with generating webservice code in C# is poor (the code breaks for certain types of messages).
rmeador
A: 

GSoap is a great open source cross platfrom soap stack.

It is FAST.

Great interop.

Many open source soap libraries don't have great interop with java/c#/python/whatever.

It parses HUGE payloads while using very little memory.

It is open source!

Since you are using an IIS extension, you would need to add the gsoap to your app, recompile your extension dll with this: http://aberger.at/SOAP/iis_index.html and you should be ready to roll.

gSoap http://www.cs.fsu.edu/~engelen/soap.html

Byron Whitlock
+1  A: 

GSOAP works nicely for c++ code

David
when you posted this answer on this old, dead question it reminded me I never accepted an answer... I did use GSOAP to solve it and it works great. I gave the accepted answer to Byron because he answered first, but I gave you an upvote.
rmeador