我的資格回答這個問題的存在,我自2010年初這裏是我對每一個腳本VirtualBox的可用前端的一般意見創建並一直保持Vagrant:
vboxwebsrv
是VirtualBox Web服務,它提供了一個控制VirtualBox的API。這就是爲什麼現在Web服務很容易編程。主要的意義是你必須手動處理啓動和停止這個Web服務(或檢查以確保它已經在運行)。從歷史上看,Web服務並沒有完全實時更新每個VirtualBox版本中的最新API,但我不確定今天的狀態如何。
COM or C API
。 VirtualBox在非Windows平臺上提供基於XPCOM的API,在Windows上提供基於MSCOM的API。如果你不能使用C++,你也可以在Linux上使用C API(但它在Windows上不可用/導出)。我使用了這個API超過一年。優點:快速和完整。由於它是一個C API,因此速度非常快,可直接與VirtualBox進程通信。它也是完整的,因爲這與VirtualBox GUI使用的以及內部使用的API相同。主要原因是XPCOM不容易,C API在Windows上不可用,這意味着您必須通過XPCOM來痛苦,或者您需要同時處理C和MSCOM。我選擇了後者,結果是兼容性的噩夢。幾乎VirtualBox(3.1,3.2等)的每一個次要版本都會以一種向後不兼容的方式(略)和一個主要版本來改變API,你完全可以忘記(3.0,4.0等等)。這使得處理舊版本的VirtualBox變得棘手。這絕對是一個先進的用例。
VBoxManage
是基於CLI的VirtualBox前端。 VBoxManage
當然只是使用基於COM的API,但它提供了更方便用戶的封面。我發現對於99%的用例,VBoxManage可以覆蓋它。 VBoxManage還可以處理所有的錯誤處理,確保退出狀態正確(0表示成功,其他所有表示不爲零)等等。經過1.5年的C API,我已經切換回VBoxManage,因爲它更簡單易用,需要做。缺點是你必須使用子過程來與VBoxManage對話。好處是VBoxManage的變化相對較少,因此可以很容易地支持許多版本的VirtualBox。
我希望這有助於!
好吧,我想我已經等待足夠多,看到米切爾你的答案正是我需要知道的,我不認爲可以給出更好的答案。 – dlewin