Austin Dot Net User's Group (ADNUG) Meeting, 4/12/04
Today's ADNUG meeting is on the use of Virtual PC (VPC) as a development tool, and the speaker is Michael Kennedy, a consultant with the Microsoft Technology Center here.
If you haven't been to an ADNUG meeting (and you're a developer in the Austin area interested in .Net), they're a great place to go, get some pizza and coke, talk with other .Net devs in the area, and get a good lecture from the speaker.
Anyway, as I said, tonight's topic was VirtualPC and VirtualServer. If you didn't know, Microsoft (relatively recently) purchased VirtualPC from its original developers, Connectix. They've also developed a very similar application called VirtualServer. Both VPC and VServer allow you to run "virtual" computers inside your own actual computer (called the "host"). The major differences between VPC and VServer are that while VPC is a traditional interactive application, VServer runs as a non-interactive system service (which uses a remote client to actually display the virtual computers if necessary). VServer is also multithreaded; VPC is single-threaded, meaning that VPC won't be able to take advantage of multiple (real) processors, while VServer will. There are a few other minor differences, notably that VServer can be configured to simulate virtual SCSI drives and clusters, but they really are pretty minor.
Whether in VPC or VServer, the virtual computer is somewhat limited to a specific set of virtual hardware--notably a single processor and a single specific (S3-based) virtual video card. You won't be doing any driver development in VPC (even though it would be pretty useful for that), because there's no way to install arbitrary drivers in the virtual machine. In fact, neither VPC nor VServer supports USB devices. (This doesn't mean that VPC/VServer can't take advantage of things like USB mice and USB drives--they can--but things like USB fingerprint scanners, etc won't be usable inside the virtual PC). And finally, each time you install software on an image--such as a Microsoft OS, or Office, or Visual Studio--it is considered a new license. The host OS license does not cover any installed virtual OSes. If you have it, an MSDN Subscription is very handy here.
So what is VPC useful for? Well, for starters, it's a great way to set up a sandbox to test system configurations, software, etc. You can create a virtual PC image, load it up, do all kinds of crazy things to it, and then choose to roll back the changes, save them to the current instance, or roll them back into the original image. You can create what Microsoft calls Difference Disks, which apply specific changes to a base image--so that you can see how your company's base image would react, for instance, to Office XP vs. Office 2k vs. Office 2k3 and even differing service packs.
Another great use for VPC is for software testing. Rather than get an actual server and a dozen actual client PCs, you can set up 2 or 3 computers, each with Virtual PCs, to stress-test or otherwise test your software. You could use VPC to duplicate a production environment that's experiencing problems--without changing or endangering an existing server.
VPC has some neat networking features to support demos, development, and testing. Essentially a given VPC can be configured for 3 different networking types: Disconnected, Shared, or Connected. A Disconnected VPC is essentially unplugged; it's not reachable via any network, and cannot reach any network. A Shared VPC can network only with other Shared or Connected VPC images on the same machine (so you could set up an entire virtual network or domain, without any outside connectivity). A Connected VPC is a first-class network peer; to every other computer on the physical network--including the host PC--it appears to be just another computer. It has its own IP address, etc.
For my first ADNUG meeting, this wasn't a bad choice. VPC seems like it could be very helpful at work, and I liked the group and the feel. It was informal, but informative; I didn't feel afraid to speak up, and I feel like there was a lot of knowledge sharing. I would definitely recommend anyone who's in the area and interesting attend--second Monday of every month. Did I mention the free pizza and sodas, and the chance to win software? ;)
Just as a final amusing anecdote, at one point Michael was demonstrating the VServer Remote Client, and mentioned that he happened to have a virtual copy of MS Bob 1.0b running. Of course we all demanded to see it (I've never actually seen the GUI for Bob, though I have seen pictures). When Michael switched to that session, though, all that was there was a crash message (the precursor to the BSOD). :) It was very apropos.