<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:dc="http://purl.org/dc/elements/1.1/" version="2.0">
  <channel>
    <title>invalid operation - Azure</title>
    <link>http://blog.invalidoperation.com/</link>
    <description>how do i wrote codes</description>
    <language>en-us</language>
    <copyright>ray</copyright>
    <lastBuildDate>Sun, 12 Jul 2009 21:29:05 GMT</lastBuildDate>
    <generator>newtelligence dasBlog 2.2.8279.16125</generator>
    <managingEditor>ray.oneill@gmail.com</managingEditor>
    <webMaster>ray.oneill@gmail.com</webMaster>
    <item>
      <trackback:ping>http://blog.invalidoperation.com/Trackback.aspx?guid=8e0564e1-3249-40ed-888b-c38a12726967</trackback:ping>
      <pingback:server>http://blog.invalidoperation.com/pingback.aspx</pingback:server>
      <pingback:target>http://blog.invalidoperation.com/PermaLink,guid,8e0564e1-3249-40ed-888b-c38a12726967.aspx</pingback:target>
      <dc:creator>Ray</dc:creator>
      <wfw:comment>http://blog.invalidoperation.com/CommentView,guid,8e0564e1-3249-40ed-888b-c38a12726967.aspx</wfw:comment>
      <wfw:commentRss>http://blog.invalidoperation.com/SyndicationService.asmx/GetEntryCommentsRss?guid=8e0564e1-3249-40ed-888b-c38a12726967</wfw:commentRss>
      <body xmlns="http://www.w3.org/1999/xhtml">
        <p>
I finally got around to playing with the bits for the Azure SDK, which as of this
writing is currently in <a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22703881-1197-49e5-8231-f49095cfd0bb&amp;displaylang=en">May
2009 CTP</a> mode. Here are some thoughts.
</p>
        <h5>Pretty good local development experience
</h5>
        <p>
Develop against a local cloud, deploy to the real one. The “role” stuff related to
the project types in Visual Studio is a little odd at first but once you get past
it, it’s the normal Asp.Net development experience we’ve had for a long time now,
at least until you want to use the Azure blob/queue/table-storage services.
</p>
        <h5>Hosting services
</h5>
        <p>
Literally, File –&gt; New Asp.Net Web Application –&gt; Publish –&gt; (Upload via
Azure portal) –&gt; done. Definitely was not expecting this to be so straight forward.
Should be really easy to migrate existing Asp.Net sites to the cloud, providing they
comply with Azure’s security posture.
</p>
        <h5>There’s a real over-reliance on the StorageClient sample.
</h5>
        <p>
          <em>Every </em>sample or piece of code for demonstrating developing against Azure
is using the StorageClient library, which is one of the sample projects that ships
with the Azure SDK. There are numerous posts out there saying it is <a href="http://oakleafblog.blogspot.com/2009/01/azure-storage-services-storage-client.html">not
to be considered an official API</a>, and that the REST APIs are the real deal. That’s
fantastic, but I don’t think any developer is interesting in writing a bunch of HttpWebRequest-heavy
code to use Azure or worse, build out their own end to end wrapper to the REST interfaces.
Sure, if no official libraries are published, some usable ones will surely pop up
on <a href="http://www.codeplex.com">CodePlex</a> but I don’t see how Microsoft would
even consider not providing an official .Net API, given what it could potentially
do related to adoption of their platform. Microsoft has historically been very pro-RAD
in its development platform and tooling, and this is contrary to that, which is puzzling.
I mean, one might half-expect to see a TableStorageDataSource control for WebForms.
Instead, it sounds like there will be nothing but some docs on MSDN describing the
REST calls.
</p>
        <h5>Table Storage != <em>table storage</em>. 
</h5>
        <p>
          <em>Table Storage</em> has a strong connotation for “relational”, and Azure’s Table
Storage is anything but. It really should be called <em>Structured Blob Storage, </em>because
that’s basically what it is, storing a structured property bag instead of an unstructured
blob of ones and zeros. Trying to develop a simple “Post has many Comments” example
lead me down a path where I:
</p>
        <ol>
        </ol>
        <ol>
          <li>
Chose Guids as object-keys. Since this is off-premises and not bound to a strict schema,
there is no options for auto-incremented properties. You either handle it yourself
at the application level or find a better way to handle uniqueness among your entities.
Guid.NewGuid() to the rescue. 
</li>
          <li>
