David Pallmann has posted a full set of Azure Storage examples up on CodePlex. Very, very cool - REST and .NET examples are delivered side-by-side. Read more on his blog.
If you’re working with Azure, you really should be checking out AppFabric labs to get early exposure to new features. There’s a new preview for potential new features in the Azure AppFabric Access Control Service (ACS), including new support for Google, Yahoo, and Facebook identity providers. I have a blog post coming, but for more info see Justin Smith’s posting.
I have an older touch-screen laptop with an early Windows Phone CTP installed. The control-panel uninstaller is broken - and won't uninstall unless you have the orginal media. Like I have media that I used to install something last week, let alone months ago. Anyway, I found a great blog post with a solution - just browse to the installation folder and manually uninstall by right-clicking vs_setup.exe. The linked blog post has more details.
A fundamental pattern in Eiffel is the principle of Command Query Separation (also known as CQS). The idea behind CQS is that you separate class operations into two categories:
- Commands that mutate state on an instance of the class
- Queries that expose information about the instance
Commands and queries are different; although a successful command will usually alter the state of the targeted object, a query has no side-effects.
Although it’s a bedrock feature in Eiffel, there is no reason why it can’t be used in many languages, such as C#, and queries can be expressed in C# with a read-only property, such as:
public class Account
{
/// <summary>
/// What is the current balance?
/// </summary>
/// <value>The balance.</value>
public decimal Balance { get; }
}
Note that a query is typically commented as a question (in my code, anyway). In those cases where an instance must be able to change state via the property you can declare the setter with more restrictive access:
public class Account
{
/// <summary>
/// What is the current balance?
/// </summary>
/// <value>The balance.</value>
public decimal Balance { get; private set; }
}
The advantage of CQS is that queries can be executed without side-effects – multiple queries can be executed without any concern for mutating the object state; and query results can be cached (at least between command invocations.) By providing a clear separation between the operations that do (and do not) impact object state, other advanced patterns such as Design by Contract are enabled.
There's an updated version of Azure App Fabric released yesterday - read more about it and get download details on Zane Adam's blog here. In addition to .NET 4.0 support, this release supports Silverlight development by enabling cross-domain calls (this also helps something called Flash, which seems to be a SL clone.) This was a feature initially rolled out to the community as part of the App Fabric Labs project - read more about App Fabric Labs here.
I’ll be in Redmond most of the week of 7/5 for some meetings at Microsoft about this and that. If you’re in the area drop me a line and we can get together to discuss Azure, ApFabric, or other distributed computing topics. I’ve also got The David Pallmann™ with me in case you need someone intelligent in addition to me.
There’s a great explanation about why we need clustered indexes for SQL Azure tables over at the SQL Azure team blog. Short answer? It’s because the platform is keeping three replicas of the data, and the index is required for the replication.
http://blogs.msdn.com/b/sqlazure/archive/2010/05/12/10011257.aspx