Working with Multiple Web and Worker Roles

After you install the July 2009 CTP and create a new project via File | New Project | Cloud Service, you now have a single template “Cloud Service” instead of the 4 you had in the past.

Clicking on that brings up our new project creation dialog. 


There are a couple of reasons we have this dialog:

  1. In the past, we only allowed you to have 0 or 1 Web Roles and 0 or 1 Worker roles in your Cloud Service.  Now you can have 0 to N of either type.  We want to help you create the Service Model you want to have.

  2. We want to expose multiple templates for you to use for each of the Roles.  For example, we’re working to one day have an MVC Web Role, Dynamic Data Web Role and more.  We not only want you to create the Service Model you want to have but also using a selection of different templates for each Role.

You can add Web and Worker Roles to the Cloud Service solution, rename the projects and hit OK to create the Cloud Service.  Try adding 2 Web Roles and 2 Worker Roles.


You’ll have a solution that matches:


Note that you’ll want to setup the port numbers for your input endpoints in the ServiceDefinition.csdef. 

We auto-generate what we hope to be safe numbers but don’t know what your intention is for each of the Web Roles – at this point in time, a second or third Web Role cannot be assigned to a sub domain, they can only be differentiated by port.

When you hit F5, we’ll bring up a web browser instance for each of the Web Roles. 

If you don’t want us to bring up a Web Browser instance for a given web role, right click on the associated Role under the Roles node and deselect “Launch Browser”.


Also note that when you close one web browser, your debugging session will end.

Comments (6)
  1. jasonhnz says:

    So how does this work when you migrate to the cloud?

    From memory you can only use ports 80 and 443 in Azure. Does this not render multiple roles useless in this case then? If so, how can one have multiple sites in the current CTP offering?

  2. The restriction of only using port 80 and 443 is gone away.  We mistakenly shipped a comment in the Service Definition which indicates otherwise and will be removed in our next release.

    That said, because only one web role can get port 80, the other web role will need to be accessed by appending the port to the domain.  This would be interesting if you want to have an admin console web role.

  3. jasonhnz says:

    Great, thanks for that info. An admin section is what I am after so a different port number will be fine.

    I take it adding another project with a web role will not be available until launch?

  4. I’m not sure I’m understanding your last question — "adding another project with a web role will not be available until launch?".

    The way I read that, you can do that today, you would go to Solution Explorer, right click on the Roles node | Add | New Web Role project…

    Perhaps I’m misreading your question?

  5. jasonhnz says:

    Sorry Jim. I mean create another web project that can be launched under port 80.

    IE. A complete new Azure project.

  6. I see, yes, there are requests to support this, especially if those web apps could be hosted on the same VM to lower the cost.  It is on our list, and we’re working out the how and when.

Comments are closed.

Skip to main content