<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0"><channel><title>Holger Sirtl's WebLog</title><link>http://blogs.msdn.com/b/hsirtl/</link><description>Microsoft&amp;#39;s Cloud Technology applied in Enterprise Architecture</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.21163 (Build: 5.6.583.21163)</generator><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/hsirtlsweblog" /><feedburner:info uri="hsirtlsweblog" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:browserFriendly></feedburner:browserFriendly><item><title>Video-Reihe zu Windows Azure – Folge 3: Was ist der Windows Azure Service Bus?</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/02/10/video-reihe-zu-windows-azure-folge-3-was-ist-der-windows-azure-service-bus.aspx</link><pubDate>Fri, 10 Feb 2012 16:40:10 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10266606</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10266606</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/02/10/video-reihe-zu-windows-azure-folge-3-was-ist-der-windows-azure-service-bus.aspx#comments</comments><description>&lt;p&gt;Im neuesten meiner 10-Minuten-Videos geht es um die Frage, “was ist der Windows Azure Service Bus?”&lt;/p&gt;  &lt;p&gt;Hier das Video: &lt;a href="http://www.youtube.com/watch?v=TsmLD1DQUVU"&gt;Was ist der Windows Azure Service Bus?&lt;/a&gt; [09:43 Min.]&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/TsmLD1DQUVU" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Der Windows Azure Service Bus ist ein sehr leistungsfähiger Cloud Service in der Windows Azure Platform. Er stellt eine Kommunikations- und Integrationsplattform zur Vernetzung verteilter Dienste zur Verfügung. Unabhängig davon, wo die einzelnen Kommunikationspartner (in der Cloud oder im eigenen Rechenzentrum) ausgeführt werden können einfache und komplexe Nachrichtenströme implementiert werden. Unterstützt werden sowohl Punkt-zu-Punkt-Verbindungen (unidirektional und bidirektional) als auch Publish-Subscriber-Pattern, bei denen mehrere Sender an mehrere Empfänger Nachrichten versenden können. Viel Spaß beim Schauen.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Video: &lt;a href="http://www.youtube.com/watch?v=TsmLD1DQUVU"&gt;Was ist der Windows Azure Service Bus?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4&amp;amp;list=PLC71216BDE26EBE8C"&gt;Video-Playlist auf YouTube&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10266606" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure_3B00_+Windows+Azure+Service+Bus/">Windows Azure; Windows Azure Service Bus</category></item><item><title>Video-Reihe zu Windows Azure – Folge 2: Was ist der Windows Azure Access Control Service?</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/02/08/video-reihe-zu-windows-azure-folge-2-was-ist-der-windows-azure-access-control-service.aspx</link><pubDate>Wed, 08 Feb 2012 12:06:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10265366</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10265366</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/02/08/video-reihe-zu-windows-azure-folge-2-was-ist-der-windows-azure-access-control-service.aspx#comments</comments><description>&lt;p&gt;Nach meinem ersten Video zu Windows Azure möchte ich meine Video-Reihe mit einem weiteren Azure Service fortsetzen: dem Windows Azure Access Control Service. Auch hier bin ich wieder unter der Zeitgrenze von 10 Minuten geblieben.&lt;/p&gt;  &lt;p&gt;Hier das Video: &lt;a href="http://www.youtube.com/watch?v=E5MsTKjVLJE"&gt;Was ist der Windows Azure Access Control Service&lt;/a&gt; [09:54 Min.]&lt;/p&gt;  &lt;p&gt;&lt;iframe height="315" src="http://www.youtube.com/embed/E5MsTKjVLJE" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Aus meiner Sicht wird am Windows Azure Access Control Service (ACS) das Konzept von Platform-as-a-Service besonders schön deutlich. Mit dem ACS können eigene Anwendungen gezielt um Claims-basierte Zugriffskontrolle erweitert werden. Leicht können Authentifizierungsmechanismen wie Windows Live ID, Facebook ID, Google ID, Yahoo ID, Open ID und Active Directory Federation Services genutzt werden. Wie eine solche Anwendung aussehen kann, zeige ich in dem Video. Viel Spaß beim Schauen.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=E5MsTKjVLJE"&gt;Video: Was ist der Windows Azure Access Control Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4&amp;amp;list=PLC71216BDE26EBE8C"&gt;Video-Playlist auf YouTube&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10265366" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Access+Control+Service/">Windows Azure Access Control Service</category></item><item><title>Blog-Empfehlung: Windows Azure Access Control Service zur Authentifizierung bei SharePoint 2010</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/02/06/blog-empfehlung-windows-azure-access-control-service-zur-authentifizierung-bei-sharepoint-2010.aspx</link><pubDate>Mon, 06 Feb 2012 08:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10264309</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10264309</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/02/06/blog-empfehlung-windows-azure-access-control-service-zur-authentifizierung-bei-sharepoint-2010.aspx#comments</comments><description>&lt;p&gt;Gerade habe ich eine Empfehlung zu einem Blog-Post bekommen, die ich gerne weiterleiten m&amp;ouml;chte:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://www.wictorwilen.se/Post/Visual-guide-to-Azure-Access-Controls-Services-authentication-with-SharePoint-2010-part-1.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+WictorWilen+%28Wictor+Wil%C3%A9n%29"&gt;Visual Guide to Azure Access Control Service Authentication with SharePoint 2010&lt;/a&gt; von &lt;a href="http://www.wictorwilen.se/Contact.aspx"&gt;Wictor Wil&amp;eacute;n&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Darin beschreibt Wictor Wil&amp;eacute;n Schritt f&amp;uuml;r Schritt die Konfiguration des Windows Azure Access Control Service zum Einsatz als Authentifizierungsmechanismus f&amp;uuml;r SharePoint 2010. Die Schritte im einzelnen sind dabei:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Konfiguration des Azure ACS&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Initialisierung des ACS&lt;/li&gt;
&lt;li&gt;Identity Provider&lt;/li&gt;
&lt;li&gt;Relying Party&lt;/li&gt;
&lt;li&gt;Regelgruppen&lt;/li&gt;
&lt;li&gt;Zertifikate&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Konfiguration des SharePoint Servers&lt;/li&gt;
&lt;ol&gt;
&lt;li&gt;Trusted Root Authority&lt;/li&gt;
&lt;li&gt;Trusted Identity Provider&lt;/li&gt;
&lt;/ol&gt;
&lt;li&gt;Test des Gesamtsystems&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.wictorwilen.se/Post/Visual-guide-to-Azure-Access-Controls-Services-authentication-with-SharePoint-2010-part-1.aspx?utm_source=feedburner&amp;amp;utm_medium=feed&amp;amp;utm_campaign=Feed%3A+WictorWilen+%28Wictor+Wil%C3%A9n%29"&gt;Original-Blog von Wictor Wil&amp;eacute;n&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/home/tour/access-control/"&gt;Windows Azure Access Control Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg429786.aspx"&gt;Access Control Service 2.0 auf MSDN&lt;/a&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg429786.aspx"&gt;http://msdn.microsoft.com/en-us/library/windowsazure/gg429786.aspx&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10264309" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SharePoint+2010/">SharePoint 2010</category></item><item><title>Video-Reihe zu Windows Azure – Folge 1: Was ist Windows Azure?</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/02/02/video-reihe-zu-windows-azure-folge-1-was-ist-windows-azure.aspx</link><pubDate>Thu, 02 Feb 2012 15:38:32 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10263265</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10263265</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/02/02/video-reihe-zu-windows-azure-folge-1-was-ist-windows-azure.aspx#comments</comments><description>&lt;p&gt;In den nächsten Wochen möchte ich eine kleine Video-Reihe produzieren. Dabei werde ich auf verschiedene Aspekte rund um Cloud Computing und Windows Azure behandeln. Jedes Video soll dabei eine maximale Länge von 10 Minuten haben.&lt;/p&gt;  &lt;p&gt;Und los geht’s mit einem ersten Video, in dem ich die Frage beantworte “Was ist Windows Azure?”. In knapp 10 Minuten erkläre ich darin, welche Dienste in Windows Azure vorhanden sind und wie sich die Ausführung eigener Cloud Services auf Azure gestaltet. Feedback natürlich willkommen.&lt;/p&gt; &lt;iframe height="315" src="http://www.youtube.com/embed/kLfaa_19yB4" frameborder="0" width="560" allowfullscreen="allowfullscreen"&gt;&lt;/iframe&gt;  &lt;p&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4"&gt;Hier geht’s zum Video&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4"&gt;Video: Was ist Windows Azure?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.youtube.com/watch?v=kLfaa_19yB4&amp;amp;list=PLC71216BDE26EBE8C"&gt;Video-Playlist auf YouTube&lt;/a&gt;&lt;/li&gt;  &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10263265" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Jetzt produktiv verfügbar: SQL Azure Import/Export Service</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/01/25/jetzt-produktiv-verf-252-gbar-sql-azure-import-export-service.aspx</link><pubDate>Wed, 25 Jan 2012 09:00:46 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10260448</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10260448</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/01/25/jetzt-produktiv-verf-252-gbar-sql-azure-import-export-service.aspx#comments</comments><description>&lt;p&gt;Die Windows Azure Produktgruppe hat bekanntgegeben, dass ab sofort der SQL Azure Import/Export Service allgemein produktiv verfügbar ist. Mit diesem Dienst ist es sehr leicht möglich, bestehende lokal betriebene Datenbanken leicht in die Cloud auf SQL Azure zu bringen und existierende SQL Azure und SQL Server Datenbanken problemlos im Windows Azure Blob Storage zu archivieren.&lt;/p&gt;  &lt;p&gt;Mit der Produktivsetzung des SQL Azure Import/Export Service werden auch einige Verbesserungen am Dienst verfügbar:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Verbesserte Performance&lt;/li&gt;    &lt;li&gt;Reporting des Fortschritts beim Datentransfer&lt;/li&gt;    &lt;li&gt;Selektiver Export&lt;/li&gt;    &lt;li&gt;Support&lt;/li&gt;    &lt;li&gt;&lt;a href="http://sqldacexamples.codeplex.com/"&gt;Beispielcode zum programmatischen Import/Export von SQL Datenbanken&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Der Dienst steht kostenlos zur Verfügung. Es fallen lediglich die üblichen Kosten für Datentransfer und Blob Storage (für die Ablage der archivierten Datenbanken) an.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://sqldacexamples.codeplex.com/"&gt;SQL DAC Framework&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://dacguy.wordpress.com/2012/01/24/sql-azure-importexport-service-has-hit-production/"&gt;Blog des DAC Teams mit Video Tutorials&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2012/01/24/announcing-sql-azure-import-export-service-now-in-production.aspx"&gt;Blog der Windows Azure Produktgruppe&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10260448" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure/">SQL Azure</category></item><item><title>Windows Azure Blob Storage leicht gemacht – Schritt für Schritt zu einer kleinen Beispielanwendung</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/01/16/windows-azure-blob-storage-leicht-gemacht-schritt-f-252-r-schritt-zu-einer-kleinen-beispielanwendung.aspx</link><pubDate>Mon, 16 Jan 2012 14:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10257129</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10257129</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/01/16/windows-azure-blob-storage-leicht-gemacht-schritt-f-252-r-schritt-zu-einer-kleinen-beispielanwendung.aspx#comments</comments><description>&lt;p&gt;Erstaunlicherweise gibt es f&amp;uuml;r Windows Azure Blob Storage kaum leicht verdauliche Beispielanwendungen, die zeigen, wie man leicht auf diesen hoch-skalierbaren, hoch-verf&amp;uuml;gbaren Cloud Storage zugreifen kann. Diesem Mangel m&amp;ouml;chte ich mit diesem Blog-Artikel beseitigen.&lt;/p&gt;
&lt;p&gt;In den folgenden Schritten soll eine kleine Beispielanwendung erstellt werden, mit deren Hilfe Dokumente in Blob Storage geschrieben, von dort ausgelesen, tabellarisch aufgelistet und auch wieder gel&amp;ouml;scht werden k&amp;ouml;nnen. Der &lt;a href="http://hsirtl1.blob.core.windows.net/codesamples/SimpleBlobStorageDemo.zip"&gt;Sourcecode der fertigen Solution&lt;/a&gt; steht unten zum Download zur Verf&amp;uuml;gung. Des weiteren k&amp;ouml;nnen auch Videos, die ich beim Erstellen der Anwendung gedreht habe heruntergeladen werden:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Blob%20Storage%2001.wmv"&gt;Video 1: Konfiguration des Cloud Service&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Blob%20Storage%2002.wmv"&gt;Video 2: Implementierung der Blob Storage Zugriffsklassen&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Blob%20Storage%2003.wmv"&gt;Video 3: Programmierung der GUI f&amp;uuml;r die Beispielanwendung&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Beispielanwendung geht davon aus, dass Sie ein Cloud Projekt wie in einem meinem &lt;a href="http://blogs.msdn.com/b/hsirtl/archive/2011/12/19/windows-azure-anlegen-eines-minimalen-cloud-service.aspx"&gt;letzten Blog-Posts&lt;/a&gt; beschrieben angelegt haben.&lt;/p&gt;
&lt;p&gt;&amp;Ouml;ffnen Sie &amp;ndash; durch Doppelklick auf die Web Role &amp;ndash; die Konfigurationsseite der Web Role. Es erschein die in Abbildung 1 gezeigte Eingabemaske.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/0842.image_5F00_6744E1CE.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/8446.image_5F00_thumb_5F00_6B6EB993.png" width="240" height="104" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 1: Konfiguration des Storage Accounts (Development Storage)&lt;/p&gt;
&lt;p&gt;Geben sie in dieser Maske die in Tabelle 1 aufgelisteten Parameter ein und speichern Sie die WebRole.&lt;/p&gt;
&lt;table style="width: 500px;" border="0" cellspacing="0" cellpadding="2"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th valign="top" width="133"&gt;Parameter&lt;/th&gt;&lt;th valign="top" width="133"&gt;Wert&lt;/th&gt;&lt;th valign="top" width="133"&gt;Erl&amp;auml;uterung&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="133"&gt;WAStorageConnectionString&lt;/td&gt;
&lt;td valign="top" width="133"&gt;UseDevelopmentStorage=true&lt;/td&gt;
&lt;td valign="top" width="133"&gt;Definiert den zu verwendenden Storage Account. F&amp;uuml;r Testzwecke kann auch (wie hier) der Development Storage verwendet werden.&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td valign="top" width="133"&gt;WAContainerName&lt;/td&gt;
&lt;td valign="top" width="133"&gt;democontainer&lt;/td&gt;
&lt;td valign="top" width="133"&gt;Name des Containers im Storage Account. Beachten Sie, dass der Name nur aus Kleinbuchstaben bestehen darf.&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Tabelle 1: Parameter f&amp;uuml;r den Storage Account und die Tabelle&lt;/p&gt;
&lt;p&gt;&amp;Ouml;ffnen Sie nun die Datei Global.asax.cs. F&amp;uuml;gen Sie am Anfang der Datei Referenzen auf folgende Namespaces hinzu:&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.WindowsAzure;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.ServiceRuntime;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.StorageClient;&amp;acute;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...&lt;/pre&gt;
&lt;p&gt;Damit machen Sie dem Programm Klassen zum Zugriff auf die Service-Konfiguration sowie den Windows Azure Storage zug&amp;auml;nglich.&lt;/p&gt;
&lt;p&gt;Erweitern Sie nun die Methode Application_Start wie im folgenden Listing angegeben.&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Application_Start(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;{
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    });
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    var account = 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        CloudStorageAccount.FromConfigurationSetting("&lt;span style="color: #8b0000;"&gt;WAStorageConnectionString&lt;/span&gt;");
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    var container = account.CreateCloudBlobClient().GetContainerReference(
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        RoleEnvironment.GetConfigurationSettingValue("&lt;span style="color: #8b0000;"&gt;WAContainerName&lt;/span&gt;"));
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    container.CreateIfNotExist();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    var permissions = container.GetPermissions();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    permissions.PublicAccess = BlobContainerPublicAccessType.Container;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    container.SetPermissions(permissions);
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;}&lt;/pre&gt;
&lt;p&gt;Legen Sie im Hauptverzeichnis des Projekts einen Ordner Model an und f&amp;uuml;gen sie diesem eine neue Klassendatei Image.cs hinzu. Implementieren Sie die Klasse wie folgt:&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; WebRole
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;{
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; Image
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Title { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; FileName { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Description { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; Tags { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; ImageUri { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;long&lt;/span&gt; Size { &lt;span style="color: #0000ff;"&gt;get&lt;/span&gt;; &lt;span style="color: #0000ff;"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;}&lt;/pre&gt;
&lt;p&gt;&amp;Uuml;ber diese Klasse werden sp&amp;auml;ter Blob-Objekte instanziiert und dient als Basis f&amp;uuml;r die Datenquelle, die &amp;uuml;ber die Oberfl&amp;auml;che f&amp;uuml;r die Blob-Zugriffe angesprochen wird. Sie definiert die f&amp;uuml;r Blobs ben&amp;ouml;tigten Attribute.&lt;/p&gt;
&lt;p&gt;Legen Sie mit der Klasse ImageDataSource nun die entsprechende Datenquelle an und implementieren Sie die Klasse wie folgt:&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.StorageClient;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.WindowsAzure;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.ServiceRuntime;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System.Collections.Specialized;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; WebRole
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;{
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; ImageDataSource
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; CloudBlobContainer container = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; ImageDataSource()
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            var account = 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                CloudStorageAccount.FromConfigurationSetting("&lt;span style="color: #8b0000;"&gt;WAStorageConnectionString&lt;/span&gt;");
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            var client = account.CreateCloudBlobClient();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            container = client.GetContainerReference(
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                RoleEnvironment.GetConfigurationSettingValue("&lt;span style="color: #8b0000;"&gt;WAContainerName&lt;/span&gt;"));
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; Uri Insert(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; title, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; description, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; tags,
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                          &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; fileName, &lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; contentType, &lt;span style="color: #0000ff;"&gt;byte&lt;/span&gt;[] data)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            var blob = container.GetBlobReference(fileName);
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            blob.Properties.ContentType = contentType;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            var metadata = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; NameValueCollection();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            metadata["&lt;span style="color: #8b0000;"&gt;FileName&lt;/span&gt;"] = fileName;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            metadata["&lt;span style="color: #8b0000;"&gt;ImageTitle&lt;/span&gt;"] = title;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            metadata["&lt;span style="color: #8b0000;"&gt;Description&lt;/span&gt;"] = description;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            metadata["&lt;span style="color: #8b0000;"&gt;Tags&lt;/span&gt;"] = tags;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            blob.Metadata.Add(metadata);
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            blob.UploadByteArray(data);
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; blob.Uri;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; IEnumerable&amp;lt;Image&amp;gt; Select()
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            var imageList = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; List&amp;lt;Image&amp;gt;();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            var blobList = container.ListBlobs(&lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; BlobRequestOptions());
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            &lt;span style="color: #0000ff;"&gt;foreach&lt;/span&gt; (CloudBlob blob &lt;span style="color: #0000ff;"&gt;in&lt;/span&gt; blobList)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                blob.FetchAttributes();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                var image = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; Image()
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                    ImageUri = blob.Uri.ToString(),
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                    Title = blob.Metadata.Get("&lt;span style="color: #8b0000;"&gt;ImageTitle&lt;/span&gt;"),
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                    FileName = blob.Metadata.Get("&lt;span style="color: #8b0000;"&gt;FileName&lt;/span&gt;"),
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                    Description = blob.Metadata.Get("&lt;span style="color: #8b0000;"&gt;Description&lt;/span&gt;"),
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                    Tags = blob.Metadata.Get("&lt;span style="color: #8b0000;"&gt;Tags&lt;/span&gt;"),
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                    Size = blob.Properties.Length
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                };
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                imageList.Add(image);
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            &lt;span style="color: #0000ff;"&gt;return&lt;/span&gt; imageList;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Delete(&lt;span style="color: #0000ff;"&gt;string&lt;/span&gt; ImageUri)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            var blob = container.GetBlobReference(ImageUri);
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            blob.DeleteIfExists();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;}&lt;/pre&gt;
&lt;p&gt;Die Klasse stellt also alle Methoden bereit, die zum Auslesen, Hinzuf&amp;uuml;gen und L&amp;ouml;schen von Blobs ben&amp;ouml;tigt werden. Kompilieren Sie nun das Projekt. Dies ist wichtig, da andernfalls die Klasse sp&amp;auml;ter nicht Auswahl als Datenquelle f&amp;uuml;r den GridView angeboten wird.&lt;/p&gt;
&lt;p&gt;&amp;Ouml;ffnen Sie nun die Datei Default.aspx. F&amp;uuml;gen Sie der Datei ein GridView hinzu, indem sie ein entsprechendes Element aus der Toolbox auf die Datei ziehen. Die Datei sollte dann wie in Abbildung 2 gezeigt aussehen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/2161.image_5F00_3EE589AD.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/8015.image_5F00_thumb_5F00_36158161.png" width="240" height="112" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 2: Hinzuf&amp;uuml;gen eines GridView-Controls und Auswahl der Datenquelle&lt;/p&gt;
&lt;p&gt;Bestimmen Sie nun im Kontextmen&amp;uuml; des GridViews (zu sehen in Abbildung 2) die Datenquelle. W&amp;auml;hlen Sie den Men&amp;uuml;punkt Choose Data Source / New data source. Es erscheint die in Abbildung 3 gezeigte Eingabemaske.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/3730.image_5F00_7BBA0B7F.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/6378.image_5F00_thumb_5F00_4568E370.png" width="240" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 3: Auswahl einer ObjectDataSource&lt;/p&gt;
&lt;p&gt;W&amp;auml;hlen Sie hier als Datenquelle Object und benennen die Datenquelle mit ObjectDataSource. Best&amp;auml;tigen Sie Ihre Eingabe mit OK. Es erscheint die in Abbildung 4 gezeigte Eingabemaske.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/0083.image_5F00_643F574E.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/0552.image_5F00_thumb_5F00_42DFB1B2.png" width="240" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 4: Auswahl des Business Objekts&lt;/p&gt;
&lt;p&gt;W&amp;auml;hlen Sie hier als Business-Objekt die Klasse WebRole.ImageDataSource und best&amp;auml;tigen Sie Ihre Eingabe mit Next.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/5342.image_5F00_76A7A803.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/7080.image_5F00_thumb_5F00_40567FF4.png" width="240" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 5: Auswahl der Business Methoden f&amp;uuml;r Auswahl und L&amp;ouml;schen&lt;/p&gt;
&lt;p&gt;Bestimmen Sie nun die Methoden f&amp;uuml;r die einzelnen Datenoperationen, d.h. f&amp;uuml;r die Operation Select die Methode Select(), f&amp;uuml;r Insert die Methode Insert() usw. Schlie&amp;szlig;en Sie Ihre Eingabe mit Finish ab. Mit diesen Eingaben stehen dem GridView alle Informationen f&amp;uuml;r die Anzeige der Kontaktdaten zur Verf&amp;uuml;gung. Wenn Sie im Kontextmen&amp;uuml; des GridViews auch noch die Option EnableDeleting aus.&lt;/p&gt;
&lt;p&gt;Legen Sie im Code des GridView das Schl&amp;uuml;sselattribut f&amp;uuml;r einzelne Image-Objekte, ImageUri wie folgt fest:&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&amp;lt;asp:Content ID="&lt;span style="color: #8b0000;"&gt;BodyContent&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" ContentPlaceHolderID="&lt;span style="color: #8b0000;"&gt;MainContent&lt;/span&gt;"&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:GridView
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        ID="&lt;span style="color: #8b0000;"&gt;GridView1&lt;/span&gt;"
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;"
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        AutoGenerateColumns="&lt;span style="color: #8b0000;"&gt;False&lt;/span&gt;" 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        DataSourceID="&lt;span style="color: #8b0000;"&gt;ObjectDataSource&lt;/span&gt;"
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        DataKeyNames="&lt;span style="color: #8b0000;"&gt;ImageUri&lt;/span&gt;"&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...&lt;/pre&gt;
&lt;p&gt;Konfigurieren Sie die Spalten des GridView wie folgt.&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&amp;lt;Columns&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:HyperLinkField DataNavigateUrlFields="&lt;span style="color: #8b0000;"&gt;ImageUri&lt;/span&gt;" DataTextField="&lt;span style="color: #8b0000;"&gt;FileName&lt;/span&gt;" 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        HeaderText="&lt;span style="color: #8b0000;"&gt;Filename&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:BoundField DataField="&lt;span style="color: #8b0000;"&gt;Title&lt;/span&gt;" HeaderText="&lt;span style="color: #8b0000;"&gt;Title&lt;/span&gt;" 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        SortExpression="&lt;span style="color: #8b0000;"&gt;Title&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:BoundField DataField="&lt;span style="color: #8b0000;"&gt;Description&lt;/span&gt;" HeaderText="&lt;span style="color: #8b0000;"&gt;Description&lt;/span&gt;" 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        SortExpression="&lt;span style="color: #8b0000;"&gt;Description&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:BoundField DataField="&lt;span style="color: #8b0000;"&gt;Tags&lt;/span&gt;" HeaderText="&lt;span style="color: #8b0000;"&gt;Tags&lt;/span&gt;" SortExpression="&lt;span style="color: #8b0000;"&gt;Tags&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;asp:BoundField DataField="&lt;span style="color: #8b0000;"&gt;Size&lt;/span&gt;" HeaderText="&lt;span style="color: #8b0000;"&gt;Size&lt;/span&gt;" SortExpression="&lt;span style="color: #8b0000;"&gt;Size&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:CommandField ShowDeleteButton="&lt;span style="color: #8b0000;"&gt;true&lt;/span&gt;"  /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&amp;lt;/Columns&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...&lt;/pre&gt;
&lt;p&gt;Damit verlinken Sie beispielsweise den Namen des Blobs in der Spalte Filename mit dem eigentlichen Blob-Inhalt. Wenn sie also auf den Namen des Bildes klicken, wird das Bild selbst angezeigt.&lt;/p&gt;
&lt;p&gt;Konfigurieren Sie nun noch das Eingabeformular zum Upload von Blobs wie im folgenden Listing angegeben.&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;...
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;/asp:ObjectDataSource&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;br /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;asp:Label ID="&lt;span style="color: #8b0000;"&gt;filePathLabel&lt;/span&gt;" Text="&lt;span style="color: #8b0000;"&gt;File Path:&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:FileUpload ID="&lt;span style="color: #8b0000;"&gt;imageFile&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;br /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:Label ID="&lt;span style="color: #8b0000;"&gt;imageTitleLabel&lt;/span&gt;" Text="&lt;span style="color: #8b0000;"&gt;Image Title:&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;asp:TextBox ID="&lt;span style="color: #8b0000;"&gt;imageTitle&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;br /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;asp:Label ID="&lt;span style="color: #8b0000;"&gt;imageDescriptionLabel&lt;/span&gt;" Text="&lt;span style="color: #8b0000;"&gt;Image Description:&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:TextBox ID="&lt;span style="color: #8b0000;"&gt;imageDescription&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;br /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:Label ID="&lt;span style="color: #8b0000;"&gt;imageTagsLabel&lt;/span&gt;" Text="&lt;span style="color: #8b0000;"&gt;Image Tags:&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;asp:TextBox ID="&lt;span style="color: #8b0000;"&gt;imageTags&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;br /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    &amp;lt;br /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &amp;lt;asp:Button ID="&lt;span style="color: #8b0000;"&gt;insertButton&lt;/span&gt;" Text="&lt;span style="color: #8b0000;"&gt;Submit&lt;/span&gt;" runat="&lt;span style="color: #8b0000;"&gt;server&lt;/span&gt;" 
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                OnClick="&lt;span style="color: #8b0000;"&gt;insertButton_Click&lt;/span&gt;" /&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;...&lt;/pre&gt;
&lt;p&gt;Damit ist die Programmierung der Oberfl&amp;auml;che abgeschlossen. Es fehlt noch die Logik f&amp;uuml;r die Default.aspx.cs. Implementieren Sie diese wie im folgenden Listing angegeben:&lt;/p&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;using&lt;/span&gt; System;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;span style="color: #0000ff;"&gt;namespace&lt;/span&gt; WebRole
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;{
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;    &lt;span style="color: #0000ff;"&gt;public&lt;/span&gt; partial &lt;span style="color: #0000ff;"&gt;class&lt;/span&gt; _Default : System.Web.UI.Page
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        &lt;span style="color: #0000ff;"&gt;private&lt;/span&gt; ImageDataSource dataSource = &lt;span style="color: #0000ff;"&gt;null&lt;/span&gt;;
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; Page_Load(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            dataSource = &lt;span style="color: #0000ff;"&gt;new&lt;/span&gt; ImageDataSource();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;        &lt;span style="color: #0000ff;"&gt;protected&lt;/span&gt; &lt;span style="color: #0000ff;"&gt;void&lt;/span&gt; insertButton_Click(&lt;span style="color: #0000ff;"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            &lt;span style="color: #0000ff;"&gt;if&lt;/span&gt; (imageFile.HasFile)
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;            {
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                dataSource.Insert(
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                    imageTitle.Text,
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                    imageDescription.Text,
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                    imageTags.Text,
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                    imageFile.FileName,
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                    imageFile.PostedFile.ContentType,
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;                    imageFile.FileBytes
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                );
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;                GridView1.DataBind();
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;            }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;        }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #ffffff;"&gt;    }
&lt;/pre&gt;
&lt;pre style="margin: 0em; width: 100%; font-family: consolas,'Courier New',courier,monospace; font-size: 10px; background-color: #f0f0f0;"&gt;}&lt;/pre&gt;
&lt;p&gt;Starten Sie einen Testlauf, indem Sie den Men&amp;uuml;punkt Debug / Start Debugging ausw&amp;auml;hlen. Nach einem kurzen Moment sollte die Startseite wie in Abbildung 6 zu sehen angezeigt werden.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/8156.image_5F00_33E85CCB.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/1526.image_5F00_thumb_5F00_7D9734BB.png" width="240" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 6: Erstmalige Ausf&amp;uuml;hrung der Blob Storage Anwendung&lt;/p&gt;
&lt;p&gt;Da im Container noch keine Blobs liegen, wird nur das Eingabeformular, nicht jedoch das Grid angezeigt. W&amp;auml;hlen Sie &amp;uuml;ber den Button Browse eine Datei aus und vergeben Sie Titel, Beschreibung und Tags. Best&amp;auml;tigen Sie Ihre eingabe mit Submit. Nach erfolgreichem Upload sollte die GridView mit dem Blobeintrag wie in Abbildung 7 zu sehen angezeigt werden.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/8561.image_5F00_5CA3C214.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/2275.image_5F00_thumb_5F00_01C10C81.png" width="240" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Abbildung 7: Anwendung, nachdem ein Bild hinzugef&amp;uuml;gt wurde&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10257129" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Blob+Storage/">Blob Storage</category></item><item><title>Windows Azure Libraries für Java verfügbar (einschließlich Unterstützung für den Service Bus)</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/01/11/windows-azure-libraries-f-252-r-java-verf-252-gbar-einschlie-223-lich-unterst-252-tzung-f-252-r-den-service-bus.aspx</link><pubDate>Wed, 11 Jan 2012 11:29:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10255487</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10255487</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/01/11/windows-azure-libraries-f-252-r-java-verf-252-gbar-einschlie-223-lich-unterst-252-tzung-f-252-r-den-service-bus.aspx#comments</comments><description>&lt;p&gt;Die &lt;a href="http://blogs.technet.com/b/interoperability"&gt;Microsoft Interoperability Group&lt;/a&gt; hat überarbeitete Libraries für Java veröffentlicht. Diese ermöglichen unter anderem auch den Zugriff auf die &lt;a href="http://msdn.microsoft.com/en-us/library/hh367521.aspx"&gt;REST API&lt;/a&gt;, die vom &lt;a href="http://msdn.microsoft.com/SB"&gt;Windows Azure Service Bus&lt;/a&gt; bereitgestellt wird.&lt;/p&gt;  &lt;p&gt;Die &lt;a href="https://github.com/WindowsAzure/azure-sdk-for-java"&gt;Windows Azure Libraries für Java&lt;/a&gt; können von GitHub heruntergeladen werden. Weitere Informationen finden sich im &lt;a href="http://www.windowsazure.com/en-us/develop/java"&gt;Windows Azure Java Developer Center&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Auf &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh690943(v=VS.103).aspx"&gt;MSDN&lt;/a&gt; finden sich für Java Entwickler darüber hinaus eine Reihe weiterer Artikel zur Verwendung der verschiedenen Azure Cloud-Services:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh691732(v=VS.103).aspx"&gt;Zugriff auf Windows Azure Blob Storage aus Java heraus&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh691733(v=VS.103).aspx"&gt;Zugriff auf Windows Azure Queue Storage aus Java heraus&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh690947(v=VS.103).aspx"&gt;Die Windows Azure Service Runtime aus Java-Sicht&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh749029(v=VS.103).aspx"&gt;Zugriff auf SQL Azure aus Java heraus&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh694271(v=VS.103).aspx"&gt;Das Windows Azure Plugin für Eclipse&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.technet.com/b/port25/archive/2012/01/09/windows-azure-libraries-for-java-available-including-support-for-service-bus.aspx"&gt;Original-Blog auf Technet&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.technet.com/b/interoperability"&gt;Microsoft Interoperability Group&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="https://github.com/WindowsAzure/azure-sdk-for-java"&gt;Windows Azure Libraries für Java&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.windowsazure.com/en-us/develop/java"&gt;Windows Azure Java Developer Center&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10255487" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Java/">Java</category></item><item><title>Migration nach SQL Azure leicht gemacht mit dem “SQL Azure Compatibility Assessment”-Service</title><link>http://blogs.msdn.com/b/hsirtl/archive/2012/01/09/migration-nach-sql-azure-leicht-gemacht-mit-dem-sql-azure-compatibility-assessment-service.aspx</link><pubDate>Mon, 09 Jan 2012 11:20:11 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10254520</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10254520</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2012/01/09/migration-nach-sql-azure-leicht-gemacht-mit-dem-sql-azure-compatibility-assessment-service.aspx#comments</comments><description>&lt;p&gt;Für alle, die bislang an einer Migration in die Cloud interessiert waren, gab es nur den &lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard&lt;/a&gt;, der Aufschluss darüber gab, ob die Migration einer SQL Server Datenbank nach SQL Azure möglich war bzw. welche Änderungen erforderlich waren.&lt;/p&gt;  &lt;p&gt;Seit dem 03. Januar 2012 steht nun ein neuer Online-Service bereit, der Reports zu geplanten Migrationsvorhaben geben kann: &lt;a href="https://assess.sql.azure.com/"&gt;SQL Azure Compatibility Assessment&lt;/a&gt;. Dieser stellt Informationen zusammen, die wichtig für die Migration einer SQL Server Datenbank nach SQL Azure sind. Die Bedienung ist sehr leicht.&lt;/p&gt;  &lt;p&gt;Benötigt werden:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Eine Windows Live ID&lt;/li&gt;    &lt;li&gt;Ein .dacpac Extrakt der bestehenden lokalen Datenbank&lt;/li&gt;  &lt;/ul&gt;  &lt;p&gt;Kenntnisse zu Azure sind darüber hinaus nicht erforderlich. Ergebnis eines Assessments ist ein Report, der alle Datenobjekte auflistet, die in SQL Azure nicht unterstützt werde bzw. Objekte, die für die Migration geändert werden müssen. Hier eine Beispielausgabe:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/2480.SQLAssessment_5F00_7BB11C8B.png"&gt;&lt;img style="display: inline; background-image: none;" title="SQLAssessment" border="0" alt="SQLAssessment" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/5611.SQLAssessment_5F00_thumb_5F00_72E1143F.png" width="552" height="172" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Eine .dacpac-Datei kann mit Hilfe der &lt;a href="http://msdn.microsoft.com/en-us/data/hh297027"&gt;SQL Server Data Tools&lt;/a&gt; erstellt werden. Diese kann im Assessment-Portal hochgeladen werden. Das Portal gibt dann einen Überblick über alle Schema-Objekte, die in SQL Azure nicht unterstützt werden bzw. überarbeitet werden müssen.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="https://assess.sql.azure.com/"&gt;SQL Azure Compatibility Assessment&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/data/hh297027"&gt;SQL Server Data Tools&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10254520" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure/">SQL Azure</category></item><item><title>Veranstaltungshinweis: Windows Azure Bootcamp “Extend SharePoint”</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/12/23/veranstaltungshinweis-windows-azure-bootcamp-extend-sharepoint.aspx</link><pubDate>Fri, 23 Dec 2011 10:49:40 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10250647</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10250647</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/12/23/veranstaltungshinweis-windows-azure-bootcamp-extend-sharepoint.aspx#comments</comments><description>&lt;p&gt;Termin und Ort für das Windows Azure Bootcamp “Extend SharePoint” stehen nun fest:&lt;/p&gt;  &lt;p&gt;Am 13.03.2012 von 09:00Uhr bis 17:00Uhr dreht sich alles um die Kombination von SharePoint und Azure. Auf der Agenda stehen folgende Punkte:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;SQL Azure und SharePoint     &lt;br /&gt;- SQL Azure Daten mittels externer Inhaltstypen und externer Listen bereitstellen      &lt;br /&gt;- SQL Azure Daten in eigene SharePoint Benutzeroberflächen einbinden&lt;/li&gt;    &lt;li&gt;Azure WCF-Dienste und SharePoint     &lt;br /&gt;- Azure WCF-Dienste in externen Inhaltstypen nutzen      &lt;br /&gt;- Azure WCF-Dienste in eigenen SharePoint Benutzeroberflächen nutzen&lt;/li&gt;    &lt;li&gt;Windows Azure und SharePoint Ereignisempfänger     &lt;br /&gt;- Kommunizieren mit einer Azure Worker-Rolle über eine Queue&lt;/li&gt;    &lt;li&gt;Windows Azure und SharePoint Workflows     &lt;br /&gt;- Kommunizieren mit einer Azure Worker-Rolle über einen TCP-Endpoint&lt;/li&gt;    &lt;li&gt;Windows Azure und SharePoint Suche     &lt;br /&gt;- Einbinden von Windows Azure Daten in die Federated Search&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;Weitere Informationen und Möglichkeit zur Anmeldung gibt es hier:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="https://training.partner.microsoft.com/learning/app/management/registrationex/LMS_Registration.aspx?UserMode=0&amp;amp;Mode=0&amp;amp;ActivityID=784912"&gt;Anmeldung für Microsoft-Partner&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032502367&amp;amp;Culture=de-DE"&gt;Anmeldung für Nicht-Partner&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Eine Übersicht über alle Windows Azure Camps (also auch zu anderen Themen) gibt es &lt;a href="http://blogs.msdn.com/b/hsirtl/p/wacamps.aspx"&gt;hier&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10250647" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Veranstaltungen/">Veranstaltungen</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Windows Azure Table Storage leicht gemacht – Schritt für Schritt zu einer kleinen Beispielanwendung</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/12/19/windows-azure-table-storage-leicht-gemacht-schritt-f-252-r-schritt-zu-einer-kleinen-beispielanwendung.aspx</link><pubDate>Mon, 19 Dec 2011 15:23:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10249207</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10249207</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/12/19/windows-azure-table-storage-leicht-gemacht-schritt-f-252-r-schritt-zu-einer-kleinen-beispielanwendung.aspx#comments</comments><description>&lt;p&gt;Erstaunlicherweise gibt es für Windows Azure Table Storage kaum leicht verdauliche Beispielanwendungen, die zeigen, wie man leicht auf diesen hoch-skalierbaren, hoch-verfügbaren Cloud Storage zugreifen kann. Diesem Mangel möchte ich mit diesem Blog-Artikel beseitigen.&lt;/p&gt;  &lt;p&gt;In den folgenden Schritten soll eine kleine Beispielanwendung erstellt werden, mit deren Hilfe Einträge in Table Storage geschrieben, von dort ausgelesen, angezeigt und auch wieder gelöscht werden können. Der &lt;a href="http://hsirtl1.blob.core.windows.net/codesamples/SimpleTableStorageDemo.zip"&gt;Sourcecode der fertigen Solution&lt;/a&gt; steht unten zum Download zur Verfügung. Des weiteren können auch Videos, die ich beim Erstellen der Anwendung gedreht habe heruntergeladen werden:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Table%20Storage%2001.wmv"&gt;Video 1: Konfiguration des Cloud Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Table%20Storage%2002.wmv"&gt;Video 2: Implementierung der Table Storage Zugriffsklassen&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Table%20Storage%2003.wmv"&gt;Video 3: Programmierung der GUI für die Beispielanwendung&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Die Beispielanwendung geht davon aus, dass Sie ein Cloud Projekt wie in meinem &lt;a href="http://blogs.msdn.com/b/hsirtl/archive/2011/12/19/windows-azure-anlegen-eines-minimalen-cloud-service.aspx"&gt;letzten Blog-Post&lt;/a&gt; beschrieben angelegt haben. In einem Ersten Schritt müssen in diesem Projekt die Zugriffsinformationen für den Storage, d.h. die Account-Informationen und der Name der Tabelle hinterlegt werden. Klicken Sie hierzu im Solution Explorer doppelt auf die WebRole im Konfigurationsprojekt. Es erschein die in Abbildung 1 gezeigte Eingabemaske.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/6131.image_5F00_19FF1174.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/5076.image_5F00_thumb_5F00_3790EC73.png" width="240" height="108" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Abbildung 1: Konfiguration des Storage Accounts (Development Storage)&lt;/p&gt;  &lt;p&gt;Geben sie in dieser Maske die in Tabelle 1 aufgelisteten Parameter ein und speichern Sie die WebRole.&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th valign="top"&gt;Parameter&lt;/th&gt;        &lt;th valign="top"&gt;Wert&lt;/th&gt;        &lt;th valign="top"&gt;Erläuterung&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;WAStorageConnectionString&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;UseDevelopmentStorage=true&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Definiert den zu verwendenden Storage Account. Für Testzwecke kann auch (wie hier) der Development Storage verwendet werden.&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td valign="top"&gt;         &lt;p&gt;WATableName&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;DemoTable&lt;/p&gt;       &lt;/td&gt;        &lt;td valign="top"&gt;         &lt;p&gt;Name der Tabelle im Table Storage&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Tabelle 1: Parameter für den Storage Account und die Tabelle&lt;/p&gt;  &lt;p&gt;Fügen Sie nun noch eine Referenz zur Assembly System.Data.Service.Client dem Projekt hinzu. Klicken Sie hierzu mit der rechten Maustaste auf das WebRole-Projekt und wählen den Menüpunkt Add Reference. Es erscheint die in Abbildung 2‑4 gezeigte Eingabemaske.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/1856.image_5F00_6EF6FDA1.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/7711.image_5F00_thumb_5F00_7B84AABD.png" width="240" height="203" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Abbildung 2: Hinzufügen der Referenz auf die Assembly System.Data.Services.Client&lt;/p&gt;  &lt;p&gt;Wählen Sie die Assembly &lt;em&gt;System.Data.Services.Client&lt;/em&gt; aus und bestätigen Sie Ihre Auswahl mit &lt;em&gt;OK&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;Öffnen Sie nun die Datei &lt;em&gt;Global.asax.cs&lt;/em&gt;. Fügen Sie am Anfang der Datei Referenzen auf folgende Namespaces hinzu:&lt;/p&gt;  &lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.StorageClient;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.ServiceRuntime;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Damit machen Sie dem Programm Klassen zum Zugriff auf die Service-Konfiguration sowie den Windows Azure Storage zugänglich.&lt;/p&gt;

&lt;p&gt;Erweitern Sie nun die Methode &lt;em&gt;Application_Start()&lt;/em&gt; wie im folgenden Listing angegeben.&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Application_Start(&lt;span style="color: rgb(0, 0, 255);"&gt;object&lt;/span&gt; sender, EventArgs e)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;{
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    CloudStorageAccount.SetConfigurationSettingPublisher((configName, configSetter) =&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        configSetter(RoleEnvironment.GetConfigurationSettingValue(configName));
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    });
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    var account =
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        CloudStorageAccount.FromConfigurationSetting(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WAStorageConnectionString&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    var tableName = RoleEnvironment.GetConfigurationSettingValue(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WATableName&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    account.CreateCloudTableClient().CreateTableIfNotExist(tableName);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Erstellen Sie nun eine Klasse Klasse&lt;em&gt; Contact.cs&lt;/em&gt;. Diese beschreibt letztlich den Aufbau der Einträge in der Table. Implementieren Sie diese Klasse wie folgt:&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; System;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.StorageClient;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;namespace&lt;/span&gt; WebRole
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;{
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; Contact : TableServiceEntity
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Contact(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; partitionKey, &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; rowKey)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            : &lt;span style="color: rgb(0, 0, 255);"&gt;base&lt;/span&gt;(partitionKey, rowKey)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Contact()
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            PartitionKey = &amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;ABC&lt;/span&gt;&amp;quot;;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            RowKey = &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt;.Format(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;{0:10}_{1}&lt;/span&gt;&amp;quot;, DateTime.Now.Ticks, Guid.NewGuid());
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Name { &lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;; &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Vorname { &lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;; &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; Email { &lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;; &lt;span style="color: rgb(0, 0, 255);"&gt;set&lt;/span&gt;; }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;In jeder Tabellenzeile warden demnach Name, Vorname und E-Mail-Adresse der Kontakte abgelegt. Hinzu kommen die Pflicht-Propertyes &lt;em&gt;PartitionKey&lt;/em&gt; und &lt;em&gt;RowKey&lt;/em&gt;. Der &lt;em&gt;PartitionKey&lt;/em&gt; wird hier mit einem festen Wert belegt. Damit hält Windows Azure alle Einträge der Tabelle in einer einzigen Partition. Für dieses Beispiel ist dies vertretbar, bei größeren Datenbeständen sollte der &lt;em&gt;PartitionKey&lt;/em&gt; jedoch so belegt werden, dass Windows Azure die einzelnen Einträge sinnvoll auf Partitionen aufteilen kann.&lt;/p&gt;

&lt;p&gt;Legen Sie jetzt eine Klasse &lt;em&gt;ContactDataServiceContext.cs&lt;/em&gt; an und implementieren Sie diese wie folgt:&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; System.Linq;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.ServiceRuntime;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.StorageClient;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;namespace&lt;/span&gt; WebRole
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;{
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; ContactDataServiceContext : TableServiceContext
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;internal&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; ContactTableName = 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            RoleEnvironment.GetConfigurationSettingValue(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WATableName&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;internal&lt;/span&gt; ContactDataServiceContext(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; baseAddress,
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            StorageCredentials credentials)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            : &lt;span style="color: rgb(0, 0, 255);"&gt;base&lt;/span&gt;(baseAddress, credentials)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; IQueryable&amp;lt;Contact&amp;gt; Contacts
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;get&lt;/span&gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;                &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;this&lt;/span&gt;.CreateQuery&amp;lt;Contact&amp;gt;(ContactTableName);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Über die Property &lt;em&gt;Contacts&lt;/em&gt; ermöglicht diese Klasse, die von TableServiceContext abgeleitet ist, den Zugriff auf den Table Storage. Die Speicherung der Kontaktdaten erfolgt in der über die Service-Konfiguration bestimmten Tabelle.&lt;/p&gt;

&lt;p&gt;Die letzte Klasse, die benötigt wird, ist &lt;em&gt;ContactDataSource.cs&lt;/em&gt;. Fügen Sie diese dem Projekt hinzu und implementieren Sie sie wie folgt:&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; System;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; System.Collections.Generic;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; System.Linq;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;using&lt;/span&gt; Microsoft.WindowsAzure.StorageClient;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;span style="color: rgb(0, 0, 255);"&gt;namespace&lt;/span&gt; WebRole
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;{
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt; ContactDataSource
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;private&lt;/span&gt; ContactDataServiceContext context = &lt;span style="color: rgb(0, 0, 255);"&gt;null&lt;/span&gt;;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; ContactDataSource()
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            var account =
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                CloudStorageAccount.FromConfigurationSetting(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WAStorageConnectionString&lt;/span&gt;&amp;quot;);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            context = &lt;span style="color: rgb(0, 0, 255);"&gt;new&lt;/span&gt; ContactDataServiceContext(account.TableEndpoint.ToString(),
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                                                    account.Credentials);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            context.RetryPolicy = RetryPolicies.Retry(3, TimeSpan.FromSeconds(1));
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; IEnumerable&amp;lt;Contact&amp;gt; Select()
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            var results = from c &lt;span style="color: rgb(0, 0, 255);"&gt;in&lt;/span&gt; context.Contacts
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;                          select c;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            var query = results.AsTableServiceQuery&amp;lt;Contact&amp;gt;();
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            var queryResults = query.Execute();
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; queryResults;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; Contact GetContactById(&lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; PartitionKey, &lt;span style="color: rgb(0, 0, 255);"&gt;string&lt;/span&gt; RowKey)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            &lt;span style="color: rgb(0, 0, 255);"&gt;return&lt;/span&gt; context.Contacts.Where(c =&amp;gt; ((c.RowKey == RowKey) &amp;amp;&amp;amp;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                                               (c.PartitionKey == PartitionKey))).First();
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Delete(Contact contact)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            Contact item = GetContactById(contact.PartitionKey, contact.RowKey);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            context.DeleteObject(item);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            context.SaveChanges();
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &lt;span style="color: rgb(0, 0, 255);"&gt;public&lt;/span&gt; &lt;span style="color: rgb(0, 0, 255);"&gt;void&lt;/span&gt; Insert(Contact contact)
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        {
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            context.AddObject(context.ContactTableName, contact);
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            context.SaveChanges();
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    }
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;}&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Die Klasse stellt also alle Methoden bereit, die zum Auslesen, Hinzufügen, Ändern und Löschen von Kontakten benötigt werden. Kompilieren Sie nun das Projekt. Dies ist wichtig, da andernfalls die Klasse später nicht Auswahl als Datenquelle für den GridView angeboten wird.&lt;/p&gt;

&lt;p&gt;Öffnen Sie nun die Datei &lt;em&gt;Default.aspx&lt;/em&gt;. Fügen Sie der Datei ein &lt;em&gt;GridView&lt;/em&gt; hinzu, indem sie ein entsprechendes Element aus der Toolbox auf die Datei ziehen. Die Datei sollte dann wie in Abbildung 3 gezeigt aussehen.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/1460.image_5F00_20A1F52A.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/6558.image_5F00_thumb_5F00_1EF12956.png" width="240" height="116" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 3: Hinzufügen eines GridView-Controls und Auswahl der Datenquelle&lt;/p&gt;

&lt;p&gt;Bestimmen Sie nun im Kontextmenü des GridViews (zu sehen in Abbildung 3) die Datenquelle. Wählen Sie den Menüpunkt &lt;em&gt;Choose Data Source / New data source&lt;/em&gt;. Es erscheint die in Abbildung 4 gezeigte Eingabemaske.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/2330.image_5F00_2869E7CC.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/7167.image_5F00_thumb_5F00_070A4230.png" width="240" height="179" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 4: Auswahl einer ObjectDataSource&lt;/p&gt;

&lt;p&gt;Wählen Sie hier als Datenquelle Object und benennen die Datenquelle mit &lt;em&gt;ObjectDataSource&lt;/em&gt;. Bestätigen Sie Ihre Eingabe mit &lt;em&gt;OK&lt;/em&gt;. Es erscheint die in Abbildung 5 gezeigte Eingabemaske.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/0218.image_5F00_1397EF4C.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/8637.image_5F00_thumb_5F00_5FEF82ED.png" width="240" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 5: Auswahl des Business Objekts&lt;/p&gt;

&lt;p&gt;Wählen Sie hier als Business-Objekt die Klasse &lt;em&gt;WebRole.ContactDataSource&lt;/em&gt; und bestätigen Sie Ihre Eingabe mit &lt;em&gt;Next&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/5582.image_5F00_17C1C711.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/1385.image_5F00_thumb_5F00_61046C0C.png" width="240" height="193" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 6: Auswahl der Business Methoden für Auswahl, Einfügen und Löschen&lt;/p&gt;

&lt;p&gt;Bestimmen Sie nun die Methoden für die einzelnen Datenoperationen, d.h. für die Operation Select die Methode &lt;em&gt;Select()&lt;/em&gt;, für Insert die Methode&lt;em&gt; Insert()&lt;/em&gt; usw. Schließen Sie Ihre Eingabe mit &lt;em&gt;Finish&lt;/em&gt; ab. Mit diesen Eingaben stehen dem GridView alle Informationen für die Anzeige der Kontaktdaten zur Verfügung. Wenn Sie im Kontextmenü des GridViews noch die Option EnableDeleting auswählen, sollte der Zwischenstand wie in Abbildung 7 gezeigt aussehen.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/3750.image_5F00_5B495266.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/3365.image_5F00_thumb_5F00_4BC64097.png" width="240" height="125" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 7: Zwischenstand nach dem Einfügen der GridView&lt;/p&gt;

&lt;p&gt;Nun wird noch eine Möglichkeit benötigt, um neue Kontakte anzulegen. Fügen Sie hierzu eine FormView in die Seite ein, indem Sie ein entsprechendes Element aus der Toolbox auf die Seite &lt;em&gt;Default.aspx&lt;/em&gt; ziehen, und wählen Sie die gleiche Datenquelle wie beim GridView. Bearbeiten Sie im FormView nun das &lt;em&gt;InsertItemTemplate&lt;/em&gt;. Wählen sie im Kontextmenü des FormViews den Eintrag &lt;em&gt;Edit Templates&lt;/em&gt; und wählen das &lt;em&gt;InsertItemTemplate&lt;/em&gt;. Löschen Sie aus der Ansicht nun die automatisch generierten Eingabefelder für &lt;em&gt;PartitionKey&lt;/em&gt;, &lt;em&gt;RowKey&lt;/em&gt; und &lt;em&gt;Timestamp&lt;/em&gt;. Diese sollen ja später nicht vom Benutzer eingegeben sondern vom System erzeugt werden. Damit sollte das FormView wie in Abbildung 8 gezeigt aussehen.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/0310.image_5F00_7C0D154D.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/7288.image_5F00_thumb_5F00_361BE22D.png" width="240" height="189" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 8: Entfernung von Attributen aus dem InsertItemTemplate&lt;/p&gt;

&lt;p&gt;Nun sind noch ein paar Änderungen im Code der Default.aspx erforderlich. Wechseln sie hierzu in die Code-Ansicht der Seite. Setzen Sie zunächst im GridView die Schlüsselattribute für die Kontakte. Ergänzen Sie das GridView-Element wie folgt.&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;asp:Content ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;BodyContent&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; ContentPlaceHolderID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;MainContent&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    &amp;lt;asp:GridView
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;GridView1&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        AutoGenerateColumns=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;False&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        CellPadding=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;4&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        DataSourceID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;ObjectDataSource&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#333333&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        GridLines=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;None&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        DataKeyNames=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;PartitionKey,RowKey&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;...&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;PartitionKey und RowKey bilden zusammen den Primärschlüssel eines Kontakt-Eintrags. Diese Angabe ist erforderlich, damit bei Auswahl der vollständige Schlüssel übergeben werden kann.&lt;/p&gt;

&lt;p&gt;Setzen Sie nun noch wie folgt den Eingabemodus als Standard für die Anzeige der FormView.&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;asp:FormView
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;FormView1&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        DataSourceID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;ObjectDataSource&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        DefaultMode=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Insert&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Der Code der Datei Default.aspx sollte nun in etwa wie folgt aussehen.&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&amp;lt;%@ Page Title=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Home Page&lt;/span&gt;&amp;quot; Language=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;C#&lt;/span&gt;&amp;quot; MasterPageFile=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;~/Site.master&lt;/span&gt;&amp;quot; AutoEventWireup=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;true&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    CodeBehind=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Default.aspx.cs&lt;/span&gt;&amp;quot; Inherits=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WebRole._Default&lt;/span&gt;&amp;quot; %&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;asp:Content ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;HeaderContent&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; ContentPlaceHolderID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;HeadContent&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;asp:Content ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;BodyContent&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; ContentPlaceHolderID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;MainContent&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    &amp;lt;asp:GridView
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;GridView1&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        AutoGenerateColumns=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;False&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        CellPadding=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;4&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        DataSourceID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;ObjectDataSource&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#333333&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        GridLines=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;None&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        DataKeyNames=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;PartitionKey,RowKey&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &amp;lt;AlternatingRowStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;White&lt;/span&gt;&amp;quot; ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#284775&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;Columns&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            &amp;lt;asp:CommandField ShowDeleteButton=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;True&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            &amp;lt;asp:BoundField DataField=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Name&lt;/span&gt;&amp;quot; HeaderText=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Name&lt;/span&gt;&amp;quot; SortExpression=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Name&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            &amp;lt;asp:BoundField DataField=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Vorname&lt;/span&gt;&amp;quot; HeaderText=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Vorname&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;                SortExpression=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Vorname&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;            &amp;lt;asp:BoundField DataField=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Email&lt;/span&gt;&amp;quot; HeaderText=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Email&lt;/span&gt;&amp;quot; SortExpression=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Email&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            &amp;lt;asp:BoundField DataField=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Timestamp&lt;/span&gt;&amp;quot; HeaderText=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Timestamp&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                SortExpression=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Timestamp&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            &amp;lt;asp:BoundField DataField=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;PartitionKey&lt;/span&gt;&amp;quot; HeaderText=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;PartitionKey&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                SortExpression=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;PartitionKey&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;            &amp;lt;asp:BoundField DataField=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;RowKey&lt;/span&gt;&amp;quot; HeaderText=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;RowKey&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                SortExpression=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;RowKey&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;/Columns&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &amp;lt;EditRowStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#999999&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;FooterStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#5D7B9D&lt;/span&gt;&amp;quot; Font-Bold=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;True&lt;/span&gt;&amp;quot; ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;White&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &amp;lt;HeaderStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#5D7B9D&lt;/span&gt;&amp;quot; Font-Bold=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;True&lt;/span&gt;&amp;quot; ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;White&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;PagerStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#284775&lt;/span&gt;&amp;quot; ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;White&lt;/span&gt;&amp;quot; HorizontalAlign=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Center&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &amp;lt;RowStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#F7F6F3&lt;/span&gt;&amp;quot; ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#333333&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;SelectedRowStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#E2DED6&lt;/span&gt;&amp;quot; Font-Bold=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;True&lt;/span&gt;&amp;quot; ForeColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#333333&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &amp;lt;SortedAscendingCellStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#E9E7E2&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;SortedAscendingHeaderStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#506C8C&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        &amp;lt;SortedDescendingCellStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#FFFDF8&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;SortedDescendingHeaderStyle BackColor=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;#6F8DAE&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;/asp:GridView&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;asp:FormView
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;FormView1&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        DataSourceID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;ObjectDataSource&lt;/span&gt;&amp;quot;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        DefaultMode=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Insert&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;InsertItemTemplate&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;          Name:
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;          &amp;lt;asp:TextBox ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;NameTextBox&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; Text='&amp;lt;%# Bind(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Name&lt;/span&gt;&amp;quot;) %&amp;gt;' /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;          &amp;lt;br /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;          Vorname:
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;          &amp;lt;asp:TextBox ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;VornameTextBox&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; Text='&amp;lt;%# Bind(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Vorname&lt;/span&gt;&amp;quot;) %&amp;gt;' /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;          &amp;lt;br /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;          Email:
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;          &amp;lt;asp:TextBox ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;EmailTextBox&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; Text='&amp;lt;%# Bind(&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Email&lt;/span&gt;&amp;quot;) %&amp;gt;' /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;          &amp;lt;br /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;          &amp;lt;asp:LinkButton ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;InsertButton&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; CausesValidation=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;True&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;                CommandName=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Insert&lt;/span&gt;&amp;quot; Text=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Insert&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        &amp;lt;/InsertItemTemplate&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;/asp:FormView&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;asp:ObjectDataSource ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;ObjectDataSource&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        DataObjectTypeName=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WebRole.Contact&lt;/span&gt;&amp;quot; DeleteMethod=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Delete&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;        InsertMethod=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Insert&lt;/span&gt;&amp;quot; SelectMethod=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;Select&lt;/span&gt;&amp;quot; 
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        TypeName=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;WebRole.ContactDataSource&lt;/span&gt;&amp;quot;&amp;gt;&amp;lt;/asp:ObjectDataSource&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;/asp:Content&amp;gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Damit ist die Anwendung fertig. Starten Sie einen Testlauf, indem Sie den Menüpunkt &lt;em&gt;Debug / Start Debugging&lt;/em&gt; auswählen. Nach einem kurzen Moment sollte die Startseite wie in Abbildung 9 zu sehen angezeigt werden.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/1803.image_5F00_54862316.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/2476.image_5F00_thumb_5F00_33267D7A.png" width="240" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 9: Erstmalige Ausführung der Table Storage Anwendung&lt;/p&gt;

&lt;p&gt;Da in der Tabelle noch keine Einträge vorhanden sind, wird die Tabelle nicht angezeigt. Es erscheint nur die Eingabemaske. Tragen Sie in diese einen Eintrag ein und bestätigen Sie Ihre Eingabe mit Insert. Anschließend sollte auch die GridView mit dem Tabelleneintrag wie in Abbildung 10 zu sehen angezeigt werden.&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/5531.image_5F00_240F9EA0.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/8255.image_5F00_thumb_5F00_4279DF89.png" width="240" height="143" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Abbildung 10: Table Storage Anwendung, nachdem ein Eintrag eingefügt wurde&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/codesamples/SimpleTableStorageDemo.zip"&gt;Sourcecode der fertigen Solution&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Table%20Storage%2001.wmv"&gt;Video 1: Konfiguration des Cloud Service&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Table%20Storage%2002.wmv"&gt;Video 2: Implementierung der Table Storage Zugriffsklassen&lt;/a&gt;&lt;/li&gt;

  &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/WA%20Table%20Storage%2003.wmv"&gt;Video 3: Programmierung der GUI für die Beispielanwendung&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10249207" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Azure/">Azure</category></item><item><title>Windows Azure: Anlegen eines minimalen Cloud Service</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/12/19/windows-azure-anlegen-eines-minimalen-cloud-service.aspx</link><pubDate>Mon, 19 Dec 2011 14:53:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10249193</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10249193</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/12/19/windows-azure-anlegen-eines-minimalen-cloud-service.aspx#comments</comments><description>&lt;p&gt;Für einige meiner Windows Azure Demos benötige ich immer wieder einen minimalen Cloud Service, der ohne Schnickschnack auskommt, und der einen Blick auf das Wesentliche der Anwendung ermöglicht. Ich möchte kurz beschreiben, wie ein solcher minimaler Cloud Service aussehen kann, und werde auf diesen Blog-Eintrag von folgenden Einträgen verweisen.&lt;/p&gt;  &lt;p&gt;Ich habe von der Erstellung einer solchen Anwendung auch ein &lt;a href="http://hsirtl1.blob.core.windows.net/videos/Erstellung%20eines%20minimalen%20Azure%20Cloud%20Service.wmv"&gt;Video&lt;/a&gt; erstellt, welches &lt;a href="http://hsirtl1.blob.core.windows.net/videos/Erstellung%20eines%20minimalen%20Azure%20Cloud%20Service.wmv"&gt;hier&lt;/a&gt; heruntergeladen werden kann.&lt;/p&gt;  &lt;p&gt;Öffnen Sie zunächst Visual Studio als Administrator. Admin-Berechtigung ist später für das Ausführen im Compute Emulator erforderlich. Legen Sie über den Menüpunkt &lt;em&gt;File / New / Project&lt;/em&gt; ein neues Projekt an. Es erscheint die Dialogbox aus Abbildung 1.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/4745.image_5F00_51504AB2.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/6404.image_5F00_thumb_5F00_3A41C976.png" width="242" height="170" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Abbildung 1: Anlegen eines neuen Cloud Service&lt;/p&gt;  &lt;p&gt;Wählen Sie als Projektvorlage &lt;em&gt;Cloud / Windows Azure Projekt&lt;/em&gt; und fügen Sie in folgender Eingabemaske dem Service eine neuen Web Role hinzu.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/4426.image_5F00_4D828015.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/3660.image_5F00_thumb_5F00_1DE46189.png" width="242" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Abbildung 2: Hinzufügen einer Web Role&lt;/p&gt;  &lt;p&gt;Visual Studio legt nun eine neue Solution an, in die die für den Cloud Service benötigten Elemente (ein Projekt für die Cloud Service Konfiguration und ein Projekt für die Web Role) hinzugefügt werden. Leider fügt Visual Studio auch einige Elemente hinzu, die eigentlich nicht benötigt werden bzw. zum Teil sogar dazu führen, dass der generierte Service zwar lokal im Compute Emulator, nicht aber ohne zusätzliche Konfiguration auf Windows Azure ausführbar ist. So finden sich in der Web.config beispielsweise Referenzen auf eine SqlExpress-Installation, die zwar lokal vorhanden ist, nicht aber in der Cloud, wo dieser Umstand beim Start der Anwendung zu einer Exception führt.&lt;/p&gt;  &lt;p&gt;Im Folgenden werden nun diese Elemente aus dem Cloud Service entfernt. Löschen Sie zunächst überflüssige Inhalte aus dem &amp;lt;asp:Content&amp;gt;-Element der Datei Default.aspx wie folgt:&lt;/p&gt;  &lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;asp:Content ID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;BodyContent&lt;/span&gt;&amp;quot; runat=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;server&lt;/span&gt;&amp;quot; ContentPlaceHolderID=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;MainContent&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&amp;lt;/asp:Content&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Löschen Sie nun auch überflüssige Inhalte aus der Datei site.master:&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;header&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;title&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;h1&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;        My ASP.NET Application
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;/h1&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;div &lt;span style="color: rgb(0, 0, 255);"&gt;class&lt;/span&gt;=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;clear hideSkiplink&lt;/span&gt;&amp;quot;&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;/div&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Abschließend löschen Sie nun auch überflüssige Inhalte aus der web.config:&lt;/p&gt;

&lt;pre style="padding: 5px; border: 1px solid rgb(206, 206, 206); width: 480px; overflow: auto; min-height: 40px; background-color: rgb(251, 251, 251);"&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;configuration&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;  &amp;lt;system.diagnostics&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    ...
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;  &amp;lt;/system.diagnostics&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;  &amp;lt;system.web&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;    &amp;lt;compilation debug=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;true&lt;/span&gt;&amp;quot; targetFramework=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;4.0&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;  &amp;lt;/system.web&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;  &amp;lt;system.webServer&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;    &amp;lt;modules runAllManagedModulesForAllRequests=&amp;quot;&lt;span style="color: rgb(139, 0, 0);"&gt;true&lt;/span&gt;&amp;quot; /&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;  &amp;lt;/system.webServer&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(255, 255, 255);"&gt;&amp;lt;/configuration&amp;gt;
&lt;/pre&gt;&lt;pre style="margin: 0em; width: 100%; font-family: consolas,&amp;quot;Courier New&amp;quot;,courier,monospace; font-size: 10px; background-color: rgb(240, 240, 240);"&gt;...
&lt;/pre&gt;&lt;/pre&gt;

&lt;p&gt;Nun können Sie über den Menüpunkt &lt;em&gt;Debug / Start Debugging&lt;/em&gt; einen Testlauf starten, der Ihnen dann folgende Oberfläche zeigen sollte&lt;/p&gt;

&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/1108.image_5F00_1514593D.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/7462.image_5F00_thumb_5F00_4F8F5911.png" width="242" height="145" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Damit ist die Erstellung der minimalen Cloud-Anwendung abgeschlossen.&lt;/p&gt;

&lt;p&gt;Weitere Informationen&lt;/p&gt;

&lt;ul&gt;
  &lt;li&gt;&lt;a href="http://hsirtl1.blob.core.windows.net/videos/Erstellung%20eines%20minimalen%20Azure%20Cloud%20Service.wmv"&gt;Video von der Erstellung des Cloud Service&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10249193" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/-NET/">.NET</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Windows Azure Dezember Update: Zahlreiche Neuerungen (Übersicht, Branding, Preise, Testangebote, Interoperabilität, ISO 27001 Zertifizierung, …)</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/12/13/windows-azure-dezember-update-zahlreiche-neuerungen-220-bersicht-branding-preise-testangebote-interoperabilit-228-t-iso-27001-zertifizierung.aspx</link><pubDate>Tue, 13 Dec 2011 09:46:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10247102</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10247102</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/12/13/windows-azure-dezember-update-zahlreiche-neuerungen-220-bersicht-branding-preise-testangebote-interoperabilit-228-t-iso-27001-zertifizierung.aspx#comments</comments><description>&lt;p&gt;Seit gestern ist das Dezember Update von Windows Azure produktiv. Dieses Update wartet mit einer Reihe wirklich toller Neuerungen auf, die ich im folgenden Zusammenfassen möchte:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Vereinfachtes Testangebot (mit Kostendeckelung)&lt;/li&gt;    &lt;li&gt;Verbesserte Abonnementverwaltung und Echtzeit-Einblick des Verbrauchs&lt;/li&gt;    &lt;li&gt;Neues SQL Azure Management Portal&lt;/li&gt;    &lt;li&gt;Erhöhte Maximalgröße von SQL Azure Datenbanken&lt;/li&gt;    &lt;li&gt;Verfügbarkeit von SQL Azure Federations&lt;/li&gt;    &lt;li&gt;ISO 27001 Zertifizierung der Windows Azure Kerndienste&lt;/li&gt;    &lt;li&gt;Windows Azure SDK für Node.js&lt;/li&gt;    &lt;li&gt;Limitierte Community Technology Preview der Apache Hadoop Distribution für Windows Azure&lt;/li&gt;    &lt;li&gt;Neue Werkzeuge für Open-Source-Technologien (Eclipse, Java, MongoDB, Solr/Lucene, Memcached)&lt;/li&gt;    &lt;li&gt;Neues Branding&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Vereinfachtes Testangebot (mit Kostendeckelung)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;In nur 3 einfachen Schritten können Sie sich jetzt schneller den je für Ihr kostenloses Trial Angebot anmelden. Und mit der neuen Kostenkontrolle dabei sicher gehen dass Sie niemals mehr als Ihr kostenloses inklusiv Kontingent nutzen.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Verbesserte Abonnementverwaltung und Echtzeit-Einblick des Verbrauchs&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Mit der verbesserten Abonnement Verwaltung können Sie jetzt zwischen Windows Azure Preispaketen wechseln oder dabei neue Abonnements anlegen zu müssen. Bestehende Abonnements können jetzt direkt über das Windows Azure Management Portal gelöscht werden und dort erhalten Sie auch minutengenauen Einblick in Ihren aktuellen Verbrauch. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Neues SQL Azure Management Portal&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ganz im Metro Stil gehalten vereinfacht das neue Portal das überwachen der SQL Azure Datenbanken, und ermöglicht einen detaillierten Einblick in Schemata, Query Pläne,&amp;#160; Indizes und Performance Statistiken.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/4555.image_5F00_0D3069A9.png"&gt;&lt;img style="display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-81-46-metablogapi/4075.image_5F00_thumb_5F00_031BC87E.png" width="242" height="178" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Erhöhte Maximalgröße von SQL Azure Datenbanken&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Die maximale Datenbankgröße einer SQL Azure Datenbank wurde nun von 50 auf 150 GB erhöht um den wachsenden Anforderungen nach mehr Speicherplatz zu genügen. Und während die Datenbankgröße steigt, bleibt der Preis für eine Datenbank der gleiche. Egal ob 50GB oder 150GB, der maximale Preis für eine SQL Azure Datenbank beträgt $ 499.95.Das bedeutet bei Nutzung einer 150GB Datenbank einen effektiven Preisnachlass von 67%. &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Verfügbarkeit von SQL Azure Federations&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Mit den neuen SQL Azure Federation Services skalieren Sie Ihre Datenbanken dank einer neuen Verteilungstechnik noch einfacher und effizienter. Ihre Datenbank skaliert grenzenlos anhand der Anforderungen Ihrer Applikation und ist dabei voll Mandantenfähigkeit.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;ISO 27001 Zertifizierung der Windows Azure Kerndienste&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Seit dem 29. November sind nun auch die Kerndienste von Windows Azure ISO/IEC 27001:2005 durch die BSI Gruppe zertifiziert und auf der &lt;a href="http://www.bsigroup.com/en/Assessment-and-certification-services/Client-directory/CertificateClient-Directory-Search-Results/?pg=1&amp;amp;licencenumber=IS+577753&amp;amp;searchkey=companyXeqXmicrosoft"&gt;Webseite&lt;/a&gt; einzusehen.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Windows Azure SDK für Node.js&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Windows Azure ist schon seit Beginn offen für viele Sprachen wie&amp;#160; PHP, Ruby und selbstverständlich auch .NET. Seit dem Dezember Release wird nun auch Node.js unterstützt. Ab sofort ist ein eigenes &lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/"&gt;Windows Azure SDK für Node.js&lt;/a&gt; verfügbar. Die Bibliotheken enthalten Möglichkeiten um auf Windows Azure Speicher zuzugreifen, egal ob als Blob, Tabelle oder Queue. Um den Start mit Node.js für Azure so einfach wie möglich zu machen wurden spezifische Tutorials, Beispiele und Templates auf &lt;a href="http://www.microsoft.com/windowsazure"&gt;http://www.microsoft.com/windowsazure&lt;/a&gt;&amp;#160; bereitgestellt. Weitere Informationen hierzu im &lt;a href="http://www.windowsazure.com/en-us/develop/nodejs/"&gt;Windows Azure Node.js Developer Center&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Limitierte Community Technology Preview der Apache Hadoop Distribution für Windows Azure&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Um die neuen Big Data Funktionalitäten auf Windows Azure zu unterstützen wurde eine limitierte CTP für Windows Azure Apache Hadoop veröffentlicht. Dieses Preview ermöglicht es einfach und schnell Hadoop Projekte auf Windows Azure zu betreiben. Da diese Preview nur einer begrenzten Zahl an Benutzern zu Verfügung steht müssen Sie sich dafür über diesen &lt;a href="http://connect.microsoft.com/SQLServer/Survey/Survey.aspx?SurveyID=13697"&gt;Link&lt;/a&gt; registrieren.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Neue Werkzeuge für Open-Source-Technologien&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Folgende Neuerungen gibt es für Entwickler, die Eclipse, Java, MongoDB, Solr/Lucene oder Memcached verwenden:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Überarbeitetes Plugin für Eclipse mit Java. Dieses ist zusammen mit dem &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh690953(v=VS.103).aspx"&gt;Windows Azure SDK für Java&lt;/a&gt; erhältlich. Weitere Informationen im &lt;a href="http://www.windowsazure.com/en-us/develop/java/"&gt;Windows Azure Java Developer Center&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Windows Azure Integration, Deployment-Paket, Dokumentation und Code-Beispiele für MongoDB. Weitere Informationen in einem Whitepaper zu &lt;a href="http://www.interoperabilitybridges.com/Azure/Getting_Started_Guide_Node_with_MongoDB.asp"&gt;Node.js mit Speicher auf MongoDB&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Eine Sammlung von Code-Tools und Konfigurations-Guidelines zum Einsatz von Solr auf Windows Azure. Weitere Informationen im Whitepaper &lt;a href="http://www.interoperabilitybridges.com/Azure/Getting_Started_Guide_Solr_Lucene.asp"&gt;Getting Started with Solr/Lucene on Windows Azure&lt;/a&gt;.&lt;/li&gt;    &lt;li&gt;Anleitungen, wie memcached auf Windows Azure aus nicht-.NET-Sprachen eingesetzt werden kann.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Neues Branding&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Ab sofort werden im Rahmen von Azure nur noch die Marken Windows Azure und SQL Azure verwendet. Cloud Services, die bislang unter der Marke AppFabric liefen, werden ab jetzt unter der Marke Windows Azure geführt (also z.B. “Windows Azure Service Bus”)&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/12/12/improved-developer-experience-interoperability-and-scalability-on-windows-azure.aspx"&gt;Blog der Produktgruppe zum Windows Azure Dezember Release&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10247102" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Interoperabilit_26002300_228_3B00_t/">Interoperabilit&amp;#228;t</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SDKs+und+Tools/">SDKs und Tools</category></item><item><title>Veranstaltungshinweis auf virtuelles Event “Learn Windows Azure” mit Scott Guthrie am 13.12.2011</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/12/08/veranstaltungshinweis-auf-virtuelles-event-learn-windows-azure-mit-scott-guthrie-am-13-12-2011.aspx</link><pubDate>Thu, 08 Dec 2011 08:26:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10245450</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10245450</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/12/08/veranstaltungshinweis-auf-virtuelles-event-learn-windows-azure-mit-scott-guthrie-am-13-12-2011.aspx#comments</comments><description>&lt;p&gt;Am 13.12.2011 findet in Redmond ein Training-Event zum Thema “Learn Windows Azure” statt. Die gute Nachricht für alle, die sich an diesem Dienstag nicht in Redmond aufhalten: das Gaze wird vollständig auf &lt;a href="http://channel9.msdn.com/events/windowsazure/learn"&gt;Channel 9&lt;/a&gt; gestreamt und ist somit allen Interessierten zugänglich.&lt;/p&gt;  &lt;p&gt;Sprecher werden sein (unter anderem):&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/"&gt;Scott Guthrie&lt;/a&gt;, Corporate Vice President, Azure App Platform, Microsoft&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/exec/techfellow/Campbell/default.mspx"&gt;Dave Campbell&lt;/a&gt;, Microsoft Technical Fellow, Server and Tools Business, Microsoft&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/presspass/exec/techfellow/Russinovich/default.mspx"&gt;Mark Russinovich&lt;/a&gt;, Microsoft Technical Fellow, Windows Azure Group, Microsoft&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Also sehr prominent besetzt.Teilnahme ist kostenlos. Die Agenda sieht wie folgt aus (Vortragszeiten hier in deutscher Zeit):&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="520"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;th&gt;Uhrzeit&lt;/th&gt;        &lt;th&gt;Vortrag&lt;/th&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td nowrap="nowrap"&gt;18:00 - 19:30&lt;/td&gt;        &lt;td&gt;Getting Started with Windows Azure&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;19:45 - 21:00&lt;/td&gt;        &lt;td&gt;Cloud Data &amp;amp; Storage&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;21:15 - 22:15&lt;/td&gt;        &lt;td&gt;Channel9 Cloud Cover Show Live&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;22:30 - 23:30&lt;/td&gt;        &lt;td&gt;Developing Windows Azure Applications with Visual Studio&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;23:45 - 00:45&lt;/td&gt;        &lt;td&gt;Building Scalable Cloud Applications&lt;/td&gt;     &lt;/tr&gt;      &lt;tr&gt;       &lt;td&gt;01:00 - 02:00&lt;/td&gt;        &lt;td&gt;Expert Panel Q&amp;amp;A featuring Scott Guthrie, Dave Campbell und Mark Russinovich&lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;Anmeldemöglichkeit besteht unter folgendem Link: &lt;a title="http://www.learnwindowsazureevent.com/" href="http://www.learnwindowsazureevent.com/"&gt;http://www.learnwindowsazureevent.com/&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://weblogs.asp.net/scottgu/archive/2011/12/07/learn-windows-azure-next-tuesday-dec-13th.aspx"&gt;Scott Gu’s Blog&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.learnwindowsazureevent.com/"&gt;Event-Seite zu “Learn Windows Azure”&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://channel9.msdn.com/events/windowsazure/learn"&gt;Channel-9-Seite zum Event&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://media.ch9.ms/windowsazure/events/LearnWindowsAzure.ics"&gt;Kalender-Eintrag zum Event&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10245450" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Veranstaltungen/">Veranstaltungen</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Platform/">Windows Azure Platform</category></item><item><title>Neues Windows Azure Toolkit für Social Games (Version 1.1) verfügbar</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/11/17/neues-windows-azure-toolkit-f-252-r-social-games-version-1-1-verf-252-gbar.aspx</link><pubDate>Thu, 17 Nov 2011 11:47:14 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10238099</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10238099</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/11/17/neues-windows-azure-toolkit-f-252-r-social-games-version-1-1-verf-252-gbar.aspx#comments</comments><description>&lt;p&gt;Für alle Spiele-Entwickler, die sich bisher noch nicht an das &lt;a href="http://watgames.codeplex.com/"&gt;Windows Azure Toolkit für Social Games&lt;/a&gt; gewagt haben, da dieses bisher recht stark mit der Demo-Anwendung Tankster verwoben war (sprich: Spiel und Framework waren nicht ausreichend voneinander getrennt), gibt es jetzt eine sehr gute Nachricht: das &lt;a href="http://watgames.codeplex.com/"&gt;Windows Azure Toolkit für Social Games&lt;/a&gt; ist in Version 1.1 erschienen.&lt;/p&gt;  &lt;p&gt;Die erste Version Des Toolkits fokussierte sehr stark auf die Beispielanwendung &lt;a href="http://www.tankster.net/"&gt;Tankster&lt;/a&gt;, d.h. Framework und Beispielanwendung waren sehr eng miteinander verzahnt. In Version 1.1 sind diese beiden Elemente voneinander getrennt. Damit wird es deutlich leichter möglich, sich in das Social Gaming Framework einzuarbeiten.&lt;/p&gt;  &lt;p&gt;Kernfunktionalitäten des Toolkits sind:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Beispiel-Spiele Tic-Tac-Toe, Vier Gewinnt, Tankster&lt;/li&gt;    &lt;li&gt;Authentifizierung via &lt;a href="http://www.microsoft.com/windowsazure/features/accesscontrol/"&gt;Access Control Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;JavaScript Tests&lt;/li&gt;    &lt;li&gt;Spielstand-Verwaltung&lt;/li&gt;    &lt;li&gt;User Profile&lt;/li&gt;    &lt;li&gt;Einladungen und Benachrichtigungen&lt;/li&gt;    &lt;li&gt;Tests für Client- und Server-Code&lt;/li&gt;    &lt;li&gt;Wiederverwendbare JavaScript Bibliotheken&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://watgames.codeplex.com/"&gt;Windows Azure Toolkit für Social Games (Version 1.1)&lt;/a&gt; &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10238099" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Platform/">Windows Azure Platform</category></item><item><title>Neues Windows Azure SDK (November 2011) und Windows Azure HPC Scheduler SDK verfügbar</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/11/15/neues-windows-azure-sdk-november-2011-und-windows-azure-hpc-scheduler-sdk-verf-252-gbar.aspx</link><pubDate>Tue, 15 Nov 2011 09:14:49 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10237184</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>3</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10237184</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/11/15/neues-windows-azure-sdk-november-2011-und-windows-azure-hpc-scheduler-sdk-verf-252-gbar.aspx#comments</comments><description>&lt;p&gt;Die Windows Azure Produktgruppe hat heute Nacht einige Neuerungen für Windows Azure Entwickler bereitgestellt. Die Highlights sind:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Ein neues &lt;strong&gt;Windows Azure SDK (November 2011)&lt;/strong&gt;      &lt;br /&gt;Dieses neue Software Development Kit enthält eine Reihe von Werkzeugen für Visual Studio 2010, die einige häufige Arbeitsschritte bei Entwicklung, Deployment und Management von Azure-Services deutlich erleichtern. Das Windows Azure SDK kann &lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureToolsVS2010&amp;amp;WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;hier&lt;/a&gt; heruntergeladen werden.&lt;/li&gt;    &lt;li&gt;Ein &lt;strong&gt;Windows Azure HPC Scheduler SDK&lt;/strong&gt;      &lt;br /&gt;Dieses SDK arbeitet mit dem Windows Azure SDK Hand in Hand und unterstützt bei der Entwicklung von High Performance Computing (HPC) Anwendungen, die massiv Gebrauch von großen Datenmengen und Parallelisierung machen. Das Windows Azure HPC Scheduler SDK kann &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh545593.aspx?WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;hier&lt;/a&gt; heruntergeladen werden.&lt;/li&gt;    &lt;li&gt;Ein aktualisiertes &lt;strong&gt;Windows Azure Platform Training Kit&lt;/strong&gt;      &lt;br /&gt;Dieses Training Kit enthält Hands-on-Labs, Demos und Präsentationen, die Schritt für Schritt durch die einzelnen Elemente der Windows Azure Platform führen. Das Windows Azure Platform Training Kit kann &lt;a href="http://go.microsoft.com/fwlink/?LinkID=130354&amp;amp;WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;hier&lt;/a&gt; heruntergeladen werden.&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Das Windows Azure SDK (und die Tools für Visual Studio) enthält unter anderem folgende Neuerungen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Vereinfachtes Publishing von Azure-basierten Anwendungen direkt aus Visual Studio.&lt;/li&gt;    &lt;li&gt;Mehrere Publishing Profile, in denen Build- und Cloud-Konfigurationen hinterlegt werden können.&lt;/li&gt;    &lt;li&gt;Unterstützung von Team Build (zur Delegierung des Build-Prozesses auf dedizierte Build Maschinen)&lt;/li&gt;    &lt;li&gt;Verbesserte In-Place Updates (siehe auch &lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/19/announcing-improved-in-place-updates.aspx"&gt;diesen Blogpost&lt;/a&gt;)&lt;/li&gt;    &lt;li&gt;Verbesserter Publishing Wizard&lt;/li&gt;    &lt;li&gt;Automatisierte Konfiguration von Credentials (keine manuelle Erstellung von Zertifikaten mehr erforderlich)&lt;/li&gt;    &lt;li&gt;Verwaltung mehrerer Subscriptions&lt;/li&gt;    &lt;li&gt;Erstellung neuer Hosted Services direkt aus Visual Studio heraus&lt;/li&gt;    &lt;li&gt;Erstellung von Storage Accounts direkt aus Visual Studio heraus&lt;/li&gt;    &lt;li&gt;Verbesserte Einrichtung von Remote Desktop Zugängen zu Hosted Services&lt;/li&gt;    &lt;li&gt;Erweitertes Azure Activity Log zum Nachverfolgen von Deployment-Vorgängen&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/11/14/updated-windows-azure-sdk-amp-windows-azure-hpc-scheduler-sdk.aspx"&gt;Original-Post der Windows Azure Produktgruppe&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureToolsVS2010&amp;amp;WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;Windows Azure SDK (November 2011)&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh545593.aspx?WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;Windows Azure HPC Scheduler SDK&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://go.microsoft.com/fwlink/?LinkID=130354&amp;amp;WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;Windows Azure Platform Training Kit&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10237184" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Platform/">Windows Azure Platform</category></item><item><title>Neues auf Channel 9: Windows Phone Push Notifications und Windows Azure</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/11/08/neues-auf-channel-9-windows-phone-push-notifications-und-windows-azure.aspx</link><pubDate>Tue, 08 Nov 2011 09:23:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10234924</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>2</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10234924</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/11/08/neues-auf-channel-9-windows-phone-push-notifications-und-windows-azure.aspx#comments</comments><description>&lt;p&gt;In &lt;a href="http://channel9.msdn.com/posts/Windows-Phone-Push-Notifications-and-Windows-Azure"&gt;dieser Ausgabe von Channel 9&lt;/a&gt; zeigt mein Kollege &lt;a href="http://www.wadewegner.com/"&gt;Wade Wegner&lt;/a&gt;, wie in weniger als 2 Minuten mit Hilfe dreier NuGet Packages ein neues Windows Phone 7.1 Projekt erstellt werden kann, das Push Notifications nutzen kann, die in einer auf &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure&lt;/a&gt; betriebenen ASP.NET MVC 3 Anwendung erzeugt werden.&lt;/p&gt;  &lt;p&gt;&lt;iframe style="width: 512px; height: 288px;" src="http://channel9.msdn.com/posts/Windows-Phone-Push-Notifications-and-Windows-Azure/player?w=512&amp;amp;h=288" frameborder="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;Zur Implementierung werden die folgenden NuGet-Packages benötigt:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Phone.Notifications.BasePage&lt;/li&gt;    &lt;li&gt;CloudServices.Notifications&lt;/li&gt;    &lt;li&gt;WindowsPhone.Notifications.ManagementUI.Sample&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/Shows/Cloud+Cover/Episode-64-Adding-Push-Notifications-to-Windows-Phone-Apps"&gt;Channel 9, Episode 64: Adding Push Notifications to Windows Phone Apps&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://watwp.codeplex.com/"&gt;Windows Azure Toolkit for Windows Phone&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10234924" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Phone/">Windows Phone</category></item><item><title>Neues auf CodePlex: BlobShare–Sicherer Dokumentenaustausch über Windows Azure Blob Storage</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/10/24/neues-auf-codeplex-blobshare-sicherer-dokumentenaustausch-252-ber-windows-azure-blob-storage.aspx</link><pubDate>Mon, 24 Oct 2011 14:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10229257</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10229257</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/10/24/neues-auf-codeplex-blobshare-sicherer-dokumentenaustausch-252-ber-windows-azure-blob-storage.aspx#comments</comments><description>&lt;p&gt;Heute m&amp;ouml;chte ich auf eine kleine, aber sehr coole Anwendung hinweisen, die meine Kollegen aus Redmond (unter anderem &lt;a href="http://www.codeplex.com/site/users/view/wwegner"&gt;Wade Wegener&lt;/a&gt;) auf &lt;a href="http://www.codeplex.com/"&gt;Codeplex&lt;/a&gt; ver&amp;ouml;ffentlicht haben: &lt;a href="http://blobshare.codeplex.com/"&gt;BlobShare&lt;/a&gt;. Mit dieser Anwendung ist es m&amp;ouml;glich, auf sichere Art und Weise Dokumente &amp;uuml;ber &lt;a href="http://www.microsoft.com/windowsazure/features/storage/"&gt;Windows Azure Blob Storage&lt;/a&gt; auszutauschen. Dabei werden Zugriffe &amp;uuml;ber den &lt;a href="http://www.microsoft.com/windowsazure/features/accesscontrol/"&gt;Access Control Service&lt;/a&gt; abgesichert, d.h. nur vorher von einem Administrator konfigurierte Benutzer k&amp;ouml;nnen sich nach einer entsprechenden Authentifizierung anmelden, um Dokumente hochzuladen, zu &amp;auml;ndern oder abzurufen. Dabei werden verschiedene Authentifizierungsmechanismen unterst&amp;uuml;tzt. Benutzer k&amp;ouml;nnen ihnen vertraute Dienste wie Windows Live ID, Facebook ID, Google ID oder auch Active Directory zur Authentifizierung nutzen.&lt;/p&gt;
&lt;p&gt;Die Architektur stellt sich wie folgt dar:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://download.codeplex.com/Download?ProjectName=blobshare&amp;amp;DownloadId=295231"&gt;&lt;img style="border: 0px currentcolor; background-image: none;" title="SolutionArchitecture" border="0" alt="SolutionArchitecture" src="http://download.codeplex.com/Download?ProjectName=blobshare&amp;amp;DownloadId=295232" width="566" height="273" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Die Nutzung gestaltet sich demnach wie folgt:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Ein Administrator legt die Benutzer des BlobShares fest, die Benutzerdaten werden in &lt;a href="http://www.microsoft.com/windowsazure/features/database/"&gt;SQL Azure&lt;/a&gt; abgelegt.&lt;/li&gt;
&lt;li&gt;Ein Benutzer authentifiziert sich &amp;uuml;ber den &lt;a href="http://www.microsoft.com/windowsazure/features/accesscontrol/"&gt;Access Control Service&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Nach erfolgreicher Authentifizierung kann er dann Dokumente im zugeh&amp;ouml;rigen &lt;a href="http://www.microsoft.com/windowsazure/features/storage/"&gt;Blob-Storage&lt;/a&gt; ablegen, &amp;auml;ndern und abrufen.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zur Nutzung in eigenen Szenarien wird ein Windows Azure Account ben&amp;ouml;tigt. F&amp;uuml;r einen tempor&amp;auml;ren Einsatz empfiehlt sich der kostenfreie &lt;a href="http://windowsazurepass.com/?campid=C82EA91A-2C4A-E011-B3BB-001F29C6FB82&amp;amp;WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;Azurepass&lt;/a&gt;. Dieser erlaubt eine kostenfreie, unverbindliche Nutzung von Azure &amp;uuml;ber einen Zeitraum von 30 Tagen.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://blobshare.codeplex.com/"&gt;BlobShare auf CodePlex&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://windowsazurepass.com/?campid=C82EA91A-2C4A-E011-B3BB-001F29C6FB82&amp;amp;WT.mc_id=otc-f-de-mba-azure-evanghs"&gt;Azurepass zur kostenfreien Nutzung von Azure f&amp;uuml;r 30 Tage&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://blogs.msdn.com/b/vbertocci/archive/2011/10/31/blobshare-sample-acs-protected-file-sharing.aspx"&gt;http://blogs.msdn.com/b/vbertocci/archive/2011/10/31/blobshare-sample-acs-protected-file-sharing.aspx&lt;/a&gt;&lt;a href="http://sigops.org/sosp/sosp11/current/2011-Cascais/printable/11-calder.pdf"&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10229257" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Access+Control+Service/">Access Control Service</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Blob+Storage/">Blob Storage</category></item><item><title>Neues auf Channel 9: Windows Azure Marketplace mit Christian Liensberger</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/10/23/neues-auf-channel-9-windows-azure-marketplace-mit-christian-liensberger.aspx</link><pubDate>Sun, 23 Oct 2011 12:46:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10229029</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10229029</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/10/23/neues-auf-channel-9-windows-azure-marketplace-mit-christian-liensberger.aspx#comments</comments><description>&lt;p&gt;In der &lt;a href="http://channel9.msdn.com/Shows/Cloud+Cover/Episode-62-Marketplace-with-Christian-Liensberger"&gt;neuesten Ausgabe von Channel 9&lt;/a&gt; gibt &lt;a href="http://channel9.msdn.com/Niners/littleguru/"&gt;Christian Liensberger&lt;/a&gt;, Program Manager für den Windows Azure Marketplace einen Überblick über ebendiesen Dienst der Windows Azure Platform. Zusammen mit &lt;a href="http://blog.smarx.com/"&gt;Steve Marx&lt;/a&gt; und &lt;a href="http://www.wadewegner.com/"&gt;Wade Wegner&lt;/a&gt; spricht er über Daten und Anwendungen im &lt;a href="http://www.microsoft.com/windowsazure/features/marketplace/"&gt;Windows Azure Marketplace&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Weitere Nachrichten in dieser Channel-9-Folge&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/19/announcing-improved-in-place-updates.aspx"&gt;Verbessertes In-place Update&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsazure/learn/real-world-guidance/field-notes/calling-azure-storage-api-async/"&gt;Field Note: Asynchroner Aufruf der Windows Azure Storage API&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/windowsazure/archive/2011/10/07/windows-azure-marketplace-now-available-in-26-countries-and-support-17-currencies.aspx"&gt;Verfügbarkeit des Windows Azure Marketplace in 26 Ländern&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://channel9.msdn.com/Tags/windows+azure"&gt;Windows Azure auf Channel 9&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsazure/features/marketplace/"&gt;Windows Azure Marketplace&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10229029" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Azure/">Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Marketplace/">Windows Azure Marketplace</category></item><item><title>Blog-Serie: Erstellung eines Android-Clients, der als Backend einen REST-Service aus Windows Azure nutzt</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/10/19/blog-serie-erstellung-eines-android-clients-der-als-backend-einen-rest-service-aus-windows-azure-nutzt.aspx</link><pubDate>Wed, 19 Oct 2011 08:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226812</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10226812</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/10/19/blog-serie-erstellung-eines-android-clients-der-als-backend-einen-rest-service-aus-windows-azure-nutzt.aspx#comments</comments><description>&lt;p&gt;Mein Kollege, &lt;a href="http://blogs.msdn.com/b/brunoterkaly/"&gt;Bruno Terkaly&lt;/a&gt;, hat eine tolle Blog-Serie verfasst, in der er auf die Erstellung eines Android-Clients eingeht, der auf einen REST-Service aus Windows Azure zugreift. Die Blog-Serie besteht aktuell aus folgenden acht Teilen:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Teil 1: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/09/27/supporting-billions-of-entities-rows-for-mobile-android-series-part-1-why-scale-matters.aspx"&gt;Warum Skalierung den Unterschied macht&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 2: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/09/27/supporting-billions-of-entities-rows-for-mobile-android-series-part-2-what-are-some-high-level-cloud-offerings.aspx"&gt;Was sind einige High-Level-Cloud-Angebote?&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 3: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/09/28/supporting-billions-of-entities-rows-for-mobile-android-series-part-3-architecture-and-data-options.aspx"&gt;Alternativen f&amp;uuml;r Daten und Architektur&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 4: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/09/28/supporting-billions-of-entities-rows-for-mobile-android-series-part-4-building-a-cloud-based-restful-service-for-our-android-ios-and-windows-phone-7-clients.aspx"&gt;Erstellung Cloud-basierter RESTful Services f&amp;uuml;r unsere Android, iOS und Windows Phone Clients&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 5: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/10/05/supporting-billions-of-entities-rows-for-mobile-android-series-part-5-using-the-portal-and-setting-up-your-azure-account-microsoft-cloud.aspx"&gt;Aufsetzen eines Azure Accounts mit Hilfe des Portals&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 6: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/10/05/supporting-billions-of-entities-rows-for-mobile-android-series-part-6-reading-and-writing-to-windows-azure-cloud-based-tables-using-standard-http-and-fiddler.aspx"&gt;Lesen und Schreiben nach Windows Azure Tables &amp;uuml;ber Standard-HTTP und Fiddler&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 7: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/10/10/supporting-billions-of-entities-rows-for-mobile-android-series-part-8-writing-an-android-client-to-consume-restful-data-from-azure-microsoft-cloud.aspx"&gt;Migration des RESTful Services nach Windows Azure&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Teil 8: &lt;a href="http://blogs.msdn.com/b/brunoterkaly/archive/2011/10/10/supporting-billions-of-entities-rows-for-mobile-android-series-part-8-writing-an-android-client-to-consume-restful-data-from-azure-microsoft-cloud.aspx"&gt;Erstellung eines Android-Clients, der auf den RESTful Service in Azure zugreift&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoft.com/windowsazure/sdk/"&gt;Download des Windows Azure SDKs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226812" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Warum Feedback an MSDN/TechNet wichtig ist…</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/10/18/warum-feedback-an-msdn-technet-wichtig-ist.aspx</link><pubDate>Tue, 18 Oct 2011 15:01:56 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10227000</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10227000</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/10/18/warum-feedback-an-msdn-technet-wichtig-ist.aspx#comments</comments><description>&lt;p&gt;“Schon wieder ein Feedback-Formular, das ich ausfüllen soll?…” – das denke sicher nicht nur ich, wenn ich am Morgen mein E-Mail Postfach einsehe. Und tatsächlich nehmen solche Anfragen zuweilen überhand. Da kann es schon mal passieren, dass man eine solche einfach löscht.&lt;/p&gt;  &lt;p&gt;Allerdings: &lt;strong&gt;Feedback ist wichtig, wird gehört und kann Dinge verändern!&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Mein Kollege, &lt;a href="mailto:lars.schmoldt@microsoft.com?subject=Ich%20habe%20Fragen%20zu%20TechNet"&gt;Lars Schmoldt&lt;/a&gt;, schreibt in seinem &lt;a href="http://technet.microsoft.com/de-de/hh507564"&gt;Beitrag auf TechNet&lt;/a&gt;, warum es sinnvoll ist, MSDN und TechNet Feedback zu geben:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Feedback hilft uns, zielgerichtet und bedarfsorientiert Informationen bereitzustellen&lt;/li&gt;    &lt;li&gt;Wir können Weiterbildungsangebote gezielt auf Anforderungen unserer Zielgruppen anbieten&lt;/li&gt;    &lt;li&gt;Auf Basis der Rückmeldungen können wir Informationen besser zugreifbar und auffindbar machen&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Alles weitere in &lt;a href="http://technet.microsoft.com/de-de/hh507564"&gt;Lars’ Artikel&lt;/a&gt;. Bei Fragen hierzu bzw. zu TechNet kontaktieren Sie ihn einfach per &lt;a href="mailto:lars.schmoldt@microsoft.com?subject=Ich%20habe%20Fragen%20zu%20TechNet"&gt;E-Mail&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10227000" width="1" height="1"&gt;</description></item><item><title>Finale Preview Version des SQL Azure Reporting Service verfügbar</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/10/17/finale-preview-version-des-sql-azure-reporting-service-verf-252-gbar.aspx</link><pubDate>Mon, 17 Oct 2011 09:14:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226340</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10226340</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/10/17/finale-preview-version-des-sql-azure-reporting-service-verf-252-gbar.aspx#comments</comments><description>&lt;p&gt;Die SQL Azure Gruppe hat die finale Community Technology Preview (CTP) Version des SQL Azure Reporting Service veröffentlicht. Diese Preview ist ab sofort verfügbar und über das &lt;a href="http://windows.azure.com/"&gt;Windows Azure Management Portal&lt;/a&gt; ohne weiteren Registrierungsprozess verfügbar. Alle bestehenden SQL Azure Abonnenten können diese finale Preview nutzen.&lt;/p&gt;  &lt;p&gt;Ebenso verfügbar ist die finale CTP Version des SQL Azure Data Sync Service. Beide Services werden demnächst kommerziell verfügbar. Bis dahin können sich auf Basis von Anwenderfeedbacks (also fleißig Rückmeldung geben!) noch kleinere Änderungen ergeben.&lt;/p&gt;  &lt;p&gt;Unter &lt;a href="http://www.microsoft.com/windowsazure/features/database/"&gt;http://www.microsoft.com/windowsazure/features/database/&lt;/a&gt; gibt es weitere Informationen zu den Services sowie eine aktualisierte FAQ-Liste.&lt;/p&gt;  &lt;p&gt;Zu Nutzung dieses SQL Azure Reporting Release sind folgende Schritte erforderlich:&lt;/p&gt;  &lt;ol&gt;   &lt;li&gt;Falls noch nicht geschehen, Anlegen eines Windows Azure Accounts z.B. unter &lt;a title="http://www.microsoft.com/windowsazure/free-trial/" href="http://www.microsoft.com/windowsazure/free-trial/"&gt;http://www.microsoft.com/windowsazure/free-trial/&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Einloggen beim &lt;a href="http://windows.azure.com/"&gt;Windows Azure Portal&lt;/a&gt;. Auf der linken Navigationsleiste den Punkt “Reporting” (bzw. deutsch: “Berichterstellung”) anklicken. Dort führt ein Wizard durch das Anlegen eines neuen Reporting Servers.&lt;/li&gt;    &lt;li&gt;Deployment neuer Reports auf den neuen Server.&lt;/li&gt; &lt;/ol&gt;  &lt;p&gt;&lt;strong&gt;Weitere Ressourcen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://windows.azure.com/"&gt;Windows Azure Portal&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsazure/features/database/"&gt;Informationen zu SQL Azure&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226340" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure+Reporting/">SQL Azure Reporting</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure+Data+Sync/">SQL Azure Data Sync</category></item><item><title>Neues Windows Azure Platform Training Kit–September Update</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/09/26/neues-windows-azure-platform-training-kit-september-update.aspx</link><pubDate>Mon, 26 Sep 2011 07:58:18 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10216504</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10216504</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/09/26/neues-windows-azure-platform-training-kit-september-update.aspx#comments</comments><description>&lt;p&gt;Im Microsoft Download Center steht ein neues &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=8396"&gt;Windows Azure Platform Training Kit&lt;/a&gt; zum Herunterladen bereit. Es handelt sich um das &lt;a href="http://www.microsoft.com/download/en/confirmation.aspx?id=8396"&gt;September Update&lt;/a&gt;, welches unter anderem folgende Neuerungen enthält:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Neues Hands-on-Lab zum Service Bus Messaging&lt;/li&gt;    &lt;li&gt;Aktualisierte Labs und Demos zum neuen &lt;a href="http://www.microsoft.com/windowsazure/sdk/"&gt;Windows Azure SDK &amp;amp; Tools 1.5&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Aktualisierte Labs und Demos zum neuen &lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27421"&gt;AppFabric SDK 1.5&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;Aktualisierter Überblick zum Windows Azure Marketplace for Data&lt;/li&gt;    &lt;li&gt;Mehrere kleinere Korrekturen zu den Inhalten&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;strong&gt;Weitere Informationen&lt;/strong&gt;&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://www.microsoft.com/windowsazure/sdk/"&gt;Windows Azure SDK &amp;amp; Tools 1.5&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://www.microsoft.com/download/en/details.aspx?displaylang=en&amp;amp;id=27421"&gt;Windows Azure AppFabric SDK 1.5&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/hsirtl/p/sdks_und_tools.aspx"&gt;Weitere SDKs und Tools zu Windows Azure&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10216504" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Platform/">Windows Azure Platform</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SDKs+und+Tools/">SDKs und Tools</category></item><item><title>Hilfreiche Ressourcen zu Windows Azure Services zusammengestellt von Alik Levin</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/09/23/hilfreiche-ressourcen-zu-windows-azure-services-zusammengestellt-von-alik-levin.aspx</link><pubDate>Fri, 23 Sep 2011 08:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10214622</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10214622</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/09/23/hilfreiche-ressourcen-zu-windows-azure-services-zusammengestellt-von-alik-levin.aspx#comments</comments><description>&lt;p&gt;Mein Kollege &lt;a href="http://blogs.msdn.com/alikl/ProfileUrlRedirect.ashx"&gt;Alik Levin&lt;/a&gt; hat großartige Arbeit geleistet, indem er auf &lt;a href="http://blogs.msdn.com/alikl"&gt;seinem Blog&lt;/a&gt; zahlreiche, hilfreiche Online-Ressourcen zu verschiedenen Windows Azure Ressourcen zusammengestellt hat. Diese geben für viele reale Entwicklungsszenarien schnelle Hilfestellung. Zu den Ressourcen zählen…&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;How-To-Guides&lt;/li&gt;    &lt;li&gt;Slides&lt;/li&gt;    &lt;li&gt;Videos&lt;/li&gt;    &lt;li&gt;Troubleshooting-Hilfestellungen&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Die Links zu seinen Blog-Einträgen:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/alikl/archive/2011/09/13/windows-azure-resources-for-under-fire-scenarios.aspx"&gt;Windows Azure Resources For Under Fire Scenarios&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/alikl/archive/2011/09/14/sql-azure-resources-for-under-fire-scenarios.aspx"&gt;SQL Azure Resources For Under Fire Scenarios&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/alikl/archive/2011/09/16/windows-azure-acs-resources-for-under-fire-scenarios.aspx"&gt;Windows Azure ACS Resources For Under Fire Scenarios&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/alikl/archive/2011/09/15/windows-azure-service-bus-resources-for-under-fire-scenarios.aspx"&gt;Windows Azure Service Bus Resources For Under Fire Scenarios&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/alikl/archive/2011/09/19/windows-azure-appfabric-caching-under-fire-scenarios.aspx"&gt;Windows Azure AppFabric Caching Under Fire Scenarios&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Ich war so frei, und habe einige seiner Links in &lt;a href="http://blogs.msdn.com/b/hsirtl/p/videos.aspx"&gt;meine eigene Video-Liste&lt;/a&gt; aufgenommen. Hier die Links:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/hsirtl/p/videos.aspx#How-to-Guides_zu_Windows_Azure"&gt;How-to-Guides zu Windows Azure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/hsirtl/p/videos.aspx#How-to-Guides_zu_SQL_Azure"&gt;How-to-Guides zu SQL Azure&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/hsirtl/p/videos.aspx#How-to-Guides_zum_Access_Control_Service"&gt;How-to-Guides zum Access Control Service&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/hsirtl/p/videos.aspx#How-to-Guides_zum_Service_Bus"&gt;How-to-Guides zum Service Bus&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/hsirtl/p/videos.aspx#How-to-Guides_zum_AppFabric_Caching_Service"&gt;How-to-Guides zum AppFabric Caching Service&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214622" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/SQL+Azure/">SQL Azure</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Platform/">Windows Azure Platform</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+AppFabric/">Windows Azure AppFabric</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Access+Control+Service/">Access Control Service</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Service+Bus/">Service Bus</category><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/AppFabric+Caching/">AppFabric Caching</category></item><item><title>Ressourcen zum Private Cloud Computing mit der Microsoft Plattform</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/09/22/private-cloud-computing-mit-der-microsoft-plattform.aspx</link><pubDate>Thu, 22 Sep 2011 14:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10214672</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>1</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10214672</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/09/22/private-cloud-computing-mit-der-microsoft-plattform.aspx#comments</comments><description>&lt;p&gt;Die Welt lebt nicht nur von der &amp;ldquo;Public Cloud&amp;rdquo;, die Microsoft ja erfolgreich mit der &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure Platform&lt;/a&gt; auf der PaaS-Ebene und &lt;a href="http://www.microsoft.com/en-us/office365/online-software.aspx"&gt;Office 365&lt;/a&gt; auf der SaaS-Ebene anbietet. Der Aufbau einer &amp;ldquo;Private-Cloud&amp;rdquo;-Umgebung ist auf Basis der Microsoft Plattform ebenfalls m&amp;ouml;glich. Hierzu gibt es eine Vielzahl an Online-Ressourcen. Die wichtigsten hat mein Kollege Lars Schmoldt zusammengestellt:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Weiterbildungsangebote&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://www.microsoftvirtualacademy.com/Home.aspx?ocid=otc-n-de-jtc--ite"&gt;Microsoft Virtual Academy&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/de-de/cloud?ocid=otc-n-de-jtc--ite"&gt;TechCenter Cloud&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/de-de/cloud/erste-schritte-mit-der-private-cloud?ocid=otc-n-de-jtc--ite"&gt;Erste Schritte mit der Private Cloud&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Downloads&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/dd459137.aspx?ocid=otc-n-de-jtc--EVAL_WS2008R2SP1"&gt;Windows Server 2008 R2 with SP1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/dd776191.aspx?ocid=otc-n-de-jtc--EVAL_HVS2008R2SP1"&gt;Hyper-V Server 2008 R2 SP1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/cc793138.aspx?ocid=otc-n-de-jtc--EVAL_SCVMM2008R2SP1"&gt;System Center Virtual Machine Manager 2008 R2 SP1&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/gg678609.aspx?ocid=otc-n-de-jtc--EVAL_SCVMM2012RC"&gt;System Center Virtual Machine Manager 2012 RC&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/bb738014.aspx?ocid=otc-n-de-jtc--EVAL_SCOM2007R2"&gt;System Center Operations Manager 2007 R2&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/bb736730.aspx?ocid=otc-n-de-jtc--EVAL_SCCM2007R3"&gt;System Center Configuration Manager 2007 R3&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="http://technet.microsoft.com/evalcenter/ff657840.aspx?ocid=otc-n-de-jtc--EVAL_SCCM2012BETA2"&gt;System Center Configuration Manager 2012 Beta 2&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Die Links finden sich auch auf meiner Sammlung an &lt;a href="http://blogs.msdn.com/b/hsirtl/p/webressourcen.aspx"&gt;Web-Ressourcen rund um Cloud Computing&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10214672" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Private+Cloud/">Private Cloud</category></item><item><title>Nachlese zur BUILD-Konferenz: Cloud- und Windows-Azure-relevante Vorträge (Videos und Folien zum Download)</title><link>http://blogs.msdn.com/b/hsirtl/archive/2011/09/21/nachlese-zur-build-konferenz-cloud-und-windows-azure-relevante-vortr-228-ge-videos-und-folien-zum-download.aspx</link><pubDate>Wed, 21 Sep 2011 07:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10213575</guid><dc:creator>Holger Sirtl</dc:creator><slash:comments>0</slash:comments><wfw:commentRss>http://blogs.msdn.com/b/hsirtl/rsscomments.aspx?WeblogPostID=10213575</wfw:commentRss><comments>http://blogs.msdn.com/b/hsirtl/archive/2011/09/21/nachlese-zur-build-konferenz-cloud-und-windows-azure-relevante-vortr-228-ge-videos-und-folien-zum-download.aspx#comments</comments><description>&lt;p&gt;Die &lt;a href="http://www.buildwindows.com/"&gt;Build-Konferenz&lt;/a&gt; letzter Woche brachte neben vielen Sessions zu Windows 8 auch eine gro&amp;szlig;e Zahl an Vortr&amp;auml;gen rund um die Themen Cloud und Windows Azure Platform (zum Teil in Kombination mit Windows 8. Folgende Tabelle zeigt alle Sessions mit Bezug zu den genannten Themen.&amp;nbsp;Zu allen Vortr&amp;auml;gen finden sich die Links zur den Slidedecks sowie Links zu den Videos (jeweils MP4 sowie WMVs in mittlerer (WMV-M) und hoher (WMV-H) Aufl&amp;ouml;sung).&lt;/p&gt;
&lt;table style="width: 540px;"&gt;
&lt;tbody&gt;
&lt;tr&gt;&lt;th&gt;Titel&lt;/th&gt;&lt;th width="60"&gt;Referent&lt;/th&gt;&lt;th&gt;PPTX&lt;/th&gt;&lt;th&gt;Videos&lt;/th&gt;&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-452T"&gt;Building and running HPC apps in Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/greg+burgess"&gt;Greg Burgess&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-452T_Burgess.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/452.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/452.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/452-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-453T"&gt;Analyzing "big data" with LINQ to HPC&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/ade+miller"&gt;Ade Miller&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-453T_Miller.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/453.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/453.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/453-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-798T"&gt;Building Web APIs in Windows Azure with WCF to reach any device&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/glenn+block"&gt;Glenn Block&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-798T_Block.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/798.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/798.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/798-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-836T"&gt;Your devices + OData + Windows Azure == happiness&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/mike+flasko"&gt;Mike Flasko&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-836T_Flasko.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/836.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/836.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/836-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-850T"&gt;Getting started with Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/brian+prince"&gt;Brian Prince&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-850T_Prince.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/850.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/850.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/850-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-851T"&gt;What's new in Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/James+Conard"&gt;James Conard&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-851T_Conard.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/851.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/851.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/851-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-852F"&gt;Introdction to Windows Azure: the cloud operating system&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Mark+Russinovich"&gt;Mark Russinovich&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-852F_Russinovich.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/852.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/852.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/852-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-853T"&gt;Inside Windows Azure: the cloud operating system&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Mark+Russinovich"&gt;Mark Russinovich&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-853T_Russinovich.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/853.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/853.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/853-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-858T"&gt;Identity and access management for Windows Azure apps&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Vittorio+Bertocci"&gt;Vittorio Bertocci&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-858T_Bertocci.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/858.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/858.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/858-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-859T"&gt;Monitoring and troubleshooting Windows Azure apps&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/michael+washam"&gt;Michael Washam&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-859T_Washam.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/859.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/859.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/859-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-861T"&gt;Using cloud storage from Windows apps&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/wade+wegner"&gt;Wade Wegner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-861T_Wegner.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/861.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/861.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/861-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-862T"&gt;Building loosely-coupled apps with Windows Azure Service Bus Topics and Queues&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Clemens+Vasters"&gt;Clemens Vasters&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-862T_Vasters.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/862.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/862.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/862-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-863T"&gt;Delivering notifications with the Windows Push Notification Service and Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/darren+louie"&gt;Darren Louie&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/nick+harris"&gt;Nick Harris&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-863T_Harris.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/863.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/863.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/863-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-867T"&gt;Building apps with Windows Workflow Foundation and Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/jurgen+willis"&gt;Jurgen Willis&lt;/a&gt;,&amp;nbsp; &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/josh+twist"&gt;Josh Twist&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-867T_Willis.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/867.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/867.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/867-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-868T"&gt;Building device &amp;amp; cloud apps&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/wade+wegner"&gt;Wade Wegner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-868T_Wegner.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/868.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/868.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/868-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-869T"&gt;Building global and highly-available services using Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/david+aiken"&gt;David Aiken&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-869T_Aiken.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/869.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/869.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/869-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-870T"&gt;Building scalable web apps with Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Matthew+Kerner"&gt;Matthew Kerner&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-870T_Kerner.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/870.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/870.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/870-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-871T"&gt;Building social games for Windows 8 with Windows Azure&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/nathan+totten"&gt;Nathan Totten&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-871T_Totten.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/871.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/871.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/871-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-872T"&gt;Building Windows 8 and Windows Azure apps&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Steve+Marx"&gt;Steve Marx&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-872T_Marx.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/872.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/872.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/872-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-904T"&gt;F# 3.0: data, services, Web, cloud, at your fingertips&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Don+Syme"&gt;Don Syme&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-904T_Syme.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/904.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/904.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/904-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-961T"&gt;Inside Windows Azure storage: what's new and under the hood deep dive&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Brad+Calder"&gt;Brad Calder&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-961T_Calder.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/961.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/961.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/961-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/TOOL-818T"&gt;Taking your Application Lifecycle Management to the cloud with the Team Foundation Service&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/doug+neumann"&gt;Doug Neumann&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/TOOL-818T_Neumann.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/818.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/818.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/818-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/APP-784T"&gt;Power your app with Live services&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Dare+Obasanjo"&gt;Dare Obasanjo&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/APP-784T_Obasanjo.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/784.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/784.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/784-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-134C"&gt;The complete developer's guide to the SkyDrive API&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/Steve+Gordon"&gt;Steve Gordon&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/PLAT-134C_Gordon.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&amp;nbsp; &lt;br /&gt;&amp;nbsp;&lt;br /&gt;&amp;nbsp;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-581T"&gt;Making apps social and connected with HTTP services&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/alexander+corradini"&gt;Alexander Corradini&lt;/a&gt;,&amp;nbsp; &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/suhail+khalid"&gt;Suhail Khalid&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/PLAT-581T_Khalid.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/581.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/581.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/581-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-756T"&gt;Building Xbox LIVE games for Windows 8&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/avi+ben-menahem"&gt;Avi Ben-Menahem&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/PLAT-756T_Ben-Menahem.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/756.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/756.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/756-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-429T"&gt;Using Windows Server 8 for building private and public IaaS clouds&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/sandeep+singhal"&gt;Sandeep Singhal&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/jeff+woolsey"&gt;Jeff Woolsey&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/yigal+edery"&gt;Yigal Edery&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-429T_Edery.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/429.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/429.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/429-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-430T"&gt;Designing the building blocks for a Windows Server 8 cloud&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/ross+ortega"&gt;Ross Ortega&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/yigal+edery"&gt;Yigal Edery&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-430T_Edery.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/430.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/430.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/430-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-433T"&gt;Network acceleration and other NIC technologies for the data center&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/don+stanwyck"&gt;Don Stanwyck&lt;/a&gt;,&amp;nbsp; &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/michael+nanakul"&gt;Michael Nanakul&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-433T_Stanwyck.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/433.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/433.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/433-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-439T"&gt;Enabling multi-tenancy and converged fabric for the cloud using QoS&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/charley+wen"&gt;Charley Wen&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/richard+wurdack"&gt;Richard Wurdack&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-439T_Wen.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/439.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/439.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/439-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-442T"&gt;Building secure, scalable multi-tenant clouds using Hyper-V Network Virtualization&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/murari+sridharan"&gt;Murari Sridharan&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/yu-shun+wang"&gt;Yu-Shun Wang&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-442_Wang.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/442.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/442.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/442-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/SAC-592T"&gt;Optimal cloud performance with BranchCache&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/andrew+cunningham"&gt;Andrew Cunningham&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/tyler+barton"&gt;Tyler Barton&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/SAC-592T_Barton.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/592.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/592.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/592-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;a href="http://channel9.msdn.com/Events/BUILD/BUILD2011/PLAT-475T"&gt;Create experiences that span devices&lt;/a&gt;&lt;/td&gt;
&lt;td nowrap="nowrap"&gt;&lt;a href="http://channel9.msdn.com/Events/Speakers/john+sheehan"&gt;John Sheehan&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/slides/PLAT-475T_Sheehan.pptx"&gt;PPTX&lt;/a&gt;&lt;/td&gt;
&lt;td&gt;&lt;a href="http://video.ch9.ms/build/2011/mp4/475.mp4"&gt;MP4&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv/475.wmv"&gt;WMV-M&lt;/a&gt;, &lt;br /&gt;&lt;a href="http://video.ch9.ms/build/2011/wmv-hq/475-HD.wmv"&gt;WMV-H&lt;/a&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10213575" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/hsirtl/archive/tags/Windows+Azure+Platform/">Windows Azure Platform</category></item></channel></rss>

