что преимуществом использования является Python virtualbox API вместо того, чтобы использовать XPCOM?
С сайта Sun на VirtualBox python API :
SOAP позволяет управлять удаленными виртуальными машинами через HTTP , тогда как XPCOM намного высокопроизводительный и предоставляет определенные функции, недоступные с SOAP.
Они используют очень разные технологии (SOAP является процедурным, а XPCOM - ООП), но поскольку в конечном итоге это API для тех же функций, что и {{1} } VirtualBox, мы сохранили в привязках исходную семантику, поэтому, кроме установления соединения, код может быть написан таким образом, что людям может быть все равно, что канал связи с экземпляром VirtualBox используется .
Из этой статьи мне трудно увидеть разницу между "python virtualbox API" и "XPCOM". Не могли бы вы предоставить ссылку на API, о котором вы думаете?
Преимущество в том, что с pyvb намного проще работать.
Напротив, документации для Python API XPCOM не существует, и API вообще не является питоническим. Вы не можете выполнить самоанализ, чтобы найти методы / атрибуты объекта и т. Д. Поэтому вам нужно проверить исходный код C ++, чтобы узнать, как он работает, или некоторые уже написанные сценарии Python (например, vboxshell.py и ] VBoxWebSrv.py ).
С другой стороны, pyvb - это просто оболочка python, которая вызывает VirtuaBoxManager из командной строки. Я не знаю, действительно ли это недостаток?
, я бы обычно не рекомендовал любой из них. Если вам нужно использовать виртуализацию программно, обратите внимание на libvirt, который предоставляет кроссплатформенную и кросс-гипервизорную поддержку; что позволит вам позже использовать kvm / xen / vz / vmware.
Тем не менее, SOAP api использует два дополнительных уровня абстракции (клиентская и серверная стороны HTTP-транзакции), что довольно очевидно, тогда просто вызывает интерфейс XPCOM.
Если вам нужна поддержка только локального хоста, используйте XPCOM. Дополнительное косвенное обращение к libvirt / SOAP вам не поможет. Если вам нужен доступ к виртуальному ящику на разных хостах на нескольких клиентских машинах, используйте SOAP или libvirt Если вам нужна кроссплатформенная поддержка, или для запуска вашего кода в Linux используйте libvirt.