So far, Parts I & II have not given us anything new – the code will work happily in an ASP.NET or a traditional client application. Now we get to a more interesting bit – creating our Azure Project.
Before we can create an Azure Project, you will eventually have to go to the Azure Website – and download the Azure tools from here.
Once you have installed these on your development PC, you can now create an Azure Project. You will notice that I have not suggested signing up even for a CTP account. The reason is that you can do your development locally – the Azure tools create a kind of mini-Azure on your development PC. This makes little difference now, but when the service is charged for, it will make a difference.
To create an Azure Project, look under your chosen language (C# or VB.NET) and select the ‘Cloud Service’ leaf. Then choose the required template. Normally, I picked the ‘Web And Worker Cloud Service’ – this is because I invariably need both a web and worker role. Indeed this project, we will have both. Below:
And that is it. We now have an Azure Project, that can be run locally to test it.
The Web Service
Now the Azure project will eventually have a Silverlight frontend and that creates a small problem. Silverlight is designed to be a lightweight download and for this reason it uses a subset of the full .NET runtime. This means many of the functions that one might take for granted. To allow us the use of the full .NET runtime, these are placed behind a WCF web service.
To create a web service, you can host it within your Web role. So right-click on the Web role project and select ‘Add’, then ‘New item’.
This will display the above window – select the WCF Service, and give it name, then click on the ‘Add’ button.
This creates your Web Service, but we are not finished. Silverlight requires that a Web Service use basic binding. So change the binding of the service double click on the Web.config of the Web Role. Finding the <services>
tag. Make sure the ‘binding’ attribute is changed to basicHttpBinding
. The following code shows what the section should look like:
<service behaviorConfiguration="NewsMashup_WebRole.NewsMashupServiceBehavior"
name="NewsMashup_WebRole.NewsMashupService">
<endpoint address="" binding="basicHttpBinding" contract="NewsMashup_WebRole.INewsMashupService">
<identity>
<dns value="localhost" />
</identity>
</endpoint>
<endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange" />
</service>
</services>
So this sets up our Azure project, and our web service.