<?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:blogChannel="http://backend.userland.com/blogChannelModule" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:pingback="http://madskills.com/public/xml/rss/module/pingback/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">
  <channel>
    <title>codefest.at</title>
    <description>Das Weblog rund um Software Entwicklung und Design auf der Microsoft Plattform.</description>
    <link>http://www.codefest.at/</link>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>BlogEngine.NET 2.7.0.0</generator>
    <language>de-DE</language>
    <blogChannel:blogRoll>http://www.codefest.at/opml.axd</blogChannel:blogRoll>
    <blogChannel:blink>http://www.dotnetblogengine.net/syndication.axd</blogChannel:blink>
    <dc:creator>msdnblog</dc:creator>
    <dc:title>codefest.at</dc:title>
    <geo:lat>0.000000</geo:lat>
    <geo:long>0.000000</geo:long>
    <atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/MsdnAustria" /><feedburner:info uri="msdnaustria" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><feedburner:emailServiceId>MsdnAustria</feedburner:emailServiceId><feedburner:feedburnerHostname>http://feedburner.google.com</feedburner:feedburnerHostname><item>
      <title>Computer: New Project: Build!</title>
      <description>&lt;p&gt;Visual Studio per Sprache steuern? Geht das? Ja, und zwar mit einem kostenfreien Sprachsteuerungs-Control aus der &lt;a href="http://visualstudiogallery.msdn.microsoft.com/" target="_blank"&gt;Visual Studio Gallery&lt;/a&gt;:&lt;/p&gt;  &lt;p&gt;&lt;a title="http://visualstudiogallery.msdn.microsoft.com/ce35c120-405a-435b-af2a-52ff24eb2c30" href="http://visualstudiogallery.msdn.microsoft.com/ce35c120-405a-435b-af2a-52ff24eb2c30" target="_blank"&gt;Voice Commands&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://visualstudiogallery.msdn.microsoft.com/ce35c120-405a-435b-af2a-52ff24eb2c30" target="_blank"&gt;&lt;img title="voice-commands" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="voice-commands" src="http://www.codefest.at/image.axd?picture=voice-commands.png" width="645" height="195" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Autor von Voice Commands ist &lt;a href="http://visualstudiogallery.msdn.microsoft.com/site/search?f%5B0%5D.Type=User&amp;amp;f%5B0%5D.Value=Mads%20Kristensen"&gt;Mads Kristensen&lt;/a&gt;, der auch unter anderem die äußerst populären &lt;a href="http://visualstudiogallery.msdn.microsoft.com/07d54d12-7133-4e15-becb-6f451ea3bea6" target="_blank"&gt;Web Essentials 2012&lt;/a&gt;und viele weitere Add-Ons für Visual Studio geschrieben hat.&lt;/p&gt;  &lt;p&gt;Nach der Installation von VoiceExtension.vsix erscheint im Menü &lt;em&gt;Tools&lt;/em&gt; der Eintrag &lt;em&gt;Start Listening&lt;/em&gt;.&lt;/p&gt;  &lt;p&gt;&lt;img title="tools-voice-command" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="tools-voice-command" src="http://www.codefest.at/image.axd?picture=tools-voice-command_1.png" width="370" height="49" /&gt;&lt;/p&gt;  &lt;p&gt;   &lt;p&gt;Zum Starten: Tools / Start Listening – oder Alt + V drücken.&lt;/p&gt;    &lt;p&gt;Danach wird der Name eines Befehls gesprochen, zum Beispiel:&lt;/p&gt;    &lt;p&gt;Build, Format Document , Solution Explorer , New Project , Options.&lt;/p&gt;    &lt;p&gt;Auf github ist eine &lt;a title="https://raw.github.com/ligershark/VoiceExtension/master/VoiceExtension/Resources/commands.txt" href="https://raw.github.com/ligershark/VoiceExtension/master/VoiceExtension/Resources/commands.txt" target="_blank"&gt;List of available commands&lt;/a&gt; verfügbar, es sind fast 3000 Befehle möglich.&lt;/p&gt;    &lt;p&gt;Unter der Haube verwendet Voice Commands die Windows Speech API von Windows. Diese kann durch Hinzufügen einer Referenz auf Windows auf &lt;em&gt;System.Speech&lt;/em&gt; selbst verwendet werden.&lt;/p&gt; &lt;/p&gt;  &lt;p&gt;Wozu braucht man die Sprachsteuerung? Es mag vielleicht ein wenig lustig klingen, wenn man dem Computer wie in Star Trek befiehlt: Recompile all. Aber zum Ausprobieren allemal witzig.&lt;/p&gt;  &lt;p&gt;Nunja, Kaffee oder Earl Grey kann Visual Studio noch nicht machen, aber wer weiß….? &lt;img class="wlEmoticon wlEmoticon-winkingsmile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Zwinkerndes Smiley" src="http://www.codefest.at/image.axd?picture=wlEmoticon-winkingsmile_46.png" /&gt;&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/XdG1TemhV5Y/post.aspx</link>
      <author>Toni Pohl</author>
      <comments>http://www.codefest.at/post/2013/05/24/Computer-New-Project-Build.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=51261e39-71d2-4fb6-b029-109f60797524</guid>
      <pubDate>Fri, 24 May 2013 23:59:29 +0200</pubDate>
      <category>Visual Studio 2012</category>
      <category>Windows 8</category>
      <dc:publisher>tp</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=51261e39-71d2-4fb6-b029-109f60797524</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=51261e39-71d2-4fb6-b029-109f60797524</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/24/Computer-New-Project-Build.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=51261e39-71d2-4fb6-b029-109f60797524</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=51261e39-71d2-4fb6-b029-109f60797524</feedburner:origLink></item>
    <item>
      <title>IISExpress und SSL–configuring web https failed</title>
      <description>&lt;p&gt;Visual Studio 2012 ist super. Es nimmt dem Webdeveloper viel Arbeit ab, indem standardmäßig der integrierte Webserver IISExpress verwendet wird. Beim Erstellen einer App generiert VS eine URL mit http://localhost und einer zufälligen Portnummer aus dem Pool. Soweit so gut. Nur was tun, wenn ein Webprojekt mit einer https-URL kommt – und sich IISExpress partout weigert, diese Adresse zu finden?&lt;/p&gt;  &lt;p&gt;Mir ist es so ergangen. Man öffnet nichts ahnend ein Projekt aus dem TFS und Visual Studio beschwert sich schon beim Öffnen: “Configuring Web https://… for ASP.NET 4.5 failed. You must manually configure this site for ASP.NET 4.5 in order for the site to run correctly.”. Die Solution öffnet brav, nur ist sie nicht lauffähig.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=https-failed.png"&gt;&lt;img title="https-failed" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="https-failed" src="http://www.codefest.at/image.axd?picture=https-failed_thumb.png" width="497" height="215" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Nein, bitte nicht! Manuell Konfigurieren ist zwar leicht möglich (siehe &lt;a title="http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx" href="http://www.hanselman.com/blog/WorkingWithSSLAtDevelopmentTimeIsEasierWithIISExpress.aspx" target="_blank"&gt;Scott Hanselman´s Blog: Working with SSL at Development Time is easier with IISExpress&lt;/a&gt; und am Blogbeitrag Ende), aber…das kann doch nicht sein, oder?&lt;/p&gt;  &lt;p&gt;Die Properties des Webprojekts zeigen die URL und die SSL URL, in diesem Beispiel https://localhost:44303:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=iis-properties.png"&gt;&lt;img title="iis-properties" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="iis-properties" src="http://www.codefest.at/image.axd?picture=iis-properties_thumb.png" width="356" height="272" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wenn man nun die WebApp startet, beschwert sich Visual Studio sofort:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=https-not-valid.png"&gt;&lt;img title="https-not-valid" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="https-not-valid" src="http://www.codefest.at/image.axd?picture=https-not-valid_thumb.png" width="431" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Klar, das Verhalten erscheint mit der Fehlermeldung beim Öffnen der WebApp logisch. Nur, wie bringe ich IISExpress dazu, mit HTTPS zu arbeiten?&lt;/p&gt;  &lt;p&gt;Grundsätzlich entspricht IISExpress dem “großen” IIS, jedoch nur als lokaler “persönlicher” (und integrierter) Webserver. Seit Visual Studio 2010 SP1 kann IISExpress SSL verwenden (der Vorgänger Cassini konnte das noch nicht) und auf localhost Ports größer 44300 verwenden. So können Webseiten mit SSL getestet werden (jedoch nicht mit dem Standard-Port 443).&lt;/p&gt;  &lt;p&gt;Visual Studio - und auch die freie &lt;a href="http://www.microsoft.com/web/webmatrix/" target="_blank"&gt;WebMatrix&lt;/a&gt; - bringen eigene self-signed certificates mit. IISExpress kann somit problemlos mit HTTPS umgehen und kümmert sich automatisch um alle erforderlichen Konfigurationen. Das kann man leicht ausprobieren, wenn man ein neues Webprojekt anlegt und dort den Schalter &lt;em&gt;SSL Enabled = True&lt;/em&gt; setzt und die https-URL in den &lt;em&gt;Project Properties&lt;/em&gt; einträgt und startet.&lt;/p&gt;  &lt;p&gt;Hier die Probe mit einem nigel-nagel-neuen Web:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=enable-https.png"&gt;&lt;img title="enable-https" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="enable-https" src="http://www.codefest.at/image.axd?picture=enable-https_thumb.png" width="355" height="226" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Run&lt;/em&gt; zum Testen, danach SSL Enabled auf True setzen. Damit wird automatisch die SSL URL eingetragen. Beim Starten folgt natürlich noch http://localhost:49791/. Das können wir leicht ändern, indem wir einfach die https-Adresse in den Project-Eigenschaften hinterlegen: https://localhost:44301/&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=use-https.png"&gt;&lt;img title="use-https" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="use-https" src="http://www.codefest.at/image.axd?picture=use-https_thumb.png" width="600" height="416" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;…und das Web mit F5 starten: VS öffnet den Browser mit der https-Adresse. Der Benutzer muss natürlich dem ausgestellten Zertifikat vertrauen und die Verwendung für diese Session zulassen:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=https-ok.png"&gt;&lt;img title="https-ok" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="https-ok" src="http://www.codefest.at/image.axd?picture=https-ok_thumb.png" width="600" height="308" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Beim “Laden dieser Website fortsetzen” folgt dann die App. Natürlich traut der Browser dem selbst ausgestellten Zertifikat nicht – aber für unsere Development-Zwecke ist diese Lösung perfekt.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=ssl-is-working-but-warning.png"&gt;&lt;img title="ssl-is-working-but-warning" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ssl-is-working-but-warning" src="http://www.codefest.at/image.axd?picture=ssl-is-working-but-warning_thumb.png" width="599" height="360" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Soweit so gut – IISExpress mit HTTPS funktioniert einwandfrei mit neuen WebApps. Zurück zu unserem Projekt das nicht funktioniert…&lt;/p&gt;  &lt;p&gt;Zuerst bemüht man zumeist die Suchmaschine seiner Wahl um herauszufinden, was das Problem ist.    &lt;br /&gt;Die Lösung ist aber zum Glück wirklich … einfach!&lt;/p&gt;  &lt;p&gt;So sieht die Konfiguration zuvor aus:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=set-project-ssl-to-false.png"&gt;&lt;img title="set-project-ssl-to-false" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="set-project-ssl-to-false" src="http://www.codefest.at/image.axd?picture=set-project-ssl-to-false_thumb.png" width="328" height="79" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wir stellen SSL Enabled auf False: Das klappt natürlich nicht, denn die SSL-Adresse ist ja im Project hinterlegt:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=ssl-is-used.png"&gt;&lt;img title="ssl-is-used" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ssl-is-used" src="http://www.codefest.at/image.axd?picture=ssl-is-used_thumb.png" width="600" height="224" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Also vor dem Umstellen die http-Adresse eintragen, Projekt speichern und dann &lt;em&gt;SSL Enabled = False&lt;/em&gt; setzen.     &lt;br /&gt;Nun das Projekt testweise starten – es sollte alles (mit http) klappen.&lt;/p&gt;  &lt;p&gt;Nun wird &lt;em&gt;SSL Enabled&lt;/em&gt; wieder auf &lt;em&gt;True&lt;/em&gt; gesetzt.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=ssl-working-again.png"&gt;&lt;img title="ssl-working-again" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="ssl-working-again" src="http://www.codefest.at/image.axd?picture=ssl-working-again_thumb.png" width="330" height="98" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;und die (neue) SSL URL wieder in den Project Properties hinterlegt:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=new-ssl-url.png"&gt;&lt;img title="new-ssl-url" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="new-ssl-url" src="http://www.codefest.at/image.axd?picture=new-ssl-url_thumb.png" width="600" height="78" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;…und das Web zum Testen neu gestartet – diesmal mit funktionierendem https.&lt;/p&gt;  &lt;p&gt;Eine Alternative hierzu ist, die Bindings manuell einzutragen und zwar im Pfad &lt;em&gt;C:\Users\&amp;lt;Kontoname&amp;gt;\Documents\IISExpress\config&lt;/em&gt;. Hier liegen drei IISExpress .config-Dateien:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=iisexpress-config.png"&gt;&lt;img title="iisexpress-config" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="iisexpress-config" src="http://www.codefest.at/image.axd?picture=iisexpress-config_thumb.png" width="546" height="128" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In &lt;em&gt;applicationhost.config&lt;/em&gt; merkt sich IISExpress die Projekte und deren Websettings für das Hosting. Natürlich können die Bindings für die Webprojekte auch hier manuell angepasst werden:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=iisexpress-bindings.png"&gt;&lt;img title="iisexpress-bindings" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="iisexpress-bindings" src="http://www.codefest.at/image.axd?picture=iisexpress-bindings_thumb.png" width="600" height="371" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;…bzw. Webprojekt-Bindings auch bereinigt werden, was manchmal auch ganz gut ist. &lt;img class="wlEmoticon wlEmoticon-smile" alt="Smiley" src="http://www.codefest.at/image.axd?picture=wlEmoticon-smile_69.png" /&gt;&lt;/p&gt;  &lt;p&gt;Und natürlich kann auch die .csproj Datei direkt bearbeitet werden, wo die Projekt-Adressen gespeichert sind:&lt;/p&gt;  &lt;p&gt;&lt;code&gt;&amp;lt;IISExpressSSLPort&amp;gt;44303&amp;lt;/IISExpressSSLPort&amp;gt;      &lt;br /&gt;&amp;lt;IISUrl&amp;gt;https://localhost:44303/&amp;lt;/IISUrl&amp;gt;&lt;/code&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=edit-csproject.png"&gt;&lt;img title="edit-csproject" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="edit-csproject" src="http://www.codefest.at/image.axd?picture=edit-csproject_thumb.png" width="600" height="312" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Wenn http- und https-Port gleich sind, beschwert sich Visual Studio. In diesem Fall einfach unterschiedliche Ports verwenden.&lt;/p&gt;  &lt;p&gt;Die Lösung ist also einfach – aber zu Beginn gar nicht so naheliegend:&lt;/p&gt;  &lt;p&gt;Wenn das Binding-Problem besteht, zuerst SSL wie oben ausschalten und danach wieder einschalten!    &lt;br /&gt;Dann sollte es mit https auch mit bestehenden (und hartnäckigen Projekten) klappen.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/cFyKIU68uaQ/post.aspx</link>
      <author>Toni Pohl</author>
      <comments>http://www.codefest.at/post/2013/05/23/IISExpress-und-SSL-configuring-web-https-failed.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=f3a6981e-6236-4af4-82e4-3896fd16f3aa</guid>
      <pubDate>Thu, 23 May 2013 07:05:00 +0200</pubDate>
      <category>Web-Development</category>
      <dc:publisher>tp</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=f3a6981e-6236-4af4-82e4-3896fd16f3aa</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=f3a6981e-6236-4af4-82e4-3896fd16f3aa</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/23/IISExpress-und-SSL-configuring-web-https-failed.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=f3a6981e-6236-4af4-82e4-3896fd16f3aa</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=f3a6981e-6236-4af4-82e4-3896fd16f3aa</feedburner:origLink></item>
    <item>
      <title>Youtube Video App Framework revisited</title>
      <description>&lt;p&gt;In einem &lt;a href="http://www.codefest.at/post/Windows-8-App-Frameworks.aspx" target="_blank"&gt;älteren Blogeintrag&lt;/a&gt; auf codefest hatte Kollege Binder in einer umfangreichen Auflistung diverser Frameworks für Windows 8 auch das Video App Framework von Thomas Mutzl vorgestellt, mit dem sehr schnell und einfach eigene Video-Apps erstellt werden können. Ein Teil des Frameworks ermöglicht es, Youtube-Videos per RSS abzurufen und in der App abzuspielen. &lt;/p&gt;  &lt;p&gt;Downloaden lässt sich das Framework unter &lt;a href="http://win8videoapp.codeplex.com/SourceControl/latest" target="_blank"&gt;dieser Adresse&lt;/a&gt; (Reiter “Source Code”, Spalte “Download”). Nach dem Öffnen finden sich mit einem Klick auf “Verweise” zahlreiche nicht gefundene Referenzen, was durch ein gelbes Warndreieck angezeigt wird.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=6_2.png"&gt;&lt;img title="6" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="6" src="http://www.codefest.at/image.axd?picture=6_thumb_2.png" width="319" height="396" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Selbst wer bereits früher die hier benötigten libraries gedownloaded hat, könnte beim Compilieren Fehlermeldungen erhalten. Grund dafür ist, dass Google für Youtube gerne seine Schnittstellen ändert, was eine Anpassung zahlreicher Drittapplikationen notwendig macht. Um einen Gutteil der notwendigen Pakete automatisch zu installieren, können wir mit der rechten Maustaste auf den Ordner “Verweise” und danach auf “NuGet-Pakete verwalten” klicken.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=6.5.png"&gt;&lt;img title="6.5" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="6.5" src="http://www.codefest.at/image.axd?picture=6.5_thumb.png" width="465" height="375" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;Im sich nun öffnenden Fenster klicken wir auf “Wiederherstellen” um den Vorgang abzuschließen.    &lt;br /&gt;Um ein Update der bereits installierten Pakete durchzuführen, wählen wir im Menü “Tools” &amp;gt; “Erweiterungen und Updates”    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=8.5.png"&gt;&lt;img title="8.5" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="8.5" src="http://www.codefest.at/image.axd?picture=8.5_thumb.png" width="640" height="441" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;Hier können wir entweder selbst nach Paketen suchen, die uns noch fehlen (zB den Smooth Streaming Client&amp;quot;) oder im Feld “Updates” alle Pakete aktualisieren, falls wir bereits ältere Versionen davon besitzen.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=9_2.png"&gt;&lt;img title="9" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="9" src="http://www.codefest.at/image.axd?picture=9_thumb_2.png" width="640" height="442" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Im letzten Schritt unseres refreshes laden wir noch die aktuelle Version des &lt;a href="http://playerframework.codeplex.com/" target="_blank"&gt;Microsoft Player Frameworks&lt;/a&gt; herunter und installieren es durch einen Doppelklick auf die .vsix-Datei.&lt;/p&gt;  &lt;p&gt;Nun sollten alle Verweise korrekt aufgelöst werden und unsere App ist bereit, weiter angepasst zu werden. Es existiert eine Schritt-für-Schritt-Anleitung als Aufgabenliste, die wir mit einem Klick auf “Ansicht” &amp;gt; “Aufgabenliste” öffnen können.   &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=11_2.png"&gt;&lt;img title="11" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="11" src="http://www.codefest.at/image.axd?picture=11_thumb_2.png" width="347" height="480" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;Hier müssen wir nur noch “Benutzeraufgaben” auf “Kommentar” umschalten, um alle To-Do’s angezeigt zu bekommen. Mit einem Klick auf ein To-Do springt man automatisch an die entsprechende Stelle im Code.    &lt;br /&gt;    &lt;br /&gt;Eines der wichtigsten Anpassungen ist natürlich das Einfügen der RSS-URI, der auf jenen Youtube-Channel verlinkt, der in unserer App angezeigt werden soll. Die entsprechende Variable befindet sich in der MainViewModel.cs    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=13_2.png"&gt;&lt;img title="13" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="13" src="http://www.codefest.at/image.axd?picture=13_thumb_2.png" width="600" height="480" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;    &lt;br /&gt;Um nun die benötigte RSS-Adresse zu erhalten, navigieren wir zu einem Youtube-Channel unserer Wahl und klicken in der - zuvor durch einen Rechtsklick auf die obere Leiste aktivierten - Menüleiste auf “Extras” &amp;gt; “Feedsuche” &amp;gt; “RSS”. Es öffnet sich eine neue Seite, deren URI wir kopieren und als string “RssUri” speichern.    &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=14_2.png"&gt;&lt;img title="14" style="border-top: 0px; border-right: 0px; border-bottom: 0px; border-left: 0px; display: inline" border="0" alt="14" src="http://www.codefest.at/image.axd?picture=14_thumb_2.png" width="640" height="455" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;Abschließend können wir noch Aussehen und Layout der App anpassen und danach steht einem &lt;a href="http://codefest.at/post/2012/10/10/Windows-8-App-erfolgreich-in-den-Store.aspx" target="_blank"&gt;Upload in den Store&lt;/a&gt;nichts mehr im Wege!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/OPrf2sHFDLs/post.aspx</link>
      <author>Christian Vorhemus</author>
      <comments>http://www.codefest.at/post/2013/05/22/Youtube-Video-App-Framework-revisited.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=ee383168-e097-4a15-bd0e-8f8d2e73c912</guid>
      <pubDate>Wed, 22 May 2013 13:22:26 +0200</pubDate>
      <category>Windows 8</category>
      <dc:publisher>cv</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=ee383168-e097-4a15-bd0e-8f8d2e73c912</pingback:target>
      <slash:comments>2</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=ee383168-e097-4a15-bd0e-8f8d2e73c912</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/22/Youtube-Video-App-Framework-revisited.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=ee383168-e097-4a15-bd0e-8f8d2e73c912</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=ee383168-e097-4a15-bd0e-8f8d2e73c912</feedburner:origLink></item>
    <item>
      <title>Apps zu einem bestimmten Datum in den Windows Store veröffentlichen</title>
      <description>&lt;p&gt;Der Windows Store gibt Entwicklern die Möglichkeit, Apps nicht nur gleich nach der Zertifizierung sondern stattdessen auch zu einem bestimmten Datum zu veröffentlichen. Es gibt verschiedenste Gründe, warum man ein konkretes Veröffentlichungsdatum bei der App-Einreichung angeben würde. &lt;/p&gt;  &lt;p&gt;Beispiele dafür können sein, dass man noch entsprechende Marketingaktivitäten für die App durchführen möchte und die Veröffentlichung entsprechend ankündigen will. Eine App, die von großem öffentlichen Interesse ist, wird zum Beispiel zeitgleich zur entsprechenden Medienpräsenz veröffentlicht werden. &lt;/p&gt;  &lt;p&gt;Wenn Unternehmen Apps für bestimmte Arbeitsprozesse für Kunden entwickeln, ist es vielleicht nötig, die Kunden im Vorhinein zu verständigen oder vorzubereiten.&lt;/p&gt;  &lt;p&gt;Es kann aber auch möglich sein, dass ich beispielsweise ein Datum als Zielvorgabe für meine App bekomme, aber im Vorhinein schon weiß, dass ich zu dem Zeitpunkt nicht verfügbar bin, weil ich in dieser Zeit bereits andere Termine habe. Da ich aber die Möglichkeit habe, Apps später zu einem bestimmten Datum in der Zukunft zu veröffentlichen, kann ich mir vorher einteilen, wann ich die App entwickle und einreiche und mich dann darauf verlassen, dass die App nach erfolgreicher Zertifizierung wirklich an dem Tag in dem Windows Store erscheint, den ich angebe.&lt;/p&gt;  &lt;p&gt;Wie funktioniert das Ganze? Ich gehe, davon aus, dass die allgemeine Prozedur, wie Apps in den Windows Store eingereicht werden, bekannt ist. Es gibt hier in Codefest eine gute Anleitung zum &lt;a href="http://codefest.at/post/2012/10/10/Windows-8-App-erfolgreich-in-den-Store.aspx" target="_blank"&gt;Einreichen von Apps in den Windows Store&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Wir gehen zunächst in unser Dashboard vom Windows Store, nachdem wir uns auf dev.windows.com mit unserem Microsoft Account eingeloggt haben. Dort gibt es in der linken Spalten den Link &lt;strong&gt;Submit an App, &lt;/strong&gt;wo der Einreichungsprozess für die App beginnt. &lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=image_612.png"&gt;&lt;img title="image" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="image" src="http://www.codefest.at/image.axd?picture=image_thumb_485.png" width="424" height="400" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;In diesem Prozess reservieren und speichern wir uns den Namen für unsere App. &lt;/p&gt;  &lt;p&gt;Der zweite Schritt bei der Einreichung sind die &lt;strong&gt;Verkaufsdetails&lt;/strong&gt; und in diesem Schritt können wir auch unser Veröffentlichungsdatum festlegen. Hier würde man zuerst den Preis für die App festlegen, dann die regionalen Märkte, in denen die App im Store erscheinen soll und letztendlich kommt der Punkt &lt;strong&gt;Release Date, &lt;/strong&gt;bei dem ich mein gewünschtes Veröffentlichungsdatum angeben kann.&lt;/p&gt;  &lt;p&gt;Das heißt, wenn ich beispielsweise möchte, dass meine App am 1. Juli 2013 erscheint, dann gebe ich in dem Punkt Release Date dieses Datum an.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.codefest.at/image.axd?picture=StorePublishDate.png"&gt;&lt;img title="StorePublishDate" style="border-left-width: 0px; border-right-width: 0px; background-image: none; border-bottom-width: 0px; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border-top-width: 0px" border="0" alt="StorePublishDate" src="http://www.codefest.at/image.axd?picture=StorePublishDate_thumb.png" width="667" height="424" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Da bei mir die Anzeigesprache im Store US-amerikanisch ist, wird bei mir auch der Monat an erster Stelle angegeben. Aber es wird im Feld explizit angegeben, dass es sich um das Monat-Feld bzw. Tag-Feld handelt.&lt;/p&gt;  &lt;p&gt;Der Rest des Einreich-Prozesses funktioniert wie gehabt. Nachdem ich alle Punkte der Einreichung ausgefüllt, mein Package hochgeladen und auf Submit App to Store geklickt habe, ist mein Teil der Einreichung beendet. Nun werden verschiedene Tests mit der App durchgeführt und sobald sie alle Tests bestanden hat, wird sie erfolgreich zertifiziert.&lt;/p&gt;  &lt;p&gt;Meine App wird nach erfolgreicher Zertifizierung aber nicht in den Store erscheinen, sondern erst zu dem Datum, das ich bei Release Date angegeben habe. &lt;/p&gt;  &lt;p&gt;Beachten sollte man noch, dass nachdem der &lt;strong&gt;Submit&lt;/strong&gt; Button betätigt wurde, der Entwickler nicht mehr auf den Zertifizierungs- und Veröffentlichungsprozess Einfluss nehmen kann. Wenn man daher im Nachhinein das Datum ändern möchte, so müsste man die App erneut als zweite Version hochladen und mit einem anderem Release Date einreichen.&lt;/p&gt;  &lt;p&gt;Alles in allem ist dieses Feature des Windows Store jedoch eine recht praktische Sache, da es dem Entwickler der App ermöglicht wird, auf andere Umstände Rücksicht zu nehmen, wenn die App veröffentlicht wird.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/w8a3pGDwn3s/post.aspx</link>
      <author>Rina Ahmed</author>
      <comments>http://www.codefest.at/post/2013/05/15/Apps-zu-einem-bestimmten-Datum-in-den-Windows-Store-veroffentlichen.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=b40db27b-2791-4810-8a4c-8b04117e9ad5</guid>
      <pubDate>Wed, 15 May 2013 16:00:37 +0200</pubDate>
      <category>Store</category>
      <category>Windows 8</category>
      <dc:publisher>ra</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=b40db27b-2791-4810-8a4c-8b04117e9ad5</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=b40db27b-2791-4810-8a4c-8b04117e9ad5</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/15/Apps-zu-einem-bestimmten-Datum-in-den-Windows-Store-veroffentlichen.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=b40db27b-2791-4810-8a4c-8b04117e9ad5</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=b40db27b-2791-4810-8a4c-8b04117e9ad5</feedburner:origLink></item>
    <item>
      <title>BuildWindows Second Chance</title>
      <description>&lt;p&gt;Dieses Jahr war die Microsoft &lt;a href="http://www.codefest.at/post/2013/03/28/buildwindows-Konferenz-im-Juni.aspx" target="_blank"&gt;BuildWindows Konferenz&lt;/a&gt; in S.F. in weniger als drei Stunden ausgebucht. Für alle jene, die gerne hingefahren wären, aber keinen Platz mehr gefunden haben, eröffnet der Veranstalter am 15. Mai eine zweite Chance. Mit der Ankündigung “We made more room” werden diesen Mittwoch ab 18 Uhr unserer Zeit weitere Tickets verkauft.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.buildwindows.com/?wt.mc_id=Build2013&amp;amp;WT.tsrc=Twitter-T13-Build-Live" target="_blank"&gt;&lt;img title="build-second-chance" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="build-second-chance" src="http://codefest.at/image.axd?picture=build-second-chance.png" width="600" height="364" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Zum Buchen &amp;amp; Infos zur Konferenz siehe &lt;a title="http://www.buildwindows.com/?wt.mc_id=Build2013&amp;amp;WT.tsrc=Twitter-T13-Build-Live" href="http://www.buildwindows.com" target="_blank"&gt;www.buildwindows.com&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Viel Spaß!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/hiY_-joaXRw/post.aspx</link>
      <author>Toni Pohl</author>
      <comments>http://www.codefest.at/post/2013/05/14/BuildWindows-Second-Chance.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=e766bff3-53d4-4a68-947d-9382069e964c</guid>
      <pubDate>Tue, 14 May 2013 00:05:00 +0200</pubDate>
      <category>Event</category>
      <category>Windows 8</category>
      <dc:publisher>tp</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=e766bff3-53d4-4a68-947d-9382069e964c</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=e766bff3-53d4-4a68-947d-9382069e964c</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/14/BuildWindows-Second-Chance.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=e766bff3-53d4-4a68-947d-9382069e964c</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=e766bff3-53d4-4a68-947d-9382069e964c</feedburner:origLink></item>
    <item>
      <title>Corp UX Speaker Arturo Toledo und Brady Voss am 25.Mai in Wien</title>
      <description>&lt;p&gt;&lt;a href="http://www.toledo2.com/author/arturot/"&gt;Arturo Toledo&lt;/a&gt;, Windows 8 UX Team und Brady Voss, Windows Phone UX Team machen am 25.Mai im Rahmen unseres Hacktahons in Wien Halt. Mit einigen Infos aus den Product Teams und diesen Sessions&amp;#160; im Gepäck:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032553621"&gt;&lt;img title="image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="image" src="http://www.codefest.at/image.axd?picture=image_613.png" width="744" height="587" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Vortragssprache: Englisch &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;font color="#0000ff" size="4"&gt;&lt;a href="https://msevents.microsoft.com/CUI/EventDetail.aspx?EventID=1032553621" target="_blank"&gt;Zur Anmeldung&lt;/a&gt;&lt;/font&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.toledo2.com/author/arturot/"&gt;Weitere Infos zu den Sessions&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Und noch ein paar Tipps und Tricks der Vortragenden:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;1 - The link to Expression Design&lt;/b&gt; is &lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36180"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=36180&lt;/a&gt; (Only Windows, no OSX). &lt;b&gt;We recommend you bring it installed :)&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;2 - The 4 books&lt;/b&gt; that are inspiring us for this tour: &lt;/p&gt;  &lt;p&gt;- Designing with the Mind in Mind&lt;/p&gt;  &lt;p&gt;- Sketching User Experiences&lt;/p&gt;  &lt;p&gt;- The Design of Everyday Things&lt;/p&gt;  &lt;p&gt;- The Vignelli Canon (Free) &lt;a href="http://www.vignelli.com/canon"&gt;www.vignelli.com/canon&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&lt;b&gt;3 - Bring your Windows and/or Windows Phone apps so we can do Mini Facelift Reviews &lt;/b&gt;at the end of the seminar. Mini Facelifts are 10-15 minute 1:1 sessions with you - we will give you tips and tricks and sketch out ideas for you. &lt;/p&gt;  &lt;p&gt;&lt;b&gt;4 - List of Good Design Resources&lt;/b&gt;&lt;/p&gt;  &lt;p&gt;&lt;a href="http://dev.windowsphone.com/en-us/design"&gt;http://dev.windowsphone.com/en-us/design&lt;/a&gt; - Windows Design Guidelines&lt;/p&gt;  &lt;p&gt;&lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh779072.aspx"&gt;http://msdn.microsoft.com/en-us/library/windows/apps/hh779072.aspx&lt;/a&gt; - Windows Phone Design Guidelines&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.toledo2.com/2012/10/23/24-weeks-of-windows-phone-design/"&gt;http://www.toledo2.com/2012/10/23/24-weeks-of-windows-phone-design/&lt;/a&gt; - 24 Weeks of Windows Phone Design&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.windows8designhandbook.com/"&gt;http://www.windows8designhandbook.com/&lt;/a&gt; - Useful Shortcut Infographics for Windows&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.modernuiicons.com"&gt;http://www.modernuiicons.com&lt;/a&gt; - THE icon collection for Metro apps&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/en-us/download/details.aspx?id=36180"&gt;http://www.microsoft.com/en-us/download/details.aspx?id=36180&lt;/a&gt; - Expression Design&lt;/p&gt;  &lt;p&gt;&lt;a href="http://is.gd/hWZ8fe"&gt;http://is.gd/hWZ8fe&lt;/a&gt; Designing with the Mind in Mind&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.vignelli.com/cannon.pdf"&gt;http://www.vignelli.com/cannon.pdf&lt;/a&gt; - Master Design Massimo Vignelli's Manifesto&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.swissted.com/"&gt;http://www.swissted.com/&lt;/a&gt; - Awesomeness (Swiss Posters)&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.flickr.com/photos/20745656@N00/sets/72157594296535170/"&gt;http://www.flickr.com/photos/20745656@N00/sets/72157594296535170&lt;/a&gt; - Swiss Posters&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.bing.com/images/search?q=Swiss+design+posters"&gt;http://www.bing.com/images/search?q=Swiss+design+posters&lt;/a&gt; - Everything Swiss Design via Bing&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.internationalposter.com/search-results.aspx?defaultview=browse&amp;amp;title=Int'l%20Typographic%20Style&amp;amp;style=Int'l%20Typographic%20Style"&gt;http://www.internationalposter.com/search-results.aspx?defaultview=browse&amp;amp;title=Int'l%20Typographic%20Style&amp;amp;style=Int'l%20Typographic%20Style&lt;/a&gt;&amp;#160; - Nice Swiss Poster Collection&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/lwwCtGQp3hY/post.aspx</link>
      <author>Petra Kleiber</author>
      <comments>http://www.codefest.at/post/2013/05/13/Corp-UX-Speaker-Arturo-Toledo-und-Brady-Voss-am-25Mai-in-Wien.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=5063704f-b648-4c36-b8ef-6c309c0a8bc9</guid>
      <pubDate>Mon, 13 May 2013 14:46:07 +0200</pubDate>
      <dc:publisher>pk</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=5063704f-b648-4c36-b8ef-6c309c0a8bc9</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=5063704f-b648-4c36-b8ef-6c309c0a8bc9</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/13/Corp-UX-Speaker-Arturo-Toledo-und-Brady-Voss-am-25Mai-in-Wien.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=5063704f-b648-4c36-b8ef-6c309c0a8bc9</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=5063704f-b648-4c36-b8ef-6c309c0a8bc9</feedburner:origLink></item>
    <item>
      <title>Microsoft Jump Start Series für Entwickler</title>
      <description>&lt;p&gt;Im Mai finden eine Reihe von &lt;a href="https://www.microsoftvirtualacademy.com/LiveEvents.aspx" target="_blank"&gt;Jump Start Sessions&lt;/a&gt; der &lt;a href="https://www.microsoftvirtualacademy.com/" target="_blank"&gt;Microsoft Virtual Academy&lt;/a&gt; für Software-Developer statt. Die virtuellen Trainings sind kostenlos und starten in unserer Zeitzone am frühen Abend ab 18 Uhr – viel besser als fernsehen. &lt;img class="wlEmoticon wlEmoticon-smile" style="border-top-style: none; border-left-style: none; border-bottom-style: none; border-right-style: none" alt="Smiley" src="http://codefest.at/image.axd?picture=wlEmoticon-smile_68.png" /&gt;&lt;/p&gt;  &lt;p&gt;Wer keine Zeit hat sollte sich dennoch anmelden und die Aufzeichnungen später ansehen.&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.microsoftvirtualacademy.com/LiveEvents.aspx" target="_blank"&gt;&lt;img title="mva-home" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="mva-home" src="http://codefest.at/image.axd?picture=mva-home.png" width="600" height="295" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Hier drei interessante MVA-JumpStart-Veranstaltungen:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Advanced Windows Store App Development using C# Jump Start &lt;/h2&gt;  &lt;p&gt;am 23. Mai, von 18 Uhr bis 1 Uhr früh.&lt;/p&gt;  &lt;p&gt;In dieser Jump Start Session von Microsoft Technical Evangelist Jerry Nixon und&amp;#160; Daren May geht es in verschiedenen Beispielen darum, wie fortgeschrittene Developer mit C# Windows Store Apps entwickeln können. Aus dem Inhalt:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Windows Store Apps Essentials &lt;/li&gt;    &lt;li&gt;Implementing Animations and Transitions &lt;/li&gt;    &lt;li&gt;Implementing Globalization and Localization &lt;/li&gt;    &lt;li&gt;Branding and a Seamless User Interface &lt;/li&gt;    &lt;li&gt;Advanced Data Scenarios in a Windows Store App &lt;/li&gt;    &lt;li&gt;Creating Reusable Controls and Components &lt;/li&gt;    &lt;li&gt;Implementing Advanced Contract Scenarios &lt;/li&gt;    &lt;li&gt;The Windows Push Notification Service (WNS) &lt;/li&gt;    &lt;li&gt;Capturing Media &amp;amp; Background Tasks &lt;/li&gt;    &lt;li&gt;Generating Revenue with your App &lt;/li&gt;    &lt;li&gt;Securing Windows Store App Data&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200211918" target="_blank"&gt;Zur Session-Beschreibung und Anmeldung&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Software Testing with Visual Studio 2012 (exam 70-497) Jump Start &lt;/h2&gt;  &lt;p&gt;am 28. Mai, von 18 Uhr bis 1 Uhr früh.&lt;/p&gt;  &lt;p&gt;Software testing at it´s best! Diese Session von Anthony Borton und Steven Borg zeigt, wie man Development Prozesse mit Visual Studio 2013 erstellt und verbessert und application lifecycle management (ALM) im Unternehmen verwendet.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Create and Configure Test Plans     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Create Test Plan Properties&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Define and Configure Test Settings&amp;#160; &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Create and Configure Test Suites &lt;/li&gt;    &lt;li&gt;Manage Test Cases:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Create Test Cases and Steps      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Define Parameters      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Manage Shared Steps and Requirements &lt;/li&gt;    &lt;li&gt;Manage Test Execution:     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Run and Analyze Recommended Tests      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Perform Exploratory Testing and Analysis      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; - Manage Bugs and Work Items&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&amp;#160;&lt;a title="Software Testing with Visual Studio 2012 (exam 70-497) Jump Start" href="https://www.microsoftvirtualacademy.com/liveevents/software-testing-with-visual-studio-2012-jump-start" target="_blank"&gt;Zur Session-Beschreibung und Anmeldung&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;h2&gt;Administering Visual Studio Team Foundation Server 2012 (exam 70-496) Jump Start &lt;/h2&gt;  &lt;p&gt;am 29. Mai, von 18 Uhr bis 1 Uhr früh.&lt;/p&gt;  &lt;p&gt;Anthony Borton und Steven Borg zeigen, wie man Team Foundation Server 2012 (TFS) für Codeverwaltung und ALM und effizientes Code-Building einsetzt.&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;Install and Configure Visual Studio 2012 Team Foundation Server &lt;/li&gt;    &lt;li&gt;Manage Visual Studio 2012 Team Foundation Server &lt;/li&gt;    &lt;li&gt;Customize Visual Studio 2012 Team Foundation Server for Team Use &lt;/li&gt;    &lt;li&gt;Administer Version Control &lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;&lt;a title="Administering Visual Studio Team Foundation Server 2012 (exam 70-496) Jump Start" href="http://www.microsoft.com/click/services/Redirect2.ashx?CR_CC=200211392" target="_blank"&gt;Zur Session-Beschreibung und Anmeldung&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;a href="https://www.microsoftvirtualacademy.com/LiveEvents.aspx" target="_blank"&gt;&lt;img title="mva-jumpstart" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="mva-jumpstart" src="http://codefest.at/image.axd?picture=mva-jumpstart.png" width="287" height="90" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Viel Spaß mit den kostenfreien MVA-Sessions!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/ZWBxXgT4foU/post.aspx</link>
      <author>Toni Pohl</author>
      <comments>http://www.codefest.at/post/2013/05/12/Microsoft-Jump-Start-Series-fur-Entwickler.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=b26a5570-027a-4230-9717-709532eef3e9</guid>
      <pubDate>Sun, 12 May 2013 15:56:08 +0200</pubDate>
      <category>ALM</category>
      <category>Client-Development</category>
      <category>Visual Studio 2012</category>
      <category>Tutorial</category>
      <category>Event</category>
      <category>Windows 8</category>
      <dc:publisher>tp</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=b26a5570-027a-4230-9717-709532eef3e9</pingback:target>
      <slash:comments>1</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=b26a5570-027a-4230-9717-709532eef3e9</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/12/Microsoft-Jump-Start-Series-fur-Entwickler.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=b26a5570-027a-4230-9717-709532eef3e9</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=b26a5570-027a-4230-9717-709532eef3e9</feedburner:origLink></item>
    <item>
      <title>Pizza Tour Windows 8 Development Nachlese</title>
      <description>&lt;p&gt;Für all jene die uns bei der diesjährigen Frühjahrs - Pizzatour nicht besuchen konnten und jene die einfach nur in den Unterlagen schmökern und nachlesen wollen:&lt;/p&gt;  &lt;p&gt;&lt;a href="https://skydrive.live.com/?cid=B87487779DC085C0&amp;amp;id=B87487779DC085C0%21719#cid=B87487779DC085C0&amp;amp;id=B87487779DC085C0%2110347" target="_blank"&gt;Die Nachlese mit den Samples und Präsentationsunterlagen ist online verfügbar!&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;img title="Pizza2013Image" style="border-top: 0px; border-right: 0px; background-image: none; border-bottom: 0px; padding-top: 0px; padding-left: 0px; border-left: 0px; display: inline; padding-right: 0px" border="0" alt="Pizza2013Image" src="http://www.codefest.at/image.axd?picture=Pizza2013Image_2.jpg" width="775" height="440" /&gt;&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/7ul9fOYHdUo/post.aspx</link>
      <author>Petra Kleiber</author>
      <comments>http://www.codefest.at/post/2013/05/07/Pizza-Tour-Windows-8-Development-Nachlese.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=cca32536-ee88-4eb2-a2ca-0f5eaa9a8689</guid>
      <pubDate>Tue, 07 May 2013 12:32:31 +0200</pubDate>
      <dc:publisher>pk</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=cca32536-ee88-4eb2-a2ca-0f5eaa9a8689</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=cca32536-ee88-4eb2-a2ca-0f5eaa9a8689</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/07/Pizza-Tour-Windows-8-Development-Nachlese.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=cca32536-ee88-4eb2-a2ca-0f5eaa9a8689</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=cca32536-ee88-4eb2-a2ca-0f5eaa9a8689</feedburner:origLink></item>
    <item>
      <title>Persistente Datenspeicherung für Windows 8 Apps in HTML5/Javascript</title>
      <description>&lt;p&gt;In diesem Tutorial soll gezeigt werden, wie Daten in einer Windows 8 App mittels IndexedDB gespeichert und wieder ausgelesen werden können. Als Beispiel dient dazu eine einfache Benutzerverwaltungs-App, mit der Benutzer angelegt und wieder gelöscht werden.    &lt;br /&gt;    &lt;br /&gt;&lt;strong&gt;Ein kurzer Überblick über IndexedDB&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Im Zuge der immer vielfältigeren Möglichkeiten, die mit klassischen Webapplikationen geschaffen werden können, wurden auch Stimmen nach effizienten clientseitige Speichermöglichkeiten laut. Bis dato war die persistente Datenspeicherung hier so gut wie gar nicht möglich: Lediglich Cookies erlaubten das Schreiben und Lesen von Parametern. Diese waren aber allein schon aufgrund der geringen erlaubten Speichergröße maximal für einige zu speichernden Einstellungen auf Webseiten zu gebrauchen. Mozilla wagte hier einen Vorstoß und führte als eine der Ersten für ihren Browser eine Index-basierte Datenbank ein. Schließlich wurde die Spezifikation für eine solche Datenbank vor gut einem Jahr vom &lt;a href="http://www.w3.org/TR/IndexedDB/" target="_blank"&gt;W3-Konsortium&lt;/a&gt; verabschiedet und ist offiziell Bestandteil von HTML5. &lt;/p&gt;  &lt;p&gt;Verwendet werden kann IndexedDB nicht nur mit Browsern wie Internet Explorer 10, Chrome oder Firefox sondern dank der weitreichenden HTML5-Unterstützung auch mit Windows 8! &lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Schritt 1: Projekt öffnen und vorbereiten&lt;/strong&gt;     &lt;br /&gt;    &lt;br /&gt;Zunächst öffnen wir in Visual Studio 2012 ein neues Projekt und wählen den Unterpunkt &lt;em&gt;JavaScript&lt;/em&gt; &amp;gt; &lt;em&gt;Windows Store&lt;/em&gt; &amp;gt; &lt;em&gt;Navigations-App&lt;/em&gt; aus. (Hinweis: Wer neu in der Welt der HTML5/Javascript-Apps ist, mag sich als Einstieg vielleicht zuvor &lt;a href="http://www.codefest.at/post/2013/03/20/Kochrezept-fur-Windows-8-Apps-in-HTML5Javascript.aspx" target="_blank"&gt;dieses&lt;/a&gt; Tutorial ansehen)     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=01_start.png"&gt;&lt;img title="01_start" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="01_start" src="http://www.codefest.at/image.axd?picture=01_start_thumb.png" width="640" height="407" /&gt;&lt;/a&gt;     &lt;br /&gt;    &lt;br /&gt;Ist das Projekt angelegt, navigieren wir in den Ordner pages/home und öffnen home.html. Dort ändern wir zunächst den style von &lt;strong&gt;ui-dark.css&lt;/strong&gt; auf &lt;strong&gt;ui-light.css&lt;/strong&gt;, schreiben im span-tag der Klasse “pagetitle” “Benutzerverwaltung” statt “Willkommen bei DBSample” und löschen die Zeile “Hier Inhalt einfügen” zwischen den &amp;lt;p&amp;gt;&amp;lt;/p&amp;gt;-Tags.     &lt;br /&gt;    &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=02_vorbereitung.png"&gt;&lt;img title="02_vorbereitung" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="02_vorbereitung" src="http://www.codefest.at/image.axd?picture=02_vorbereitung_thumb.png" width="640" height="346" /&gt;&lt;/a&gt; &lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;&lt;/p&gt;  &lt;p&gt;Als nächstes fügen wir die AppBar hinzu, die sich bei einem Rechtsklick in die App bzw. auf Touch-Devices von einer Wischbewegung vom unteren Rand nach oben öffnet. Dazu kopieren wir folgenden Code und fügen ihn in die home.html-Datei knapp über dem &amp;lt;/body&amp;gt;-Tag ein:&lt;/p&gt;  &lt;div class="csharpcode"&gt;   &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;appbar&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WinJS.UI.AppBar&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WinJS.UI.AppBarCommand&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;data-win-options&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{id:'removeUser', &lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&lt;/span&gt;&lt;span class="kwrd"&gt;label:'Löschen', icon:'delete'}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;p&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WinJS.UI.AppBarCommand&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;data-win-options&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{id:'addUser', label:'Neu',&lt;br /&gt;&lt;/span&gt;&lt;span class="kwrd"&gt; icon:'add'}&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;button&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Wenn wir nun auf F5 klicken um die App zu starten und danach mit dem rechten Maustaste in die App klicken, sollte sich die noch funktionslose AppBar öffnen. Um die AppBar zu stylen, können wir uns übrigens der &lt;strong&gt;.win-appbar&lt;/strong&gt;-property bedienen. Um den AppBar-Hintergrund grau zu färben, kopiere man nachfolgenden Code in die home.css-Datei:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;.win-appbar {&lt;/pre&gt;

  &lt;pre&gt;    background-color: #CCCCCC;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Im nächsten Schritt legen wir ein Fenster an, das sich öffnet, wenn der User auf den “Neu”-Button in der AppBar klickt. Dazu schreiben wir ein &amp;lt;div&amp;gt;, in dem sich Text-inputs sowie Buttons befinden. Diesen Code fügen wir gleich nach dem &amp;lt;body&amp;gt;-Tag in home.html hinzu:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;addDiv&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Neuen Benutzer hinzufügen&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;h2&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Name:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;text&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;username&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Alter:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;number&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;age&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Typ:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;select&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;type&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;User&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Administrator&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;option&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;select&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;td&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;tr&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;table&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;p&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&lt;p&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;addEntry&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Eintragen&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;input&lt;/span&gt; &lt;span class="attr"&gt;type&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;button&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;close&amp;quot;&lt;/span&gt; &lt;br /&gt;&lt;span class="attr"&gt;value&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;Schließen&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/p&gt;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Um das &amp;lt;div&amp;gt; mittig auszurichten, kopiere man folgenden Code in die home.css-Datei:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;#addDiv {&lt;/pre&gt;

  &lt;pre&gt;     color:black;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     display:none;&lt;/pre&gt;

  &lt;pre&gt;     height:250px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     position: absolute;&lt;/pre&gt;

  &lt;pre&gt;     width:530px; &lt;/pre&gt;

  &lt;pre class="alt"&gt;     z-index: 50;&lt;/pre&gt;

  &lt;pre&gt;     border: 5px solid grey;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     top: 50%;&lt;/pre&gt;

  &lt;pre&gt;     left: 50%;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     margin-top: -125px;&lt;/pre&gt;

  &lt;pre&gt;     margin-left: -287px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     background-color:white;&lt;/pre&gt;

  &lt;pre&gt;     font-size:20px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;     padding-top:20px;&lt;/pre&gt;

  &lt;pre&gt;     padding-left:20px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Das div wird zunächst nicht angezeigt (&lt;em&gt;display:none;&lt;/em&gt;), kümmern wie uns nun um den Öffnen/Schließen-Mechanismus. Dazu öffnen wir die home.js-Datei. In Zeile 7 sehen wir den Eintrag “&lt;em&gt;ready: function (element, options)&lt;/em&gt;”. In dieser Funktion wird die Seite initialisiert, hier werden wir auch unsere EventListener anlegen, damit bei Klicks auf die Buttons der AppBar das Fenster geöffnet wird. In dieser Funktion legen wir die folgenden drei EventListener an:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;document.getElementById(&lt;span class="str"&gt;&amp;quot;addEntry&amp;quot;&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, addEntry);&lt;/pre&gt;

  &lt;pre&gt;document.getElementById(&lt;span class="str"&gt;&amp;quot;close&amp;quot;&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, closeWindow);&lt;/pre&gt;

  &lt;pre class="alt"&gt;document.getElementById(&lt;span class="str"&gt;&amp;quot;addUser&amp;quot;&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, openWindow);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Wird auf den Button mit der ID “addEntry” geklickt, wird die Funktion addEntry ausgeführt; Äquivalentes gilt für die anderen zwei Listener. 
  &lt;br /&gt;Legen wir nun die &lt;strong&gt;openWindow()&lt;/strong&gt; und &lt;strong&gt;closeWindow()&lt;/strong&gt; Funktionen an. Wir kopieren den nachfolgenden Code und fügen ihn kurz nach der WinJS.UI.Pages.define-Funktion ein.&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; openWindow() {&lt;/pre&gt;

  &lt;pre&gt;        document.getElementById(&lt;span class="str"&gt;&amp;quot;appbar&amp;quot;&lt;/span&gt;).winControl.hide();&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; elm = document.getElementById(&lt;span class="str"&gt;&amp;quot;addDiv&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;        elm.style.display = &lt;span class="str"&gt;&amp;quot;block&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        WinJS.UI.Animation.fadeIn(elm);&lt;/pre&gt;

  &lt;pre&gt;    }&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; closeWindow() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; elm = document.getElementById(&lt;span class="str"&gt;&amp;quot;addDiv&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;        elm.style.display = &lt;span class="str"&gt;&amp;quot;none&amp;quot;&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;

.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Unsere home.js Datei sollte bis jetzt wie folgt aussehen: 
  &lt;br /&gt;

  &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=03_homejs.png"&gt;&lt;img title="03_homejs" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="03_homejs" src="http://www.codefest.at/image.axd?picture=03_homejs_thumb.png" width="640" height="363" /&gt;&lt;/a&gt;&amp;#160; &lt;br /&gt;

  &lt;br /&gt;Detail am Rande: In der &lt;strong&gt;openWindow&lt;/strong&gt;-Funktion bedienen wir uns der von WinJS bereitgestellten &lt;strong&gt;fadeIn&lt;/strong&gt;-Funktion um einen Fade-Effekt zu erzeugen. Eine Fade-Out-Animation gibt es auch – &lt;strong&gt;fadeOut&lt;/strong&gt; heißt hier das Pendant. 

  &lt;br /&gt;

  &lt;br /&gt;Wenn wir nun auf den “Neu”-Button in unserer AppBar klicken, wird unser div geöffnet, die sich zentriert in der Bildschirmmitte befindet: 

  &lt;br /&gt;

  &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=04_screen.png"&gt;&lt;img title="04_screen" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="04_screen" src="http://www.codefest.at/image.axd?picture=04_screen_thumb.png" width="640" height="400" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Schritt 2: Datenbank anlegen&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;Mit IndexedDB werden Objekte in Form eines key-value-pairs gespeichert, am häufigsten wird zu diesem Zweck die JSON- Notation verwendet. Würden wir mit einer relationalen Datenbank arbeiten, müssten wir für unsere Benutzerverwaltung zunächst die Datenbank erstellen. Das könnte für relationale Datenbanken in MySQL etwa so aussehen: &lt;/p&gt;

&lt;p&gt;CREATE DATABASE userDatabase; &lt;/p&gt;

&lt;p&gt;In unserer IndexedDB legen wir eine Datenbank wie folgt an: 
  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; request = window.indexedDB.open(&lt;span class="str"&gt;&amp;quot;userDatabase &amp;quot;&lt;/span&gt;, 1);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Der erste Parameter ist der Datenbankname, der zweite gibt die Versionsnummer an (immer wenn sich das Datenbankschema ändert, muss sich auch die Versionsnummer ändern). Die open()-Funktion selbst retourniert ein Request-Objekt, das mehrere Zustände beschreiben kann: Success, Error, Blocked und UpgradeNeeded wobei letzterer Zustand immer dann aufgerufen wird, wenn sich die Versionsnummer ändert. 
  &lt;br /&gt;Um die Datenbank anlegen bzw öffnen zu können, fügen wir folgende Funktion kurz oberhalb von &lt;strong&gt;openWindow&lt;/strong&gt; in home.js ein:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; db = &lt;span class="kwrd"&gt;null&lt;/span&gt;;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; openDatabase() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; dbRequest = window.indexedDB.open(&lt;span class="str"&gt;&amp;quot;userDatabase&amp;quot;&lt;/span&gt;, 1);&lt;/pre&gt;

  &lt;pre&gt;        dbRequest.onerror = &lt;span class="kwrd"&gt;function&lt;/span&gt; () { console.log(&lt;span class="str"&gt;&amp;quot;Fehler beim Erstellen der Datenbank&amp;quot;&lt;/span&gt;); };&lt;/pre&gt;

  &lt;pre class="alt"&gt;        dbRequest.onblocked = &lt;span class="kwrd"&gt;function&lt;/span&gt; () { console.log(&lt;span class="str"&gt;&amp;quot;Datenbank blockiert&amp;quot;&lt;/span&gt;); };&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        dbRequest.onsuccess = &lt;span class="kwrd"&gt;function&lt;/span&gt; (evt) {&lt;/pre&gt;

  &lt;pre&gt;            db = evt.target.result;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            showEntries();&lt;/pre&gt;

  &lt;pre&gt;        };&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        dbRequest.onupgradeneeded = &lt;span class="kwrd"&gt;function&lt;/span&gt; (evt) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;if&lt;/span&gt; (db) {&lt;/pre&gt;

  &lt;pre&gt;                db.close();&lt;/pre&gt;

  &lt;pre class="alt"&gt;            }&lt;/pre&gt;

  &lt;pre&gt;            db = evt.target.result;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; txn = evt.target.transaction;&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; bookStore = db.createObjectStore(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;, { keyPath: &lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;, autoIncrement: &lt;span class="kwrd"&gt;true&lt;/span&gt; });&lt;/pre&gt;

  &lt;pre class="alt"&gt;            bookStore.createIndex(&lt;span class="str"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;, { unique: &lt;span class="kwrd"&gt;false&lt;/span&gt; });&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            txn.oncomplete = &lt;span class="kwrd"&gt;function&lt;/span&gt; () { };&lt;/pre&gt;

  &lt;pre&gt;        };&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; showEntries() {&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Die openDatabse()-Funktion soll bei der Initialisierung der Seite aufgerufen werden, wir fügen daher den Eintrag&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;openDatabase();&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;kurz unterhalb des EventListeners&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;document.getElementById(&lt;span class="str"&gt;&amp;quot;addUser&amp;quot;&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, openWindow);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;
.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;hinzu.
  &lt;br /&gt;

  &lt;br /&gt;In relationalen Datenbanken würden wir im nächsten Schritt das Datenbankschema in SQL anlegen, was (in MySQL) etwa so aussehen könnte:&lt;/p&gt;

&lt;p&gt;CREATE TABLE user ( 
  &lt;br /&gt;&amp;#160; id INT PRIMARY KEY, 

  &lt;br /&gt;&amp;#160; username VARCHAR(40) , 

  &lt;br /&gt;&amp;#160; age INT, 

  &lt;br /&gt;&amp;#160; type ENUM(‘Administrator’, ‘User’) 

  &lt;br /&gt;); &lt;/p&gt;

&lt;p&gt;Mit diesem Code legen wir also eine Tabelle an, in die wir nun Daten ablegen können. Mit IndexedDB kreieren wir im Unterschied dazu Objekt-Storages. Das ist nichts anderes als ein Speicherplatz mit einem zugewiesenen Namen, in den Objekte (als key-value-pair) abgelegt werden können. Ein “richtiges” Schema für Tabellen wie bei relationalen Datenbanken gibt es hierbei nicht. Der entsprechende Code um ein solches Objekt-Storage für die Benutzerverwaltung anzulegen, könnte in etwa wie folgt aussehen: 
  &lt;br /&gt;

  &lt;br /&gt;&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;db.createObjectStore(&lt;span class="str"&gt;&amp;quot;users&amp;quot;&lt;/span&gt;,{keyPath: &lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;});&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;strong&gt;keypath&lt;/strong&gt; gibt hierbei jenen value an, mit der der Datensatz eindeutig identifiziert werden kann. 

  &lt;br /&gt;

  &lt;br /&gt;Unsere Datenbank steht nun bereit um Daten aufzunehmen, fügen wir nun eine Funktion addEntry() hinzu. Diese können wir oberhalb von &lt;strong&gt;openDatabase&lt;/strong&gt; einfügen:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;var&lt;/span&gt; user = &lt;span class="kwrd"&gt;new&lt;/span&gt; WinJS.Binding.List();&lt;/pre&gt;

  &lt;pre&gt;    WinJS.Namespace.define(&lt;span class="str"&gt;&amp;quot;UserList&amp;quot;&lt;/span&gt;, {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        user: user&lt;/pre&gt;

  &lt;pre&gt;    });&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; addEntry() {&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; username = document.getElementById(&lt;span class="str"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;).value&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; age = document.getElementById(&lt;span class="str"&gt;&amp;quot;age&amp;quot;&lt;/span&gt;).value&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; type = document.getElementById(&lt;span class="str"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;).value&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; id = 0;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (user.length != 0) {&lt;/pre&gt;

  &lt;pre&gt;            user.dataSource.itemFromIndex(user.length - 1).done(&lt;span class="kwrd"&gt;function&lt;/span&gt; (item) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                id = item.data.id + 1;&lt;/pre&gt;

  &lt;pre&gt;            });&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; item = { &lt;span class="str"&gt;&amp;quot;id&amp;quot;&lt;/span&gt;: id, &lt;span class="str"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;: username, &lt;span class="str"&gt;&amp;quot;age&amp;quot;&lt;/span&gt;: age, &lt;span class="str"&gt;&amp;quot;type&amp;quot;&lt;/span&gt;: type, &lt;span class="str"&gt;&amp;quot;picture&amp;quot;&lt;/span&gt;: &lt;br /&gt;&lt;span class="str"&gt;&amp;quot;/images/user.png&amp;quot;&lt;/span&gt; };&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; transaction = db.transaction(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;readwrite&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; addRequest = transaction.objectStore(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;).add(item);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        addRequest.onsuccess = &lt;span class="kwrd"&gt;function&lt;/span&gt; (evt) {&lt;/pre&gt;

  &lt;pre&gt;            user.push(item);&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;        closeWindow();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;

&lt;div class="csharpcode"&gt;
  &lt;br /&gt;&amp;#160;&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;Um Daten löschen zu können, legen wir nun in der home.js-Datei einen weiteren EventListener in der ready-Funktion an:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;document.getElementById(&lt;span class="str"&gt;&amp;quot;removeUser&amp;quot;&lt;/span&gt;).addEventListener(&lt;span class="str"&gt;&amp;quot;click&amp;quot;&lt;/span&gt;, deleteEntry);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;… die zugehörige deleteEntry()-Funktion sieht so aus, diese kopieren wir unter die addEntry-Funktion:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; deleteEntry() {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;var&lt;/span&gt; listView = document.getElementById(&lt;span class="str"&gt;&amp;quot;itemsListView&amp;quot;&lt;/span&gt;).winControl;&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;        listView.selection.getItems().done(&lt;span class="kwrd"&gt;function&lt;/span&gt; (currentSelection) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            currentSelection.forEach(&lt;span class="kwrd"&gt;function&lt;/span&gt; (selectedItem) {&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; dbKey = selectedItem.data.id;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; listViewKey = selectedItem.key;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; transaction = db.transaction(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;readwrite&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; deleteRequest = transaction.objectStore(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;).delete(dbKey);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                deleteRequest.onsuccess = &lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

  &lt;pre&gt;                    user.dataSource.remove(listViewKey);&lt;/pre&gt;

  &lt;pre class="alt"&gt;                }&lt;/pre&gt;

  &lt;pre&gt;                deleteRequest.onerror = &lt;span class="kwrd"&gt;function&lt;/span&gt; () {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                }&lt;/pre&gt;

  &lt;pre&gt;            });&lt;/pre&gt;

  &lt;pre class="alt"&gt;        });&lt;/pre&gt;

  &lt;pre&gt;        document.getElementById(&lt;span class="str"&gt;&amp;quot;appbar&amp;quot;&lt;/span&gt;).winControl.hide();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;
  &lt;br /&gt;

  &lt;br /&gt;&lt;strong&gt;Schritt 3: ListView erstellen&lt;/strong&gt; 

  &lt;br /&gt;

  &lt;br /&gt;Im letzten Schritt haben wir unter anderem die Zeile&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;&lt;span class="kwrd"&gt;var&lt;/span&gt; user = &lt;span class="kwrd"&gt;new&lt;/span&gt; WinJS.Binding.List();&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;hinzugefügt. Diese so definierte Liste “user” verwenden wir, um darin alle Benutzer zu speichern, die wir aus der Datenbank auslesen um diese schließlich zu unserer ListView hinzuzufügen. Die ListView selbst ist nichts anderes als eine von WinJS zur Verfügung gestellte control um eine Ansammlung an Items im Sinne des &amp;quot;Modern UI” anzuzeigen. 
  &lt;br /&gt;Um unsere Liste “user” beim Initialisieren zunächst mit den Daten aus der Datenbank zu füllen, ersetzen wir die leere showEntries()-Funktion, die sich bereits in unserer home.js-Datei befindet, mit folgendem Code:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; showEntries() {&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;if&lt;/span&gt; (db) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; request = [];&lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; transaction = db.transaction(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;, &lt;span class="str"&gt;&amp;quot;readonly&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; store = transaction.objectStore(&lt;span class="str"&gt;&amp;quot;userlist&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;var&lt;/span&gt; index = store.index(&lt;span class="str"&gt;&amp;quot;username&amp;quot;&lt;/span&gt;);&lt;/pre&gt;

  &lt;pre&gt;            index.openCursor().onsuccess = &lt;span class="kwrd"&gt;function&lt;/span&gt; (&lt;span class="kwrd"&gt;event&lt;/span&gt;) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                &lt;span class="kwrd"&gt;var&lt;/span&gt; cursor = &lt;span class="kwrd"&gt;event&lt;/span&gt;.target.result;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;if&lt;/span&gt; (cursor) {&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    user.dataSource.insertAtEnd(&lt;span class="kwrd"&gt;null&lt;/span&gt;, cursor.value);&lt;/pre&gt;

  &lt;pre&gt;                    cursor.&lt;span class="kwrd"&gt;continue&lt;/span&gt;();&lt;/pre&gt;

  &lt;pre class="alt"&gt;                }&lt;/pre&gt;

  &lt;pre&gt;            };&lt;/pre&gt;

  &lt;pre class="alt"&gt;        }&lt;/pre&gt;

  &lt;pre&gt;    }&lt;br /&gt;&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Nun müssen wir unsere Liste “user” allerdings auch anzeigen. Zu diesem Zweck fügen wir den folgenden Code in unsere home.html-Datei kurz nach &lt;em&gt;“&amp;lt;section aria-label=&amp;quot;Main content&amp;quot; role=&amp;quot;main&amp;quot;&amp;gt;&lt;/em&gt;” hinzu:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mediumListIconTextTemplate&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WinJS.Binding.Template&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;style&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;display: none&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mediumListIconTextItem&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;img&lt;/span&gt; &lt;span class="attr"&gt;src&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;#&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mediumListIconTextItem-Image&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;data-win-bind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;src: picture&amp;quot;&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;class&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;mediumListIconTextItem-Detail&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Username:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;data-win-bind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;innerText: username&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Alter:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;data-win-bind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;innerText: age&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;br&lt;/span&gt; &lt;span class="kwrd"&gt;/&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;                    &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;Accounttyp:&lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;b&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt; &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt; &lt;span class="attr"&gt;data-win-bind&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;innerText: type&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;span&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;                &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;            &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        &lt;span class="kwrd"&gt;&amp;lt;&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt; &lt;span class="attr"&gt;id&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;itemsListView&amp;quot;&lt;/span&gt; &lt;span class="attr"&gt;data-win-control&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;WinJS.UI.ListView&amp;quot;&lt;/span&gt; &lt;/pre&gt;

  &lt;pre&gt;            &lt;span class="attr"&gt;data-win-options&lt;/span&gt;&lt;span class="kwrd"&gt;=&amp;quot;{itemDataSource : UserList.user.dataSource, &lt;/pre&gt;

  &lt;pre class="alt"&gt;                itemTemplate: select('#mediumListIconTextTemplate')}&amp;quot;&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

  &lt;pre&gt;        &lt;span class="kwrd"&gt;&amp;lt;/&lt;/span&gt;&lt;span class="html"&gt;div&lt;/span&gt;&lt;span class="kwrd"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p&gt;Hier wird die ListView angelegt und mit einem entsprechenden Template versehen, sodass unsere Daten formatiert ausgegeben werden. Wenn wir die App testen, auf “Neu” klicken und einen Benutzer anlegen, können wir schon Einträge speichern, allerdings sieht der Eintrag noch etwas unfömig aus. Um das zu ändern, fügen wir zunächst folgendes Bild in den /image-Folder hinzu: 
  &lt;br /&gt;

  &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=user.png"&gt;&lt;img title="user" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="user" src="http://www.codefest.at/image.axd?picture=user_thumb.png" width="50" height="50" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Außerdem fügen wir folgenden Code in unsere home.css ein:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;#itemsListView {&lt;/pre&gt;

  &lt;pre&gt;    height: calc(100% - 80px);&lt;/pre&gt;

  &lt;pre class="alt"&gt;    width:calc(100% - 90px);&lt;/pre&gt;

  &lt;pre&gt;    border: 0px solid red;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;#itemsListView .win-container:not(.footprint):not(.hover)&lt;/pre&gt;

  &lt;pre&gt;{&lt;/pre&gt;

  &lt;pre class="alt"&gt;    background-color: transparent;&lt;/pre&gt;

  &lt;pre&gt;    color:black;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    border: 1px solid gray;&lt;/pre&gt;

  &lt;pre&gt;}&lt;/pre&gt;

  &lt;pre class="alt"&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre&gt;.mediumListIconTextItem&lt;/pre&gt;

  &lt;pre class="alt"&gt;{&lt;/pre&gt;

  &lt;pre&gt;    width: 282px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    height: 70px;&lt;/pre&gt;

  &lt;pre&gt;    padding: 5px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    overflow: hidden;&lt;/pre&gt;

  &lt;pre&gt;    display: -ms-grid;&lt;/pre&gt;

  &lt;pre class="alt"&gt;}&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    .mediumListIconTextItem img.mediumListIconTextItem-Image &lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        width: 60px;&lt;/pre&gt;

  &lt;pre&gt;        height: 60px;&lt;/pre&gt;

  &lt;pre class="alt"&gt;        margin: 5px;&lt;/pre&gt;

  &lt;pre&gt;        -ms-grid-column: 1;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;

  &lt;pre&gt;&amp;#160;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    .mediumListIconTextItem .mediumListIconTextItem-Detail&lt;/pre&gt;

  &lt;pre&gt;    {&lt;/pre&gt;

  &lt;pre class="alt"&gt;        margin: 5px;&lt;/pre&gt;

  &lt;pre&gt;        -ms-grid-column: 2;&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Mit diesem Schritt sind wir bereits fertig: Wir können nun Benutzer hinzufügen indem wir in der AppBar auf “Neu” klicken. Wenn wir Benutzer löschen wollen, klicken wir mit der rechten Maustaste auf die jeweiligen Einträge um sie auszuwählen und dann nochmals mit der rechten Maustaste um auf den “Löschen”-Button klicken zu können. 
  &lt;br /&gt;

  &lt;br /&gt;&lt;a href="http://www.codefest.at/image.axd?picture=05_fertig.png"&gt;&lt;img title="05_fertig" style="border-left-width: 0px; border-right-width: 0px; border-bottom-width: 0px; display: inline; border-top-width: 0px" border="0" alt="05_fertig" src="http://www.codefest.at/image.axd?picture=05_fertig_thumb.png" width="640" height="400" /&gt;&lt;/a&gt; &lt;/p&gt;

&lt;p&gt;Ein nettes Feature wäre noch, wenn sich bei einer Auswahl an Einträgen die AppBar automatisch öffnet, diese Funktion fügen wir im finalen Schritt 4 noch hinzu. 
  &lt;br /&gt;

  &lt;br /&gt;&lt;strong&gt;Schritt 4: Öffnen der AppBar durch selectionchanged-Events&lt;/strong&gt; 

  &lt;br /&gt;

  &lt;br /&gt;Zunächst fügen wir wieder einen EventListener in der ready-Funktion in home.js ein:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;document.getElementById(&lt;span class="str"&gt;&amp;quot;itemsListView&amp;quot;&lt;/span&gt;).winControl.addEventListener(&lt;span class="str"&gt;&amp;quot;selectionchanged&amp;quot;&lt;/span&gt;, changedSelection);&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;&lt;/p&gt;

&lt;p&gt;Danach fügen wir die nachfolgende changedSelection-Funktion zB unterhalb von deleteEntry hinzu:&lt;/p&gt;

&lt;div class="csharpcode"&gt;
  &lt;pre class="alt"&gt;    &lt;span class="kwrd"&gt;function&lt;/span&gt; changedSelection(eventObject) {&lt;/pre&gt;

  &lt;pre&gt;        document.getElementById(&lt;span class="str"&gt;&amp;quot;appbar&amp;quot;&lt;/span&gt;).winControl.show();&lt;/pre&gt;

  &lt;pre class="alt"&gt;    }&lt;/pre&gt;
&lt;/div&gt;
&lt;style type="text/css"&gt;


.csharpcode, .csharpcode pre
{
	font-size: small;
	color: black;
	font-family: consolas, "Courier New", courier, monospace;
	background-color: #ffffff;
	/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt 
{
	background-color: #f4f4f4;
	width: 100%;
	margin: 0em;
}
.csharpcode .lnum { color: #606060; }&lt;/style&gt;

&lt;p&gt;In Worten gesprochen passiert hier folgendes: Immer dann, wenn sich die aktuelle Auswahl (Rechtsklick) der itemsListView ändert, öffnet sich die AppBar. 
  &lt;br /&gt;Den Quellcode dieses Projekts gibt es auf &lt;a href="http://www.wissen-kompakt.at/codefest/DBSample.zip"&gt;http://www.wissen-kompakt.at/codefest/DBSample.zip&lt;/a&gt; zum Download! 

  &lt;br /&gt;

  &lt;br /&gt;

  &lt;br /&gt;&lt;strong&gt;Los gehts!&lt;/strong&gt; 

  &lt;br /&gt;

  &lt;br /&gt;Dieses Tutorial ist nur ein Einstiegspunkt für weitere eigene Entwicklungen. Die Möglichkeiten, diese App zu erweitern sind unbegrenzt und reichen zB von einem &lt;a href="http://code.msdn.microsoft.com/windowsapps/File-picker-sample-9f294cba" target="_blank"&gt;FilePicker&lt;/a&gt;, um statt dem User-Platzhalter-Icon Fotos von Benutzern zu speichern, bis hin zu automatischer &lt;a href="http://www.codefest.at/post/2013/04/23/Datensynchronisation-zwischen-mehreren-Windows-8-Geraten.aspx" target="_blank"&gt;Datensynchronisation&lt;/a&gt;, um auf allen Geräten stets den gleichen Datenstand zu haben. 

  &lt;br /&gt;

  &lt;br /&gt;Nur empfehlen kann man abschließend die umfangreichen Dokumentationen und Codebeispiele auf &lt;a href="http://msdn.microsoft.com/en-us/library/windows/apps/hh770842.aspx" target="_blank"&gt;msdn.microsoft.com&lt;/a&gt;, die einen tieferen Einblick in die Materie bieten.&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/EQw_AsWIITA/post.aspx</link>
      <author>Christian Vorhemus</author>
      <comments>http://www.codefest.at/post/2013/05/01/Persistente-Datenspeicherung-fur-Windows-8-Apps-in-HTML5Javascript.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=e5156213-5245-4ea6-8f05-d3578b1ce09e</guid>
      <pubDate>Wed, 01 May 2013 11:58:16 +0200</pubDate>
      <category>Windows 8</category>
      <category>javascript</category>
      <category>HTML5</category>
      <dc:publisher>cv</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=e5156213-5245-4ea6-8f05-d3578b1ce09e</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=e5156213-5245-4ea6-8f05-d3578b1ce09e</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/01/Persistente-Datenspeicherung-fur-Windows-8-Apps-in-HTML5Javascript.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=e5156213-5245-4ea6-8f05-d3578b1ce09e</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=e5156213-5245-4ea6-8f05-d3578b1ce09e</feedburner:origLink></item>
    <item>
      <title>Windows Azure SDK 2.0 for .NET</title>
      <description>&lt;p&gt;Ganz frisch ist das Windows Azure SDK 2.0 f&amp;uuml;r .NET, siehe auch &lt;a title="http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx" href="http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx" target="_blank"&gt;Announcing the release of Windows Azure SDK 2.0 for .NET&lt;/a&gt; in ScottGu&amp;acute;s Blog.&lt;/p&gt;
&lt;p&gt;In diesem Update sind viele neue Features enthalten, so etwa wurde das Visual Studio Tooling f&amp;uuml;r Website Publishing, Verwaltung und Diagnose erneuert, das Handling von Cloud Services wurde verbessert und ist nun schneller, es bietet Unterst&amp;uuml;tzung f&amp;uuml;r Storage Client 2.0 und &amp;ndash; etwas, was mich sehr freut &amp;ndash; es gibt Support f&amp;uuml;r Storage Tables Services im Visual Studio Server Explorer, in Service Bus k&amp;ouml;nnen Messages nun angesehen (browsing) werden und es gibt erweiterte PowerShell Unterst&amp;uuml;tzung um Web Sites, Cloud Services und VMs zu automatisieren.&lt;/p&gt;
&lt;p&gt;Am einfachsten erfolgt die Installation &amp;uuml;ber den Web Platform Installer. &lt;br /&gt;Direkt folgt der Web-Installer f&amp;uuml;r VS2012 &amp;uuml;ber &lt;a href="http://go.microsoft.com/fwlink/?LinkID=296343"&gt;http://go.microsoft.com/fwlink/?LinkID=296343&lt;/a&gt;, &lt;br /&gt;f&amp;uuml;r VS 2010 SP1 &amp;uuml;ber &lt;a href="http://go.microsoft.com/fwlink/?LinkID=296344"&gt;http://go.microsoft.com/fwlink/?LinkID=296344&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codefest.at/image.axd?picture=azure-sdk-2-wpi-install.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="azure-sdk-2-wpi-install" src="http://codefest.at/image.axd?picture=azure-sdk-2-wpi-install_thumb.png" alt="azure-sdk-2-wpi-install" width="600" height="408" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Im SDK sind folgende Komponenten enthalten:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codefest.at/image.axd?picture=azure-sdk-2-installed-modules.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="azure-sdk-2-installed-modules" src="http://codefest.at/image.axd?picture=azure-sdk-2-installed-modules_thumb.png" alt="azure-sdk-2-installed-modules" width="600" height="724" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Nach wenigen Minuten ist das Setup durchgelaufen.&lt;/p&gt;
&lt;p&gt;&lt;a href="http://codefest.at/image.axd?picture=azure-sdk-2-finished.png"&gt;&lt;img style="background-image: none; padding-top: 0px; padding-left: 0px; display: inline; padding-right: 0px; border: 0px;" title="azure-sdk-2-finished" src="http://codefest.at/image.axd?picture=azure-sdk-2-finished_thumb.png" alt="azure-sdk-2-finished" width="600" height="411" border="0" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Das Azure SDK for .NET 2.0 kann auch &amp;uuml;ber &lt;a title="http://www.windowsazure.com/en-us/develop/net/" href="http://www.windowsazure.com/en-us/develop/net/"&gt;http://www.windowsazure.com/en-us/develop/net/&lt;/a&gt; bezogen werden und ist als Open Source Projekt auf &lt;a title="https://github.com/WindowsAzure/azure-sdk-for-net" href="https://github.com/WindowsAzure/azure-sdk-for-net"&gt;https://github.com/WindowsAzure/azure-sdk-for-net&lt;/a&gt; verf&amp;uuml;gbar.&lt;/p&gt;
&lt;p&gt;Einzeln sind die Module von &lt;a title="Azure SDK 2.0 single modules" href="http://www.microsoft.com/de-de/download/details.aspx?id=38797" target="_blank"&gt;http://www.microsoft.com/de-de/download/details.aspx?id=38797&lt;/a&gt;&amp;nbsp;downloadbar.&lt;/p&gt;
&lt;p&gt;Die Neuerungen im Detail beschreibt ScottGu sch&amp;ouml;n in seinem &lt;a href="http://weblogs.asp.net/scottgu/archive/2013/04/30/announcing-the-release-of-windows-azure-sdk-2-0-for-net.aspx" target="_blank"&gt;Blogpost&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Viel Spa&amp;szlig; mit dem neuen Azure SDK und beim Ausprobieren der neuen Funktionen!&lt;/p&gt;</description>
      <link>http://feedproxy.google.com/~r/MsdnAustria/~3/qyWyNoW7pyo/post.aspx</link>
      <author>Toni Pohl</author>
      <comments>http://www.codefest.at/post/2013/05/01/Windows-Azure-SDK-2-for-NET.aspx#comment</comments>
      <guid isPermaLink="false">http://www.codefest.at/post.aspx?id=5e699689-fb14-4f9f-8a71-ea7c7b044d22</guid>
      <pubDate>Wed, 01 May 2013 11:14:00 +0200</pubDate>
      <category>Cloud-Computing</category>
      <category>Server Development</category>
      <dc:publisher>tp</dc:publisher>
      <pingback:server>http://www.codefest.at/pingback.axd</pingback:server>
      <pingback:target>http://www.codefest.at/post.aspx?id=5e699689-fb14-4f9f-8a71-ea7c7b044d22</pingback:target>
      <slash:comments>0</slash:comments>
      <trackback:ping>http://www.codefest.at/trackback.axd?id=5e699689-fb14-4f9f-8a71-ea7c7b044d22</trackback:ping>
      <wfw:comment>http://www.codefest.at/post/2013/05/01/Windows-Azure-SDK-2-for-NET.aspx#comment</wfw:comment>
      <wfw:commentRss>http://www.codefest.at/syndication.axd?post=5e699689-fb14-4f9f-8a71-ea7c7b044d22</wfw:commentRss>
    <feedburner:origLink>http://www.codefest.at/post.aspx?id=5e699689-fb14-4f9f-8a71-ea7c7b044d22</feedburner:origLink></item>
  </channel>
</rss>