Realized I either don’t “get” Table Storage and/or <em>I’m doing it wrong. </em><a href="http://msdn.microsoft.com/en-us/library/dd135725.aspx">The
LINQ capabilities of table storage extend to 4 LINQ operators.</a>  And of those,
only the most basic ones. Better support for Take, combined with support for Skip
and OrderBy/OrderByDescending would at least provide the foundation of something usable
from a querying perspective. I get that it’s not relational, so joining and grouping
are probably overkill, but not being able to get the second set of 50 posts sorted
by publish date, without fetching all of them and doing it in-memory? Come on. Taking
the effort to develop against table storage to leverage the scalability and availability
does not make sense when you have to fetch a whole ton of entities only to do a bunch
of manipulation in memory in order to send just the right ones back to the client/browser. 
</li>
        </ol>
        <p>
Because of the querying limitations, the only way I think I would use Table Storage
in an Azure-centric application with non-trivial storage requirements would be to
use it as a structured cache for highly-requested or relatively static data. The rest
would come from or something else entirely, possibly Sql Azure, <a href="http://blogs.msdn.com/ssds/archive/2009/07/09/9827971.aspx">formerly
Sql Data Services</a>. Of course, Sql Azure isn’t available in any sort of CTP or
preview, so the jury is out on that one.
</p>
        <h5>Blob storage 
</h5>
        <p>
This is the strongest part of the Azure platform as I see it today. Even with the
over-reliance on the StorageClient sample, shoving files up to Azure to get reliable,
scalable file hosting is one area I think will really shine.
</p>
        <h5>No development support for Windows XP
</h5>
        <p>
This is kind of lame, in my opinion. But it will sting less when Windows 7 is out
as I suspect a ton of people will be moving to that directly from XP. 
</p>
        <p>
 
</p>
        <p>
Overall, I really do like the platform from a development standpoint. Looking forward
to what comes out surrounding it during PDC later this year.
</p>
        <img width="0" height="0" src="http://blog.invalidoperation.com/aggbug.ashx?id=8e0564e1-3249-40ed-888b-c38a12726967" />
      </body>
      <title>Weekend Dabbling: Developing Against Windows Azure</title>
      <guid isPermaLink="false">http://blog.invalidoperation.com/PermaLink,guid,8e0564e1-3249-40ed-888b-c38a12726967.aspx</guid>
      <link>http://blog.invalidoperation.com/2009/07/12/WeekendDabblingDevelopingAgainstWindowsAzure.aspx</link>
      <pubDate>Sun, 12 Jul 2009 21:29:05 GMT</pubDate>
      <description>&lt;p&gt;
