Posted By snovakov on 01/31/2012 09:44 AM
If I'm not mistaken, I believe that iControl is written in Perl. That's why I stick with Perl. No need for using annoying WSDL files, either.
You are mistaken B-). iControl means a lot of things to a lot of people. When you say "iControl is written in perl", I take that to mean that the server implementation is in Perl. That is a native C++ app that sits under apache talking directly to our configuration database. The other (client) side is really dependent on the toolset you use. We provide the XML descriptions for the methods (WSDL) and the client toolkit will, in most cases, build proxy code in the native language that reads from and writes to the SOAP XML that goes across the wire. The time that it takes the SOAP request (XML) to be sent to the BIG-IP and when the response returns, should be static across different client libraries. The difference is how the client code processes the XML into it's native language.
I'm have a soft spot for Perl as that was the language I used to test the client side piece when I was developing the original iControl server code. In fact, that was the first time I'd ever used Perl so don't be too critical in the sample code I've provided over the years. Our examples with Perl have no client bindings at all. It is up to the developer to build the correct packaging of parameters and pass them along. The benefit of the higher level toolkits (.Net, PowerShell, and Java) is that they build strong client bindings (meaning you can't make a method call if you don't have the parameters defined correctly). With Perl and Python, you can pass whatever you want and if the server code can't determine that what you passed is an array when it expects an array, you'll get an error back.
I personally code in Perl and PowerShell when possible for personal preference. Maybe someday I'll have to build up my skills with Python.
As for the slowness with pyControl, it probably is due to the downloading of the WSDLs for each new session. As was mentioned in this thread, you can manually copy them locally so that the server request for that WSDL doesn't need to occur.
-Joe