I would generally recommend against one. If you need to use virtualization programmatically, take a look at libvirt, which will give you a cross-platform and hypervisor support; which allows you to use kvm / xen / vz / vmware later.
However, the SOAP api uses two additional levels of abstraction (client and server side of the HTTP transaction), which is pretty clear, but just calls the XPCOM interface.
If you only need localhost support, use XPCOM. The additional indirectness of libvirt / SOAP will not help you. If you need to access virtual boxing on different hosts on multiple client machines, use SOAP or libvirt. If you want to use cross-platform or run your code on Linux, use libvirt.
Enki
source share