Wed Dec 17 21:30:00 2014

mstpan 13 - SOAP

Now everything is made of urine and you can't even find the cat.

Ok, so, my basic thesis here is: SOAP is horrible. All your options are also horrible. However, there is almost certainly an option that will work while still being horrible.

SOAP::WSDL

I ... was going to file this under "not amazingly flexible but ridiculously fast so maybe consider it if its feature set works for you" ... but apparently the author has concluded it's unfixable, and is now recommending you avoid it.

XML::Compile::SOAP

Completely insane and completely brilliant, which is usually my opinion of everything the author writes.

You are strongly encouraged to read all of the documentation for the modules mentioned in the distribution collection overview

You are also strongly encouraged to lay in extra headache pills, because if you need to debug this, it's sufficiently insane to actually implement SOAP, and you're going to end up wading through all sorts of fascinating compiled coderefs in the process.

However, when it works, which it usually does, it is absolutely and totally your best option. I've actually heard people finish writing code with it and say "I almost enjoyed that", which I didn't think was even possible with SOAP.

Catalyst::Controller::SOAP

This combines XML::Compile::SOAP and XML::LibXML into a Catalyst controller.

If you're attempting to write a server that serves SOAP and other things, I suspect this is going to be your least worst option.

Dancer and Mojolicious don't appear to have an equivalent. I'm perfectly willing to accept the idea that they think "can't be used to implement SOAP easily" is a feature, however.

SOAP::Lite

SOAP::Lite is ancient and insane. However, it also provides probably the best set of interfaces for malleting something together until it works.

Ideally, you should try this last, but if you've already exhausted other options, it almost certainly can be made to do whatever you want. You just won't particularly enjoy doing it.

Assuming you do end up having to use it, please file a bug report against XML::Compile::SOAP first explaining why so that nobody else has to suffer the same process for the same reason.

Coda

Shortest post yet. I considered trying to find more to write, and then realised that I don't want to write any more about SOAP and you probably don't want to think about it at all, so instead go read programming sucks, the blog post where the cat was first lost.

-- mst, out.