Comme d'autres l'ont mentionné, cela dépend de plusieurs choses:
- À quoi ressemble votre environnement?
- Avez-vous des droits d'accès suffisants pour faire du développement?
- Votre HW est-il prêt à fumer?
Environnement
L'utilisation d'un ordinateur virtuel peut vous aider si vous travaillez sur plusieurs versions d'un projet. plusieurs projets; ou ciblant un système d'exploitation différent de celui que vous exécutez normalement (système d'exploitation hôte). Je fais beaucoup de travail sur SharePoint et il est utile de pouvoir exécuter une machine différente pour les différentes versions d'une version, car je peux simplement démarrer une machine différente et avoir une bonne idée de l'état du GAC / de la base de données. De même, si vous devez cibler un environnement d'application * nix mais une machine Windows, vous pouvez toujours effectuer le développement dans une machine virtuelle (c'est ainsi que j'apprends Ruby à la maison, même si je travaille généralement sous .NET). Lorsque je teste / développe des développements ASP.NET sur la même version d’IIS, j’encourage généralement l’application à s’exécuter (cette même raison s’applique également aux autres environnements cibles de serveur). Selon la version du système d'exploitation, il peut exister des différences minimes mais critiques. Notez que cela ne signifie pas que vous devriez coder vers une version spécifique d'IIS / OS, mais soyons honnêtes, il faut vraiment que cela fonctionne vraiment là où vous allez le déployer, pas seulement sur votre ordinateur local.
Les machines virtuelles permettent également (en fonction du logiciel utilisé) de prendre des instantanés de l'état actuel de la machine et / ou de les cloner. Cela peut être inestimable lorsque vous prototypez quelque chose et vous n'avez pas à vous soucier de ce qui se passe dans votre GAC / Registre / etc. Je les ai également trouvés très utiles pour préparer une démonstration client à l'avance. Étant donné que l'environnement de démonstration était dans une machine virtuelle, je pouvais continuer à travailler jusqu'à montrer au client ce que nous avions accompli car je travaillais sur une machine différente .
Droits suffisants
Cela s’applique généralement aux personnes qui travaillent pour une entreprise avec un ensemble de règles relativement contraignantes pour les droits d’accès. Si vous ne pouvez pas avoir un administrateur libre sur votre machine, ce serait un bon moment pour travailler dans une VM. En règle générale, les puissances ne sont préoccupées que par le verrouillage de votre système d'exploitation hôte. L'invité peut être grand ouvert (en termes d'autorisations). J'ai rencontré des problèmes étranges avec les profils itinérants, les droits d'administrateur invalidés et l'exécution de VS 2010; L'utilisation d'une machine virtuelle m'a permis d'éviter ces problèmes.
Votre HW est-il prêt à fumer?
Cela se résume à ce que vos images de machine virtuelle se trouvent sur un serveur et votre télécommande y soit OU que vous les exécutiez localement. Si vous exécutez sur le serveur, la plus grande préoccupation sera probablement de savoir s'il y a trop de machines virtuelles exécutées sur le même matériel. Au niveau local, vous souhaitez essentiellement disposer de beaucoup de RAM et minimiser la fréquence à laquelle vous surchargez la mémoire tampon R / W de votre disque dur. Pour le développement LOB / SharePoint / ASP.NET de base, j'ai constaté qu'un minimum de 8 Go de RAM et une configuration à deux disques durs fonctionnaient très bien dans la pratique (utiliser un i5 mais j'ai également travaillé avec un Core 2). Le deuxième disque dur fait la plus grande différence en termes de performances.
Remarque: je n'ai aucune statistique à l'appui, mais j'ai remarqué que Virtual PC avait tendance à sous-performer par rapport à VMWare et à Virtual Box. Je ne peux pas parler à Hyper-V car je n'ai pas travaillé avec. Je ne serais pas surpris si l'utilisation de Virtual PC (en tant que première incursion dans l'utilisation de machines virtuelles) rendait le développeur fatigué d'utiliser un logiciel de virtualisation.