I finally got around to playing with the bits for the Azure SDK, which as of this
writing is currently in &lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=22703881-1197-49e5-8231-f49095cfd0bb&amp;amp;displaylang=en"&gt;May
2009 CTP&lt;/a&gt; mode. Here are some thoughts.
&lt;/p&gt;
&lt;h5&gt;Pretty good local development experience
&lt;/h5&gt;
&lt;p&gt;
Develop against a local cloud, deploy to the real one. The “role” stuff related to
the project types in Visual Studio is a little odd at first but once you get past
it, it’s the normal Asp.Net development experience we’ve had for a long time now,
at least until you want to use the Azure blob/queue/table-storage services.
&lt;/p&gt;
&lt;h5&gt;Hosting services
&lt;/h5&gt;
&lt;p&gt;
Literally, File –&amp;gt; New Asp.Net Web Application –&amp;gt; Publish –&amp;gt; (Upload via
Azure portal) –&amp;gt; done. Definitely was not expecting this to be so straight forward.
Should be really easy to migrate existing Asp.Net sites to the cloud, providing they
comply with Azure’s security posture.
&lt;/p&gt;
&lt;h5&gt;There’s a real over-reliance on the StorageClient sample.
&lt;/h5&gt;
&lt;p&gt;
&lt;em&gt;Every &lt;/em&gt;sample or piece of code for demonstrating developing against Azure
is using the StorageClient library, which is one of the sample projects that ships
with the Azure SDK. There are numerous posts out there saying it is &lt;a href="http://oakleafblog.blogspot.com/2009/01/azure-storage-services-storage-client.html"&gt;not
to be considered an official API&lt;/a&gt;, and that the REST APIs are the real deal. That’s
fantastic, but I don’t think any developer is interesting in writing a bunch of HttpWebRequest-heavy
code to use Azure or worse, build out their own end to end wrapper to the REST interfaces.
Sure, if no official libraries are published, some usable ones will surely pop up
on &lt;a href="http://www.codeplex.com"&gt;CodePlex&lt;/a&gt; but I don’t see how Microsoft would
even consider not providing an official .Net API, given what it could potentially
do related to adoption of their platform. Microsoft has historically been very pro-RAD
in its development platform and tooling, and this is contrary to that, which is puzzling.
I mean, one might half-expect to see a TableStorageDataSource control for WebForms.
Instead, it sounds like there will be nothing but some docs on MSDN describing the
REST calls.
&lt;/p&gt;
&lt;h5&gt;Table Storage != &lt;em&gt;table storage&lt;/em&gt;. 
&lt;/h5&gt;
&lt;p&gt;
&lt;em&gt;Table Storage&lt;/em&gt; has a strong connotation for “relational”, and Azure’s Table
Storage is anything but. It really should be called &lt;em&gt;Structured Blob Storage, &lt;/em&gt;because
that’s basically what it is, storing a structured property bag instead of an unstructured
blob of ones and zeros. Trying to develop a simple “Post has many Comments” example
lead me down a path where I:
&lt;/p&gt;
&lt;ol&gt;
&lt;ol&gt;
&lt;li&gt;
Chose Guids as object-keys. Since this is off-premises and not bound to a strict schema,
there is no options for auto-incremented properties. You either handle it yourself
at the application level or find a better way to handle uniqueness among your entities.
Guid.NewGuid() to the rescue. 
&lt;/li&gt;
&lt;li&gt;
Realized I either don’t “get” Table Storage and/or &lt;em&gt;I’m doing it wrong. &lt;/em&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/dd135725.aspx"&gt;The
LINQ capabilities of table storage extend to 4 LINQ operators.&lt;/a&gt;&amp;#160; And of those,
only the most basic ones. Better support for Take, combined with support for Skip
and OrderBy/OrderByDescending would at least provide the foundation of something usable
from a querying perspective. I get that it’s not relational, so joining and grouping
are probably overkill, but not being able to get the second set of 50 posts sorted
by publish date, without fetching all of them and doing it in-memory? Come on. Taking
the effort to develop against table storage to leverage the scalability and availability
does not make sense when you have to fetch a whole ton of entities only to do a bunch
of manipulation in memory in order to send just the right ones back to the client/browser. 
&lt;/li&gt;
&lt;/ol&gt;
&gt;
&lt;p&gt;
Because of the querying limitations, the only way I think I would use Table Storage
in an Azure-centric application with non-trivial storage requirements would be to
use it as a structured cache for highly-requested or relatively static data. The rest
would come from or something else entirely, possibly Sql Azure, &lt;a href="http://blogs.msdn.com/ssds/archive/2009/07/09/9827971.aspx"&gt;formerly
Sql Data Services&lt;/a&gt;. Of course, Sql Azure isn’t available in any sort of CTP or
preview, so the jury is out on that one.
&lt;/p&gt;
&lt;h5&gt;Blob storage 
&lt;/h5&gt;
&lt;p&gt;
This is the strongest part of the Azure platform as I see it today. Even with the
over-reliance on the StorageClient sample, shoving files up to Azure to get reliable,
scalable file hosting is one area I think will really shine.
&lt;/p&gt;
&lt;h5&gt;No development support for Windows XP
&lt;/h5&gt;
&lt;p&gt;
This is kind of lame, in my opinion. But it will sting less when Windows 7 is out
as I suspect a ton of people will be moving to that directly from XP. 
&lt;/p&gt;
&lt;p&gt;
&amp;#160;
&lt;/p&gt;
&lt;p&gt;
Overall, I really do like the platform from a development standpoint. Looking forward
to what comes out surrounding it during PDC later this year.
&lt;/p&gt;
&lt;img width="0" height="0" src="http://blog.invalidoperation.com/aggbug.ashx?id=8e0564e1-3249-40ed-888b-c38a12726967" /&gt;</description>
      <comments>http://blog.invalidoperation.com/CommentView,guid,8e0564e1-3249-40ed-888b-c38a12726967.aspx</comments>
      <category>Azure</category>
    </item>
  </channel>
</rss>