Many years ago, I wrote an web services library for Delphi called “IndySoap”. It took a WSDL and generated delphi code that could then be used to implement a client or a server, and was published as open source. For me, it was a real learning process, both in terms of http, xml, and web services, and also – because we dynamically generated machine code, and I thought that was risky – we wrote a very thorough test suite. It was my first exposure to TDD.
A couple of years after it matured, a new version of delphi was released that changed the base string type from pure ansi (byte = char) to full Unicode. I tried to update IndySoap for that, but was stymied by some weird problem in the compiled code that I couldn’t figure out – and I got very few requests for a unicode version anyway. So IndySoap moved into the background – something I used for remote procedure invocation and interoperability, but gradually to be phased out as people switched over to REST – REST really is much simpler, and even the services built using “REST” are simpler than simple SOAP, let alone SOAP in it’s full glory.
Then, a couple of months ago, an IndySoap user with a depth of commitment to the code and with an architecture built on it contacted me and asked to me to update the code for the latest version of Delphi, and laid money on the table to make it happen (thanks).
So today I’m glad to announce a new version of IndySoap has been released through SourceForge (https://sourceforge.net/projects/indysoap/?source=directory). This version compiles and passes all tests under both Delphi XE3 and Delphi 5. Versions of Delphi prior to Unicode should still be supported, and XE2, and probably XE4.
I don’t know how many people are still using SOAP, but IndySoap still has the same advantages it always offered over the out of the box Delphi choice:
- Runs on any version of Delphi (not just the expensive ones)
- Much more flexible and manageable than the Delphi one
- Much more thoroughly tested, and easier to fix (instant fixes, no waiting for an overloaded programming team to get to fix old issues)
- Deeper support for the web services stack (extending the web service stack is the #2 voted request for Delphi… IndySoap doesn’t have them but they can be added)
The old functionality tests we wrote were a wonderful aid to updating the code to use Unicode. There’s so many places where that could go wrong, and the functional tests made such a big difference. Long Live TDD (and, btw. down with SOAP!)
I’d like to thank Server Informatica for sponsoring the IndySoap work.