Prerequisites: make sure that you have all the Azure SDK tools installed for your VS2008.
(1) Start by creating a new “Web Cloud Service” project in the Visual Studio. Give it a nice name.
(2) Add a new “WCF Service” to the WebRole project.
(3) Define a required contract:
The most important part here is to put attributes that will tell the WCF in what format to send/receive the message body (XML or JSON) …
[ServiceContract(Name = "service", Namespace = "http://www.igorshare.com")]
public interface IContactManagerService
{
[OperationContract]
[WebGet(UriTemplate = "/contacts", BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Json)]
List<Contact> GetAllContacts();
[OperationContract]
[WebGet(UriTemplate = "/contacts/{filter}", BodyStyle = WebMessageBodyStyle.Bare,
ResponseFormat = WebMessageFormat.Json)]
List<Contact> GetContacts(string filter);
}
[DataContract]
public class Contact
{
[DataMember]
public string FirstName { get; set; }
[DataMember]
public string LastName { get; set; }
[DataMember]
public string Company { get; set; }
}
(4) Implement the service logic:
public class ContactManagerService : IContactManagerService
{
private static readonly List<Contact> Contacts = new List<Contact>() { ... };
public List<Contact> GetAllContacts()
{
return Contacts;
}
public List<Contact> GetContacts(string filter)
{
string f = filter.ToLower();
var contacts = from contact in Contacts
where contact.FirstName.ToLower().Contains(f)
|| contact.LastName.ToLower().Contains(f)
|| contact.Company.ToLower().Contains(f)
select contact;
return contacts.ToList();
}
}
(5) Configure it to be exposed as a RESTful service:
To make it REALLY, REALLY simple for you, do this trick:
a) Comment out the system.serviceModel section in the Web.config file
b) Add the Factory attribute to the .svc file
<%@ ServiceHost Language="C#" Debug="true"
Service="ContactManagerCloudService_WebRole.ContactManagerService"
CodeBehind="ContactManagerService.svc.cs"
Factory="System.ServiceModel.Activation.WebServiceHostFactory" %>
(6) Build the service
You’re interested in 2 artifacts of the build:
- .cscfg file – configuration for the Cloud Service deployment
- .cspkg file – all the bits packaged (zipped)
At this moment you have 2 choices:
- Run your project in the local Development Fabric (for testing and debugging), or …
- Deploy it to the Azure Cloud (for staging or production)
To deploy your application to the cloud, do right-click on the CloudService project and select “Publish”.
Visual Studio will launch the Azure Service Developer Portal page. Log-in to your account, create a project and deploy your bits to the staging environment:

This is it! You’re good to go.
BTW: make sure that your application works in the staging environment and then you can push it to Production by just switching it with the Staging.

Note: Check out a great explanation about the difference between the WCF REST Configuration for ASP.NET AJAX and plain REST Services by Rick Strahl.