Building a UC Development Environment

When I’m talking to other developers about the UC platform SDKs, I get one question more than any other:

“What’s the easiest/best/quickest way to set up a development environment for UC?”

Developing against Office Communications Server 2007 R2, Office Communicator 2007 R2 and Exchange 2007 SP1 requires a little more heavy lifting than other APIs based on the deployment of the servers, the domain requirements, certificates and AD modifications, etc.

Luckily, there are some new resources that will help you get a development environment up and running quickly.

Building a UC Development Environment using the Office Communications Server 2007 R2 VHDs:

To get a development environment up and running quickly, use the Office Communications Server 2007 R2 VHDs released earlier this week.  These VMs provide a fully configured virtual environment for the UC stack (OCS 2007 R2 and Exchange 2007) that can also be used to set up a development environment. 

To build a development environment using these VMs, do the following:

  1. Set up the Office Communications Server 2007 R2 VHDs: Download the VHD files here and follow the set up in the documentation provided.  For most development, you’ll only need to run the DC, OCS-STD, and ExchangeUC servers.  Note: Virtualization is not supported but is often used for evaluations and development purposes.
  2. Set up Your Clients: Use the “Client Set-Up” steps in the docs above to set up your clients.  I’ve used 3 different options when setting up clients, including:
    • Physical Hardware: Building physical hardware and joining each machine to the development environment domain (for example the Fabrikam.com domain provided by the above VMs) provides an environment closest to an actual deployment.  Physical hardware allows you to use microphones for testing voice apps, webcams for video, etc. 
    • Virtual Machines: Building up virtual machines running in Virtual PC or Hyper-V works well and allows you to work from your main desktop while being on the sample development domain.  I usually use my host machine to run the client VM by hard coding one network card to be on the development environment network and another network card configured for my network at work.  Note that under this configuration you can get audio (phones ringing, etc.) but you can’t use the microphone.  In this configuration, testing UCMA 2.0 voice apps is limited to DTMF.
    • Terminal Server and Remote Desktop: Using a Windows Server 2008 Terminal Services box to serve up client sessions via Remote Desktop Connection is the method I use most often.  Configuring a single Terminal Services box and having all the developers on the project Remote Desktop into the environment is the easiest to manage after the initial setup.  I’m setting this up now using the above VMs and I’ll post step-by-step instructions in a future post.  Note this environment has the same hardware limitation as Virtual Machine/Hyper-V clients.
  3. Install the IDE/SDKs: To set up your clients for development (using any of the options above), install the following on your clients:
  4. Get Started:  Visit the Unified Communications Developer Portal to find samples, technical articles and forums.

Moving forward, I’m going to write all my blog posts and samples using this environment so it’s easy for you to run my sample code in your environment. 

Building a UC Development Environment from Scratch:

If you’re interested in building up an environment from scratch in an existing lab, either on physical hardware or a virtual environment, here are a couple of great resources:

  1. Setting up a Development Environment: The Programming for Unified Communications with Microsoft Office Communications Server 2007 R2 book has a chapter dedicated to setting up a development environment step-by-step starting with a simple domain.  It’s a great resource.
  2. Setting up a Production Environment: If you’re deploying UC for use in your company the following resources are going to help with planning and deployment:

Please give me your feedback so I can keep this post up to date as a resource for UC development.

 

Thanks,

Chris.