DavidAiken
Windows Azure Development
Windows Azure Development
Jul 21st
If you are working with SQL Azure at all and want to do some database management tasks, it’s always been a bit of a pain to have to download and install some SQL management tools.
Project Houston is the answer. Here is what the product team have to say about it:
Microsoft® Project Code-Named “Houston” is a lightweight and easy to use database management tool for SQL Azure databases. It is designed specifically for Web developers and other technology professionals seeking a straightforward solution to quickly develop, deploy, and manage their data-driven applications in the cloud. Project “Houston” provides a web-based database management tool for basic database management tasks like authoring and executing queries, designing and editing a database schema, and editing table data. It is now available on SQL Azure Labs.
If you follow the link, then click on the CTP link, you will be presented with the following login screen.
Grab the details from the http://sql.azure.com portal and feed them in and bask in the awesomeness that is Houston.
From here you can create tables, views, stored procedures, create and execute queries. It even has a cube you can spin around.
THIS POSTING IS PROVIDED “AS IS” WITH NO WARRANTIES, AND CONFERS NO RIGHTS
Jul 14th
Note I say web site – rather than web application.
If you have a web site, which is just a folder of files and stuff rather than a full blown VS project, you can easily deploy into Windows Azure without having to convert to a web app. (Of course you should really think about converting it because you get a better tool experience, debugging etc.)
I’m going to assume you have the Windows Azure SDK installed.
So the first thing is to get your files laid out on disk correctly. For our purposes I have a really simple web site containing a single default.aspx file. This is in a folder named ASPNetRole.
Next you need to create the cscfg and csdef files that Windows Azure requires to build a package. In the folder above I created the 2 files:
ServiceConfig.cscfg looks like this:
1: <?xml version="1.0"?>
2: <ServiceConfiguration serviceName="myaspapp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration">
3: <Role name="ASPNetRole">
4: <ConfigurationSettings/>
5: <Instances count="2" />
6: </Role>
7: </ServiceConfiguration>
ServiceDefinition.csdef looks like this
1: <?xml version="1.0" encoding="utf-8"?>
2: <ServiceDefinition name="myaspapp" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition">
3: <WebRole name="ASPNetRole" vmsize="Small">
4: <InputEndpoints>
5: <!-- Must use port 80 for http and port 443 for https when running in the cloud -->
6: <InputEndpoint name="HttpIn" protocol="http" port="80" />
7: </InputEndpoints>
8: <ConfigurationSettings/>
9: </WebRole>
10: </ServiceDefinition>
Make sure the role names match what you want to call your role.
Now you have these 2 files you are all ready to go!
There are 3 tasks you may want to do.
1. Package the web site to run in the local developer fabric.
1: "c:\Program Files\Windows Azure SDK\v1.2\bin\cspack.exe" "ServiceDefinition.csdef" /role:ASPNetRole;ASPNetRole; /copyOnly
2. Run the local developer fabric package:
1: "C:\Program Files\Windows Azure SDK\v1.2\bin\csrun.exe" "ServiceDefinition.csx" "ServiceConfig.cscfg" /launchBrowser
3. Package ready to deploy to Windows Azure.
1: "c:\Program Files\Windows Azure SDK\v1.2\bin\cspack.exe" "ServiceDefinition.csdef" /role:ASPNetRole;ASPNetRole;
When you run the last script it will generate the package you need to deploy to Windows Azure. I usually pop the above into 3 script files named prefabric.cmd, runfabric.cmd and buildpackage.cmd.
Have fun.
THIS POSTING IS PROVIDED “AS IS” WITH NO WARRANTIES, AND CONFERS NO RIGHTS
Jul 12th
A few folks today have been asking about how to get started with Windows Azure and/or SQL Azure. So here is my quick 3 steps to get you going.
Once you have that, the top resources to keep an eye on are http://www.microsoft.com/windowsazure, the awesome http://channel9.msdn.com/shows/Cloud+Cover/ and http://blogs.msdn.com/b/windowsazure/.
THIS POSTING IS PROVIDED “AS IS” WITH NO WARRANTIES, AND CONFERS NO RIGHTS
Jul 6th
The Patterns & Practices team have just released the first part of the Windows Azure Architecture guide.
This book is the first volume in a planned series about the Windows® Azure™ platform and focuses on a migration scenario. It introduces a fictitious company named Adatum which step-by-step modifies its expense tracking and reimbursement system, aExpense, so that it can be deployed to Windows Azure. Each chapter explores different considerations: authentication and authorization, data access, session management, deployment, development life cycle and cost analysis.
You can view the guide online at http://msdn.microsoft.com/en-us/library/ff728592.aspx.
THIS POSTING IS PROVIDED “AS IS” WITH NO WARRANTIES, AND CONFERS NO RIGHTS
Jun 9th
Now you can use .net 4.0 in Windows Azure, it opens up some possibilities to get even more out of your workers. If you have workers that read messages from queues, then do some processing against storage, you may want to consider converting your message processing loops into parallel loops.
Here is the shell of some code and a typical pattern:
foreach (var s in masterList){// Do some work with s}
You can very easily convert this to use the parallel extensions by using the following code:
Parallel.ForEach(masterList, s =>{// Do some work with s});
So the code change is easy, but what is the difference?
Well you should certainly consider how much work you are doing for each message – short simple tasks probably won’t benefit from being parallel.
You should also consider how much IO is performed against storage etc. – the more IO performed the more you will benefit from using the extensions.
But David PLEASE GIVE ME SOME FIGURES.
Ok – here is the low down.
The code I have reads some data from a collection (loaded from a blob) then writes a row into table storage for each item in the collection. There is a total of 748 items in the collection spread across 7 partitions.
Without the parallel extension the results look like this across 3 identical runs:
| 1 | 2 | 3 | |
| Start Time | 13:55:01.4366386 | 14:04:59.5006458 | 14:08:37.6709250 |
| End Time | 13:55:36.2911237 | 14:05:28.4387517 | 14:09.20.3591933 |
No I don’t know what happened to the last one, but its around ~35 seconds or about 21 entities per second.
With the parallel extensions the results are:
| 1 | 2 | 3 | |
| Start Time | 14:23:51.2536114 | 14:28:54.6648367 | 14:31:58.3643092 |
| End Time | 14:24.03.0634712 | 14:29:08.3145661 | 14:32:10.2021354 |
That is a tad faster at ~14 seconds or about 53 entities per second (probably faster as I’m being generous here).
The tests were all done using a small VM size (1 core) and the tables etc. were deleted between tests. It’s not terribly scientific, but its good enough to show its worth looking into.
For a simple code change, that is not a bad days work.
You can find out some more about the extensions at http://msdn.microsoft.com/en-us/library/dd460693.aspx as well as the C9 10-4 show at http://channel9.msdn.com/shows/10-4/10-4-Episode-6-Parallel-Extensions/.
THIS POSTING IS PROVIDED “AS IS” WITH NO WARRANTIES, AND CONFERS NO RIGHTS, NOBODY EVER READS THIS BIT EITHER SO I DON’T EVEN KNOW WHY I BOTHER SOMETIMES