<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" 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:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9</title>
      <link>http://channel9.msdn.com/Niners/Vinicius_Souza/Posts</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Niners/Vinicius_Souza/Posts</link>
    <language>en</language>
    <pubDate>Wed, 22 May 2013 03:47:43 GMT</pubDate>
    <lastBuildDate>Wed, 22 May 2013 03:47:43 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>32</c9:totalResults>
    <c9:pageCount>2</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>AppDay Webcast de d&#250;vidas</title>
      <description><![CDATA[<p>Olá meus amigos!</p><p>Segue o vídeo do Webcast de que fizemos na última sexta-feira (10/05/2013).</p><p>Abaixo seguem os links divulgados durante o Webcast.</p><p><a href="http://www.microsoft.com/brasil/apps/appday.html">http://www.microsoft.com/brasil/apps/appday.html</a></p><p><a href="http://dev.windows.com/">http://dev.windows.com/</a></p><p><a href="http://bit.ly/Apps4Win">http://bit.ly/Apps4Win</a></p><p><a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p><a href="http://bit.ly/FernandoMartin">http://bit.ly/FernandoMartin</a></p><p><a href="http://appuploader.azurewebsites.net/">http://appuploader.azurewebsites.net/</a></p><p><a href="http://w8i.azurewebsites.net/">http://w8i.azurewebsites.net/</a></p><p><a href="http://bit.ly/VitorciaAppDay">http://bit.ly/VitorciaAppDay</a></p><p>Twitters: <a title="Twitter Vinícius" href="http://www.twitter.com/vbs_br">@vbs_br</a>, <a title="Twitter Vitor Ciaramella" href="http://www.twitter.com/vitorcia">@vitorcia</a>, <a title="Twitter Caverna" href="http://www.twitter.com/fernandomartin">@fernandomartin</a></p><p>Abraço,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:8f9de63917c8415595efa1bf000bf730">]]></description>
      <comments>http://channel9.msdn.com/posts/AppDay-Webcast-de-dvidas</comments>
      <itunes:summary>Ol&#225; meus amigos! Segue o v&#237;deo do Webcast de que fizemos na &#250;ltima sexta-feira (10/05/2013). Abaixo seguem os links divulgados durante o Webcast. http://www.microsoft.com/brasil/apps/appday.html http://dev.windows.com/ http://bit.ly/Apps4Win http://aka.ms/visouza http://bit.ly/FernandoMartin http://appuploader.azurewebsites.net/ http://w8i.azurewebsites.net/ http://bit.ly/VitorciaAppDay Twitters: @vbs_br, @vitorcia, @fernandomartin Abra&#231;o, Vin&#237;cius. </itunes:summary>
      <itunes:duration>6255</itunes:duration>
      <link>http://channel9.msdn.com/posts/AppDay-Webcast-de-dvidas</link>
      <pubDate>Wed, 15 May 2013 10:13:55 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/AppDay-Webcast-de-dvidas</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_100.jpg" height="60" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_220.jpg" height="132" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_512.jpg" height="307" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_960.jpg" height="576" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida.mp3" expression="full" duration="6255" fileSize="100087589" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida.mp4" expression="full" duration="6255" fileSize="360109234" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida.webm" expression="full" duration="6255" fileSize="159810466" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida.wma" expression="full" duration="6255" fileSize="50586383" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida.wmv" expression="full" duration="6255" fileSize="208001761" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_high.mp4" expression="full" duration="6255" fileSize="1068495818" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_mid.mp4" expression="full" duration="6255" fileSize="561162777" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida_Source.wmv" expression="full" duration="6255" fileSize="196958210" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/209b/50ab200c-c9c1-4d69-933f-4c387820209b/AppDayWebcastDuvida.wmv" length="208001761" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Vin&#237;cius Souza, Fernando Martin</dc:creator>
      <itunes:author>Vin&#237;cius Souza, Fernando Martin</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/AppDay-Webcast-de-dvidas/rss</wfw:commentRss>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Suporte - Um dos benef&#237;cios da Microsoft Store</title>
      <description><![CDATA[<p>Sabia que ao criar uma conta na Microsoft Store,&nbsp;você tem dois tickets de suporte por ano?</p><p>Não!? Assim como você, muitos desenvolvedores não sabem desse benefício.</p><p>Nesse vídeo apresento o passo-a-passo de como ter acesso ao suporte técnico para resolver aqueles problemas de certificação <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-5.gif?v=c9' alt='Wink' /></p><p>Twitter: <a title="Vinicius Souza - Twitter" href="http://www.twitter.com/vbs_br" target="_blank">@vbs_br</a></p><p>Blog: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p>Facebook: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p>Abraço,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:50667901fe704cb0af3da1b8010ac753">]]></description>
      <comments>http://channel9.msdn.com/posts/Suporte-Um-dos-benefcios-da-Microsoft-Store</comments>
      <itunes:summary>Sabia que ao criar uma conta na Microsoft Store,&amp;nbsp;voc&#234; tem dois tickets de suporte por ano? N&#227;o!? Assim como voc&#234;, muitos desenvolvedores n&#227;o sabem desse benef&#237;cio. Nesse v&#237;deo apresento o passo-a-passo de como ter acesso ao suporte t&#233;cnico para resolver aqueles problemas de certifica&#231;&#227;o  Twitter: @vbs_br Blog: http://aka.ms/visouza Facebook: http://aka.ms/facevisouza Abra&#231;o, Vin&#237;cius. </itunes:summary>
      <itunes:duration>268</itunes:duration>
      <link>http://channel9.msdn.com/posts/Suporte-Um-dos-benefcios-da-Microsoft-Store</link>
      <pubDate>Wed, 08 May 2013 16:30:38 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Suporte-Um-dos-benefcios-da-Microsoft-Store</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore.mp3" expression="full" duration="268" fileSize="4297623" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore.mp4" expression="full" duration="268" fileSize="25369789" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore.webm" expression="full" duration="268" fileSize="8719460" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore.wma" expression="full" duration="268" fileSize="2185935" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore.wmv" expression="full" duration="268" fileSize="9670205" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_high.mp4" expression="full" duration="268" fileSize="55790595" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_mid.mp4" expression="full" duration="268" fileSize="38895494" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore_Source.wmv" expression="full" duration="268" fileSize="13467252" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/a4c4/6da940b4-83f4-4e7c-894a-90976b07a4c4/SuporteWindowsStore.wmv" length="9670205" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Suporte-Um-dos-benefcios-da-Microsoft-Store/rss</wfw:commentRss>
      <category>Support</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Realizando o WACK e submetendo o aplicativo pelo publisher</title>
      <description><![CDATA[<p>Nesse vídeo realizo os procedimentos para executar o WACK&nbsp; (Windows App Certification Kit) e submeter a aplicação através do Publisher - <a href="http://appuploader.azurewebsites.net/">http://appuploader.azurewebsites.net/</a>&nbsp;</p><p>Blog: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p>Twitter @vbs_br</p><p>Facebook: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p>Abraço,</p><p>Vinícius</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:34bc09f480d34783a31ca1b700ebd4b2">]]></description>
      <comments>http://channel9.msdn.com/posts/Realizando-o-WACK-e-submetendo-o-aplicativo-pelo-publisher</comments>
      <itunes:summary>Nesse v&#237;deo realizo os procedimentos para executar o WACK&amp;nbsp; (Windows App Certification Kit) e submeter a aplica&#231;&#227;o atrav&#233;s do Publisher - http://appuploader.azurewebsites.net/&amp;nbsp; Blog: http://aka.ms/visouza Twitter @vbs_br Facebook: http://aka.ms/facevisouza Abra&#231;o, Vin&#237;cius </itunes:summary>
      <itunes:duration>456</itunes:duration>
      <link>http://channel9.msdn.com/posts/Realizando-o-WACK-e-submetendo-o-aplicativo-pelo-publisher</link>
      <pubDate>Tue, 07 May 2013 15:42:26 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Realizando-o-WACK-e-submetendo-o-aplicativo-pelo-publisher</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.mp3" expression="full" duration="456" fileSize="7301517" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.mp4" expression="full" duration="456" fileSize="41330842" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.webm" expression="full" duration="456" fileSize="18537949" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.wma" expression="full" duration="456" fileSize="3705959" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.wmv" expression="full" duration="456" fileSize="18934133" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_high.mp4" expression="full" duration="456" fileSize="90248122" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_mid.mp4" expression="full" duration="456" fileSize="63015085" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher_Source.wmv" expression="full" duration="456" fileSize="36206718" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.ism/manifest" expression="full" duration="456" fileSize="5400" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/ea14/2a59077b-d941-4248-8d83-49e22e16ea14/AppDayWackPublisher.wmv" length="18934133" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Realizando-o-WACK-e-submetendo-o-aplicativo-pelo-publisher/rss</wfw:commentRss>
      <category>Windows 8</category>
    </item>
  <item>
      <title>AppDay Video 2 - Alterando o template para uma app de CupCake no VisualStudio, passo a passo</title>
      <description><![CDATA[<p>Durante o AppDay, tivemos que utilizar o slides para apresentar o conteúdo.</p><p>Nesse vídeo utilizo o VisualStudio passo-a-passo para alterar o template de catálogo em uma app de CupCake, aqueles bolinhos que estão na moda <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-2.gif?v=c9' alt='Big Smile' /></p><p>Dessa forma vocês conseguiram acompanhar o conteúdo e alterar o aplicativo que estão desenvolvendo ao mesmo tempo.</p><p>Fiz no meu blog um artigo com as dúvidas mais comuns que surgiram no AppDay, estou atualizando esse artigo todos os dias com novas informações.&nbsp; <a href="http://viniciussouza.azurewebsites.net/pos-kickoff-do-appday/">http://viniciussouza.azurewebsites.net/pos-kickoff-do-appday/</a></p><p>[]s,</p><p>Vinícius.</p><p><strong>Twitter</strong>: @vbs_br</p><p><strong>Blog</strong>: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p><strong>Facebook</strong>: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p><strong>Grupo do AppDay no Facebook</strong>: <a href="http://www.facebook.com/groups/436637483038051/">http://www.facebook.com/groups/436637483038051/</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:6c532684b07144768c74a1a900d6dbcc">]]></description>
      <comments>http://channel9.msdn.com/posts/AppDay-Video-2-Alterando-o-template-para-uma-app-de-CupCake-no-VisualStudio-passo-a-passo</comments>
      <itunes:summary>Durante o AppDay, tivemos que utilizar o slides para apresentar o conte&#250;do. Nesse v&#237;deo utilizo o VisualStudio passo-a-passo para alterar o template de cat&#225;logo em uma app de CupCake, aqueles bolinhos que est&#227;o na moda  Dessa forma voc&#234;s conseguiram acompanhar o conte&#250;do e alterar o aplicativo que est&#227;o desenvolvendo ao mesmo tempo. Fiz no meu blog um artigo com as d&#250;vidas mais comuns que surgiram no AppDay, estou atualizando esse artigo todos os dias com novas informa&#231;&#245;es.&amp;nbsp; http://viniciussouza.azurewebsites.net/pos-kickoff-do-appday/ []s, Vin&#237;cius. Twitter: @vbs_br Blog: http://aka.ms/visouza Facebook: http://aka.ms/facevisouza Grupo do AppDay no Facebook: http://www.facebook.com/groups/436637483038051/ </itunes:summary>
      <itunes:duration>5098</itunes:duration>
      <link>http://channel9.msdn.com/posts/AppDay-Video-2-Alterando-o-template-para-uma-app-de-CupCake-no-VisualStudio-passo-a-passo</link>
      <pubDate>Tue, 23 Apr 2013 17:40:47 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/AppDay-Video-2-Alterando-o-template-para-uma-app-de-CupCake-no-VisualStudio-passo-a-passo</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_220.jpg" height="123" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_512.jpg" height="288" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_960.jpg" height="540" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger.mp3" expression="full" duration="5098" fileSize="1" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger.mp4" expression="full" duration="5098" fileSize="1" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger.webm" expression="full" duration="5098" fileSize="1" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger.wma" expression="full" duration="5098" fileSize="1" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger.wmv" expression="full" duration="5098" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_high.mp4" expression="full" duration="5098" fileSize="1" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_mid.mp4" expression="full" duration="5098" fileSize="1" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger_Source.wmv" expression="full" duration="5098" fileSize="1" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/b36d/079804b4-756d-4067-97e4-dd5f831cb36d/AppDayVdeo2VisualStudio2012CupCakeBigger.wmv" length="0" type="video/x-ms-wmv"></enclosure>
      <dc:creator>DiegoBlanco, Vin&#237;cius Souza</dc:creator>
      <itunes:author>DiegoBlanco, Vin&#237;cius Souza</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/AppDay-Video-2-Alterando-o-template-para-uma-app-de-CupCake-no-VisualStudio-passo-a-passo/rss</wfw:commentRss>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Update de seguran&#231;a KB2823324 do Windows 7 32-Bit</title>
      <description><![CDATA[<p>Update de segurança KB2823324 do Windows 7 32-Bit</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:62eeb804e7cf4683860da19e00eff714">]]></description>
      <comments>http://channel9.msdn.com/posts/Update-de-segurana-KB2823324-do-Windows-7-32-Bit</comments>
      <itunes:summary>Update de seguran&#231;a KB2823324 do Windows 7 32-Bit </itunes:summary>
      <itunes:duration>649</itunes:duration>
      <link>http://channel9.msdn.com/posts/Update-de-segurana-KB2823324-do-Windows-7-32-Bit</link>
      <pubDate>Fri, 12 Apr 2013 15:45:39 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Update-de-segurana-KB2823324-do-Windows-7-32-Bit</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_512.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_960.jpg" height="720" width="960"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit.mp3" expression="full" duration="649" fileSize="10394848" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit.mp4" expression="full" duration="649" fileSize="41313452" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit.webm" expression="full" duration="649" fileSize="16501004" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit.wma" expression="full" duration="649" fileSize="5262031" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit.wmv" expression="full" duration="649" fileSize="23811707" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_high.mp4" expression="full" duration="649" fileSize="94854004" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_mid.mp4" expression="full" duration="649" fileSize="65305184" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit_Source.wmv" expression="full" duration="649" fileSize="14966804" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/e500/7b41d03f-4fc6-42f9-a3d6-84daf1f6e500/ResolucaoKB2823324Windows732Bit.wmv" length="23811707" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>43</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Update-de-segurana-KB2823324-do-Windows-7-32-Bit/rss</wfw:commentRss>
      <category>Windows 7</category>
      <category>update</category>
    </item>
  <item>
      <title>Webcast -  A Microsoft mudou e est&#225; mais aberta.</title>
      <description><![CDATA[<p>Esse vídeo foi produzido em função do Webcast realizado no dia&nbsp;06/03/13, na semana da interoperabilidade.</p><p>Espero que gostem do conteúdo, abraço!</p><p>Vinícius.</p><p><strong>Fabebook</strong>: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p><strong>Blog</strong>: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p><strong>Twitter</strong>: <a title="Twitter" href="https://twitter.com/vbs_br">@vbs_br</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:0131571376f0451282eba1790154a57c">]]></description>
      <comments>http://channel9.msdn.com/posts/Webcast-A-Microsoft-mudou-e-est-mais-aberta</comments>
      <itunes:summary>Esse v&#237;deo foi produzido em fun&#231;&#227;o do Webcast realizado no dia&amp;nbsp;06/03/13, na semana da interoperabilidade. Espero que gostem do conte&#250;do, abra&#231;o! Vin&#237;cius. Fabebook: http://aka.ms/facevisouza Blog: http://aka.ms/visouza Twitter: @vbs_br </itunes:summary>
      <itunes:duration>3551</itunes:duration>
      <link>http://channel9.msdn.com/posts/Webcast-A-Microsoft-mudou-e-est-mais-aberta</link>
      <pubDate>Thu, 07 Mar 2013 17:11:24 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Webcast-A-Microsoft-mudou-e-est-mais-aberta</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade_512.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.mp3" expression="full" duration="3551" fileSize="56827170" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.mp4" expression="full" duration="3551" fileSize="217675259" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.webm" expression="full" duration="3551" fileSize="77620801" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.wma" expression="full" duration="3551" fileSize="28723271" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.wmv" expression="full" duration="3551" fileSize="109011023" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade_high.mp4" expression="full" duration="3551" fileSize="599185214" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade_mid.mp4" expression="full" duration="3551" fileSize="345150770" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade_Source.wmv" expression="full" duration="3551" fileSize="300442691" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.ism/manifest" expression="full" duration="3551" fileSize="10394" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/bf04/473efc55-f7db-47fa-8f9a-012e1062bf04/Webcast060313Interoperabilidade.wmv" length="109011023" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Webcast-A-Microsoft-mudou-e-est-mais-aberta/rss</wfw:commentRss>
      <category>Interop</category>
      <category>WebMatrix</category>
      <category>Windows Azure</category>
    </item>
  <item>
      <title>Webcast - Tirando proveito das ferramentas da Microsoft para desenvolver aplicativos seguros</title>
      <description><![CDATA[<p>Esse é um vídeo gerado a partir do Webcast (live meeting) do dia (01/03/2013) da semana de segurança.</p><p>O conteúdo foi produzido e apresentado por Yuri Diogenes - <a href="http://yuridiogenes.wordpress.com/">http://yuridiogenes.wordpress.com/</a></p><p>Abraço,</p><p>Vinícius.</p><p><strong>Fabebook</strong>: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p><strong>Blog</strong>: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p><strong>Twitter</strong>: <a title="Twitter" href="https://twitter.com/vbs_br">@vbs_br</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:941d31fe4a34444bb946a17700ef77af">]]></description>
      <comments>http://channel9.msdn.com/posts/Webcast-Tirando-proveito-das-ferramentas-da-Microsoft-para-desenvolver-aplicativos-seguros</comments>
      <itunes:summary>Esse &#233; um v&#237;deo gerado a partir do Webcast (live meeting) do dia (01/03/2013) da semana de seguran&#231;a. O conte&#250;do foi produzido e apresentado por Yuri Diogenes - http://yuridiogenes.wordpress.com/ Abra&#231;o, Vin&#237;cius. Fabebook: http://aka.ms/facevisouza Blog: http://aka.ms/visouza Twitter: @vbs_br </itunes:summary>
      <itunes:duration>3601</itunes:duration>
      <link>http://channel9.msdn.com/posts/Webcast-Tirando-proveito-das-ferramentas-da-Microsoft-para-desenvolver-aplicativos-seguros</link>
      <pubDate>Mon, 04 Mar 2013 18:01:48 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Webcast-Tirando-proveito-das-ferramentas-da-Microsoft-para-desenvolver-aplicativos-seguros</guid>
      <media:thumbnail url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313_100.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313_220.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313_512.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.mp3" expression="full" duration="3601" fileSize="57623914" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.mp4" expression="full" duration="3601" fileSize="272313495" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.webm" expression="full" duration="3601" fileSize="82647395" type="video/webm" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.wma" expression="full" duration="3601" fileSize="29125807" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.wmv" expression="full" duration="3601" fileSize="111222443" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313_high.mp4" expression="full" duration="3601" fileSize="696826821" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313_mid.mp4" expression="full" duration="3601" fileSize="453622579" type="video/mp4" medium="video"></media:content>
        <media:content url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313_Source.wmv" expression="full" duration="3601" fileSize="386938991" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.ism/manifest" expression="full" duration="3601" fileSize="10214" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://media.ch9.ms/ch9/9439/a9c78b28-676d-4484-9288-2cec78739439/WebcastSeguranca010313.wmv" length="111222443" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Yuri Diogenes, Vin&#237;cius Souza</dc:creator>
      <itunes:author>Yuri Diogenes, Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Webcast-Tirando-proveito-das-ferramentas-da-Microsoft-para-desenvolver-aplicativos-seguros/rss</wfw:commentRss>
      <category>SDL tool</category>
      <category>Seguran&#231;a</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Binding b&#225;sico para aplica&#231;&#245;es Metro Style</title>
      <description><![CDATA[<div><p class="ppTopic"><strong>Por Vinícius Souza</strong></p><p class="ppTopic"><strong>Microsoft Technical Evangelist</strong></p></div><p class="ppBodyText">Este artigo apresenta como vincular um controle a um único item ou vincular um controle de lista a uma coleção de itens em um aplicativo estilo Metro. Apresenta também como personalizar a exibição de itens de controle, implementar uma exibição de detalhes com base em uma seleção, e converter dados para exibição.</p><h2>Realizando Binding para um item simples</h2><p class="ppBodyText">Basicamente o Data Binding (vinculação de dados) &nbsp;consiste em uma origem e um destino. O destino de um binding é tipicamente uma propriedade de um controle. Veja exemplo abaixo:</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Grid&gt;
   &lt;Grid.ColumnDefinitions&gt;
      &lt;ColumnDefinition Width=&quot;Auto&quot;/&gt;
      &lt;ColumnDefinition Width=&quot;*&quot;/&gt;
   &lt;/Grid.ColumnDefinitions&gt;
   &lt;TextBlock x:Name=&quot;pageTitle&quot; Text=&quot;{StaticResource AppName}&quot; /&gt;
&lt;/Grid&gt;</pre></p></div><p>&nbsp;O exemplo acima apresenta o binding de um controle para um objeto simples, o destino do binding nesse caso é a propriedade <strong>Text</strong> de um controle do tipo <strong>TextBlock</strong> e a fonte é a variável AppName do tipo String definida no arquivo App.xaml.</p><p class="ppFigureCaption"><strong>Funcionamento do Binding</strong></p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/d4a9cdab-90de-4677-b406-5c0be6ffaef1.png" alt="" width="518" height="218"></p><p>Neste caso o tipo de binding aplicado é o OneWay, valor aplicado por padrão. O que significa que o dado é recuperado de uma origem, mas alterações não são aplicadas de volta.</p><h2>Realizando Binding para uma coleção de objetos</h2><p class="ppBodyText">Umas das tarefas mais comuns no desenvolvimento de aplicações é o de fazer o Binding para uma coleção de objetos de negócio. Em C# e Visual Basic, a classe genérica <strong>ObservableCollection&lt;T&gt;</strong>&nbsp; é uma boa escolha de uma coleção para realizar o binding, porque ele implementa as interfaces <strong>INotifyPropertyChanged</strong> e <strong>InotifyCollectionChanged</strong>. Estas interfaces fornecem notificação de mudança para os controles que estão ligados, quando uma propriedade de um item é alterado ou a propriedade de uma coleção é alterada.</p><p class="ppBodyText">O exemplo a seguir realiza o bind de uma coleção de objetos para uma controle ComboBox:</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Grid x:Name=&quot;ContentPanel&quot; Grid.Row=&quot;1&quot; Margin=&quot;12,0,12,0&quot;&gt;
    &lt;ComboBox x:Name=&quot;ComboBox1&quot; ItemsSource=&quot;{Binding}&quot;
        Foreground=&quot;Black&quot; FontSize=&quot;30&quot; Height=&quot;50&quot; Width=&quot;780&quot;/&gt;
&lt;/Grid&gt;</pre></p></div><pre><pre class="brush: csharp">public ObservableCollection&lt;Recording&gt; MyMusic = new ObservableCollection&lt;Recording&gt;();
 
public Page()
{
    InitializeComponent();
 
    // Add items to the collection.
    MyMusic.Add(new Recording(&quot;Chris Sells&quot;, &quot;Chris Sells Live&quot;,
        new DateTime(2008, 2, 5)));
    MyMusic.Add(new Recording(&quot;Luka Abrus&quot;,
        &quot;The Road to Redmond&quot;, new DateTime(2007, 4, 3)));
    MyMusic.Add(new Recording(&quot;Jim Hance&quot;,
        &quot;The Best of Jim Hance&quot;, new DateTime(2007, 2, 6)));
 
    // Set the data context for the combo box.
    ComboBox1.DataContext = MyMusic;
}
 
 
public class Recording
{
    public Recording() { }
 
    public Recording(string artistName, string cdName, DateTime release)
    {
        Artist = artistName;
        Name = cdName;
        ReleaseDate = release;
    }
 
    public string Artist { get; set; }
    public string Name { get; set; }
    public DateTime ReleaseDate { get; set; }
 
    // Override the ToString method.
    public override string ToString()
    {
        return Name &#43; &quot; by &quot; &#43; Artist &#43; &quot;, Released: &quot; &#43; ReleaseDate.ToString(&quot;d&quot;);
    }
}</pre>&nbsp;</pre><p class="ppBodyText">Para exibir os registros de música em um controle ComboBox, a propriedade ItemsSource do controle recebe o valor de Binding e a propriedade DataContex recebe a coleção de objetos do tipo Recording, que fornece a origem para a operação de ligação (binding). Um ComboBoxItem é criado para cada item da coleção. O método ToString é automaticamento executado para cada objeto to tipo Recording para apresentar o item de um ComboBox.</p><h2>Exibindo itens em um controle usando um modelo de dados</h2><p class="ppBodyText">Você pode exibir os itens em uma lista usando o método <strong>ToString</strong> do item. No entanto, um cenário mais comum é utilizar uma visualização personalizada de dados vinculados utilizando um <em>DataTemplate</em>. Um <em>DataTemplate</em> permite que você personalize como os itens de uma lista são apresentados em um controle. Normalmente, você pode definir o modelo de dados utilizando a propriedade <em>ContentTemplate</em> de um controle de conteúdo ou a propriedade <em>ItemTemplate</em> de um controle de itens.</p><p class="ppBodyText">O exemplo a seguir mostra a mesma lista de gravações ligados a uma caixa de combinação usando um modelo de dados. Uma caixa de combinação é um controle do tipo ItemsControl, o que significa que você estabeleça um modelo de dados para cada item, definindo sua propriedade <em>ItemTemplate</em> para um modelo de dados. Observe como os registros são apresentados diferentemente do exemplo anterior.</p><p class="ppBodyText">No XAML, você pode ver a definição do modelo de dados. O modelo de dados contém um StackPanel com quatro controles TextBlock. O StackPanel utiliza a orientação horizontal, de modo que os quatro controlos de bloco de texto aparecem lado a lado. Dois dos controles TextBlock estão vinculados às propriedades Artist e Name de um objeto Recording. Os outros dois controles TextBlock exibem texto estático. Para cada item ligado, a ligação fornece o caminho para a propriedade sobre o objeto de gravação. No exemplo a seguir, essa ligação baseia-se no contexto de dados a ser definida para a lista de gravações.</p><p class="ppBodyText">&nbsp;<pre class="brush: xml">&lt;ComboBox x:Name=&quot;ComboBox1&quot; ItemsSource=&quot;{Binding}&quot; Foreground=&quot;Black&quot; FontSize=&quot;30&quot; Height=&quot;50&quot; Width=&quot;450&quot;&gt;
  &lt;ComboBox.ItemTemplate&gt;
    &lt;DataTemplate&gt;
      &lt;StackPanel Orientation=&quot;Horizontal&quot; Margin=&quot;2&quot;&gt;
        &lt;TextBlock Text=&quot;Artist:&quot; Margin=&quot;2&quot; /&gt;
        &lt;TextBlock Text=&quot;{Binding Artist}&quot; Margin=&quot;2&quot; /&gt;
        &lt;TextBlock Text=&quot;CD:&quot; Margin=&quot;10,2,0,2&quot; /&gt;
        &lt;TextBlock Text=&quot;{Binding Name}&quot; Margin=&quot;2&quot; /&gt;
      &lt;/StackPanel&gt;
    &lt;/DataTemplate&gt;
  &lt;/ComboBox.ItemTemplate&gt;
&lt;/ComboBox&gt;</pre></p><h2>Conversão de dados para exibição nos controles</h2><p class="ppBodyText">Utilizando um <strong>Converter (conversor)</strong>, você pode formatar e apresentar outros tipos de objetos, como um TextBox. Por exemplo, você pode apresentar um rótulo e uma data formatada ao invez de apresentar apenas uma data.</p><p class="ppBodyText">O trecho de código a seguir apresenta uma implementação de um Converter para a data de lançamento do álbum da lista de gravações.</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;UserControl x:Class=&quot;TestDataBindingQS.Page2&quot;
  xmlns=&quot;http://schemas.microsoft.com/winfx/2006/xaml/presentation&quot;
  xmlns:x=&quot;http://schemas.microsoft.com/winfx/2006/xaml&quot;
  xmlns:d=&quot;http://schemas.microsoft.com/expression/blend/2008&quot;
  xmlns:mc=&quot;http://schemas.openxmlformats.org/markup-compatibility/2006&quot;
  xmlns:local=&quot;using:TestDataBindingQS&quot;
  mc:Ignorable=&quot;d&quot;
  d:DesignHeight=&quot;768&quot; d:DesignWidth=&quot;1366&quot;&gt;

   &lt;UserControl.Resources&gt;
      &lt;local:StringFormatter x:Key=&quot;StringConverter&quot;/&gt;
   &lt;/UserControl.Resources&gt;

   &lt;Grid x:Name=&quot;LayoutRoot&quot; Background=&quot;#FF0C0C0C&quot;&gt;
      &lt;StackPanel Width=&quot;750&quot; Height=&quot;200&quot; VerticalAlignment=&quot;Center&quot; HorizontalAlignment=&quot;Center&quot;&gt;
          &lt;ComboBox x:Name=&quot;ComboBox1&quot; ItemsSource=&quot;{Binding}&quot; Foreground=&quot;Black&quot; FontSize=&quot;30&quot; Height=&quot;50&quot; Width=&quot;750&quot;&gt;
             &lt;ComboBox.ItemTemplate&gt;
                &lt;DataTemplate&gt;
                  &lt;StackPanel Orientation=&quot;Horizontal&quot; Margin=&quot;2&quot;&gt;
                      &lt;TextBlock Text=&quot;Artist:&quot; Margin=&quot;2&quot; /&gt;
                      &lt;TextBlock Text=&quot;{Binding Artist}&quot; Margin=&quot;2&quot; /&gt;
                      &lt;TextBlock Text=&quot;CD:&quot; Margin=&quot;10,2,0,2&quot; /&gt;
                      &lt;TextBlock Text=&quot;{Binding Name}&quot; Margin=&quot;2&quot; /&gt;
                   &lt;/StackPanel&gt;
                &lt;/DataTemplate&gt;
            &lt;/ComboBox.ItemTemplate&gt;
         &lt;/ComboBox&gt;

         &lt;!--The UI for the details view--&gt;
         &lt;StackPanel x:Name=&quot;RecordingDetails&quot;&gt;
            &lt;TextBlock Text=&quot;{Binding Artist}&quot; FontSize=&quot;30&quot; FontWeight=&quot;Bold&quot; /&gt;
            &lt;TextBlock Text=&quot;{Binding Name}&quot; FontSize=&quot;30&quot; FontStyle=&quot;Italic&quot; /&gt;
            &lt;TextBlock Text=&quot;{Binding ReleaseDate, Converter={StaticResource StringConverter}, ConverterParameter=Released: \{0:d\}}&quot; FontSize=&quot;30&quot;  /&gt;
         &lt;/StackPanel&gt;
      &lt;/StackPanel&gt;
   &lt;/Grid&gt;
&lt;/UserControl&gt;</pre></p></div><pre><pre class="brush: csharp">public class StringFormatter : IValueConverter
{
    // This converts the value object to the string to display.
    // This will work with most simple types.
    public object Convert(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        // Retrieve the format string and use it to format the value.
        string formatString = parameter as string;
        if (!string.IsNullOrEmpty(formatString))
        {
            return string.Format(culture, formatString, value);
        }
 
        // If the format string is null or empty, simply
        // call ToString() on the value.
        return value.ToString();
    }
 
    // No need to implement converting back on a one-way binding
    public object ConvertBack(object value, Type targetType,
        object parameter, System.Globalization.CultureInfo culture)
    {
        throw new NotImplementedException();
    }
}</pre></pre><p class="ppBodyText">Uma classe conversora deriva da interface <strong>IValueConverter</strong>. A interface <strong>IValueConverter</strong> possui dois métodos o <strong>Convert</strong> e <strong>ConvertBack</strong>.Para o tipo de bindig de sentido único (One-Way) da origem de dados para o controle de destino, você somente deve implementar o método <strong>Convert</strong>. O conversor neste exemplo é genérico. Você fornece uma String no parametro format, e o conversor utiliza o método <strong>String.Format</strong> para realizar a formatação. Se uma máscara de formatação não é forneceido, o conversor retorna o resultado chamando o método <strong>ToString()</strong> de um objeto.</p><p class="ppBodyText">Uma vez implementado o conversor, você pode criar uma instância da classe de conversão e informar os bindings para utilizar essa instância. Neste exemplo, isto é realizado no XAML. Uma instância do conversor é criado como um recurso estático e recebe uma chave. A chave é depois utilizada quando a propriedade do conversor é atualizada no binding.</p><h2>Conclusão</h2><p class="ppBodyText">O Binding é uma técnica muito utilizada para apresentar os dados na interface e manter os dados do modelo de dados atualizados.</p><p class="ppBodyText">Na programação Metro Style utilizamos Binding a todo instante, e por isso, o conceito de Binding apresentado aqui deve ser muito bem compreendido.</p><p class="ppBodyText">&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:92936e12a32f49e2bf85a08b016b6f9a">]]></description>
      <comments>http://channel9.msdn.com/posts/Binding-basico-para-aplicacoes-metro-style</comments>
      <itunes:summary>Por Vin&#237;cius Souza Microsoft Technical Evangelist Este artigo apresenta como vincular um controle a um &#250;nico item ou vincular um controle de lista a uma cole&#231;&#227;o de itens em um aplicativo estilo Metro. Apresenta tamb&#233;m como personalizar a exibi&#231;&#227;o de itens de controle, implementar uma exibi&#231;&#227;o de detalhes com base em uma sele&#231;&#227;o, e converter dados para exibi&#231;&#227;o. Realizando Binding para um item simplesBasicamente o Data Binding (vincula&#231;&#227;o de dados) &amp;nbsp;consiste em uma origem e um destino. O destino de um binding &#233; tipicamente uma propriedade de um controle. Veja exemplo abaixo: &amp;lt;Grid&amp;gt;
   &amp;lt;Grid.ColumnDefinitions&amp;gt;
      &amp;lt;ColumnDefinition Width=&amp;quot;Auto&amp;quot;/&amp;gt;
      &amp;lt;ColumnDefinition Width=&amp;quot;*&amp;quot;/&amp;gt;
   &amp;lt;/Grid.ColumnDefinitions&amp;gt;
   &amp;lt;TextBlock x:Name=&amp;quot;pageTitle&amp;quot; Text=&amp;quot;{StaticResource AppName}&amp;quot; /&amp;gt;
&amp;lt;/Grid&amp;gt; &amp;nbsp;O exemplo acima apresenta o binding de um controle para um objeto simples, o destino do binding nesse caso &#233; a propriedade Text de um controle do tipo TextBlock e a fonte &#233; a vari&#225;vel AppName do tipo String definida no arquivo App.xaml. Funcionamento do Binding &amp;nbsp; Neste caso o tipo de binding aplicado &#233; o OneWay, valor aplicado por padr&#227;o. O que significa que o dado &#233; recuperado de uma origem, mas altera&#231;&#245;es n&#227;o s&#227;o aplicadas de volta. Realizando Binding para uma cole&#231;&#227;o de objetosUmas das tarefas mais comuns no desenvolvimento de aplica&#231;&#245;es &#233; o de fazer o Binding para uma cole&#231;&#227;o de objetos de neg&#243;cio. Em C# e Visual Basic, a classe gen&#233;rica ObservableCollection&amp;lt;T&amp;gt;&amp;nbsp; &#233; uma boa escolha de uma cole&#231;&#227;o para realizar o binding, porque ele implementa as interfaces INotifyPropertyChanged e InotifyCollectionChanged. Estas interfaces fornecem notifica&#231;&#227;o de mudan&#231;a para os controles que est&#227;o ligados, quando uma propriedade de um item &#233; alterado ou a propriedade de uma cole&#231;&#227;o &#233; alterada. O exemplo a seguir realiza o bind de uma cole&#231;&#227;o de objetos para uma controle ComboBox: &amp;lt;Gr</itunes:summary>
      <link>http://channel9.msdn.com/posts/Binding-basico-para-aplicacoes-metro-style</link>
      <pubDate>Wed, 11 Jul 2012 22:23:46 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Binding-basico-para-aplicacoes-metro-style</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/b789d922-aaf0-4a9b-a190-32124a591ded.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Binding-basico-para-aplicacoes-metro-style/rss</wfw:commentRss>
      <category>Brasil</category>
      <category>XAML</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Controles avan&#231;ados (GridView, ListView e FlipView)</title>
      <description><![CDATA[<div><p class="ppTopic"><strong>Por Vinícius Souza</strong></p><p class="ppTopic"><strong>Microsoft Technical Evangelist</strong></p><p><strong>Fabebook</strong>: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p><strong>Blog</strong>: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p><strong>Twitter</strong>: <a title="Twitter" href="https://twitter.com/vbs_br">@vbs_br</a></p><p>&nbsp;</p></div><p class="ppBodyText">Os controles GridView, ListView e FlipView não são fáceis de entender logo no primeiro contato, e essa dificuldade está relacionada ao comportamento diferente dos outros controles do tipo ItemsControl. Espero com esse artigo, ajudar você a entender e customizar estes controles.</p><p class="ppBodyText">A classe ItemsControl é a classe pai para uma série de controles que exibem coleções de itens. Neste grupo você encontrará o ListBox e ComboBox, assim como os novos controles Windows GridView, FlipView e ListView.</p><h2>GridView</h2><p class="ppBodyText">Utilizem o GridView para apresentar dados que rolam horizontalmente, se quiser que os dados rolem verticalmente utilizem o ListView abordado na próxima seção.</p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/6eda6ba0-3716-4c8b-9d16-5ccad8866e65.png" alt=""></p><p class="ppBodyText">Por padrão, o item de dados é apresentado no GridView como uma representação de um objeto String do objeto que está ligado. Para especificar exatamente como os items de um GridView serão apresentados é necessário criar um DataTemplate para definir quais controles de layout serão utilizados para apresentar um item. Os controles no layout podem ser ligados (utilizando o binding)&nbsp; para as propriedades de um objeto, ou ainda ter seu conteúdo definido diretamente no código. Você atribui o DataTemplate para a propriedade ItemTemplate do GridView.</p><p class="ppBodyText">Um usuário pode selecionar um único item de um GridView, por padrão. Para alterar este comportamente alteramos o valor da propriedade SelectionMode para um dos possíveis valores da enumeração ListViewSelectionMode, permitindo assim, multipla seleção ou ainda desabilitar a seleção. O GridView ainda permite que seus itens comportam-se como botões, ao invez de ser selecionados.</p><p class="ppBodyText">A tabela a seguir apresenta os possíveis comportamentos de um GridView e como responder a cada iteração:</p><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="25%"><p class="ppTableText"><strong>Para habilitar o comportamento</strong></p></td><td valign="top" width="26%"><p class="ppTableText"><strong>Utilize esta configuração</strong></p></td><td valign="top" width="23%"><p class="ppTableText"><strong>Manipule o evento</strong></p></td><td valign="top" width="25%"><p class="ppTableText"><strong>Utilize esta propriedade para recuperar o item selecionado</strong></p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Sem interação</p></td><td valign="top" width="26%"><p class="ppTableText">SelectionMode = None</p><p class="ppTableText">IsItemClickEnabled = False</p></td><td valign="top" width="23%"><p class="ppTableText">--</p></td><td valign="top" width="25%"><p class="ppTableText">--</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Seleção simples</p></td><td valign="top" width="26%"><p class="ppTableText">SelectionMode = Single</p><p class="ppTableText">IsItemCliclEnabled = True</p></td><td valign="top" width="23%"><p class="ppTableText">SelectionChanged</p></td><td valign="top" width="25%"><p class="ppTableText">SelectedItem</p><p class="ppTableText">SelectedIndex</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Seleção multipla contínua</p></td><td valign="top" width="26%"><p class="ppTableText">SelectionMode = Multiple,</p><p class="ppTableText">IsItemClickEnabled = False</p></td><td valign="top" width="23%"><p class="ppTableText">SelectionChanged</p></td><td valign="top" width="25%"><p class="ppTableText">SelectedItems</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Seleção multipla não contínua</p></td><td valign="top" width="26%"><p class="ppTableText">SelectionMode = none</p><p class="ppTableText">IsItemClickEnabled = true</p></td><td valign="top" width="23%"><p class="ppTableText">ItemClick</p></td><td valign="top" width="25%"><p class="ppTableText">--</p></td></tr></tbody></table><p class="ppBodyText">&nbsp;</p><p class="ppBodyText">O <strong>GridView</strong> suporta virtualização dos dados para melhorar a performance quando estiver utilizando grande quantidades de dados. Virtualização de acesso aleatório é suportado quando a fonte de dados implementar a interface <strong>IObservableVector</strong> ou <strong>INotifyCollectionChanged</strong>. Virtualização de carga incremental é suportado quando a fonte de dados implementar a interface <strong>ISupportIncrementalLoading</strong>, neste caso você pode utilizar os membros para controlar o carregamento: <strong>DataFetchSize</strong>, <strong>IncrementalLoadingThreshold</strong>, <strong>IncrementalLoadingTrigger</strong>, <strong>LoadMoreItemsAsync</strong>.</p><p class="ppBodyText"><strong>GridView</strong> implementa a interface <strong>ISemanticZoomInformation</strong>, o que possibilita sua utilização como uma visão do controle <strong>SemanticZoom</strong>. Quando utilizado em um controle <strong>SemanticZoom</strong>, sempre atualize a propriedade <strong>ScrollViewer.IsHorizontalScrollChainingEnabled</strong> para <strong>false</strong>, desta forma&nbsp; <em>&lt;GridView ScrollViewer.IsHorizontalScrollChainingEnabled=&quot;False&quot;&gt;</em>. Os seguintes membros tem efeito somente quando utilizado em um GridView dentro de um SemanticZoom: &nbsp;<strong>IsActiveView, IsZoomedInView, SemanticZoomOwner, CompleteViewChange, CompleteViewChangeFrom, CompleteViewChangeTo, InitializeViewChange, MakeVisible, StartViewChangeFrom, StartViewChangeTo</strong>.</p><p class="ppBodyText">No trecho de código abaixo, o GridView está vinculado a uma coleção agrupada CollectionViewSource chamada cvsProjects. A aparência dos itens individuais de cada grupo é definida por um ItemTemplate. Os ItemsPanel especifica como o grupo será organizado na GridView. O GroupStyle.Panel especifica como itens individuais serão organizados em cada grupo.</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;GridView ItemsSource=&quot;{Binding Source={StaticResource cvsProjects}}&quot;

  Margin=&quot;0,120,0,0&quot; MaxHeight=&quot;500&quot; Grid.Column=&quot;1&quot;&gt;

    &lt;GridView.ItemTemplate&gt;

        &lt;DataTemplate&gt;

            &lt;StackPanel Margin=&quot;20&quot;&gt;

                &lt;TextBlock Text=&quot;{Binding Name}&quot; FontWeight=&quot;Bold&quot;

                           Style=&quot;{StaticResource ItemTextStyle}&quot;/&gt;

                &lt;TextBlock Text=&quot;{Binding DueDate}&quot; TextWrapping=&quot;NoWrap&quot;

                           Style=&quot;{StaticResource BodyTextStyle}&quot; /&gt;

                &lt;CheckBox Content=&quot;Complete&quot; IsChecked=&quot;{Binding Complete}&quot;

                          IsEnabled=&quot;False&quot;/&gt;

            &lt;/StackPanel&gt;

        &lt;/DataTemplate&gt;

    &lt;/GridView.ItemTemplate&gt;

    &lt;GridView.ItemsPanel&gt;

        &lt;ItemsPanelTemplate&gt;

            &lt;StackPanel Orientation=&quot;Horizontal&quot;/&gt;

        &lt;/ItemsPanelTemplate&gt;

    &lt;/GridView.ItemsPanel&gt;



    &lt;GridView.GroupStyle&gt;

        &lt;GroupStyle HidesIfEmpty=&quot;True&quot;&gt;

            &lt;GroupStyle.HeaderTemplate&gt;

                &lt;DataTemplate&gt;

                    &lt;Grid Background=&quot;LightGray&quot; Margin=&quot;0&quot;&gt;

                        &lt;TextBlock Text='{Binding Name}'

                                   Foreground=&quot;Black&quot; Margin=&quot;30&quot;

                                   Style=&quot;{StaticResource HeaderTextStyle}&quot;/&gt;

                    &lt;/Grid&gt;

                &lt;/DataTemplate&gt;

            &lt;/GroupStyle.HeaderTemplate&gt;



            &lt;GroupStyle.ContainerStyle&gt;

                &lt;Style TargetType=&quot;GroupItem&quot;&gt;

                    &lt;Setter Property=&quot;MinWidth&quot; Value=&quot;600&quot;/&gt;

                    &lt;Setter Property=&quot;BorderBrush&quot; Value=&quot;DarkGray&quot;/&gt;

                    &lt;Setter Property=&quot;BorderThickness&quot; Value=&quot;2&quot;/&gt;

                    &lt;Setter Property=&quot;Margin&quot; Value=&quot;3,0&quot;/&gt;

                &lt;/Style&gt;

            &lt;/GroupStyle.ContainerStyle&gt;



            &lt;GroupStyle.Panel&gt;

                &lt;ItemsPanelTemplate&gt;

                    &lt;VariableSizedWrapGrid/&gt;

                &lt;/ItemsPanelTemplate&gt;

            &lt;/GroupStyle.Panel&gt;

        &lt;/GroupStyle&gt;

    &lt;/GridView.GroupStyle&gt;

&lt;/GridView&gt;[</pre></p></div><h2>ListView</h2><p class="ppBodyText">Como dito anteriormente o ListView é utilizado para apresentar listas verticais, assim como o GridView o ListView é um controle do tipo ItemsControls, assim ele pode conter uma coleção de itens de um tipo. Para popular a visualização, adicione itens para a coleção Items, ou atualize a propriedade ItemsSource com a origem de dados a serem utilizados.</p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/045c4bfc-d74a-4671-b239-247c5e02dad2.png" alt="" width="130" height="313"></p><p class="ppBodyText">O ListView é geralmente utilizado para apresentar dados na visão Snapped, um exemplo desta utilização pode ser encontrada no template de Grid fornecido no Visual Studio.</p><p class="ppBodyText">Tirando o fato que um ListView apresenta os dados na vertical, não há maiores diferenças com o GridView os controles fornecem as mesmas funcionalidades como carga incremental, acesso aleatório e zoom semântico.</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;ListView x:Name=&quot;itemListView&quot;
          Margin=&quot;120,0,0,60&quot;
          ItemsSource=&quot;{Binding Source={StaticResource itemsViewSource}}&quot;
          SelectionChanged=&quot;ItemListView_SelectionChanged&quot;&gt;
    &lt;ListView.ItemTemplate&gt;
        &lt;DataTemplate&gt;
            &lt;Grid Height=&quot;110&quot; Margin=&quot;6&quot;&gt;
                &lt;Grid.ColumnDefinitions&gt;
                    &lt;ColumnDefinition Width=&quot;Auto&quot;/&gt;
                    &lt;ColumnDefinition Width=&quot;*&quot;/&gt;
                &lt;/Grid.ColumnDefinitions&gt;
                &lt;Border Background=&quot;{StaticResource ListViewItemPlaceholderBackgroundThemeBrush}&quot; Width=&quot;110&quot; Height=&quot;110&quot;&gt;
                    &lt;Image Source=&quot;{Binding Image}&quot; Stretch=&quot;UniformToFill&quot;/&gt;
                &lt;/Border&gt;
                &lt;StackPanel Grid.Column=&quot;1&quot; VerticalAlignment=&quot;Top&quot; Margin=&quot;10,0,0,0&quot;&gt;
                    &lt;TextBlock Text=&quot;{Binding Title}&quot; Style=&quot;{StaticResource TitleTextStyle}&quot; TextWrapping=&quot;NoWrap&quot;/&gt;
                    &lt;TextBlock Text=&quot;{Binding Subtitle}&quot; Style=&quot;{StaticResource CaptionTextStyle}&quot; TextWrapping=&quot;NoWrap&quot;/&gt;
                    &lt;TextBlock Text=&quot;{Binding Description}&quot; Style=&quot;{StaticResource BodyTextStyle}&quot; MaxHeight=&quot;60&quot;/&gt;
                &lt;/StackPanel&gt;
            &lt;/Grid&gt;
        &lt;/DataTemplate&gt;
    &lt;/ListView.ItemTemplate&gt;          
&lt;/ListView&gt;</pre></p></div><pre>&nbsp;</pre><h2>FlipView</h2><p class="ppBodyText">Utilizem o controle FlipView para apresentar um coleção de itens sequencialmente, uma por vez. Este controle é muito utilizado para apresentar uma galeria de imagens, por exemplo.</p><p class="ppFigureCaption"><strong>Galeria com o FlipView</strong></p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/f6716364-541e-471f-8cf0-dd03c640a702.png" alt=""></p><p>O FlipView também é um controle do tipo ItemsControl, assim ele possui uma coleção de itens de qualquer tipo. Para populá-lo adicione itens para a coleção Items, ou atribua uma fonte de dados para a propriedade ItemsSource.</p><p>O controle permite que seja utilizada todo o espaço disponível na tela para apresentar um item. Ele apresenta dois botões, um na esquerda e outro na direita que permite o usuário navegar entre os itens que serão apresentados, se você utilizar um dispositivo com suporte a touch as setas não serão apresentadas e você pode realizar movimentos do tipo swipe horizontais para avançar ou voltar.</p><p class="ppBodyText">Por padrão, os dados de um FlipView é apresentado como uma representação de String de um objeto. Para especificar exatamente como os itens em um FlipView são apresentados, é necessário criar um DataTemplate para definir os controles de layout utilizados para cada item. Os controles no layout podem ser vinculados&nbsp; utilizando Binding para os dados de objetos.</p><p class="ppBodyText">&nbsp;</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;FlipView x:Name=&quot;flipView1&quot; Width=&quot;480&quot; Height=&quot;270&quot; 
              BorderBrush=&quot;Black&quot; BorderThickness=&quot;1&quot;&gt;
            &lt;FlipView.ItemTemplate&gt;
                &lt;DataTemplate&gt;
                    &lt;Grid&gt;
                        &lt;Image Width=&quot;480&quot; Height=&quot;270&quot; Source=&quot;{Binding Image}&quot; Stretch=&quot;UniformToFill&quot;/&gt;
                        &lt;Border Background=&quot;#A5000000&quot; Height=&quot;80&quot; VerticalAlignment=&quot;Bottom&quot;&gt;
                            &lt;TextBlock Text=&quot;{Binding Name}&quot; FontFamily=&quot;Segoe UI&quot; FontSize=&quot;26.667&quot; 
                                       Foreground=&quot;#CCFFFFFF&quot; Padding=&quot;15,20&quot;/&gt;
                        &lt;/Border&gt;
                    &lt;/Grid&gt;
                &lt;/DataTemplate&gt;
            &lt;/FlipView.ItemTemplate&gt;
        &lt;/FlipView&gt;</pre></p></div><h2>Conclusão</h2><p class="ppBodyText">O desafio de criar uma interface de usuário completamente nova, baseada em toque para aplicações metro style, requer um conjunto completo de novos controles que simplificam a nossa vida. Por essa razão, metro oferece alguns controles que implementam novos tipos de interações.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d5736cf4c1e748fe8bd5a08b0168543f">]]></description>
      <comments>http://channel9.msdn.com/posts/Controles-Avancados-GridView-ListView-FlipView</comments>
      <itunes:summary>Por Vin&#237;cius Souza Microsoft Technical Evangelist Fabebook: http://aka.ms/facevisouza Blog: http://aka.ms/visouza Twitter: @vbs_br &amp;nbsp; Os controles GridView, ListView e FlipView n&#227;o s&#227;o f&#225;ceis de entender logo no primeiro contato, e essa dificuldade est&#225; relacionada ao comportamento diferente dos outros controles do tipo ItemsControl. Espero com esse artigo, ajudar voc&#234; a entender e customizar estes controles. A classe ItemsControl &#233; a classe pai para uma s&#233;rie de controles que exibem cole&#231;&#245;es de itens. Neste grupo voc&#234; encontrar&#225; o ListBox e ComboBox, assim como os novos controles Windows GridView, FlipView e ListView. GridViewUtilizem o GridView para apresentar dados que rolam horizontalmente, se quiser que os dados rolem verticalmente utilizem o ListView abordado na pr&#243;xima se&#231;&#227;o. &amp;nbsp; Por padr&#227;o, o item de dados &#233; apresentado no GridView como uma representa&#231;&#227;o de um objeto String do objeto que est&#225; ligado. Para especificar exatamente como os items de um GridView ser&#227;o apresentados &#233; necess&#225;rio criar um DataTemplate para definir quais controles de layout ser&#227;o utilizados para apresentar um item. Os controles no layout podem ser ligados (utilizando o binding)&amp;nbsp; para as propriedades de um objeto, ou ainda ter seu conte&#250;do definido diretamente no c&#243;digo. Voc&#234; atribui o DataTemplate para a propriedade ItemTemplate do GridView. Um usu&#225;rio pode selecionar um &#250;nico item de um GridView, por padr&#227;o. Para alterar este comportamente alteramos o valor da propriedade SelectionMode para um dos poss&#237;veis valores da enumera&#231;&#227;o ListViewSelectionMode, permitindo assim, multipla sele&#231;&#227;o ou ainda desabilitar a sele&#231;&#227;o. O GridView ainda permite que seus itens comportam-se como bot&#245;es, ao invez de ser selecionados. A tabela a seguir apresenta os poss&#237;veis comportamentos de um GridView e como responder a cada itera&#231;&#227;o: Para habilitar o comportamento Utilize esta configura&#231;&#227;o Manipule o evento Utilize esta propriedade para recuperar o item selecionado Sem intera&#231;&#227;o SelectionMod</itunes:summary>
      <link>http://channel9.msdn.com/posts/Controles-Avancados-GridView-ListView-FlipView</link>
      <pubDate>Wed, 11 Jul 2012 22:23:04 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Controles-Avancados-GridView-ListView-FlipView</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/c6c2052f-8dde-4d9b-bcfe-3182c9bfeaa2.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Controles-Avancados-GridView-ListView-FlipView/rss</wfw:commentRss>
      <category>Brasil</category>
      <category>XAML</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Controles b&#225;sicos do XAML</title>
      <description><![CDATA[<div><p class="ppTopic"><strong>Por Vinícius Souza</strong></p><p class="ppTopic"><strong>Microsoft Technical Evangelist</strong></p></div><p class="ppBodyText">Neste artigo, apresentarei alguns controles de Silverlight, controles estes, básicos para a construção de uma aplicação Metro Style.</p><p class="ppBodyText">Quando digo que os controles são básicos, em momento algum me refiro à sua simplicidade. Na verdade, significa que são a base na definição do layout em Silverlight.</p><p class="ppBodyText">Mas, antes de falar dos controles, falarei um pouco de XAML.</p><h2>O XAML</h2><p class="ppBodyText">Quando optar por desenvolver uma aplicação Metro Style utilizando C#, Visual Basic ou C&#43;&#43;, você deve utilizar o XAML (Extensible Application Markup Language) para definir a interface do usuário. O XAML é uma linguagem declarativa, que você pode utilizar para definir controles que fazem interface com o usuário, tais como: botões, formas, textos e outros conteúdos apresentados na tela.</p><p class="ppBodyText">Quem já teve contato com HTML ou XML, não terá grandes problemas para trabalhar com o XAML. Assim como aqueles, o XAML é constituído por elementos e atributos. No que diz respeito à validação, o XAML é mais parecido com o XML, pois obedece às mesmas regras, o que implica em termos o arquivo&nbsp; bem formatado.</p><p class="ppBodyText">Segue abaixo um exemplo de código XAML:</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Grid Background=&quot;{StaticResource ApplicationPageBackgroundThemeBrush}&quot;&gt;
</div>  &lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;140&quot;/&gt;
    &lt;RowDefinition Height=&quot;*&quot;/&gt;
  &lt;/Grid.RowDefinitions&gt;

  &lt;!-- Back button and page title --&gt;
  &lt;Grid&gt;
    &lt;Grid.ColumnDefinitions&gt;
      &lt;ColumnDefinition Width=&quot;Auto&quot;/&gt;
      &lt;ColumnDefinition Width=&quot;*&quot;/&gt;
    &lt;/Grid.ColumnDefinitions&gt;
    &lt;Button x:Name=&quot;backButton&quot; Click=&quot;GoBack&quot;  Style=&quot;{StaticResource BackButtonStyle}&quot;/&gt;
    &lt;TextBlock x:Name=&quot;pageTitle&quot; Text=&quot;Minha App&quot; Style=&quot;{StaticResource PageHeaderTextStyle}&quot; Grid.Column=&quot;1&quot;/&gt;
  &lt;/Grid&gt;
&lt;/Grid&gt;</pre></p><p class="ppBodyText">Uma das maiores facilidades de se utilizar o XAML é poder separar a interface de usuário e o código da aplicação. Este modelo de trabalho permite uma separação das tarefas de desenvolvimento de software. Por exemplo, um designer do seu time pode fazer o desenho da interface do usuário e depois entregar para o desenvolvedor realizar a programação. Mesmo que o desenvolvedor e o designer sejam a mesma pessoa, conseguimos dividir a interface em arquivos XAML e o código em code-behind (.cs e .vb).</p><h2>XAML e a relação entre os objetos</h2><p class="ppBodyText">No XAML temos elementos como botões &lt;Button&gt; e tabelas &lt;Grid&gt;, que podem possuir outros elementos, seus filhos.&nbsp; A relação entre pai e filho especifica coisas como, por exemplo, de que forma os objetos são posicionados na tela e como eles respondem aos eventos disparados pelos usuários.</p><p class="ppBodyText">Veja exemplo abaixo:</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Grid x:Name=&quot;Tabela&quot; Background=&quot;Red&quot; Grid.Row=&quot;1&quot; Margin=&quot;12,0,12,0&quot;&gt;
</div>  &lt;StackPanel x:Name=&quot;Painel&quot;  Margin=&quot;20&quot; Background=&quot;Blue&quot; &gt;
    &lt;TextBlock Name=&quot;primeiroTb&quot; FontSize=&quot;30&quot;&gt;Primeiro&lt;/TextBlock&gt;
    &lt;TextBlock Name=&quot;segundoTb&quot; FontSize=&quot;30&quot;&gt;Segundo&lt;/TextBlock&gt;
    &lt;TextBlock Name=&quot;terceiroTb&quot; FontSize=&quot;30&quot;&gt;Terceiro&lt;/TextBlock&gt;
  &lt;/StackPanel&gt;
&lt;/Grid&gt;</pre></p><div><p class="ppCode">&nbsp;O StackPanel (Painel) é filho do Grid (Tabela). As caixas de texto (TextBlock) pertencem ao StackPanel (Painel) - elas são seus filhos. São apresentadas uma em cima da outra, na ordem que foram declaradas no XAML.&nbsp; Esta é uma característica do StackPanel, o gráfico abaixo apresenta a relação entre os elementos.</p></div><p class="ppFigureCaption"><strong>Relação entre os componentes visuais.</strong></p><p class="ppFigure"><img src="http://files.channel9.msdn.com/thumbnail/8e9bde2e-6915-4b68-addb-8adc53155a3d.png" alt="" width="328" height="261">&nbsp;</p><p class="ppBodyText">Além de determinar como o conteúdo é apresentado, a relação entre os componentes pode ter um efeito em como os eventos são processados. Vários eventos que são relacionados com a interface do usuário percorrem toda a árvore de relacionamento dos objetos. Você pode incluir um handle de eventos no StackPanel (Painel) para todos as caixas de texto, por exemplo.</p><p class="ppBodyText">Para tanto, basta incluir a propriedade <strong><em>PointerPressed=&quot;commonHandler&quot;</em></strong>, no objeto Painel.</p><div><p class="ppCodeLanguage">XAML</p></div><pre>&nbsp;</pre><pre><pre class="brush: xml">&lt;StackPanel x:Name=&quot;Painel&quot; Margin=&quot;20&quot; Background=&quot;Blue&quot; PointerPressed=&quot;commonHandler&quot;&gt;
  &lt;TextBlock Name=&quot;primeiroTb&quot; FontSize=&quot;30&quot;&gt;Primeiro&lt;/TextBlock&gt;
  &lt;TextBlock Name=&quot;segundoTb&quot; FontSize=&quot;30&quot;&gt;Segundo&lt;/TextBlock&gt;
  &lt;TextBlock Name=&quot;terceiroTb&quot; FontSize=&quot;30&quot;&gt;Terceiro&lt;/TextBlock&gt;
&lt;/StackPanel&gt;</pre></pre><div><p class="ppCode">&nbsp;</p></div><p class="ppBodyText">No trecho de código acima, quando o usuário clicar ou pressionar sobre uma das caixas de texto definidas em seu interior, o evento será capturado pela caixa de texto. O evento, por sua vez, vai subir até o elemento raiz.</p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/6c36be5a-845a-45b7-848e-8ce967ae380b.png" alt="" width="415" height="267"></p><p class="ppBodyText">O gráfico acima está representado no código abaixo:</p><div><p class="ppCodeLanguage"><pre class="brush: csharp">private void commonHandler(object sender, PointerRoutedEventArgs e)
</div><pre>{
   FrameworkElement origem = e.OriginalSource as FrameworkElement;
   switch (origem.Name)
   {
case &quot;primeiroTb&quot;:
   primeiroTb.Text = primeiroTb.Text &#43; &quot; Click!&quot;;
break;
case &quot;segundoTb&quot;:
   segundoTb.Text = segundoTb.Text &#43; &quot; Click!&quot;;
break;
case &quot;terceiroTb&quot;:
   terceiroTb.Text = terceiroTb.Text &#43; &quot; Click!&quot;;
break;
   }
}
 </pre></pre><h2>Posicionamento absoluto e relativo (dinâmico)</h2><p class="ppBodyText">Depois deste ensejo, sobre o formato XAML e como os elementos estão relacionados, focarei no posicionamento dos objetos.</p><p class="ppBodyText">Podemos optar por posicionar os objetos, absolutamente ou relativamente. Ao utilizarmos o posicionamento relativo dos elementos, ganhamos em produtividade, pois o conteúdo será apresentado corretamente em todas as resoluções de tela.</p><p class="ppBodyText">Apesar da facilidade proporcionada pelo posicionamento relativo, às vezes, se faz necessário posicionar os elementos absolutamente. Neste caso, fazemos isso utilizando o controle Canvas.</p><p class="ppBodyText">Para posicionarmos um controle dentro do controle Canvas, utilizamos as propriedades Canvas.Left e Canvas.Top. Quando utilizamos o designer do Visual Studio, estas propriedades são atualizadas, automaticamente, ao arrastarmos o controle dentro do Canvas.</p><p class="ppBodyText">Já em um posicionamento relativo ou dinâmico, especificamos os elementos definindo como eles serão organizados em relação a seus pais. Por exemplo, você pode organizar os controles em um painel e especificar que eles devem ficar dispostos horizontalmente. Para utilizar o tamanho automático ou proporcional, é necessário definir as propriedades Height (altura) e Width (largura).</p><p class="ppBodyText">Utilize as seguintes recomendações para definir um layout dinâmico:</p><ul><li>Defina a altura e a largura de um controle para Auto (automático). Quando este valor é utilizado em um controle Grid, o controle preencherá o conteúdo da célula que o contém; </li><li>Controles que possuem texto não utilizam a propriedade Width (largura) e Height (altura) e, sim, as propriedade MinWidth (largura mínima) e MinHeight (altura mínima). Com isso, você previne que um texto assuma um tamanho que dificulte a sua leitura; </li><li>Para definir valores proporcionais para os elementos RowDefinition (definição de linha) e ColumnDefinition (definição de coluna) de um Grid, utilize valores relativos em Height (altura) e Width (largura). Por exemplo, para especificar que uma coluna será cinco vezes mais larga do que outra utilize &quot;*&quot; e &quot;5&quot; para a propriedade Width (largura) no elemento ColumnDefinition. Veja o exemplo abaixo: </li></ul><pre><pre class="brush: xml">&lt;Grid Margin=&quot;12,0,12,0&quot;&gt;
 
  &lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;auto&quot; /&gt;
    &lt;RowDefinition /&gt;
    &lt;RowDefinition Height=&quot;auto&quot; /&gt;
  &lt;/Grid.RowDefinitions&gt;
 
  &lt;Grid.ColumnDefinitions&gt;
    &lt;ColumnDefinition Width=&quot;*&quot; /&gt;
    &lt;ColumnDefinition Width=&quot;5*&quot; /&gt;
   &lt;/Grid.ColumnDefinitions&gt;
&lt;/Grid&gt;</pre></pre><div><p class="ppCode">&nbsp;</p></div><p class="ppBodyText">No exemplo anterior, a segunda coluna possui cinco vezes o tamanho da primeira coluna.</p><h2>O controle Grid</h2><p class="ppBodyText">O controle <strong>Grid</strong> suporta disponibilizar os controles em múltiplas linhas e colunas. Você pode especificar as linhas e colunas de um controle do tipo <strong>Grid</strong>, incluindo elementos <strong>RowDefinition</strong> e <strong>ColumnDefinition</strong> imediatamente após a definição de um elemento <strong>Grid</strong>, como apresentado na seção anterior. Para posicionar objetos em uma célula específica, utilizamos as propriedades <strong>Grid.Row</strong> e <strong>Grid.Column</strong> do objeto que desejamos posicionar. Os controles podem, ainda, ocupar mais do que uma linha ou coluna, utilizando as propriedades <strong>Grid.RowSpan</strong> e <strong>Grid.ColumnSpan</strong>. Veja exemplo abaixo:</p><pre><pre class="brush: xml">&lt;Grid&gt;
&lt;Grid.RowDefinitions&gt;
    &lt;RowDefinition Height=&quot;auto&quot; /&gt;
    &lt;RowDefinition /&gt;
    &lt;RowDefinition Height=&quot;auto&quot; /&gt;
&lt;/Grid.RowDefinitions&gt;
 
&lt;Grid.ColumnDefinitions&gt;
    &lt;ColumnDefinition Width=&quot;*&quot; /&gt;
    &lt;ColumnDefinition Width=&quot;*&quot; /&gt;
&lt;/Grid.ColumnDefinitions&gt;
 
&lt;TextBox Text=&quot;1a linha 1a coluna&quot; FontSize=&quot;60&quot; Grid.Column=&quot;0&quot; Grid.Row=&quot;0&quot; /&gt;
&lt;TextBox Text=&quot;3a linha 1a coluna&quot; FontSize=&quot;60&quot; Grid.Column=&quot;0&quot; Grid.Row=&quot;2&quot; /&gt;
 
&lt;TextBox Text=&quot;1a linha 2a coluna&quot; FontSize=&quot;60&quot; Grid.Column=&quot;0&quot; Grid.Row=&quot;1&quot; /&gt;
&lt;TextBox Text=&quot;3a linha 2a coluna&quot; FontSize=&quot;60&quot; Grid.Column=&quot;1&quot; Grid.Row=&quot;2&quot; /&gt;
 
&lt;/Grid&gt;</pre>&nbsp;</pre><h2>O controle StackPanel</h2><p class="ppBodyText">O controle StackPanel é um painel de layout que organiza os controles nele existentes, em uma linha que pode ser orientada horizontalmente ou verticalmente. Você pode utilizar a propriedade Orientation para especificar a direção dos elementos filhos. Por padrão, a propriedade Orientation assume o valor Orientation.Vertical. Controles StackPanel são comumente utilizados para organizar pequenos conjuntos de objetos na interface. Veja o exemplo abaixo:</p><pre><pre class="brush: xml"> &lt;StackPanel &gt;
  &lt;Rectangle Fill=&quot;White&quot; Width=&quot;50&quot; Height=&quot;50&quot; Margin=&quot;15&quot; /&gt;
  &lt;Rectangle Fill=&quot;Blue&quot; Width=&quot;50&quot; Height=&quot;50&quot; Margin=&quot;15&quot; /&gt;
  &lt;Rectangle Fill=&quot;Green&quot; Width=&quot;50&quot; Height=&quot;50&quot; Margin=&quot;15&quot; /&gt;
  &lt;Rectangle Fill=&quot;Red&quot; Width=&quot;50&quot; Height=&quot;50&quot; Margin=&quot;15&quot; /&gt;
&lt;/StackPanel&gt;</pre></pre><h2>Conclusão</h2><p class="ppBodyText">O XAML é uma linguagem de marcação, assim como HTML e XML especializado para definir os objetos que serão apresentados na tela. Apesar da separação de responsabilidades definidas no XAML e no Code Behind, existem situações onde alterar alguma característica visual no código (Code Behind) é mais fácil do que no XAML, mas isso implica no nível de conhecimento de cada hum.</p><p class="ppBodyText">Aconselho vocês sempre utilizar o modelo de posicionamento dinâmico, pois uma vez que a aplicação está na loja, ela pode ser utilizada por diferentes resoluções. Para tanto os controles Grid e StackPanel são essenciais para definir como os componentes serão apresentados.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:2b02375a8f7f4ec2b292a08b0166441b">]]></description>
      <comments>http://channel9.msdn.com/posts/Controles-bsicos-do-XAML</comments>
      <itunes:summary>Por Vin&#237;cius Souza Microsoft Technical Evangelist Neste artigo, apresentarei alguns controles de Silverlight, controles estes, b&#225;sicos para a constru&#231;&#227;o de uma aplica&#231;&#227;o Metro Style. Quando digo que os controles s&#227;o b&#225;sicos, em momento algum me refiro &#224; sua simplicidade. Na verdade, significa que s&#227;o a base na defini&#231;&#227;o do layout em Silverlight. Mas, antes de falar dos controles, falarei um pouco de XAML. O XAMLQuando optar por desenvolver uma aplica&#231;&#227;o Metro Style utilizando C#, Visual Basic ou C&amp;#43;&amp;#43;, voc&#234; deve utilizar o XAML (Extensible Application Markup Language) para definir a interface do usu&#225;rio. O XAML &#233; uma linguagem declarativa, que voc&#234; pode utilizar para definir controles que fazem interface com o usu&#225;rio, tais como: bot&#245;es, formas, textos e outros conte&#250;dos apresentados na tela. Quem j&#225; teve contato com HTML ou XML, n&#227;o ter&#225; grandes problemas para trabalhar com o XAML. Assim como aqueles, o XAML &#233; constitu&#237;do por elementos e atributos. No que diz respeito &#224; valida&#231;&#227;o, o XAML &#233; mais parecido com o XML, pois obedece &#224;s mesmas regras, o que implica em termos o arquivo&amp;nbsp; bem formatado. Segue abaixo um exemplo de c&#243;digo XAML: &amp;lt;Grid Background=&amp;quot;{StaticResource ApplicationPageBackgroundThemeBrush}&amp;quot;&amp;gt;
  &amp;lt;Grid.RowDefinitions&amp;gt;
    &amp;lt;RowDefinition Height=&amp;quot;140&amp;quot;/&amp;gt;
    &amp;lt;RowDefinition Height=&amp;quot;*&amp;quot;/&amp;gt;
  &amp;lt;/Grid.RowDefinitions&amp;gt;

  &amp;lt;!-- Back button and page title --&amp;gt;
  &amp;lt;Grid&amp;gt;
    &amp;lt;Grid.ColumnDefinitions&amp;gt;
      &amp;lt;ColumnDefinition Width=&amp;quot;Auto&amp;quot;/&amp;gt;
      &amp;lt;ColumnDefinition Width=&amp;quot;*&amp;quot;/&amp;gt;
    &amp;lt;/Grid.ColumnDefinitions&amp;gt;
    &amp;lt;Button x:Name=&amp;quot;backButton&amp;quot; Click=&amp;quot;GoBack&amp;quot;  Style=&amp;quot;{StaticResource BackButtonStyle}&amp;quot;/&amp;gt;
    &amp;lt;TextBlock x:Name=&amp;quot;pageTitle&amp;quot; Text=&amp;quot;Minha App&amp;quot; Style=&amp;quot;{StaticResource PageHeaderTextStyle}&amp;quot; Grid.Column=&amp;quot;1&amp;quot;/&amp;gt;
  &amp;lt;/Grid&amp;gt;
&amp;lt;/Grid&amp;gt; Uma das maiores fac</itunes:summary>
      <link>http://channel9.msdn.com/posts/Controles-bsicos-do-XAML</link>
      <pubDate>Wed, 11 Jul 2012 22:22:22 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Controles-bsicos-do-XAML</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/e183b1d4-5ed9-4645-9ef2-7a3c41a1c219.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>6</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Controles-bsicos-do-XAML/rss</wfw:commentRss>
      <category>Brasil</category>
      <category>XAML</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Apresentando o SuperQuiz</title>
      <description><![CDATA[<div><p class="ppTopic"><strong>Por Vinícius Souza</strong></p><p class="ppTopic"><strong>Microsoft Technical Evangelist</strong></p></div><p class="ppBodyText">O SuperQuiz é um jogo de Quiz para Windows 8 para Metro Style, desenvolvido em C#, que utilizou como base o template grid, disponível no Visual Studio 2012 RC.</p><p class="ppBodyText">O propósito deste jogo é servir como um primeiro contato para programadores e designers com o novo modelo de programação, introduzido com o Metro Style no Windows 8. E nada mais legal do que ter o primeiro contato com uma aplicação funcional.</p><p class="ppBodyText">Desenvolvemos o SuperQuiz&nbsp; em XAML e C# pela facilidade que temos de desenvolver em C#, mas o mesmo jogo poderia ser desenvolvido em HTML5 e JavaScript.</p><p class="ppBodyText">Faça download do projeto acessando o link:&nbsp;<a title="Código fonte - SuperQuiz " href="http://supermetroquiz.codeplex.com/" target="_blank">http://supermetroquiz.codeplex.com/</a>&nbsp;abra o projeto e acompanhe o artigo.</p><p class="ppBodyText">Veja abaixo o projeto do SuperQuiz:</p><p class="ppFigureCaption"><img src="http://files.channel9.msdn.com/thumbnail/4d0e4de9-6dfb-4f43-97cd-96480a544a1f.png" alt="" width="355" height="301"></p><h2>Pastas e seus conteúdos</h2><p class="ppBodyText">Para facilitar o entendimento do&nbsp; projeto vou descrever o que você vai encontrar a cada item do projeto.</p><p class="ppBodyText">1.&nbsp;Properties</p><p class="ppNumberListIndent">Abrindo este item você vai encontrar o arquivo <em>AssemblyInfo.cs</em> - neste arquivo, configuramos as opções para configuração do Build (compilação), tais como nome da empresa, versão, descrição, etc.</p><p class="ppNumberListIndent">Este arquivo só está presente em projetos do tipo Windows e não é exclusividade do Metro Style.&nbsp;</p><p class="ppNumberListIndent">2. References</p><p class="ppNumberList">Na pasta References você vai encontrar todas as referências que o SuperQuiz necessita para ser compilado e executado. Este projeto não faz uso de nenhuma referência específica, mas sim as padrões para todos os projetos C# para o Windows 8 Metro Style.</p><p class="ppNumberList">.NET for Metro Style apps</p><p class="ppNumberList">Windows</p><p class="ppNumberList">3. Assets</p><p class="ppNumberList">Na pasta Assets,&nbsp; você vai encontrar os recursos utilizados pela aplicação. Para este projeto encontraremos todas as imagens usadas pela aplicação, como as diferentes opções de logo (utilizadas na aplicação), imagens de fundo e até mesmo as (imagens) utilizadas pelo conteúdo da aplicação.</p><p class="ppNumberList">4. Common</p><p class="ppNumberList">O diretório Common possui classes e estilos XAML que simplificam o desenvolvimento da aplicação.</p><p class="ppNumberList">Lá encontramos a definição da classe <em>LayoutAwarePage</em>, que é a (classe) base para todas as páginas do nosso projeto.</p><p class="ppNumberList">O arquivo de estilo StandardStyle.xaml, possui as definições dos estilos utilizada na diagramação visual do projeto.</p><p class="ppNumberList">5.&nbsp;SuperQuiz</p><p class="ppNumberList">Neste diretório encontramos as classes de controle, modelo, utilitários, as views e os arquivos XML de conteúdo. Veja na imagem abaixo:</p><p class="ppFigureCaptionIndent"><strong>SuperQuiz namespace</strong></p><p class="ppFigureIndent">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/b97548e4-2db3-4ca2-a729-5649cf7d51c1.png" alt=""></p><p class="ppFigureIndent">6. App.xaml</p><p class="ppNumberList">O arquivo é utilizado para definirmos os estilos utilizados pela aplicação (StandardStyle.xaml e QuizStyle.xaml) e o nome da aplicação.</p><p class="ppNumberList">A sua classe, App.xaml.cs especifica o comportamento da aplicação estendendo a classe básica Application. Nesta classe, controlamos o <strong>ciclo de vida</strong> da aplicação.</p><p class="ppNumberList">7. CategoryPage.xaml</p><p class="ppNumberList">Esta página da nossa aplicação apresenta os quizes de uma categoria. É apresentada quando clicamos sobre o título de uma categoria na página HomePage.xaml.</p><p class="ppNumberList">8. HomePage.xaml</p><p class="ppNumberList">Este arquivo é a página de hub de nosso conteúdo - é a primeira página que o usuário visualiza ao entrar na aplicação.</p><p class="ppNumberList">9. Package.appxmanifest</p><p class="ppNumberList">O arquivo de manifesto, como é conhecido, é utilizado pelo sistema operacional para identificar quais as funcionalidades que sua aplicação está utilizando (definindo as Capabilities e Declarations).</p><p class="ppNumberList">O arquivo de manifesto também é utilizado para definirmos as imagens de logo que a aplicação faz uso, e como sua aplicação é visualizada na store.</p><p class="ppNumberList">Cada um dos aspectos que o arquivo de manifesto configura está disponível por uma aba no editor. Para visualizá-lo, clique duas vezes sobre o arquivo de manifesto.</p><p class="ppFigureCaptionIndent"><strong>Package Manifest</strong></p><p class="ppFigureIndent">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/0c28db1d-09fd-45b5-ac3b-951cf04f9255.png" alt="" width="618" height="262"></p><p class="ppFigureIndent">10.&nbsp;QuizPage.xaml</p><p class="ppNumberList">Esta página é apresentada quando clicamos sobre um Quiz na página de Hub (homepage) ou na página de categoria (CategoryPage).</p><p class="ppNumberList">Ela traz uma breve descrição sobre o quiz e utiliza o controle FlipView para navegarmos entre os Quizes de uma categoria.</p><p class="ppNumberList">11. QuizPlayPage.xaml</p><p class="ppNumberList">Página que apresenta a pergunta e as alternativas do Quiz – nela é implementado o contrato de share.</p><p class="ppNumberList">12. SearchResults.xaml</p><p class="ppNumberList">Apresenta o resultado da pesquisa, quando o contrado de busca é utilizado. Esta página possui a mesma estrutura da HomePage, alterando apenas a fonte de dados utilizada para apresentar o resultado.</p><p class="ppBodyText">&nbsp;</p><h2>Navegação</h2><p class="ppBodyText">Agora que você conhece os componentes do projeto SuperQuiz, vou apresentar a navegação do aplicativo. Conhecer como e quando cada página é apresentada vai ajudá-lo a customizar a aplicação.</p><p class="ppBodyText">Abaixo, apresento as imagens com as principais telas da aplicação. Aqui não estou incluindo o SplashScreen comum para todas as aplicações Metro Style.</p><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="50%"><p class="ppTableText"><strong>Página</strong></p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Descrição</strong></p></td></tr><tr><td valign="top" width="50%">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/b8a74aaa-9895-43d9-8a2f-399521696a34.png" alt="" width="296" height="179"></td><td valign="top" width="50%"><p class="ppTableText">HomePage.xaml</p><p class="ppTableText">&nbsp;</p><p class="ppTableText">Apresenta as categorias com alguns quizes que a compõem. Esta é a página de entrada da aplicação.</p></td></tr><tr><td valign="top" width="50%">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/a7a3e89d-11e6-4dbc-a60a-a3aaa6c29094.png" alt="" width="296" height="195"></td><td valign="top" width="50%"><p class="ppTableText">CategoryPage.xaml</p><p class="ppTableText">&nbsp;</p><p class="ppTableText">A página é apresentada ao clicar no botão com o nome da categoria na HomePage.</p><p class="ppTableText">Ela apresenta a imagem da categoria e os quizes que possui.</p></td></tr><tr><td valign="top" width="50%">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/895f6ff1-395b-420c-b013-b26a8641f6ec.png" alt="" width="297" height="171"></td><td valign="top" width="50%"><p class="ppTableText">QuizPage.xaml</p><p class="ppTableText">&nbsp;</p><p class="ppTableText">Página de apresentação do Quiz - possui a imagem que identifica o Quiz e uma breve descrição de seu conteúdo.</p><p class="ppTableText">Na AppBar, há o botão para iniciar o Quiz.</p><p class="ppTableText">Pode ser acessada em três momentos: na HomePage, na CategoryPage ou, ainda, na SearchResults.</p></td></tr><tr><td valign="top" width="50%">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/0a0acec9-3c37-4d03-9cda-7b3c84ef529c.png" alt="" width="297" height="170"></td><td valign="top" width="50%"><p class="ppTableText">QuizPlayPage.xaml</p><p class="ppTableText">&nbsp;</p><p class="ppTableText">Aqui é apresentada a Pergunta do Quiz e suas alternativas.</p><p class="ppTableText">Acessamos esta página quando clicamos no botão iniciar.</p></td></tr></tbody></table><p class="ppBodyText">&nbsp;</p><h2>Lógica do aplicativo</h2><p class="ppBodyText">A lógica do SuperQuiz está dividida em duas classes do namespace SuperQuiz.Logic - a classe QuizApplication e a QuizPlay.</p><p class="ppBodyText">A classe QuizApplicaiton é responsável por carregar os arquivos XML de categoria e quiz, registrar o comandos de configurações (Settings), Sobre (About), e&nbsp; popular a estrutura de dados &nbsp;de busca.</p><p class="ppBodyText">Já a classe QuizPlay é responsável por controlar o game de Quiz propriamente dito.</p><p class="ppFigureCaption"><strong>QuizApplication Class</strong></p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/f6335529-2ebd-401e-8b8a-c09a20500f0b.png" alt="" width="203" height="606"></p><p>O método responsável por ler os arquivos XML e popular o modelo de dados é o <em>InternalLoad</em>. Esse método lista todos os arquivos com a extensão .xml da pasta SuperQuiz\Assets\Categories, populando o dicionário de categorias.</p><p>Veja abaixo o código utilizado por popular as categorias:</p><p><pre class="brush: csharp">var appCategoriesFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(@&quot;SuperQuiz\Assets\Categories&quot;);

var quizCategoriesQuery = appCategoriesFolder.CreateFileQueryWithOptions(new QueryOptions(CommonFileQuery.OrderByName, new string[] { &quot;.xml&quot; }));

foreach (var item in await quizCategoriesQuery.GetFilesAsync())
{
   try
   {
      var category = await ObjectPersister.LoadAsync&lt;QuizCategory&gt;(item.Path, ObjectPersisterLocation.Path);
      if (category.Quizzes == null)
      {
         category.Quizzes = new ObservableCollection&lt;Quiz&gt;();
      }
      CategoryDictionary[category.UniqueId] = category;
      QuizCategories.Add(category);
   }
   catch { }
}</pre></p><p class="ppFigure">&nbsp;A próxima etapa do código é carregar o arquivos de Quiz - veja o código abaixo:</p><p><pre class="brush: csharp">var appQuizzesFolder = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync(@&quot;SuperQuiz\Assets\Quizzes&quot;);

var quizFilesQuery = appQuizzesFolder.CreateFileQueryWithOptions(new QueryOptions(CommonFileQuery.OrderByName, new string[] { &quot;.xml&quot; }));
foreach (var item in await quizFilesQuery.GetFilesAsync())
{
   try
   {
      var quiz = await ObjectPersister.LoadAsync&lt;Quiz&gt;(item.Path, ObjectPersisterLocation.Path);
      foreach (var question in quiz.Questions)
      {
         question.Quiz = quiz;
      }
      QuizDictionary[quiz.UniqueId] = quiz;
      if (CategoryDictionary.ContainsKey(quiz.CategoryUniqueId))
      {
         CategoryDictionary[quiz.CategoryUniqueId].Quizzes.Add(quiz);
      }
   }
   catch { }
}</pre></p><p>Quando não existir arquivos xml, o método cria uma estrura de categorias e quizes executando o método QuizDataSource.GenerateSampleQuizzes().</p><p>As categorias populadas são posteriormente atribuídas para a propriedade DefaultViewModel, no método LoadState da página. Veja abaixo o código da página HomePage:</p><p><pre class="brush: csharp">protected override void LoadState(Object navigationParameter, Dictionary&lt;String, Object&gt; pageState)
{
   this.DefaultViewModel[&quot;Categories&quot;] = QuizApplication.Instance.QuizCategories;
}</pre></p><h2>Conclusões</h2><p class="ppBodyText">Neste artigo foi apresentado o exemplo de um jogo de quiz de uma aplicação Windows 8 Metro Style.</p><p class="ppBodyText">Essa aplicação implementa as principais funcionalidades de um aplicativo, e será uma base para o seu aprendizado.</p><p class="ppBodyText">Navegue no código, familiarize-se com a estrutura do aplicativo e inclua breakpoints para entender seu funcionamento.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:b9b4cf4bd4e44d27ac93a08b015aaeb7">]]></description>
      <comments>http://channel9.msdn.com/posts/Apresentando-SuperQuiz</comments>
      <itunes:summary>Por Vin&#237;cius Souza Microsoft Technical Evangelist O SuperQuiz &#233; um jogo de Quiz para Windows 8 para Metro Style, desenvolvido em C#, que utilizou como base o template grid, dispon&#237;vel no Visual Studio 2012 RC. O prop&#243;sito deste jogo &#233; servir como um primeiro contato para programadores e designers com o novo modelo de programa&#231;&#227;o, introduzido com o Metro Style no Windows 8. E nada mais legal do que ter o primeiro contato com uma aplica&#231;&#227;o funcional. Desenvolvemos o SuperQuiz&amp;nbsp; em XAML e C# pela facilidade que temos de desenvolver em C#, mas o mesmo jogo poderia ser desenvolvido em HTML5 e JavaScript. Fa&#231;a download do projeto acessando o link:&amp;nbsp;http://supermetroquiz.codeplex.com/&amp;nbsp;abra o projeto e acompanhe o artigo. Veja abaixo o projeto do SuperQuiz:  Pastas e seus conte&#250;dosPara facilitar o entendimento do&amp;nbsp; projeto vou descrever o que voc&#234; vai encontrar a cada item do projeto. 1.&amp;nbsp;Properties Abrindo este item voc&#234; vai encontrar o arquivo AssemblyInfo.cs - neste arquivo, configuramos as op&#231;&#245;es para configura&#231;&#227;o do Build (compila&#231;&#227;o), tais como nome da empresa, vers&#227;o, descri&#231;&#227;o, etc. Este arquivo s&#243; est&#225; presente em projetos do tipo Windows e n&#227;o &#233; exclusividade do Metro Style.&amp;nbsp; 2. References Na pasta References voc&#234; vai encontrar todas as refer&#234;ncias que o SuperQuiz necessita para ser compilado e executado. Este projeto n&#227;o faz uso de nenhuma refer&#234;ncia espec&#237;fica, mas sim as padr&#245;es para todos os projetos C# para o Windows 8 Metro Style. .NET for Metro Style apps Windows 3. Assets Na pasta Assets,&amp;nbsp; voc&#234; vai encontrar os recursos utilizados pela aplica&#231;&#227;o. Para este projeto encontraremos todas as imagens usadas pela aplica&#231;&#227;o, como as diferentes op&#231;&#245;es de logo (utilizadas na aplica&#231;&#227;o), imagens de fundo e at&#233; mesmo as (imagens) utilizadas pelo conte&#250;do da aplica&#231;&#227;o. 4. Common O diret&#243;rio Common possui classes e estilos XAML que simplificam o desenvolvimento da aplica&#231;&#227;o. L&#225; encontramos a defini&#231;&#227;o da classe LayoutAwarePage, que &#233; a (cl</itunes:summary>
      <link>http://channel9.msdn.com/posts/Apresentando-SuperQuiz</link>
      <pubDate>Wed, 11 Jul 2012 22:21:41 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Apresentando-SuperQuiz</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/101959e3-14e3-4878-bde1-49d473c8baf0.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>11</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Apresentando-SuperQuiz/rss</wfw:commentRss>
      <category>Brasil</category>
      <category>XAML</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Customizando o SuperQuiz – Parte 2</title>
      <description><![CDATA[<div><p class="ppTopic"><strong>Por Vinícius Souza</strong></p><p class="ppTopic"><strong>Microsoft Technical Evangelist</strong></p></div><p class="ppBodyText">Uma aplicação Metro Style é focada em conteúdo, mas o conteúdo sozinho não vai gerar uma identidade visual, nem um bom primeiro impacto, ao utilizar a sua aplicação.</p><p class="ppBodyText">Neste artigo apresentarei os pontos de edição para customizar a sua aplicação. Não vou entrar em conceitos de design, focarei sobre o que alterar e onde é utilizado.</p><p class="ppBodyText">Continuaremos utilizando o SuperQuiz como exemplo, código desenvolvido utilizando o template de grid (disponível no Visual Studio) como base.</p><h2>Imagens</h2><p class="ppBodyText">As imagens são uma parte muito importante de uma aplicação Metro Style no Windows 8. Elas possibilitam criar uma identidade para sua app. E, para isso, não é simplesmente trocando o background da sua aplicação que você vai conseguir.</p><p class="ppBodyText">Neste tópico, listarei as imagens com as quais você deve se preocupar quando for criar um aplicativo para Windows 8 e onde são utilizadas. Em seguida, falarei sobre como lidar com diferentes resoluções na sua aplicação.</p><p class="ppBodyText">Abrindo o arquivo de manifesto no Visual Studio 2012 RC, você vai visualizar quatro abas (Application UI, Capabilities, Declarations, Packaging). Veja imagem abaixo:</p><p class="ppFigureCaption">Arquivo de Manifesto</p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/90e2e800-049d-4421-b6e4-304267e5d53d.png" alt="" width="464" height="493"></p><p class="ppBodyText">Existem várias imagens mencionadas no arquivos de manifesto, cada uma separada pela sua utilização.</p><p class="ppBodyText">Na seção Tile, temos as definições das imagens de logo, wide logo e small logo, cada qual com sua especificação de tamanho. Veja, abaixo, onde estas imagens são utilizadas:</p><p class="ppBodyText">&nbsp;</p><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="50%"><p class="ppTableText"><strong>Imagem</strong></p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Utilização</strong></p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Logo (150x150)</p><p class="ppFigureCaption">&nbsp;</p></td><td valign="top" width="50%"><p class="ppTableText">É utilizada no tile de sua aplicação. No SuperQuiz, o logo é utilizado como tile pequeno. Veja imagem abaixo, em destaque.</p><p class="ppTableText">As imagens utilizadas possuem a extensão png e, geralmente, não possuem cor de fundo. A cor de fundo é especificada com o código RGB no parâmetro Backgorund color (cor de fundo).</p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/d48f77a5-908a-4982-8a60-97c43028b1b0.png" alt="" width="306" height="251"></p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Wide logo (310X150)</p></td><td valign="top" width="50%"><p class="ppTableText">Esta imagem é utilizada como o tile grande da aplicação. Para apresentá-la, clique com o botão direito do mouse sobre uma das tiles apresentadas.</p><p class="ppTableText"><img src="http://files.channel9.msdn.com/thumbnail/f832af8d-9265-4d57-ba21-fb1ecdb02799.png" alt="" width="302" height="82"></p><p class="ppFigureCaption">Após alterar a imagem para larger, teremos o seguinte resultado:</p><p class="ppFigure">&nbsp;<img src="http://files.channel9.msdn.com/thumbnail/96021b7a-4810-4b6a-911e-860e27d45708.png" alt="" width="300" height="209"></p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Small Logo (30x30)</p></td><td valign="top" width="50%"><p class="ppTableText">O small logo é utilizado quando realizamos pesquisa no Windows 8. Se a aplicação implementa o contrato de Search, no Charm de busca é apresentado uma lista das aplicações que servirão como target. Veja imagem abaixo:</p><p class="ppTableText"><img src="http://files.channel9.msdn.com/thumbnail/594d02a9-7b16-41c6-883a-0a4457b95492.png" alt="" width="211" height="274"></p></td></tr></tbody></table><p class="ppBodyText">&nbsp;</p><h2>Tiles</h2><p class="ppBodyText">Os tiles são os representantes da sua aplicação no Start Screen (tela inicial) do Windows 8. Eles não são apenas um ícone grande, mas também possuem a capacidade de exibir mais informações para o usuário sem que a aplicação esteja em execução. Um tile interessante e útil pode ser um incentivo para o usuário executar sua aplicação.</p><p class="ppBodyText">Por ser a porta de entrada da sua aplicação, podendo refletir diretamente no sucesso ou não de sua app, o tile é um item que não pode ser negligenciado durante o desenvolvimento da sua aplicação.</p><p class="ppBodyText">Ao ler as informações acima, você pode pensar que isso é óbvio. Mas, falo por experiência própria - algumas vezes ficamos tão focados em resolver algum problema no código que, algo que era simples ou até mesmo óbvio, passa despercebido.</p><p class="ppBodyText">Sugestão: antes de começar a desenvolver, faça os dois tiles (logo e wide logo), somente imagem sem atualização. Depois com o desenvolvimento da aplicação, se achar necessário, você acrescenta a funcionalidade.</p><p class="ppBodyText">Para alterar as imagens utilizadas pelo tile, basta alterar as propriedades logo, wide logo e small logo no arquivo de manifesto ou, simplesmente, altere os arquivos da pasta Assets localizado na raiz de seu projeto.</p><p class="ppBodyText">O SuperQuiz possui apenas tiles estáticos, mas nada impede você de incluir essa funcionalidade. Aliás, sugiro fortemente que essa funcionalidade seja desenvolvida, SE FIZER SENTIDO!</p><p class="ppBodyText">Uma boa prática para desenvolvimento de aplicações Metro Style é &quot;Menos é Mais&quot;, o que não quer dizer que você vai deixar de implementar alguma funcionalidade importante para o usuário. Pelo contrário, se não fizer sentido para a sua aplicação utilizar alguma funcionalidade, como o live tile, não a implemente.</p><h2>SplashScreen</h2><p class="ppBodyText">Assim como os tiles, o SplashScreen é muito importante, apesar de ser utilizado muito pouco, cerca de 2 a 5 segundos durante o carregamento da aplicação.</p><p class="ppBodyText">Uma imagem de SplashScreen fala muito sobre a sua aplicação, sendo parte fundamental da construção da sua identidade visual.</p><h2>Styles (estilos)</h2><p class="ppBodyText">Os estilos para uma aplicação XAML tem o mesmo funcionamento dos estilos CSS para programação em HTML5. É uma forma inteligente de fazer a diagramação do seu layout definindo fontes, margens, imagens de fundo, etc., que podem ser reaproveitados durante o desenvolvimento da aplicação.</p><p class="ppBodyText">No SuperQuiz utilizamos dois estilos: um localizado na pasta <em>Common/StandardStyles.xaml</em> e outro na pasta <em>SuperQuiz/View/QuizStyles.xaml</em>.</p><p class="ppBodyText">O arquivo StandardStyles.xaml define estilos que serão utilizados em toda a aplicação, sendo relacionado com a estrutura do layout. Enquanto que o arquivo QuizStyles.xaml define estilos específicos de uma página do jogo de Quiz.</p><p class="ppBodyText">Exemplos de definições encontradas no StandardStyle.xaml :</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Style x:Key=&quot;BasicRichTextStyle&quot; TargetType=&quot;RichTextBlock&quot;&gt;
&lt;Setter Property=&quot;Foreground&quot; Value=&quot;{StaticResource ApplicationForegroundThemeBrush}&quot;/&gt;
&lt;Setter Property=&quot;FontSize&quot; Value=&quot;{StaticResource ControlContentThemeFontSize}&quot;/&gt;
  &lt;Setter Property=&quot;FontFamily&quot; Value=&quot;{StaticResource ContentControlThemeFontFamily}&quot;/&gt;
  &lt;Setter Property=&quot;TextTrimming&quot; Value=&quot;WordEllipsis&quot;/&gt;
  &lt;Setter Property=&quot;TextWrapping&quot; Value=&quot;Wrap&quot;/&gt;
  &lt;Setter Property=&quot;Typography.StylisticSet20&quot; Value=&quot;True&quot;/&gt;
  &lt;Setter Property=&quot;Typography.DiscretionaryLigatures&quot; Value=&quot;True&quot;/&gt;
  &lt;Setter Property=&quot;Typography.CaseSensitiveForms&quot; Value=&quot;True&quot;/&gt;
&lt;/Style&gt;</pre></p></div><p class="ppBodyText">No exemplo acima, é definido uma classe chamada <strong>BasicRichTextStyle</strong>, cujo objeto que vai receber o estilo é o <strong>RichTextBlock</strong>.</p><p class="ppBodyText">Assim como no CSS (Cascade Style Sheet), é possível definir um estilo utilizando outro previamente definido como base. Abaixo, apresento um exemplo de estilo utilizando como base o <strong>BasicRichTextStyle</strong>.</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Style x:Key=&quot;BaselineRichTextStyle&quot; TargetType=&quot;RichTextBlock&quot; BasedOn=&quot;{StaticResource BasicRichTextStyle}&quot;&gt;
  &lt;Setter Property=&quot;LineHeight&quot; Value=&quot;20&quot;/&gt;
  &lt;Setter Property=&quot;LineStackingStrategy&quot; Value=&quot;BlockLineHeight&quot;/&gt;
  &lt;!-- Properly align text along its baseline --&gt;
  &lt;Setter Property=&quot;RenderTransform&quot;&gt;
    &lt;Setter.Value&gt;
      &lt;TranslateTransform X=&quot;-1&quot; Y=&quot;4&quot;/&gt;
    &lt;/Setter.Value&gt;
  &lt;/Setter&gt;
&lt;/Style&gt;</pre></p></div><p class="ppBodyText">Para definirmos um estilo e utilizar um segundo como referência, temos que utilizar a propriedade <strong>BasedOn</strong>. A sintaxe exata é a seguinte:</p><p class="ppBodyText"><strong>BasedOn</strong>=&quot;{StaticResource &lt;Nome do estilo que sera utilizado&gt;}&quot;</p><p class="ppBodyText">Este é um recurso muito utilizado e é muito importante para termos agilidade e conformidade no layout da aplicação.</p><h2>Sons</h2><p class="ppBodyText">Assim como as imagens, os sons podem ser utilizados para criar uma identidade para a sua aplicação. Porém, este recurso deve ser utilizado com cautela e em alguns comportamentos específicos da aplicação.</p><p class="ppBodyText">No SuperQuiz, utilizamos o som SuperQuiz\Assets\Sounds\ting.mp3 – propositalmente, este som é utilizado em diferentes cenários, o que é um problema, pois quando o usuário da app escutar o som não vai conseguir identificar o tipo de ação.</p><p class="ppBodyText">O som é utilizado no arquivo SuperQuiz\View\StarPointsControl.xaml.cs, no método <em>StarPointsControl_Loaded</em>. O código do método está apresentado abaixo:</p><div>&nbsp;</div><p class="ppBodyText"><pre class="brush: csharp">async void StarPointsControl_Loaded(object sender, RoutedEventArgs e)
        {
            if (ScoredPoints == 0)
            {
                text.Text = String.Format(&quot;&#43;{0}&quot;, ScoredPoints);
                this.KeepingPoints.Begin();
            }
            else if (ScoredPoints &gt; 0)
            {
                text.Text = String.Format(&quot;&#43;{0}&quot;, ScoredPoints);
                this.WinningPoints.Begin();
            }
            else
            {
                text.Text = String.Format(&quot;-{0}&quot;, ScoredPoints);
                this.LosingPoints.Begin();
            }
            if (QuizApplication.Instance.Settings.PlaySounds)
            {
                var sound = new MediaElement();
                var parent = (Panel)this.Parent;
                parent.Children.Add(sound);
                sound.AudioCategory = AudioCategory.GameEffects;
                sound.AutoPlay = true;
                sound.Visibility = Visibility.Collapsed;
                sound.MediaEnded &#43;= PlayCompleted;
                sound.Source = new Uri(&quot;ms-appx:/SuperQuiz/Assets/Sounds/ting.mp3&quot;);
            }
        }</pre></p><p class="ppBodyText">Como dito anteriormente, o som é incluído na página quando o usuário continua com a pontuação, ganha pontos ou perde pontos.</p><p class="ppBodyText">Sugiro que sejam incluídos sons diferentes para cada cenário, simplesmente incluindo uma váriável do tipo String, que receberá o nome do som a ser incluído em cada situação, e utilizando essa variável na propriedade Source do objeto sound.</p><h2>Conclusão</h2><p class="ppBodyText">Neste artigo foram apresentadas várias maneiras de customizar a aplicação SuperQuiz. Assim como o código, as alterações visuais da página devem ser pensadas com cuidado. Este é um ponto importantíssimo de uma aplicação Metro Style.</p><p class="ppBodyText">Implementando todos os pontos discutidos aqui, você vai criar um game de Quiz com a sua cara.</p><p class="ppBodyText">Para quem tem um perfil mais de código, como o meu, não vai ser na primeira tentativa que vai conseguir criar uma aplicação de impacto, mas a prática leva a perfeição e, por isso, não desanime.</p><p class="ppBodyText">&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e5f1061b13ff49cda3dca08b01541780">]]></description>
      <comments>http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-2</comments>
      <itunes:summary>Por Vin&#237;cius Souza Microsoft Technical Evangelist Uma aplica&#231;&#227;o Metro Style &#233; focada em conte&#250;do, mas o conte&#250;do sozinho n&#227;o vai gerar uma identidade visual, nem um bom primeiro impacto, ao utilizar a sua aplica&#231;&#227;o. Neste artigo apresentarei os pontos de edi&#231;&#227;o para customizar a sua aplica&#231;&#227;o. N&#227;o vou entrar em conceitos de design, focarei sobre o que alterar e onde &#233; utilizado. Continuaremos utilizando o SuperQuiz como exemplo, c&#243;digo desenvolvido utilizando o template de grid (dispon&#237;vel no Visual Studio) como base. ImagensAs imagens s&#227;o uma parte muito importante de uma aplica&#231;&#227;o Metro Style no Windows 8. Elas possibilitam criar uma identidade para sua app. E, para isso, n&#227;o &#233; simplesmente trocando o background da sua aplica&#231;&#227;o que voc&#234; vai conseguir. Neste t&#243;pico, listarei as imagens com as quais voc&#234; deve se preocupar quando for criar um aplicativo para Windows 8 e onde s&#227;o utilizadas. Em seguida, falarei sobre como lidar com diferentes resolu&#231;&#245;es na sua aplica&#231;&#227;o. Abrindo o arquivo de manifesto no Visual Studio 2012 RC, voc&#234; vai visualizar quatro abas (Application UI, Capabilities, Declarations, Packaging). Veja imagem abaixo: Arquivo de Manifesto &amp;nbsp; Existem v&#225;rias imagens mencionadas no arquivos de manifesto, cada uma separada pela sua utiliza&#231;&#227;o. Na se&#231;&#227;o Tile, temos as defini&#231;&#245;es das imagens de logo, wide logo e small logo, cada qual com sua especifica&#231;&#227;o de tamanho. Veja, abaixo, onde estas imagens s&#227;o utilizadas: &amp;nbsp; Imagem Utiliza&#231;&#227;o Logo (150x150) &amp;nbsp; &#201; utilizada no tile de sua aplica&#231;&#227;o. No SuperQuiz, o logo &#233; utilizado como tile pequeno. Veja imagem abaixo, em destaque. As imagens utilizadas possuem a extens&#227;o png e, geralmente, n&#227;o possuem cor de fundo. A cor de fundo &#233; especificada com o c&#243;digo RGB no par&#226;metro Backgorund color (cor de fundo). &amp;nbsp; Wide logo (310X150) Esta imagem &#233; utilizada como o tile grande da aplica&#231;&#227;o. Para apresent&#225;-la, clique com o bot&#227;o direito do mouse sobre uma das tiles apresentadas.  Ap&#243;s alterar a imagem par</itunes:summary>
      <link>http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-2</link>
      <pubDate>Wed, 11 Jul 2012 22:20:52 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-2</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/886ee1e0-2564-4ac1-96e8-ded77db105da.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-2/rss</wfw:commentRss>
      <category>XAML</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Customizando o SuperQuiz - Parte 1</title>
      <description><![CDATA[<div><p class="ppTopic"><strong>Por Vinícius Souza</strong></p><p class="ppTopic"><strong>Microsoft Technical Evangelist</strong></p><p class="ppTopic">Existem várias formas de alterar o SuperQuiz. A mais fácil é alterar os arquivos XML de categoria e quiz. Os arquivos de conteúdo estão localizado na pasta SuperQuiz\Assets.</p></div><p class="ppBodyText">Na pasta SuperQuiz\Assets\Categories encontraremos os arquivos xml de categoria e na pasta SuperQuiz\Assets\Quizzes os arquivos xml de quiz.</p><p class="ppBodyText">Antes de apresentar a estrutura dos arquivos xml de conteúdo, gostaria de dar algumas dicas:</p><p class="ppBodyText">1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Não altere a ordem das tags no xml. Devido ao componente de serialização utilizado, o arquivo xml é gerado e consumido com as tags em ordem alfabética. Por isso, alterando-se a ordem, ocorrerá um problema durante o processo de load;</p><p class="ppBodyText">2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Muito cuidado durante a alteração do xml. Às vezes, durante a seleção do texto, cometemos um erro removendo mais caracteres do que é necessário, causando uma má formação no xml. Este tipo de erro é difícil de ser detectado.</p><h2>Estrutura do arquivo xml de categoria.</h2><p class="ppBodyText">A estrutura do arquivo é simples, possuindo apenas três tags {ImageUri, Name, UniqueId}.</p><p><pre class="brush: xml">
&lt;QuizCategory xmlns=&quot;http://schemas.datacontract.org/2004/07/SuperQuiz.Model&quot; xmlns:i=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;ImageUri&gt;Assets/geography.png&lt;/ImageUri&gt;
  &lt;Name&gt;Category 0 &lt;/Name&gt;
  &lt;UniqueId&gt;C_0&lt;/UniqueId&gt;
&lt;/QuizCategory&gt;
</pre></p><p class="ppBodyText">&nbsp;</p><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="50%"><p class="ppTableText"><strong>Tag</strong></p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Descrição</strong></p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">ImageUri</p></td><td valign="top" width="50%"><p class="ppBodyText">Possui a imagem que representa a categoria.</p><p class="ppTableText">&nbsp;</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Name</p></td><td valign="top" width="50%"><p class="ppBodyText">É utilizado para nomear a categoria.</p><p class="ppBodyText">&nbsp;</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">UniqueId</p></td><td valign="top" width="50%"><p class="ppBodyText">É o código que identifica a categoria</p></td></tr></tbody></table><p class="ppBodyText">&nbsp;</p><h2>Estrutura do arquivo xml de Quiz</h2><p class="ppBodyText">O arquivo xml de Quiz é um pouco mais complexo e, por isso, vou explicá-lo em duas etapas.</p><p class="ppBodyText">A primeira, em que abordo o quiz sem considerar a tag Questions, e a segunda onde abordo somente o conteúdo da tag Questions.</p><div><p class="ppCodeLanguage"><pre class="brush: xml">&lt;Quiz xmlns=&quot;http://schemas.datacontract.org/2004/07/SuperQuiz.Model&quot; xmlns:i=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;AllowPreviousNavigation&gt;true&lt;/AllowPreviousNavigation&gt;
  &lt;AllowShareQuestions&gt;true&lt;/AllowShareQuestions&gt;
  &lt;CategoryUniqueId&gt;C_0&lt;/CategoryUniqueId&gt;
  &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient&lt;/Description&gt;
  &lt;EvaluateAnswerOnNext&gt;true&lt;/EvaluateAnswerOnNext&gt;
  &lt;ImageUri&gt;SuperQuiz/Assets/Images/geography.png&lt;/ImageUri&gt;
  &lt;LockQuestionWhenEvaluated&gt;true&lt;/LockQuestionWhenEvaluated&gt;
  &lt;LockQuestionWhenNavigateToNext&gt;false&lt;/LockQuestionWhenNavigateToNext&gt;
  &lt;LockQuestionWhenNavigateToPrevious&gt;false&lt;/LockQuestionWhenNavigateToPrevious&gt;
  &lt;Name&gt;Quiz 0&lt;/Name&gt;
  &lt;Questions&gt;
    &lt;QuizQuestion&gt;
      &lt;Answers&gt;
        &lt;QuizAnswer&gt;
          &lt;Code&gt;C_0_Q_0_Q0_A0&lt;/Code&gt;
          &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat &lt;/Description&gt;
          &lt;ImageUri&gt;SuperQuiz/Assets/Images/geography.png&lt;/ImageUri&gt;
          &lt;Links&gt;
            &lt;QuizUriLink&gt;
              &lt;Title&gt;Wikipedia&lt;/Title&gt;
              &lt;Url&gt;http://en.wikipedia.org/wiki/Sao Paulo&lt;/Url&gt;
            &lt;/QuizUriLink&gt;
          &lt;/Links&gt;
          &lt;Name&gt;Answer 0&lt;/Name&gt;
          &lt;Points&gt;-1&lt;/Points&gt;
        &lt;/QuizAnswer&gt;
        &lt;QuizAnswer&gt;
          &lt;Code&gt;C_0_Q_0_Q0_A1&lt;/Code&gt;
          &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat &lt;/Description&gt;
          &lt;ImageUri&gt;SuperQuiz/Assets/Images/geography.png&lt;/ImageUri&gt;
          &lt;Name&gt;Answer 1&lt;/Name&gt;
          &lt;Links&gt;
            &lt;QuizUriLink&gt;
              &lt;Title&gt;Wikipedia&lt;/Title&gt;
              &lt;Url&gt;http://en.wikipedia.org/wiki/Sao Paulo&lt;/Url&gt;
            &lt;/QuizUriLink&gt;
          &lt;/Links&gt;
          &lt;Points&gt;0&lt;/Points&gt;
        &lt;/QuizAnswer&gt;
      &lt;/Answers&gt;
      &lt;Code&gt;C_0_Q_0_Q0&lt;/Code&gt;
      &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat &lt;/Description&gt;
      &lt;ImageUri&gt;SuperQuiz/Assets/Images/geography.png&lt;/ImageUri&gt;
      &lt;Links&gt;
        &lt;QuizUriLink&gt;
          &lt;Title&gt;Wikipedia&lt;/Title&gt;
          &lt;Url&gt;http://en.wikipedia.org/wiki/Sao Paulo&lt;/Url&gt;
        &lt;/QuizUriLink&gt;
      &lt;/Links&gt;
      &lt;Title&gt;Question 0&lt;/Title&gt;
    &lt;/QuizQuestion&gt;
  &lt;/Questions&gt;
  &lt;ShowCorrectAnswerOnFinish&gt;true&lt;/ShowCorrectAnswerOnFinish&gt;
  &lt;ShowFinishButton&gt;true&lt;/ShowFinishButton&gt;
  &lt;ShowFinishOnlyWhenReachedLastQuestion&gt;true&lt;/ShowFinishOnlyWhenReachedLastQuestion&gt;
  &lt;UniqueId&gt;C_0_Q_0&lt;/UniqueId&gt;
&lt;/Quiz&gt;</pre></p></div><p>&nbsp;</p><p><pre class="brush: xml">&lt;Quiz xmlns=&quot;http://schemas.datacontract.org/2004/07/SuperQuiz.Model&quot; xmlns:i=&quot;http://www.w3.org/2001/XMLSchema-instance&quot;&gt;
  &lt;AllowPreviousNavigation&gt;true&lt;/AllowPreviousNavigation&gt;
  &lt;AllowShareQuestions&gt;true&lt;/AllowShareQuestions&gt;
  &lt;CategoryUniqueId&gt;C_0&lt;/CategoryUniqueId&gt;
  &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat vivamus dictumst aliquam duis convallis scelerisque est parturient&lt;/Description&gt;
  &lt;EvaluateAnswerOnNext&gt;true&lt;/EvaluateAnswerOnNext&gt;
  &lt;ImageUri&gt;SuperQuiz/Assets/Images/geography.png&lt;/ImageUri&gt;
  &lt;LockQuestionWhenEvaluated&gt;true&lt;/LockQuestionWhenEvaluated&gt;
  &lt;LockQuestionWhenNavigateToNext&gt;false&lt;/LockQuestionWhenNavigateToNext&gt;
  &lt;LockQuestionWhenNavigateToPrevious&gt;false&lt;/LockQuestionWhenNavigateToPrevious&gt;
  &lt;Name&gt;Quiz 0&lt;/Name&gt;
  &lt;Questions&gt;&lt;/Questions&gt;
  &lt;ShowCorrectAnswerOnFinish&gt;true&lt;/ShowCorrectAnswerOnFinish&gt;
  &lt;ShowFinishButton&gt;true&lt;/ShowFinishButton&gt;
  &lt;ShowFinishOnlyWhenReachedLastQuestion&gt;true&lt;/ShowFinishOnlyWhenReachedLastQuestion&gt;
  &lt;UniqueId&gt;C_0_Q_0&lt;/UniqueId&gt;
&lt;/Quiz&gt;</pre></p><div><p class="ppCode">Agora focando na definição dos elementos do XML do Quiz, vou descrever cada uma de suas tags e qual o seu impacto no funcionamento do Quiz.</p></div><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="50%"><p class="ppTableText"><strong>Tag</strong></p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Descrição</strong></p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">AllowPreviousNavigation</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - permite que o usuário volte para a questão anterior do Quiz.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">AllowShareQuestions</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - habilita o botão de &quot;Pedir ajuda ao amigo&quot;, que pelo contrato de share envia um e-mail com a solicitação de ajuda.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">CategoryUniqueId</p></td><td valign="top" width="50%"><p class="ppTableText">Deve possuir o valor do UniqueId da categoria que deseja vincular esse Quiz.</p><p class="ppTableText">Quando não existir uma categoria com o valor informado, o quiz não será apresentado.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Description</p></td><td valign="top" width="50%"><p class="ppTableText">Descrição que será apresentada na página PageQuiz.xaml.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">EvaluateAnswerOnNext</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - é verificada a pontuação da resposta, executando a animação de acordo com a pontuação.</p><p class="ppTableText">As stories board de animação estão definidas em SuperQuiz/View/StarPointsControl.xaml.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">ImageUri</p></td><td valign="top" width="50%"><p class="ppTableText">É a imagem utilizada para representar o Quiz. Essa imagem é utilizada na página de CategoryPage.xaml e na página QuizPage.xaml.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">LockQuestionWhenEvaluated</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - desabilita a edição das questões que foram respondidas (ou não) de um Quiz quando sua pontuação for contabilizada.</p><p class="ppTableText">Se o usuário não responder a uma questão do Quiz e passar para a próxima questão, esta ficará bloqueada.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">LockQuestionWhenNavigateToNext</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - desabilita a edição da questão quando o usuário realiza a navegação para a próxima questão, mesmo se a questão não foi contabilizada.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">LockQuestionWhenNavigateToPrevious</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - desabilita a edição da questão quando o usuário navega para a questão anterior, mesmo se a questão não foi contabilizada.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Name</p></td><td valign="top" width="50%"><p class="ppTableText">Identifica o Quiz na página - é utilizado em vários momentos nas páginas onde os quizes são apresentados.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Questions</p></td><td valign="top" width="50%"><p class="ppTableText">É utilizado para definir uma coleção de QuizQuestion, que são as questões apresentadas pelo Quiz.</p><p class="ppTableText">Não há limites para número de questões em um Quiz, no entanto, seja coerente, afinal de contas o intuito é ser divertido.</p><p class="ppTableText">Seu conteúdo será descrito na próxima seção.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">ShowCorrectAnswerOnFinish</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - apresenta um flyout, com as respostas corretas e as incorretas do usuário.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">ShowFinishButton</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - apresenta o botão de Finalizar o Quiz no AppBar durante todo o Quiz.</p><p class="ppTableText">&nbsp;</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">ShowFinishOnlyWhenReachedLastQuestion</p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Domínio: {true | false}</strong></p><p class="ppTableText">Quando igual a &quot;true&quot; - apresenta o botão de Finalizar o Quiz somente quando o usuário chegar à última questão do Quiz.</p><p class="ppTableText">&nbsp;</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">UniqueId</p></td><td valign="top" width="50%"><p class="ppTableText">Nome único que identifica o Quiz.</p></td></tr></tbody></table><p class="ppBodyText">&nbsp;</p><p class="ppBodyText">Depois de apresentadas as tags do Quiz, focarei na tag Questions que é utilizada para definir a coleção de perguntas de um Quiz.</p><div><p class="ppCodeLanguage"><pre class="brush: xml">
<p class="ppCodeLanguage">&lt;Questions&gt;
  &lt;QuizQuestion&gt;
    &lt;Answers&gt;&lt;/Answers&gt;
    &lt;Code&gt;C_0_Q_0_Q0&lt;/Code&gt;
    &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras phasellus suspendisse quisque donec dis praesent accumsan bibendum pellentesque condimentum adipiscing etiam consequat &lt;/Description&gt;
    &lt;ImageUri&gt;SuperQuiz/Assets/Images/geography.png&lt;/ImageUri&gt;
    &lt;Links&gt;
      &lt;QuizUriLink&gt;
        &lt;Title&gt;Wikipedia&lt;/Title&gt;
        &lt;Url&gt;http://en.wikipedia.org/wiki/Sao Paulo&lt;/Url&gt;
      &lt;/QuizUriLink&gt;
    &lt;/Links&gt;
    &lt;Title&gt;Question 0&lt;/Title&gt;
  &lt;/QuizQuestion&gt;
&lt;/Questions&gt;
<p class="ppCodeLanguage"></pre></p></div><p class="ppBodyText">Descrição dos itens da tag Questions.</p><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="50%"><p class="ppTableText"><strong>Tag</strong></p></td><td valign="top" width="50%"><p class="ppTableText"><strong>Descrição</strong></p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">QuizQuestion</p></td><td valign="top" width="50%"><p class="ppTableText">Define uma questão no Quiz - esta é a tag que compõe a coleção de Questions.</p></td></tr><tr><td valign="top" width="50%"><p class="ppBodyText">Answers</p><p class="ppBodyText">Veja trecho de código xml com a definição do&nbsp;QuizAnswer abaixo, logo após a tabela.</p><div><p class="ppCodeCxSpFirst">&nbsp;</p></div></td><td valign="top" width="50%"><p class="ppTableText">Define a coleção de possíveis respostas de uma questão em um Quiz.</p><p class="ppTableText">A coleção é definida por um conjunto de tags&nbsp; QuizAnswer.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Code</p></td><td valign="top" width="50%"><p class="ppTableText">Código que identifica a pergunta do quiz.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Description</p></td><td valign="top" width="50%"><p class="ppTableText">Texto descritivo utilizado geralmente para apresentar a questão.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">ImageUri</p></td><td valign="top" width="50%"><p class="ppTableText">Imagem utilizada para ilustrar a questão. A imagem não é obrigatória.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Links</p></td><td valign="top" width="50%"><p class="ppTableText">Lista de links utilizados como material complementar à questão do Quiz.</p></td></tr><tr><td valign="top" width="50%"><p class="ppTableText">Title</p></td><td valign="top" width="50%"><p class="ppTableText">Título do questão.</p></td></tr></tbody></table><p class="ppBodyText">&nbsp;</p><p class="ppBodyText">A Tag QuizAnswers define as possíveis respostas da pergunta do Quiz.</p><p class="ppBodyText"><pre class="brush: xml">&lt;QuizAnswer&gt;
  &lt;Code&gt;C_0_Q_0_Q0_A0&lt;/Code&gt;
  &lt;Description&gt;Curabitur class aliquam vestibulum nam curae maecenas sed integer cras &lt;/Description&gt;
  &lt;ImageUri&gt;SuperQuiz/Assets/Images/img.png&lt;/ImageUri&gt;
  &lt;Links&gt;
    &lt;QuizUriLink&gt;
      &lt;Title&gt;Wikipedia&lt;/Title&gt;
      &lt;Url&gt;http://en.wikipedia.org&lt;/Url&gt;
    &lt;/QuizUriLink&gt;
  &lt;/Links&gt;
  &lt;Name&gt;Answer 0&lt;/Name&gt;
  &lt;Points&gt;-1&lt;/Points&gt;
&lt;/QuizAnswer&gt;</pre></p><p class="ppBodyText"><span>Descrição dos elementos da tag QuizAnswer.</span></p><table class="ppTableGrid" width="100%" border="1" cellspacing="0" cellpadding="0"><tbody><tr><td valign="top" width="25%"><p class="ppTableText"><strong>Tag</strong></p></td><td valign="top" width="74%"><p class="ppTableText"><strong>Descrição</strong></p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Code</p></td><td valign="top" width="74%"><p class="ppTableText">Código que identifica a resposta – ele deve ser único&nbsp; no Quiz.</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Description</p></td><td valign="top" width="74%"><p class="ppTableText">Descrição da resposta - é apresentada quando uma resposta é selecionada na página QuizPlayPage.xaml.</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">ImageUri</p></td><td valign="top" width="74%"><p class="ppTableText">Imagem utilizada para apresentar a resposta. É apresentada em frente ao nome.</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Links</p></td><td valign="top" width="74%"><p class="ppTableText">Define um conjunto de links que será apresentado quando o usuário selecionar a resposta.</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Name</p></td><td valign="top" width="74%"><p class="ppTableText">Texto que será apresentado para o usuário, na lista de respostas.</p></td></tr><tr><td valign="top" width="25%"><p class="ppTableText">Points</p></td><td valign="top" width="74%"><p class="ppTableText">É a quantidade de pontos que o usuário vai receber ao escolher essa resposta.&nbsp;<br>O valor pode ser positivo ou negativo.</p></td></tr></tbody></table><p class="ppTableText">&nbsp;</p><h2>Conclusão</h2><p class="ppBodyText">Apesar de ser uma tarefa relativamente fácil, a edição de conteúdo nos arquivos xml requer bastante cuidado. Erros cometidos durante a alteração podem levar bastante tempo para serem encontrados.</p><p class="ppBodyText">Se durante o processo de alteração algum conteúdo desaparecer, é bem provável que o XML não esteja bem formatado.</p><p class="ppBodyText">Como você já deve estar ciente, aplicações Metro Style não se resumem apenas a conteúdo, é preciso que a aplicação tenha uma identidade visual. Não fique somente na alteração do conteúdo. Aproveite o tempo ganho para customizar visualmente a sua aplicação, levando sempre em conta o guide line.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:14fedc0aeeee492bab82a08b0145cc8f">]]></description>
      <comments>http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-1</comments>
      <itunes:summary>Por Vin&#237;cius Souza Microsoft Technical Evangelist Existem v&#225;rias formas de alterar o SuperQuiz. A mais f&#225;cil &#233; alterar os arquivos XML de categoria e quiz. Os arquivos de conte&#250;do est&#227;o localizado na pasta SuperQuiz\Assets. Na pasta SuperQuiz\Assets\Categories encontraremos os arquivos xml de categoria e na pasta SuperQuiz\Assets\Quizzes os arquivos xml de quiz. Antes de apresentar a estrutura dos arquivos xml de conte&#250;do, gostaria de dar algumas dicas: 1)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; N&#227;o altere a ordem das tags no xml. Devido ao componente de serializa&#231;&#227;o utilizado, o arquivo xml &#233; gerado e consumido com as tags em ordem alfab&#233;tica. Por isso, alterando-se a ordem, ocorrer&#225; um problema durante o processo de load; 2)&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Muito cuidado durante a altera&#231;&#227;o do xml. &#192;s vezes, durante a sele&#231;&#227;o do texto, cometemos um erro removendo mais caracteres do que &#233; necess&#225;rio, causando uma m&#225; forma&#231;&#227;o no xml. Este tipo de erro &#233; dif&#237;cil de ser detectado. Estrutura do arquivo xml de categoria.A estrutura do arquivo &#233; simples, possuindo apenas tr&#234;s tags {ImageUri, Name, UniqueId}. 
&amp;lt;QuizCategory xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/SuperQuiz.Model&amp;quot; xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance&amp;quot;&amp;gt;
  &amp;lt;ImageUri&amp;gt;Assets/geography.png&amp;lt;/ImageUri&amp;gt;
  &amp;lt;Name&amp;gt;Category 0 &amp;lt;/Name&amp;gt;
  &amp;lt;UniqueId&amp;gt;C_0&amp;lt;/UniqueId&amp;gt;
&amp;lt;/QuizCategory&amp;gt;
 &amp;nbsp; Tag Descri&#231;&#227;o ImageUri Possui a imagem que representa a categoria. &amp;nbsp; Name &#201; utilizado para nomear a categoria. &amp;nbsp; UniqueId &#201; o c&#243;digo que identifica a categoria &amp;nbsp; Estrutura do arquivo xml de QuizO arquivo xml de Quiz &#233; um pouco mais complexo e, por isso, vou explic&#225;-lo em duas etapas. A primeira, em que abordo o quiz sem considerar a tag Questions, e a segunda onde abordo somente o conte&#250;do da tag Questions. &amp;lt;Quiz xmlns=&amp;quot;http://schemas.datacontract.org/2004/07/SuperQuiz.Model&amp;quot; xmlns:i=&amp;quot;http://www.w3.org/2001/XMLSchema-instance</itunes:summary>
      <link>http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-1</link>
      <pubDate>Wed, 11 Jul 2012 22:20:10 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-1</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/d874409e-f211-4ff7-a687-122b60bd37e9.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Customizando-o-SuperQuiz-Parte-1/rss</wfw:commentRss>
      <category>Templates</category>
      <category>Windows 8</category>
    </item>
  <item>
      <title>Desenvolvimento no Windows 8 Primeiros Passos</title>
      <description><![CDATA[<h3>Por Vinícius Souza</h3><h3>Microsoft Technical Evangelist</h3><p>&nbsp;</p><p><strong>Fabebook</strong>: <a href="http://aka.ms/facevisouza">http://aka.ms/facevisouza</a></p><p><strong>Blog</strong>: <a href="http://aka.ms/visouza">http://aka.ms/visouza</a></p><p><strong>Twitter</strong>: <a title="Twitter" href="https://twitter.com/vbs_br">@vbs_br</a></p><p class="ppBodyText">Neste artigo, apresentarei o que deve ser feito para conseguir desenvolver aplicativos Metro Style no Windows 8.</p><p class="ppBodyText">Antes de mais nada, precisamos instalar o Windows 8, que é o novo sistema operacional. E, tendo isso em mente, partimos de dois cenários:</p><ol><li>Instalação do sistema operacional, substituindo o sistema operacional existente; </li><li>Fazer uso de uma máquina virtual. </li></ol><p class="ppBodyTextIndent">Cada um dos cenários acima, tem seus prós e contras. Quando o Windows 8 Consumer Preview foi disponibilizado, em fevereiro deste ano, utilizei o segundo cenário. Agora, com o Release Preview, substituí o Windows 7 da minha máquina de trabalho pelo Windows 8.</p><p class="ppBodyTextIndent">No tocante à experiência com o sistema operacional, o primeiro cenário é muito melhor, pois ter a experiência no ambiente em que vamos desenvolver aplicativos agrega muito.&nbsp;</p><p class="ppBodyTextIndent">Fica a seu cargo escolher qual cenário utilizar, aqui cobrirei o primeiro cenário.</p><p class="ppBodyTextIndent">Existem outras formas de instalar o Windows como, por exemplo, utilizando o dual boot.</p><h2>Instalando o Windows 8 como sistema operacional primário</h2><p class="ppBodyText">Se decidir substituir o seu sistema operacional corrente, o primeiro passo é fazer backup de seus documentos, músicas, imagens, arquivos de e-mail e o que mais tiver que ser salvo.</p><p class="ppBodyText">Preste bastante atenção, pois depois de instalar o Windows 8 você não terá mais acesso aos arquivos que não tiverem backup.</p><p class="ppBodyText">Nesse processo de instalação vou utilizar um pen-drive (USB device). O pen-drive tem que ter no mínimo 4GB, mas se preferir pode utilizar um DVD - os procedimentos são basicamente os mesmos.</p><h3>Fazendo o download do ISO</h3><p class="ppBodyText">Acesse o link <a href="http://windows.microsoft.com/en-US/windows-8/iso">http://windows.microsoft.com/en-US/windows-8/iso</a> para escolher a ISO (imagem do disco) que deseja instalar. Existem vários idiomas disponíveis, nas versões 32-bit e 64-bit, escolha aquela que melhor se adequar à arquitetura de sua máquina.</p><p class="ppBodyText">Aqui farei uso da versão 64-bits, em inglês, no entanto o procedimento funciona para qualquer idioma escolhido.</p><p class="ppBodyText">Depois que o processo de download for concluído, execute os passos abaixo:</p><p>1. Faça download e instale a ferramenta <a href="http://images2.store.microsoft.com/prod/clustera/framework/w7udt/1.0/en-us/Windows7-USB-DVD-tool.exe">Windows 7 USB/DVD Tool</a>, em seguida execute a ferramenta. Busque o arquivo ISO que realizou download e clique em &quot;Next&quot;;</p><p><img src="http://files.channel9.msdn.com/thumbnail/f949d4ee-8bcb-424e-ba6b-b3d63540a5cd.png" alt="" width="382" height="202"></p><p>2. Pluge o dispositivo USB no computador e clique sobre o botão &quot;USB Device&quot;;</p><p><img src="http://files.channel9.msdn.com/thumbnail/dec91e2a-700a-4ec9-b2f6-52ff3119f897.png" alt="" width="384" height="203"></p><p>3. Escolha o dispositivo USB na caixa de combo e clique sobre o botão &quot;Begin copying&quot;;</p><p><img src="http://files.channel9.msdn.com/thumbnail/b055537f-6901-4088-b00f-c6d9909a3714.png" alt="" width="387" height="204"></p><p>4. A ferramenta vai formatar o dispositivo, tornando-o bootável e copiando os arquivos de instalação. O processo pode demorar um pouco até ser concluído, seja paciente;&nbsp;</p><p><img src="http://files.channel9.msdn.com/thumbnail/456bf4b0-b7d4-4d32-9794-4516d13e5259.png" alt="" width="388" height="205"></p><p>5. Quando a ferramenta concluir o processo, você já pode remover o dispositivo USB e iniciar o processo de instalação.</p><p><img src="http://files.channel9.msdn.com/thumbnail/8fbe1c22-21a1-40e9-9784-76de18abc7ae.png" alt="" width="392" height="207"></p><p>Altere a configuração de boot de sua máquina, deixando o dispositivo USB como fonte primária de boot, e salve as configurações.</p><p class="ppNumberList">Coloque o pen-drive em uma das portas USB, inicialize o computador e veja se a luz de leitura do USB está piscando, indicando a leitura. Siga as instruções de instalação apresentadas durante o wizard e, em poucos minutos, você terá o Windows 8 instalado.</p><h2>Download das ferramentas</h2><p class="ppBodyText">Para desenvolver para o Windows 8, precisamos instalar o Visual Studio 2012 Express RC. Para quem não conhece, o Visual Studio é a IDE (Integrated Development Enviroment / Ambiente Integrado de Desenvolvimento) utilizado para desenvolver aplicações .Net. E aqui não falo somente de aplicações Metro Style, mas para toda e qualquer aplicação que queira desenvolver (Web, Form, Metro, Service, Cloud, Phone, Library etc.) você vai utilizar alguma versão do Visual Studio.</p><p class="ppBodyText">Faça downlod do Visual Studio clicando no link: <a href="http://msdn.microsoft.com/en-US/windows/apps/hh852659">Visual Studio 2012 Express RC</a>. Escolha o idioma de sua preferência e inicie o download.</p><p class="ppBodyText">Inicie o processo de instalação e siga os passos apresentados pelo Wizard. Ao terminar a instalação, você terá instalado na sua máquina:</p><ul><li>Windows 8 SDK; </li><li>Blend for Visual Studio; </li><li>Languages and templates in JavaScript; </li><li>C&#43;&#43;; </li><li>&nbsp;C#; </li><li>&nbsp;Visual Basic. </li></ul><p class="ppBulletList">&nbsp;Sua máquina está pronta para desenvolver aplicativos para o Windows 8, mas antes de colocar a mão na massa, é preciso obter a licença de desenvolvedor.</p><h2>Obtendo licença para desenvolvedor</h2><p class="ppBodyText">A licença de desenvolvedor para o Windows 8 Release Preview permite instalar, desenvolver, testar e avaliar aplicativos Metro Style antes que os testes e certificação do Windows Store sejam realizados. Licenças de desenvolvedor são gratuitas, e você pode utilizar quantas forem necessárias.</p><p class="ppBodyText">Antes que a loja aceite seu aplicativo Metro Style, você deve empacotá-la e certificá-la de acordo com certas regras. Se a Windows Store não certificou um aplicativo Metro Style, esse aplicativo não pode ser executado no Windows, a não ser que você possua uma licença de desenvolvedor instalada em sua máquina local.</p><p class="ppBodyText">A licença é fornecida por máquina e por uma quantidade fixa de tempo. Após a licença de desenvolvedor em sua máquina local expirar, você não será capaz de rodar aplicativos não certificados, mas pode continuar a executar aplicativos de desktop ou aplicativos de estilo de Metro Style que foram <em>Sideloaded</em> na máquina.</p><p class="ppBodyText">Para obter a licença de desenvolvedor, basta executar o Visual Studio 2012 RC e aceitar os termos de licença apresentados na primeira execução. Na janela de UAC (User Account Control), clique em Yes se desejar continuar.</p><p class="ppBodyText">Após instalar a licença em sua máquina local, você não receberá a notificação novamente nessa máquina, até que a sua licença seja expirada ou removida.</p><p class="ppBodyText">Agora sim, você está pronto para desenvolver aplicativos Metro Style!</p><h2>Conclusões</h2><p class="ppBodyText">O processo de setup da máquina para a instalação do Windows 8 pode parecer doloroso logo de início, afinal das contas, é necessário fazer a instalação de um novo sistema operacional. Mas, garanto a você que o processo é simples e mais rápido do que pensa.</p><p class="ppBodyText">Aproveite essa oportunidade para conhecer as novas funcionalidades do Visual Studio 2012, crie projetos utilizando os templates Metro Style C# e HTML5 fornecidos com o Visual Studio, e analise o código dos templates. Por mais que, no começo, você não consiga entender 100% do código, vale muito a pena!</p><p class="ppBodyText">Navegue bastante no Windows 8, veja as aplicações instaladas e as disponíveis na Windows Store. Familiarize-se com o Metro Style e tire ideias e boas práticas para implementar a sua própria app.</p><p class="ppBodyText">&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:7328d294a09f48cfa6f5a08b014025d9">]]></description>
      <comments>http://channel9.msdn.com/posts/Desenvolvimento-no-Windows-8-Primeiros-Passos</comments>
      <itunes:summary>Por Vin&#237;cius SouzaMicrosoft Technical Evangelist&amp;nbsp; Fabebook: http://aka.ms/facevisouza Blog: http://aka.ms/visouza Twitter: @vbs_br Neste artigo, apresentarei o que deve ser feito para conseguir desenvolver aplicativos Metro Style no Windows 8. Antes de mais nada, precisamos instalar o Windows 8, que &#233; o novo sistema operacional. E, tendo isso em mente, partimos de dois cen&#225;rios: Instala&#231;&#227;o do sistema operacional, substituindo o sistema operacional existente; Fazer uso de uma m&#225;quina virtual. Cada um dos cen&#225;rios acima, tem seus pr&#243;s e contras. Quando o Windows 8 Consumer Preview foi disponibilizado, em fevereiro deste ano, utilizei o segundo cen&#225;rio. Agora, com o Release Preview, substitu&#237; o Windows 7 da minha m&#225;quina de trabalho pelo Windows 8. No tocante &#224; experi&#234;ncia com o sistema operacional, o primeiro cen&#225;rio &#233; muito melhor, pois ter a experi&#234;ncia no ambiente em que vamos desenvolver aplicativos agrega muito.&amp;nbsp; Fica a seu cargo escolher qual cen&#225;rio utilizar, aqui cobrirei o primeiro cen&#225;rio. Existem outras formas de instalar o Windows como, por exemplo, utilizando o dual boot. Instalando o Windows 8 como sistema operacional prim&#225;rioSe decidir substituir o seu sistema operacional corrente, o primeiro passo &#233; fazer backup de seus documentos, m&#250;sicas, imagens, arquivos de e-mail e o que mais tiver que ser salvo. Preste bastante aten&#231;&#227;o, pois depois de instalar o Windows 8 voc&#234; n&#227;o ter&#225; mais acesso aos arquivos que n&#227;o tiverem backup. Nesse processo de instala&#231;&#227;o vou utilizar um pen-drive (USB device). O pen-drive tem que ter no m&#237;nimo 4GB, mas se preferir pode utilizar um DVD - os procedimentos s&#227;o basicamente os mesmos. Fazendo o download do ISOAcesse o link http://windows.microsoft.com/en-US/windows-8/iso para escolher a ISO (imagem do disco) que deseja instalar. Existem v&#225;rios idiomas dispon&#237;veis, nas vers&#245;es 32-bit e 64-bit, escolha aquela que melhor se adequar &#224; arquitetura de sua m&#225;quina. Aqui farei uso da vers&#227;o 64-bits, em ingl&#234;s, no entanto o p</itunes:summary>
      <link>http://channel9.msdn.com/posts/Desenvolvimento-no-Windows-8-Primeiros-Passos</link>
      <pubDate>Wed, 11 Jul 2012 22:18:48 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Desenvolvimento-no-Windows-8-Primeiros-Passos</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/7c08c440-9a58-4bef-b696-b5f5df0249f1.png" height="54" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>13</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Desenvolvimento-no-Windows-8-Primeiros-Passos/rss</wfw:commentRss>
      <category>Brasil</category>
      <category>Windows 8</category>
      <category>Visual Studio 2012</category>
    </item>
  <item>
      <title>Desenvolvimento com Java para o Windows Azure</title>
      <description><![CDATA[<p>[Este artigo foi traduzido da library do MSDN, para ver o original acesse <a href="http://msdn.microsoft.com/pt-br/library/windowsazure/hh690944(VS.103).aspx" target="_blank">http://msdn.microsoft.com/pt-br/library/windowsazure/hh690944(VS.103).aspx</a>]&nbsp;</p><p>Os passos seguintes mostram como criar e implantar uma aplicação Java básica utilizando JSP - Java Server Page para o Windows Azure, utilizando o plugin para o Eclipse do Windows Azure. Foi utilizado o JSP nesse exemplo pela simplicidade, mas passos semelhantes podem ser realizados para outras tecnologias Java existentes.</p><p>Na biblioteca do MSDN existe um <a href="http://msdn.microsoft.com/pt-br/windowsazure/hh301677" target="_blank">vídeo publicado por Gilberto Ribeiro</a> realizando os passos para realizar o deploy de uma aplicação utilizando JSF - Java Server Faces no Windows Azure.</p><p>Nessa artigo vamos utilizar uma aplicação de Hello Word! Muito utilizada por todos os desenvolvedores em qualquer linguagem&nbsp; <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-13.gif?v=c9' alt='Angel' />&nbsp;</p><p><strong>Os Pré-requisitos</strong></p><ul><li>Java Developer Kit (JDK), &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; v 1.6 ou posterior. </li><li>Eclipse IDE para&nbsp;desenvolvedores Java EE, Hélios ou superior. Você pode obter o Eclipse&nbsp;utilizando o link&nbsp; <a href="http://www.eclipse.org/downloads/" target="_blank">http://www.eclipse.org/downloads/</a>. </li><li>A distribuição de um&nbsp;servidor web baseado em Java ou servidor de aplicação, como o Apache&nbsp;Tomcat, GlassFish, JBoss Application Server, ou Jetty. </li><li>A assinatura do Windows&nbsp;Azure, que pode ser obtida através desse link <a title="Criando uma assinatura no Windows Azure" href="http://www.windowsazure.com/pt-br/pricing/free-trial/" target="_blank">http://www.windowsazure.com/pt-br/pricing/free-trial/</a>. </li><li>O Windows Azure Plugin para&nbsp;Eclipse. Acesse <a href="http://sourceforge.net/projects/waplugin4ej/" target="_blank">http://sourceforge.net/projects/waplugin4ej/</a> para baixar. </li></ul><p><strong>Criar uma aplicação Hello World</strong></p><p>&nbsp;</p><p>1. Vamos começar com a criação de um projeto Java. Inicie o Eclipse. Dentro do Eclipse, clique no menu <strong>arquivo</strong>, clique em <strong>Novo</strong>, e em seguida clique em <strong>Dynamic Web&nbsp;Project</strong>. Nomeie&nbsp;o projeto para <strong>HelloWorld</strong> e em seguida clique em <strong>Concluir</strong>.</p><p><a href="http://files.channel9.msdn.com/thumbnail/57f68275-5df5-46f5-a852-8802bc3fb8af.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/57f68275-5df5-46f5-a852-8802bc3fb8af.png" alt="" width="355" height="479"></a></p><p>2. Expanda o projeto&nbsp;<strong>HelloWorld</strong>,&nbsp;no painel Project Explorer do Eclipse. E clique com o botão direito do mouse em <strong>WebContent</strong>, clique em <strong>Novo</strong> e, em seguida,&nbsp;clique em Arquivo JSP.</p><p>3. Na caixa de&nbsp;diálogo <strong>Novo arquivo JSP</strong>, nomeie o arquivo para <strong>index.jsp</strong>. Mantenha a pasta&nbsp;pai como <strong>HelloWorld WebContent\</strong>, como apresentado na figura abaixo.</p><p><a href="http://files.channel9.msdn.com/thumbnail/5f14d1bf-0fc3-4c3f-b747-954d3d4440ba.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/5f14d1bf-0fc3-4c3f-b747-954d3d4440ba.png" alt="" width="453" height="404"></a></p><p>Em seguida, clique em Avançar.</p><p>&nbsp;</p><p>4. Na caixa de&nbsp;diálogo Selecionar <strong>Template JSP</strong>, selecione <strong>Novo arquivo JSP (html)</strong> e clique em <strong>Concluir</strong>.</p><p>5. Quando o arquivo index.jsp abrir no editor do Eclipse, adicione no texto para exibir <strong>Hello World</strong>! Na tag&nbsp; &lt;body&gt; existente. O&nbsp;&nbsp;conteúdo da tag Body do seu HTML deve possui o seguinte conteúdo.</p><p>&nbsp;<br><pre class="brush: html">   &lt;body&gt;
     &lt;b&gt;Hello World! &lt;/ b&gt;
   &lt;/ Body&gt;</pre></p><p>6. Agora vamos criar&nbsp;&nbsp;um projeto para <strong>Windows Azure</strong>. Dentro do Eclipse, clique no menu <strong>arquivo</strong>,&nbsp; <strong>Novo</strong> e em seguida selecione <strong>Windows&nbsp;Azure Project</strong>,&nbsp;utilize o nome <strong>MyAzureProject</strong>. Modifique a localização caso necessário, mas salve&nbsp;esse valor pois iremos utilizá-lo em breve quando formos exportar o arquivo WAR.&nbsp;Aceite os valores padrão para <strong>WorkerRole1</strong>. A caixa de diálogo da janela <strong>Novo Windows Azure Project</strong> deve ser semelhante a essa.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/a802a28f-271d-4036-baf2-93075420b1ae.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/a802a28f-271d-4036-baf2-93075420b1ae.png" alt="" width="437" height="409"></a></p><p>Em seguida, clique em <strong>Concluir</strong>.</p><p>&nbsp;</p><p>7. Crie um arquivo&nbsp;WAR para o projeto Java. No painel <strong>Project Explorer</strong>, clique com o&nbsp;botão direito do mouse no projeto <strong>HelloWorld</strong>, em seguida&nbsp;clique em <strong>Exportar</strong>, e clique arquivo WAR. Na caixa de&nbsp;&nbsp;diálogo <strong>Exportar</strong>, clique no botão Browse.</p><p>Na caixa de diálogo <strong>Salvar como</strong>,&nbsp; navegue para a seguinte localização&nbsp; (onde <strong>&lt;your_project_location&gt;</strong> é a pasta onde você criou seu Windows Azure projeto):</p><p><strong>&lt;your_project_location&gt; \ MyAzureProject \ WorkerRole1 \ AppRoot</strong></p><p>8. Clique em <strong>Salvar</strong>. Você será&nbsp;&nbsp;avisado caso o arquivo HelloWorld.war existir, caso aconteça clique em &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <strong>sobrescrever</strong>.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/221e0788-1b77-4630-9bef-18365129ebe3.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/221e0788-1b77-4630-9bef-18365129ebe3.png" alt="" width="445" height="329"></a></p><p>Clique em Concluir.</p><p>&nbsp;</p><p>9. No painel <strong>Project&nbsp;Explorer</strong> do Eclipse, expanda o projeto <strong>MyAzureProject</strong>,&nbsp; a role <strong>WorkerRole1</strong> e o <strong>AppRoot</strong>. Nessa pasta,&nbsp;você vai visualizar o seu arquivo <strong>HelloWorld.war</strong> (que você exportou na etapa anterior). Se você não visualizar o arquivo WAR,&nbsp;atualizar a árvore clicando sobre o menu <strong>Arquivo</strong>, e&nbsp; <strong>Refresh</strong>. Você deve&nbsp;visualizar algo semelhante com a figura abaixo.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/e14305ef-f935-466b-824c-0e9f3712bffa.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/e14305ef-f935-466b-824c-0e9f3712bffa.png" alt="" width="209" height="263"></a></p><p>10. Agora vamos copiar os arquivos zips do&nbsp;&nbsp;seu <strong>JDK</strong> e <strong>servidor Web</strong>. Estes arquivos serão copiados para a pasta <strong>AppRoot</strong>.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/1d2e1ac0-d033-4792-beb4-35eb36519981.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/1d2e1ac0-d033-4792-beb4-35eb36519981.png" alt="" width="591" height="233"></a></p><p>Crie os arquivos zip necessários, e então utilize o <strong>File Explorer</strong> para arrastar os zips para a pasta <strong>AppRoot</strong> no painel <strong>Explorer Project</strong>. Quando solicitado pela caixa de diálogo <strong>Operação File</strong>, escolha <strong>Copiar arquivos</strong>. Depois de arrastar os arquivos zips para a pasta <strong>AppRoot</strong>, seu painel Project Explorer deve estar semelhante ao seguinte.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/710515ef-e806-49af-a733-e97a1069ec7c.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/710515ef-e806-49af-a733-e97a1069ec7c.png" alt="" width="276" height="348"></a></p><p>&nbsp;</p><p>11. Agora vamos&nbsp; personalizar o <strong>script</strong> de inicialização utilizado para o seu servidor de&nbsp;aplicação. Dentro do painel <strong>Project Explorer</strong>, expanda a pasta <strong>samples</strong> do projeto <strong>MyAzureProject</strong>.</p><p>&nbsp;</p><p>12. Primeiro vamos&nbsp;copiar o conteúdo do <strong>script</strong> para a área de transferência. Dentro da pasta&nbsp;&nbsp;<strong>samples</strong>,&nbsp;você visualizará um conjunto de arquivos que possuem comandos de inicialização&nbsp;específicos para diferentes tipos de servidores web. Abra o arquivo que&nbsp;seja equivalente para o servidor web que esteja utilizando. Com o arquivo aberto&nbsp;&nbsp;no editor do Eclipse,&nbsp; clique em <strong>Editar</strong>, em seguida,&nbsp;clique em <strong>Selecionar tudo</strong> e em seguida, clique <strong>&lt;CTRL&#43;C&gt;</strong> para copiar o&nbsp;texto.</p><p>13. Agora vamos&nbsp;substituir o conteúdo do arquivo <strong>startup.cmd</strong> pelo conteúdo que você acabou de colocar na &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; área de transferência. No Painel <strong>Project Explorer</strong>, abra o arquivo <strong>startup.cmd</strong> (que está na&nbsp;pasta AppRoot). Com o arquivo aberto, no menu clique em <strong>Editar</strong>, clique em <strong>Selecionar&nbsp;tudo</strong>,&nbsp; e digite <strong>&lt;CTRL&#43;V&gt;</strong> para colar o&nbsp;conteúdo.</p><p>Se você estiver utilizando um nome de diretório diferente para o servidor, você deve atualizar o valor especificado na variável <strong>SERVER_DIR_NAME SET</strong>, modifique o valor conforme necessário. Além disso, há comentários no arquivo <strong>startup.cmd</strong> que fornecem orientação adicional.</p><p>14. Faça o <strong>Build</strong> de&nbsp;seu projeto. Dentro do menu do Eclipse, clique em <strong>Project</strong>, clique em <strong>Criar&nbsp;Projeto</strong>.&nbsp;Assegura-se que o processo de Build foi realizado com sucesso, antes de&nbsp;prosseguir para a próxima etapa.</p><p><strong>&nbsp;Realizando o deploy de sua aplicação para o emulador de computação</strong></p><p>1. No painel Project&nbsp;Explorer, expanda <strong>MyAzureProject</strong>, expanda <strong>emulatorTools</strong>, e clique duas&nbsp;vezes <strong>RunInEmulator.cmd</strong>. Com isto você vai executar sua aplicação Java web no emulador de computação. Quando for solicitado para permitir que este comando faça alterações em seu computador, clique em <strong>Sim</strong>.</p><p><br>Examine a saída da interface do emulador de computação&nbsp; para determinar se há algum problema com seu projeto. Pode demorar vários minutos para o seu deploy ser totalmente iniciado dentro do emulador de computação.</p><p>2. Inicie o&nbsp;navegador e utilize a&nbsp; URL <a href="http://localhost:8080/HelloWorld">http://localhost:8080/HelloWorld</a> (o HelloWorld&nbsp;parte da URL é case-sensitive). Você deverá ver seu aplicativo HelloWorld (saída de&nbsp;index.jsp), semelhante a imagem seguinte.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/014a116f-8334-48ad-9f43-98a145a734b7.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/014a116f-8334-48ad-9f43-98a145a734b7.png" alt=""></a></p><p>&nbsp;</p><p>&nbsp;<strong>Fazer o deplot do aplicativo no o Windows Azure</strong></p><p>Por padrão, um&nbsp;&nbsp;novo projeto Windows Azure é configurado para fazer o Build de um projeto&nbsp;para rodar no emulador de computação. Para prepará-lo para fazer o deploy na nuvem, faça o seuinte. No painel <strong>Project Explorer</strong>, clique com o botão&nbsp;direito do mouse <strong>MyAzureProject</strong> e sem seguida clique em <strong>Propriedades</strong>.</p><p>No painel esquerdo da caixa de diálogo <strong>Propriedades</strong>, clique em <strong>Windows Azure</strong>, e selecione <strong>Deploy to Cloud</strong>. Sua caixa de diálogo Propriedades deve ser semelhante a seguinte:</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/6a996998-2a3a-487f-aff1-ce0299f57032.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/6a996998-2a3a-487f-aff1-ce0299f57032.png" alt="" width="557" height="365"></a></p><p>&nbsp;</p><p>2. Vamos desativar o<strong>&nbsp;acesso remoto</strong> do projeto do Windows Azure. No painel esquerdo da caixa de&nbsp;diálogo <strong>Propriedades</strong>, expanda o Windows Azure e clique em <strong>Acesso&nbsp;Remoto</strong>.&nbsp;Na caixa de diálogo <strong>Remote Access</strong>, desmarque a opção <strong>Ativar conexões de Área de Trabalho Remota com estas credenciais de login</strong>. Clique em <strong>OK</strong> para fechar a&nbsp;janela de acesso remoto.</p><p>3. Faça o <strong>Build</strong> do&nbsp;&nbsp;seu projeto, através do menu <strong>Projeto</strong> do Eclipse,&nbsp;selecione C<strong>onstruir tudo</strong>. Verifique se o processo de Build foi realizado com sucesso.</p><p>4. No painel Project&nbsp;Explorer, expanda o projeto <strong>MyAzureProject</strong>, e em seguida&nbsp; expanda <strong>deploy</strong>. Dentro da pasta <strong>deploy</strong> você deve ter três arquivos, <strong>ServiceConfiguration.cscfg</strong> e <strong>WindowsAzurePackage.cspkg</strong> e <strong>WindowsAzurePortal.url</strong>. Você precisa&nbsp;fazer o upload dos dois primeiros arquivos para o Windows Azure através&nbsp;do Windows Azure Management Portal, nós vamos fazer em breve. O terceiro arquivo, <strong>WindowsAzurePortal.url</strong>, é um atalho para o <strong>Windows&nbsp;Azure Management Portal</strong>.</p><p>5. Clique duas vezes&nbsp;sobre o arquivo <strong>WindowsAzurePortal.url</strong>, para executar o navegador e abrir&nbsp;o portal de gestão do Windows Azure.</p><p>6. Efetue login no Windows&nbsp;Azure Management Portal.</p><p>7. Dentro do Windows&nbsp; Azure Platform Management Portal, clique em <strong>Serviços&nbsp;hospedados, Contas de Armazenamento e CDN</strong>.</p><p>8. Clique <strong>Novo&nbsp;Serviço de Hospedagem</strong> no menu superior.</p><p>9. Selecione a&nbsp;&nbsp;assinatura que será utilizada para este serviço.</p><p>10. Digite um nome&nbsp;para o seu serviço. Este nome é usado para distinguir os seus serviços&nbsp;dentro do Portal de Gerenciamento do Windows Azure para a assinatura&nbsp;especificada.</p><p>11. Digite a URL para&nbsp;&nbsp;o seu serviço. O portal de Gerenciamento do Windows Azure garante que a&nbsp;&nbsp;URL é única.</p><p>12. Escolha uma&nbsp;&nbsp;região da lista de regiões.</p><p>13. Escolha uma das opções de deploy disponíveis <strong>&nbsp;Deploy em&nbsp;um ambiente de Stage (preparo) / Produção.</strong></p><p>14. Certifique-se que&nbsp;a opção <strong>Iniciar após deploy bem sucedido</strong> esteja&nbsp;selecionado.</p><p>15. Especifique um&nbsp;nome para o deploy.</p><p>16. Na localização do<strong> arquivo de</strong> &nbsp;<strong>pacote</strong>, clique no botão <strong>localizar</strong> correspondente, navegue para a pasta (&lt;your_project_location&gt;\ MyAzureProject\ deploy \) onde está localizado o arquivo <strong>WindowsAzurePackage.cspkg</strong> e&nbsp;selecione o arquivo.</p><p>17. Na localização do&nbsp;<strong>arquivo de configuração</strong>, clique no botão <strong>localizar</strong> correspondente,&nbsp;navegue para a pasta (&lt;your_project_location&gt; \ MyAzureProject&nbsp;\ deploy \) onde está localizado o arquivo <strong>ServiceConfiguration.cscfg</strong> e&nbsp;&nbsp;selecione o arquivo.</p><p>18. Clique em OK. Você receberá um&nbsp;aviso após clicar em OK, porque há apenas uma instância para a Role. Para se&nbsp;adequar a <strong>SLA do Windows Azure</strong> é necessário ter pelo menos duas instância&nbsp;de uma role de computação. O processo vai levar um certo tempo para ser&nbsp;completada, você pode monitorar a conclusão verificando o valor da coluna&nbsp;status. Quando seu valor for igual a <strong>Ready (Pronto)</strong> o processo vai estar completo, nesse momento você pode entrar com a url da sua aplicação no navegador para&nbsp;verificar se sua aplicação está funcionando corretamente na nuvem.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/a48038bf-628e-42e9-aaeb-fe6335e1adc4.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/a48038bf-628e-42e9-aaeb-fe6335e1adc4.png" alt="" width="360" height="337"></a></p><p>&nbsp;E com isso terminamos o artigo, faça um teste fazendo um deploy de alguma aplicação que você possui. Veja os pontos onde sua aplicação deve ser alterada e comece aos poucos a experimentar cada serviço disponível no Windows Azure.</p><p>Abraço,</p><p>Vinícius</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:dd4cdb15b94447879fc5a014012b54a5">]]></description>
      <comments>http://channel9.msdn.com/posts/Desenvolvimento-com-Java-para-o-Windows-Azure</comments>
      <itunes:summary>[Este artigo foi traduzido da library do MSDN, para ver o original acesse http://msdn.microsoft.com/pt-br/library/windowsazure/hh690944(VS.103).aspx]&amp;nbsp; Os passos seguintes mostram como criar e implantar uma aplica&#231;&#227;o Java b&#225;sica utilizando JSP - Java Server Page para o Windows Azure, utilizando o plugin para o Eclipse do Windows Azure. Foi utilizado o JSP nesse exemplo pela simplicidade, mas passos semelhantes podem ser realizados para outras tecnologias Java existentes. Na biblioteca do MSDN existe um v&#237;deo publicado por Gilberto Ribeiro realizando os passos para realizar o deploy de uma aplica&#231;&#227;o utilizando JSF - Java Server Faces no Windows Azure. Nessa artigo vamos utilizar uma aplica&#231;&#227;o de Hello Word! Muito utilizada por todos os desenvolvedores em qualquer linguagem&amp;nbsp; &amp;nbsp; Os Pr&#233;-requisitos Java Developer Kit (JDK), &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; v 1.6 ou posterior. Eclipse IDE para&amp;nbsp;desenvolvedores Java EE, H&#233;lios ou superior. Voc&#234; pode obter o Eclipse&amp;nbsp;utilizando o link&amp;nbsp; http://www.eclipse.org/downloads/. A distribui&#231;&#227;o de um&amp;nbsp;servidor web baseado em Java ou servidor de aplica&#231;&#227;o, como o Apache&amp;nbsp;Tomcat, GlassFish, JBoss Application Server, ou Jetty. A assinatura do Windows&amp;nbsp;Azure, que pode ser obtida atrav&#233;s desse link http://www.windowsazure.com/pt-br/pricing/free-trial/. O Windows Azure Plugin para&amp;nbsp;Eclipse. Acesse http://sourceforge.net/projects/waplugin4ej/ para baixar. Criar uma aplica&#231;&#227;o Hello World &amp;nbsp; 1. Vamos come&#231;ar com a cria&#231;&#227;o de um projeto Java. Inicie o Eclipse. Dentro do Eclipse, clique no menu arquivo, clique em Novo, e em seguida clique em Dynamic Web&amp;nbsp;Project. Nomeie&amp;nbsp;o projeto para HelloWorld e em seguida clique em Concluir.  2. Expanda o projeto&amp;nbsp;HelloWorld,&amp;nbsp;no painel Project Explorer do Eclipse. E clique com o bot&#227;o direito do mouse em WebContent, clique em Novo e, em seguida,&amp;nbsp;clique em Arquivo JSP. 3. Na caixa de&amp;nbsp;di&#225;logo Novo arquivo JSP, nomeie o arquivo para index.j</itunes:summary>
      <link>http://channel9.msdn.com/posts/Desenvolvimento-com-Java-para-o-Windows-Azure</link>
      <pubDate>Wed, 14 Mar 2012 18:14:11 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Desenvolvimento-com-Java-para-o-Windows-Azure</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/68c69eeb-6112-4c43-a471-89b48163a052.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Desenvolvimento-com-Java-para-o-Windows-Azure/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>Deployment</category>
      <category>Java</category>
    </item>
  <item>
      <title>Interoperabilidade - Quais as tecnologias suportadas?</title>
      <description><![CDATA[<p>O Windows Azure é uma plataforma aberta e flexível para computação na nuvem, qualquer profissional de tecnologia pode tirar proveito do poder computacional do Windows Azure. Digo computacional, por que falar dos serviços de armazenamento que utilizam chamadas <strong>HTTP/REST</strong> já são interoperáveis por natureza.</p><p>Mas quais são as linguagem que posso utilizar no Windows Azure, como vocês sabe o Windows Azure utiliza 3 tipos de serviços computacionais Web Role, Worker Role e VM Role. As Web Roles e Worker Roles estão na categoria de serviço <strong>PaaS</strong> ou Platform As A Service (Plataforma como serviço).</p><p>O <strong>PaaS</strong> por definição abstrai o hardware e o sistema operacional utilizado, como visto no vídeo <a href="http://msdn.microsoft.com/pt-br/windowsazure/hh500326">Introdução ao Windows Azure Compute</a>&nbsp;(primeiro módulo do curso no MVA). Mas&nbsp;mesmo utilizando o conceito de abastração é possível configurar o SO utilizando scripts powershell e as ferramentas disponíveis.</p><p>Existem vários <strong>SDK's (Software Development Kit)</strong>&nbsp;disponíveis para o Windows Azure, todos eles disponíveis no Github <a href="https://github.com/WindowsAzure">https://github.com/WindowsAzure</a>.</p><p>Os SDK's disponíveis <strong>nesse momento</strong>, digo nesse momento até com certa ênfase porque o serviço está em constante evolução, a cada release novas tecnologias e funcionalidades são adicionadas. Acessando a url da página de desenvolvimento do Windows Azure <a href="https://www.windowsazure.com/pt-br/develop/overview/">https://www.windowsazure.com/pt-br/develop/overview/</a>, podemois&nbsp;visualizar as linguagem que possuem SDK's, veja imagem em destaque.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/c430334b-096f-4215-af65-4b4ccb6d7c69.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/c430334b-096f-4215-af65-4b4ccb6d7c69.png" alt="" width="589" height="324"></a></p><p>Cada uma das linguagem possui uma página com o download do SDK, documentações e exemplos de utilização, recomendo fortemente que você navegue e veja toda a gama de informação disponível.</p><p><strong>Os SDK's disponíveis</strong></p><p>Atualmente existem SDK's para .Net, node.js, Java e PHP, os SDK podem ser obtidos através da página de cada linguagem ou pelo repositórios do Windows Azure disnponíveis do GitHub, veja a lista acessando a url <a href="https://github.com/WindowsAzure">https://github.com/WindowsAzure</a>. Ao acessar a página do Windows Azure disponível para cada linguagem, você vai ver o seguinte.</p><p>&nbsp;</p><p><strong>Página de .NET</strong></p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/1e890866-2232-4001-afde-c16834c81e32.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/1e890866-2232-4001-afde-c16834c81e32.png" alt="" width="583" height="202"></a></p><p><strong>Página de node.js</strong></p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/af2c73e2-9169-467b-9821-78d5477c969e.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/af2c73e2-9169-467b-9821-78d5477c969e.png" alt="" width="587" height="220"></a></p><p><strong>Página de Java</strong></p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/0adc76c8-823d-4fae-8dd4-882ce0b69f33.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/0adc76c8-823d-4fae-8dd4-882ce0b69f33.png" alt="" width="593" height="201"></a></p><p><strong>Página de PHP</strong></p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/97770a56-2ea7-4487-8e33-74122ea4c77a.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/97770a56-2ea7-4487-8e33-74122ea4c77a.png" alt="" width="585" height="217"></a></p><p>O processo de instalação dos SDK é simples, e possui bastante informação no próprio link. Mas se você tiver algum problema para utilizar faça um comentário com suas dúvidas que irei respondê-los na medida do possível.</p><p><strong>Outras linguagens</strong></p><p>Se para a sua linguagem de programação o Windows Azure não possuir um SDK disponível, não tem problema existem meios (não é gambiarra <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' />) para configurar uma máquina virtual (mesmo utilizando o PaaS) para fazer download e instalar os componentes de software necessários para utilizar a sua linguagem.</p><p>Basicamente você vai ter que alterar o arquivo ServiceDeifniton.csdef, para incluir tasks (tarefas) que vão executar scripts powershell que vai realizar o download e instalação do componentes de software toda vez que provisionar uma nova instância da sua Role, veja um exemplo abaixo para instalar o Phyton em uma instância.</p><p><pre class="brush: xml">&lt;Startup&gt;
  &lt;Task commandLine=&quot;installPython.cmd&quot; executionContext=&quot;elevated&quot;&gt;
    &lt;Environment&gt;
      &lt;Variable name=&quot;EMULATED&quot;&gt;
        &lt;RoleInstanceValue xpath=&quot;/RoleEnvironment/Deployment/@emulated&quot; /&gt;
      &lt;/Variable&gt;
      &lt;Variable name=&quot;PYTHON_PATH&quot;&gt;
        &lt;RoleInstanceValue
          xpath=&quot;/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='python']/@path&quot; /&gt;
      &lt;/Variable&gt;
    &lt;/Environment&gt;
  &lt;/Task&gt;
  &lt;Task commandLine=&quot;installDependencies.cmd&quot;&gt;
    &lt;Environment&gt;
      &lt;Variable name=&quot;PYTHON_PATH&quot;&gt;
        &lt;RoleInstanceValue
          xpath=&quot;/RoleEnvironment/CurrentInstance/LocalResources/LocalResource[@name='python']/@path&quot; /&gt;
      &lt;/Variable&gt;
    &lt;/Environment&gt;
  &lt;/Task&gt;
&lt;/Startup&gt;</pre></p><p>A primeira tarefa <strong>InstallPhyton.cmd</strong>, vai realizar o download do Phyton e realizar a instalação, veja o script <strong>powershell</strong> abaixo.</p><p><pre class="brush: ps">powershell -c &quot;(new-object System.Net.WebClient).DownloadFile
('http://python.org/ftp/python/2.7.2/python-2.7.2.msi', 'python.msi')&quot;
start /w msiexec /i python.msi /qn TARGETDIR=&quot;%PYTHON_PATH%&quot;</pre></p><p>A segunda tarefa <strong>InstallDependencies.cmd</strong> vai criar um ambiente Phyton utilizando <strong>virtualenv</strong> (<a href="http://www.virtualenv.org/en/latest/index.html">http://www.virtualenv.org/en/latest/index.html</a>) e instalar qualquer módulo que a aplicação dependa, executando o pip (<a href="http://www.pip-installer.org/en/latest/index.html">http://www.pip-installer.org/en/latest/index.html</a>), o conteúdo do script <strong>powershell</strong> segue abaixo.</p><p><pre class="brush: ps">python virtualenv.py --no-site-packages .
call scripts\activate
cd app
pip install -r requirements.txt</pre></p><p>O arquivo <strong>requirements.txt</strong> é um arquivo texto, que possui o nome dos módulos (e versões). Ele segue o formado definido por<strong> pip freeze</strong>.</p><p>Como disse antes, o Windows Azure está em constante evolução prova disto é a disponibilização do Hadop ainda em teste. Fique atento as novas atualização na página do Windows Azure e nos novos conteúdos técnicos disponíveis.</p><p>Um grande abraço,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:37b7d28b74854bd1a908a01400e8fc1a">]]></description>
      <comments>http://channel9.msdn.com/posts/Interoperabilidade-Quais-as-tecnologias-suportadas</comments>
      <itunes:summary>O Windows Azure &#233; uma plataforma aberta e flex&#237;vel para computa&#231;&#227;o na nuvem, qualquer profissional de tecnologia pode tirar proveito do poder computacional do Windows Azure. Digo computacional, por que falar dos servi&#231;os de armazenamento que utilizam chamadas HTTP/REST j&#225; s&#227;o interoper&#225;veis por natureza. Mas quais s&#227;o as linguagem que posso utilizar no Windows Azure, como voc&#234;s sabe o Windows Azure utiliza 3 tipos de servi&#231;os computacionais Web Role, Worker Role e VM Role. As Web Roles e Worker Roles est&#227;o na categoria de servi&#231;o PaaS ou Platform As A Service (Plataforma como servi&#231;o). O PaaS por defini&#231;&#227;o abstrai o hardware e o sistema operacional utilizado, como visto no v&#237;deo Introdu&#231;&#227;o ao Windows Azure Compute&amp;nbsp;(primeiro m&#243;dulo do curso no MVA). Mas&amp;nbsp;mesmo utilizando o conceito de abastra&#231;&#227;o &#233; poss&#237;vel configurar o SO utilizando scripts powershell e as ferramentas dispon&#237;veis. Existem v&#225;rios SDK&#39;s (Software Development Kit)&amp;nbsp;dispon&#237;veis para o Windows Azure, todos eles dispon&#237;veis no Github https://github.com/WindowsAzure. Os SDK&#39;s dispon&#237;veis nesse momento, digo nesse momento at&#233; com certa &#234;nfase porque o servi&#231;o est&#225; em constante evolu&#231;&#227;o, a cada release novas tecnologias e funcionalidades s&#227;o adicionadas. Acessando a url da p&#225;gina de desenvolvimento do Windows Azure https://www.windowsazure.com/pt-br/develop/overview/, podemois&amp;nbsp;visualizar as linguagem que possuem SDK&#39;s, veja imagem em destaque. &amp;nbsp; Cada uma das linguagem possui uma p&#225;gina com o download do SDK, documenta&#231;&#245;es e exemplos de utiliza&#231;&#227;o, recomendo fortemente que voc&#234; navegue e veja toda a gama de informa&#231;&#227;o dispon&#237;vel. Os SDK&#39;s dispon&#237;veis Atualmente existem SDK&#39;s para .Net, node.js, Java e PHP, os SDK podem ser obtidos atrav&#233;s da p&#225;gina de cada linguagem ou pelo reposit&#243;rios do Windows Azure disnpon&#237;veis do GitHub, veja a lista acessando a url https://github.com/WindowsAzure. Ao acessar a p&#225;gina do Windows Azure dispon&#237;vel para cada linguagem, voc&#234; vai ver o seguinte. &amp;nbsp; </itunes:summary>
      <link>http://channel9.msdn.com/posts/Interoperabilidade-Quais-as-tecnologias-suportadas</link>
      <pubDate>Wed, 14 Mar 2012 14:20:56 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Interoperabilidade-Quais-as-tecnologias-suportadas</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/8eb71841-f7a1-4f57-94a5-7af912f45fae.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Interoperabilidade-Quais-as-tecnologias-suportadas/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>Interop</category>
      <category>Software Development Kit</category>
    </item>
  <item>
      <title>Diagn&#243;stico e logging</title>
      <description><![CDATA[<p>Suporte a log na nuvem é uma das maiores preocupações da comunidade de desenvolvimento, com <strong>IDE (Integrated Development Enviroment)</strong> de alta interatividade como o Visual Studio e runtime como o Framework .NET você pode identificar um problema em seu código mesmo em ambientes de produção locais (on-premise). No entando, o domínio do Visual Studio é limitado para o acesso que ele possui para a runtime de execução.</p><p>O Visual Studio se comunica com o ambiente a runtime do ambiente em execução para recuperar dados de debug da aplicação, a aplicação por sua vez, deve ter informações de debug na runtime para o Visual Studio realizar o debug.</p><p>A fábrica de implantação do <strong>Windows Azure</strong> precisa ter acesso o runtime do ambiente local, assim você pode realizar o debug da sua aplicação Windows Azure local, como qualquer outra aplicação .NET adicionando <strong>breakpoints</strong> (pontos de parada).</p><p>Essa seria uma ótima notícia, mas infelizmente o Visual Studio não pode acessar a runtime do Windows Azure diretamente. Uma vez que o serviço é implantado no Windows Azure, ele é totalmente gerenciado pelo Windows Azure e você não tem acesso a runtime dele.&nbsp; O time de desenvolvimento percebeu essa limitação e acrescentou a capacidade de log para a runtime do Windows Azure, assim como suporte a <strong>IntelliTrace</strong> (somente disponível no Visual Studio Ultimate edition).</p><p>O serviço de diagnóstico é executado ao longo da instância da sua Role, coletando dados de diagnóstico que podem ser salvos utilizando o serviço de armazenamento do Windows Azure (necessita configuração), assim ficando a uma chamada <strong>REST</strong> de distância. Você pode também comunicar com o serviço de diagnóstico remotamente de uma aplicação local, ou ainda configurar para armazenar os dados de acordo com um período pré-determinado.</p><p>Os serviços de diagnósticos suportam realizar log dos os seguintes tipos de dados:</p><ul><li><strong>Windows Azure Trace logs</strong>:&nbsp;Estes são os logs gerados a partir da aplicação, e podem conter qualquer &nbsp;&nbsp;&nbsp;&nbsp; tipo de mensagem enviado do seu código. </li><li><strong>Logs de diagnóstico de&nbsp;infraestrutura</strong>: logs de infraestrutura recuperados pelo serviço de &nbsp;&nbsp;&nbsp;&nbsp; diagnósgtico; </li></ul><ul><li><strong>Logs de eventos do Windows</strong>:&nbsp;Estes são os logs de eventos do Windows gerado na máquina que a instância &nbsp;&nbsp;&nbsp;&nbsp; da Role está executando. </li></ul><ul><li><strong>Contadores de performance do&nbsp;Windows</strong>: Estes se referem aos contadores de performance da máquina que a&nbsp;instância da Role está sendo executada; </li></ul><ul><li><strong>IIS Logs e trace de falhas de&nbsp;requisições</strong>: Logs gerados pelo IIS da instância da Role; </li></ul><ul><li><strong>Dumps de quebra da aplicação</strong>:&nbsp;São os dados de dump gerado quando a aplicação quebra. </li></ul><p>O serviço de diagnóstico agrega todos os tipos de logs citados anteriormente juntos e depois os transferem para o local de armazenamento apropriado. Não se esqueça que as instância das roles são stateless e por essa razão, você pode perder dados armazenados localmente durante operação de reciclagem.</p><p>&nbsp;Veja abaixo uma tabela com a lista de dados de log disponíveis nas instâncias das roles do Windows Azure e seus respectivos locais de armazenamento.</p><p>&nbsp;</p><div><table border="1" cellspacing="0" cellpadding="0"><tbody><tr><td><p>&nbsp;Fonte de dados</p></td><td><p>&nbsp;Tipo de destino no Windows Azure Storage</p></td></tr><tr><td><p>&nbsp;Windows Azure &nbsp; trace Logs</p></td><td><p>&nbsp;Table Storage</p></td></tr><tr><td><p>&nbsp;Logs de &nbsp; diagnóstico de infraestrutura&nbsp;&nbsp;&nbsp;</p></td><td><p>&nbsp;Table Storage</p></td></tr><tr><td><p>&nbsp;IIS Logs</p></td><td><p>&nbsp;Blog Storage</p></td></tr><tr><td><p>&nbsp;Contadores de &nbsp; performance</p></td><td><p>&nbsp;Table Storage</p></td></tr><tr><td><p>&nbsp;Windows event log</p></td><td><p>&nbsp;Table Storage</p></td></tr><tr><td><p>&nbsp;IIS falhas de &nbsp; requisição</p></td><td><p>&nbsp;Blob Storage</p></td></tr><tr><td><p>&nbsp;Dumps de quebra de &nbsp; aplicação</p></td><td><p>&nbsp;Blob Storage</p></td></tr></tbody></table></div><p>&nbsp;</p><p><strong>Habilitando o serviço de diagnóstico em sua aplicação</strong></p><ol><li value="1">No arquivo <strong>ServiceDefinition.csdef</strong>, adicione o elemento <strong>import&nbsp;&nbsp;</strong>do módulo de Diagnóstico. Veja exemplo de XML abaixo. </li></ol><p>&nbsp;</p><p><pre class="brush: xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;

&lt;ServiceDefinition name=&quot;MyHostedService&quot; xmlns=&quot;http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition&quot;&gt;

  &lt;WebRole name=&quot;WebRole1&quot;&gt;

    &lt;Imports&gt;

      &lt;Import moduleName=&quot;Diagnostics&quot; /&gt;

    &lt;/Imports&gt;

  &lt;/WebRole&gt;

&lt;/ServiceDefinition&gt;
</pre></p><ol><li value="2">Abra o arquivo <strong>ServiceConfiguration.cscfg&nbsp;</strong>e adicione as&nbsp;seguintes linhas de código XML. </li></ol><p>&nbsp;</p><p><pre class="brush: xml">&lt;ConfigurationSettings&gt;

   &lt;Setting name=&quot;Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString&quot;

         value=&quot;DefaultEndpointsProtocol=https;AccountName=AccountName;AccountKey=AccountKey&quot;/&gt;

&lt;/ConfigurationSettings&gt;
</pre></p><p>Onde <strong>AccountName</strong> é o nome da conta de armazenamento do Windows Azure, e <strong>AccountKey</strong> é a chave de acesso da conta de armazenamento. Se você estiver usando o emulador de armazenamento, defina o valor como <strong>UseDevelopmentStorage=true</strong>.&nbsp;</p><p><strong>Rastreando o fluxo do seu aplicativo</strong></p><p>Se você pretende recuperar as mensagens de trace incluídos no código do seu código, você vai precisar incluir um novo listener (<strong>TraceListener</strong>) na configuração do seu aplicativo.</p><p>Quando é utilizado <strong>Trace</strong>, <strong>Debug</strong> e <strong>TraceSource</strong>, você precisa de um mecanismo para coletar e armazenar as mensagens que são enviadas. As mensagens de Trace são recebidas por listeners, a função de um listener é de coletar, armazenar, e direcionar mensagens de trace. Listeners direcionam a saída do trace para um determinado local, como log, janela, ou ainda um arquivo texto. No <strong>Windows Azure Diagnostics</strong>, a classe <strong>DiagnosticMonitorTraceListener</strong> é utilizada, mas antes para utilizá-la é necessário ter habilitado o serviço de diagnóstico do Windows Azure, veja tópico anterior.</p><p>Para configurar o listener de trace, realiza a seguinte configuração no seu arquivo <strong>Web.config</strong> ou <strong>App.config</strong>.</p><p><pre class="brush: xml">&lt;system.diagnostics&gt;
   &lt;trace&gt;
      &lt;listeners&gt;
         &lt;add type=&quot;Microsoft.WindowsAzure.Diagnostics.DiagnosticMonitorTraceListener,
            Microsoft.WindowsAzure.Diagnostics,
            Version=1.0.0.0,
            Culture=neutral,
            PublicKeyToken=31bf3856ad364e35&quot;
            name=&quot;AzureDiagnostics&quot;&gt;
            &lt;filter type=&quot;&quot; /&gt;
         &lt;/add&gt;
      &lt;/listeners&gt;
   &lt;/trace&gt;
&lt;/system.diagnostics&gt;
</pre></p><p>Espero que você tenha compreendido o funcionamento do mecanismo de diagnóstico do Windows Azure, um excelente exercício seria aplicar essas alterações no projeto de migração abordado no módulo 3 do curso de Azure no MVA - Microsoft Virtual Academy.<br>&nbsp;</p><p>Obrigado,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f4f86c7dc3f54923a41fa01400c1698d">]]></description>
      <comments>http://channel9.msdn.com/posts/Diagnstico-e-logging</comments>
      <itunes:summary>Suporte a log na nuvem &#233; uma das maiores preocupa&#231;&#245;es da comunidade de desenvolvimento, com IDE (Integrated Development Enviroment) de alta interatividade como o Visual Studio e runtime como o Framework .NET voc&#234; pode identificar um problema em seu c&#243;digo mesmo em ambientes de produ&#231;&#227;o locais (on-premise). No entando, o dom&#237;nio do Visual Studio &#233; limitado para o acesso que ele possui para a runtime de execu&#231;&#227;o. O Visual Studio se comunica com o ambiente a runtime do ambiente em execu&#231;&#227;o para recuperar dados de debug da aplica&#231;&#227;o, a aplica&#231;&#227;o por sua vez, deve ter informa&#231;&#245;es de debug na runtime para o Visual Studio realizar o debug. A f&#225;brica de implanta&#231;&#227;o do Windows Azure precisa ter acesso o runtime do ambiente local, assim voc&#234; pode realizar o debug da sua aplica&#231;&#227;o Windows Azure local, como qualquer outra aplica&#231;&#227;o .NET adicionando breakpoints (pontos de parada). Essa seria uma &#243;tima not&#237;cia, mas infelizmente o Visual Studio n&#227;o pode acessar a runtime do Windows Azure diretamente. Uma vez que o servi&#231;o &#233; implantado no Windows Azure, ele &#233; totalmente gerenciado pelo Windows Azure e voc&#234; n&#227;o tem acesso a runtime dele.&amp;nbsp; O time de desenvolvimento percebeu essa limita&#231;&#227;o e acrescentou a capacidade de log para a runtime do Windows Azure, assim como suporte a IntelliTrace (somente dispon&#237;vel no Visual Studio Ultimate edition). O servi&#231;o de diagn&#243;stico &#233; executado ao longo da inst&#226;ncia da sua Role, coletando dados de diagn&#243;stico que podem ser salvos utilizando o servi&#231;o de armazenamento do Windows Azure (necessita configura&#231;&#227;o), assim ficando a uma chamada REST de dist&#226;ncia. Voc&#234; pode tamb&#233;m comunicar com o servi&#231;o de diagn&#243;stico remotamente de uma aplica&#231;&#227;o local, ou ainda configurar para armazenar os dados de acordo com um per&#237;odo pr&#233;-determinado. Os servi&#231;os de diagn&#243;sticos suportam realizar log dos os seguintes tipos de dados: Windows Azure Trace logs:&amp;nbsp;Estes s&#227;o os logs gerados a partir da aplica&#231;&#227;o, e podem conter qualquer &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; tipo d</itunes:summary>
      <link>http://channel9.msdn.com/posts/Diagnstico-e-logging</link>
      <pubDate>Wed, 14 Mar 2012 14:20:46 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Diagnstico-e-logging</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/173c5c16-c48c-4ae8-a410-2073fffed9e0.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Diagnstico-e-logging/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>Diagnostics</category>
      <category>logging</category>
    </item>
  <item>
      <title>A API de gerenciamento do Windows Azure</title>
      <description><![CDATA[<p>Diferentemente de aplicações locais, onde o provisionamento requer hardware e infraestrutura de rede, a implantação de um serviço na nuvem requer apenas o provisionamento do software. Em ambientes escaláveis onde empresas podem vir a provisionar vários serviços entre milhares de instâncias, você precisa de um controle maior programático no processo de provisionamento do que aquele disponível no portal de gerenciamento do <strong>Windows Azure ou Visual Studio</strong>.</p><p>Manualmente realizar o upload de pacotes de serviço e depois iniciar e parar os serviços pela interface do portal funciona bem para uma ou duas instâncias. Para serviços de larga escalabilidade, essa tarefa se torna dispendiosa e propensa a erro. A API de gerenciamento de serviço do Windows Azure, permite você programaticamente realizar a maiorias das funções de provisionamento via chamadas <strong>REST</strong>.</p><p>Utilizando a API de gerenciamento, você pode escrever <strong>scripts</strong> para o processo de provisionamento ou desprovisionamento de maneira automática.</p><p><strong>A estrutura da API de gerenciamento de serviço</strong></p><p>A API de gerenciamento de serviço (Service Management API) fornece a maioria das funções que você pode realizar no portal de gerenciamento com os serviços de armazenamento e serviços de hospedagem. A API do serviço de gerenciamento categoriza as operações em três seções primárias:</p><p><strong>Contas de armazenamento (Storage accouts)</strong></p><p>Operações nas contas de armazenamento cobrem principalmente listagem das contas e a geração da chave de acesso.</p><p><strong>Serviços de hospedagem (Hosted services)</strong></p><p>Operações no serviços de hospedagem cobre listar os serviços, implantar os serviços, remover os serviços, trocar (swapping) entre produção e preparo e melhoramento dos serviços.</p><p><strong>Grupos de afinidades (Affinity groups)</strong></p><p>As operações nos grupos de afinidades são limitadas em listar e recuperar as propriedades de um grupo de afinidade em sua assinatura.</p><p>O serviço de gerenciamento utiliza certificados cliente do tipo X.509 para autenticar as chamadas entre o servidor e o cliente.</p><p><strong>Programando com a API de gerenciamento</strong></p><p>Para iniciar a programar utilizando a API serviço de gerenciamento, você precisa primeiro criar um certificado válido do tipo <strong>X.509</strong> (ou utilizar um certificado X.509 existente). Para criar um certificado você pode utilizar o utilitário <strong>makecert.exe</strong> para criar um certificado auto assinado (self-signed).</p><p>makecert.exe -r -pe -a sha1 -n &quot;CN=Certificado de autenticação do Windows Azure&quot; -ss My -len 2048 -sp &quot;Microsoft Enhanced RSA and AES Cryptographic Provider&quot; -sy 24 azureservicemanagementapi.cer</p><p>O<strong> makecert.exe</strong> está disponível no <strong>SDK do Windows</strong>, em minha máquina o local do SDK é<strong> C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bin</strong>, se ao abrir o console do Windows o arquivo não estiver disponível você tem que alterar os variáveis do sistema do Windows e acrescentar o diretório.</p><p>Após gerar o certificado, você tem que adicionar o certificado para o serviço de hospedagem que você desejar. Selecione um dos serviços de hospedagem que você possui, selecione a pasta &quot;Certificado&quot; e clique no menu superior em &quot;Adicionar Certificado&quot;.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/697e6f45-e3b1-42bc-ae2b-926edcd3038b.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/697e6f45-e3b1-42bc-ae2b-926edcd3038b.png" alt="" width="636" height="281"></a></p><p>Em seguida, selecione o arquivo de certificado criado e faça o upload.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/bde8d3e3-eaef-4470-9d81-40ee054bd166.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/bde8d3e3-eaef-4470-9d81-40ee054bd166.png" alt="" width="533" height="230"></a></p><p>&nbsp;Uma vez que o certificado foi carregado, você pode realizar chamadas a API Rest do serviço de gerenciamento informando o certificado na propriedade ClientCertificate do objeto System.Net.HttpWebRequest, utilizando o exemplo csmanage.exe fornecido nos exemplos da API de gerenciamento de serviços, ou desenvolvendo a sua própria aplicação.</p><p>O projeto de exemplo para a API de gerenciamento do Windows Azure, está disponível na url: <a href="http://code.msdn.microsoft.com/windowsazure/Windows-Azure-CSManage-e3f1882c">http://code.msdn.microsoft.com/windowsazure/Windows-Azure-CSManage-e3f1882c</a></p><p>Você pode encontrar a referência para a API de gerenciamento na biblioteca do MSDN, na seguinte URL: <a href="http://msdn.microsoft.com/pt-br/library/ee460799.aspx">http://msdn.microsoft.com/pt-br/library/ee460799.aspx</a></p><p>Obrigado,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:b1d3e5d09fe141c9929ca01400b56f02">]]></description>
      <comments>http://channel9.msdn.com/posts/A-API-de-gerenciamento-do-Windows-Azure</comments>
      <itunes:summary>Diferentemente de aplica&#231;&#245;es locais, onde o provisionamento requer hardware e infraestrutura de rede, a implanta&#231;&#227;o de um servi&#231;o na nuvem requer apenas o provisionamento do software. Em ambientes escal&#225;veis onde empresas podem vir a provisionar v&#225;rios servi&#231;os entre milhares de inst&#226;ncias, voc&#234; precisa de um controle maior program&#225;tico no processo de provisionamento do que aquele dispon&#237;vel no portal de gerenciamento do Windows Azure ou Visual Studio. Manualmente realizar o upload de pacotes de servi&#231;o e depois iniciar e parar os servi&#231;os pela interface do portal funciona bem para uma ou duas inst&#226;ncias. Para servi&#231;os de larga escalabilidade, essa tarefa se torna dispendiosa e propensa a erro. A API de gerenciamento de servi&#231;o do Windows Azure, permite voc&#234; programaticamente realizar a maiorias das fun&#231;&#245;es de provisionamento via chamadas REST. Utilizando a API de gerenciamento, voc&#234; pode escrever scripts para o processo de provisionamento ou desprovisionamento de maneira autom&#225;tica. A estrutura da API de gerenciamento de servi&#231;o A API de gerenciamento de servi&#231;o (Service Management API) fornece a maioria das fun&#231;&#245;es que voc&#234; pode realizar no portal de gerenciamento com os servi&#231;os de armazenamento e servi&#231;os de hospedagem. A API do servi&#231;o de gerenciamento categoriza as opera&#231;&#245;es em tr&#234;s se&#231;&#245;es prim&#225;rias: Contas de armazenamento (Storage accouts) Opera&#231;&#245;es nas contas de armazenamento cobrem principalmente listagem das contas e a gera&#231;&#227;o da chave de acesso. Servi&#231;os de hospedagem (Hosted services) Opera&#231;&#245;es no servi&#231;os de hospedagem cobre listar os servi&#231;os, implantar os servi&#231;os, remover os servi&#231;os, trocar (swapping) entre produ&#231;&#227;o e preparo e melhoramento dos servi&#231;os. Grupos de afinidades (Affinity groups) As opera&#231;&#245;es nos grupos de afinidades s&#227;o limitadas em listar e recuperar as propriedades de um grupo de afinidade em sua assinatura. O servi&#231;o de gerenciamento utiliza certificados cliente do tipo X.509 para autenticar as chamadas entre o servidor e o cliente</itunes:summary>
      <link>http://channel9.msdn.com/posts/A-API-de-gerenciamento-do-Windows-Azure</link>
      <pubDate>Wed, 14 Mar 2012 14:20:34 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/A-API-de-gerenciamento-do-Windows-Azure</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/9d4899d1-8f6a-427e-be59-1a00f150796c.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/A-API-de-gerenciamento-do-Windows-Azure/rss</wfw:commentRss>
      <category>API</category>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
    </item>
  <item>
      <title>O portal de gerenciamento</title>
      <description><![CDATA[<p>O Windows Azure é um serviço em constante evolução, basicamente a cada 3-4 meses são incluídas novas funcionalidades. Porém,&nbsp; mesmo em constante evolução o portal de gerenciamento tem se mantido intuitivo, acesse o link <a href="http://msdn.microsoft.com/pt-br/library/gg441573.aspx">http://msdn.microsoft.com/pt-br/library/gg441573.aspx</a> para visualizar as alterações realizadas no Windows Azure.</p><p>Ao chegar ao quarto módulo da academia de <strong>Windows Azure do MVA - Microsoft Virtual Academy</strong>, você já está um pouco familiarizado com o portal de gerenciamento. Nesse artigo, vamos passar pelas principais funcionalidades da interface de gerenciamento.</p><p>Ao realizar login, você terá acesso a página inicial do portal de gerenciamento. Na página inicial existem vários links que trazem as novidades de cada nova versão, assim como uma documentação sobre a introdução do Windows Azure.</p><p>Antes de falar sobre as funcionalidades do portal de gerenciamento do Windows Azure, eu gostaria de mostrar algumas das áreas do portal para que você entenda a experiência do usuário.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/506ad24c-d240-4163-bb95-ca7cc7bd054d.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/506ad24c-d240-4163-bb95-ca7cc7bd054d.png" alt="" width="615" height="420"></a></p><p>Seguindo a numeração da figura acima nós temos:</p><ol><li value="1">Usuário e Cobrança; </li></ol><p>Localizado no canto superior direito, estão agrupados:</p><ul><li>Combo box para alteração do &nbsp;&nbsp;&nbsp;&nbsp; idioma utilizado no portal; </li></ul><ul><li>Link para acesso das &nbsp;&nbsp;&nbsp;&nbsp; informações de cobrança; </li></ul><ul><li>Nome do usuário; </li></ul><ul><li>Link para realizar o logout&nbsp;da do portal. </li></ul><p>&nbsp;</p><ol><li value="2">Menu de contexto (Menu&nbsp;Ribbon); </li></ol><p>O menu ribbon foi utilizado na primeira vez no Microsoft Office, desde então muitos outros produtos tem utilizado essa funcionalidade.</p><p>O Menu de contexto é atualizado de acordo com a navegação dos itens de menu existente nos itens 3, veja abaixo alguns exemplos do menu de contexto.</p><ul><li><strong>Serviços&nbsp;Hospedados, Contas de Armazenamento e CDN -&gt; Integridade da&nbsp;implantação.</strong> </li></ul><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/153e9a4f-aa51-4695-b13d-8502e831f4bf.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/153e9a4f-aa51-4695-b13d-8502e831f4bf.png" alt="" width="404" height="123"></a></p><ul><li><strong>Serviços&nbsp;Hospedados, Contas de Armazenamento e CDN -&gt; Grupos de afinidades.</strong> </li></ul><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/3d8a649b-af8b-4720-99f1-26aa5079e8cb.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/3d8a649b-af8b-4720-99f1-26aa5079e8cb.png" alt="" width="418" height="136"></a></p><ul><li><strong>Barramento de serviço, Controle de acesso e Cache -&gt; Services -&gt; Em cache.</strong> </li></ul><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/6571a882-1d63-4828-8447-0667e9806335.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/6571a882-1d63-4828-8447-0667e9806335.png" alt="" width="624" height="115"></a></p><ol><li value="3">Menu secundário; </li></ol><p>O menu secundário é um detalhamento dos serviços disponíveis em cada item do menu principal, clicando em um dos itens desse menu a interface é atualizada (Menu de contexto e área de conteúdo).</p><p>Ao clicar no item &quot;<strong>Serviços hospedados</strong>&quot; do menu <strong>Serviços Hospedados, Contas de Armazenamento e CDN</strong> é listado todos os serviços de hospedagem disponíveis em sua assinatura. Veja exemplo abaixo.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/93470121-7d29-430c-b59a-04bace732b95.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/93470121-7d29-430c-b59a-04bace732b95.png" alt="" width="640" height="369"></a></p><ol><li value="4">Menu Principal; </li></ol><p>O menu principal está sempre disponível, não importando o serviço que esteja visualizando, ele agrupa os principais serviços disponíveis no Windows Azure. Clicando em um dos itens o menu secundário é atualizado, com os serviços disponíveis.</p><p>Itens disponíveis:</p><ul><li><strong>Página inicial</strong>; </li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Redireciona para a página inicial do portal, a mesma página acessada ao realizar o login.</p><ul><li><strong>Serviços Hospedados, Contas&nbsp;&nbsp;de Armazenamento e CDN</strong>; </li></ul><p>Permite verificar a integridade da Implantação, com as quantidades de assinaturas, quantidade de implantações em produção e em preparo (stage) e etc.</p><p><strong>OBS</strong>: Fique atento as informações apresentadas na coluna &quot;Detalhes&quot;. Nela podemos verificar, por exemplo se algumas das aplicações não estão de acordo com o SLA.</p><p><a href="http://files.channel9.msdn.com/thumbnail/539aa19d-d8e5-4356-b719-03852b2fc6c3.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/539aa19d-d8e5-4356-b719-03852b2fc6c3.png" alt="" width="651" height="276"></a></p><ul><li><strong>Banco de dados</strong>; </li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Esta opção permite o gerenciamento dos serviços de banco de dados (o SQL Azure) disponível em sua assinatura. Você pode criar um novo servidor, criar um novo banco de dados e até comprar uma assinatura de banco de dados.</p><ul><li><strong>Sincronismo de Dados</strong>; </li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; O Serviço de sincronismo permite configurar grupos de sincronização entre: Bancos de dados SQL Server&nbsp;locais X Bancos de dados SQL Azure; Bancos de dados SQL Azure X&nbsp;Bancos de dados SQL Azure.</p><ul><li><strong>Relatório;</strong> </li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Ao usar o SQL Reporting Azure, você pode facilmente prover e implantar soluções de relatórios para a nuvem, e tirar proveito de um centro de dados distribuído que fornece disponibilidade, escalabilidade e segurança.</p><p>Os desenvolvedores podem usar SQL Reporting Azure para adicionar uma experiência rica para seus aplicativos funcionando no local ou na nuvem. Eles podem criar relatórios usando familiares ferramentas do SQL Server e, em seguida, usar esses relatórios em suas aplicações.</p><ul><li><strong>Barramento de Serviço,&nbsp;controle de acesso e Cache;</strong> </li></ul><p>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Possibilita a criação de um namespace de serviços, cada qual utilizando uma URL específica para implementar controle de acesso, barramento de serviço e cache.</p><p>Exemplos de URLs de serviço para namespace 'mycompany':</p><p>- Controle de Acesso: <a href="https://mycompany.accesscontrol.windows.net">https://mycompany.accesscontrol.windows.net</a></p><p>- Barramento de Serviço: <a href="https://mycompany.servicebus.windows.net">https://mycompany.servicebus.windows.net</a></p><p>- Cache: <a href="https://mycompany.cache.windows.net">https://mycompany.cache.windows.net</a></p><ul><li><strong>Rede virtual</strong> </li></ul><p>Permite a criação de uma rede virtual para conectar um ou mais computadores ou máquinas virtuais (VM) e sua rede em sua rede local.</p><ol><li value="5"><strong>Conteúdo</strong>; </li></ol><p>Basicamente este é um item de detalhamento dos serviços utilizados, quase sempre é dividido entre listagem dos serviços e as propriedades de cada um. O painel de propriedade foi utilizado inúmeras vezes no decorrer dessa academia para copiar valores como tokes e url.</p><p><a href="http://files.channel9.msdn.com/thumbnail/22ebb321-4fef-41b6-8918-7006ca06fa17.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/22ebb321-4fef-41b6-8918-7006ca06fa17.png" alt="" width="606" height="335"></a></p><ol><li value="6"><strong>Política de privacidade,&nbsp;ajuda e avaliação</strong> </li></ol><p>Este último item dá acesso a política de privacidade do Windows Azure, Acesso rápido a ajuda e suporte e uma opção para incluir comentários sobre a experiência de utilização da interface.</p><p><a href="http://files.channel9.msdn.com/thumbnail/91818b81-2b53-442c-9844-005214c6f88c.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/91818b81-2b53-442c-9844-005214c6f88c.png" alt="" width="333" height="399"></a></p><p>Obrigado,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:78e42255e0654900ac67a01400b39ef6">]]></description>
      <comments>http://channel9.msdn.com/posts/O-portal-de-gerenciamento</comments>
      <itunes:summary>O Windows Azure &#233; um servi&#231;o em constante evolu&#231;&#227;o, basicamente a cada 3-4 meses s&#227;o inclu&#237;das novas funcionalidades. Por&#233;m,&amp;nbsp; mesmo em constante evolu&#231;&#227;o o portal de gerenciamento tem se mantido intuitivo, acesse o link http://msdn.microsoft.com/pt-br/library/gg441573.aspx para visualizar as altera&#231;&#245;es realizadas no Windows Azure. Ao chegar ao quarto m&#243;dulo da academia de Windows Azure do MVA - Microsoft Virtual Academy, voc&#234; j&#225; est&#225; um pouco familiarizado com o portal de gerenciamento. Nesse artigo, vamos passar pelas principais funcionalidades da interface de gerenciamento. Ao realizar login, voc&#234; ter&#225; acesso a p&#225;gina inicial do portal de gerenciamento. Na p&#225;gina inicial existem v&#225;rios links que trazem as novidades de cada nova vers&#227;o, assim como uma documenta&#231;&#227;o sobre a introdu&#231;&#227;o do Windows Azure. Antes de falar sobre as funcionalidades do portal de gerenciamento do Windows Azure, eu gostaria de mostrar algumas das &#225;reas do portal para que voc&#234; entenda a experi&#234;ncia do usu&#225;rio. &amp;nbsp; Seguindo a numera&#231;&#227;o da figura acima n&#243;s temos: Usu&#225;rio e Cobran&#231;a; Localizado no canto superior direito, est&#227;o agrupados: Combo box para altera&#231;&#227;o do &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; idioma utilizado no portal; Link para acesso das &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; informa&#231;&#245;es de cobran&#231;a; Nome do usu&#225;rio; Link para realizar o logout&amp;nbsp;da do portal. &amp;nbsp; Menu de contexto (Menu&amp;nbsp;Ribbon); O menu ribbon foi utilizado na primeira vez no Microsoft Office, desde ent&#227;o muitos outros produtos tem utilizado essa funcionalidade. O Menu de contexto &#233; atualizado de acordo com a navega&#231;&#227;o dos itens de menu existente nos itens 3, veja abaixo alguns exemplos do menu de contexto. Servi&#231;os&amp;nbsp;Hospedados, Contas de Armazenamento e CDN -&amp;gt; Integridade da&amp;nbsp;implanta&#231;&#227;o. &amp;nbsp; Servi&#231;os&amp;nbsp;Hospedados, Contas de Armazenamento e CDN -&amp;gt; Grupos de afinidades. &amp;nbsp; Barramento de servi&#231;o, Controle de acesso e Cache -&amp;gt; Services -&amp;gt; Em cache. &amp;nbsp; Menu secund&#225;rio; O menu secund&#225;rio &#233; um deta</itunes:summary>
      <link>http://channel9.msdn.com/posts/O-portal-de-gerenciamento</link>
      <pubDate>Wed, 14 Mar 2012 14:19:52 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/O-portal-de-gerenciamento</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/e49e14e4-ec00-4d50-bfbe-ddfb5cf63dbf.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/O-portal-de-gerenciamento/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>portal</category>
    </item>
  <item>
      <title>Migrando uma aplica&#231;&#227;o para o Azure - Introdu&#231;&#227;o</title>
      <description><![CDATA[<p>Até esse ponto falamos muito das características e funcionalidades do Windows Azure, e imagino que você não vê a hora de começar a trabalhar com o Windows Azure, mas porque esperar um novo projeto.</p><p>Você pode se beneficiar das características do Windows Azure migrando uma solução on-premises, para a nuvem realizando algumas alterações. Se você tiver experiência com aplicações em ambientes clusterizados, já deve ter uma noção das alterações que iremos fazer, para quem não tem fiquem tranquilos que irei explicar todas as alterações.</p><p>Um serviço hospedado no Windows Azure consiste em uma ou mais web roles e/ou worker roles. A web role é um aplicativo Web ASP.NET acessível através de HTTP ou HTTPS e é geralmente o front-end para um aplicativo. Worker roles são aplicativos de processamento em segundo plano e são normalmente serviços de back-end.</p><p>Serviços do Windows Azure podem ser compostos por um ou ambos os tipos de roles e podem executar várias instâncias de cada tipo. Instâncias de roles podem ser adicionadas ou removidas com base na demanda e permitem que os aplicativos façam o sclale-up ou down rapidamente e quando for necessário. Quando seu serviço no Windows Azure utilizar mais de uma instância de uma role será implementado o load balance automaticamente e por isso devemos realizar algumas alterações.</p><p>Serviço de armazenamento, nós já vimos que o Windows Azure fornece armazenamento na nuvem, que inclui serviço de Blob para armazenar dados de texto e binário, serviço de Table para armazenamento estruturado e serviço de Queue, que é um modelo confiável e persistente de mensagens entre os serviços.</p><p>ASP.NET oferece suporte para diferentes implementações de providers (provedores), como: membership, role, profile e gerenciamento de sessão. A maioria dos provedores vem com uma versão baseada em um banco de dados SQL ou usa representações de dados em memória.</p><p>Os exemplos de Windows Azure incluem implementações de provedores que usam os serviços de armazenamento como o blob e table. Além disso, os provedores endereçam o problema dos aplicativos Web estarem hospedados em uma variedade de diferentes máquinas dentro da malha de Windows Azure.</p><p>Quando você implanta seu aplicativo Web nos data centers do Windows Azure, os serviços de armazenamento de tabelas e blobs estão prontamente disponibilizados e são, portanto, facilmente acessíveis a partir de seu aplicativo.</p><p>Neste módulo, você explorará os principais pontos de atenção ao migrar uma aplicação ASP.NET para Windows Azure, incluindo Banco de Dados, Variáveis de Sessão, Cache, Identidade na Nuvem, Escalabilidade, Balanceamento de Carga e Armazenamento.</p><p>Vou utilizar o projeto <a href="http://tailspinspyworks.codeplex.com/releases/view/55744">TailspinSpyworks</a> disponível no CodePlex, desenvolvido por Joe Stagner, para demostrar a utilização do framework .NET. A cada item desse módulo vamos migrar alguns dos serviços para a nuvem até que tenhamos toda a aplicação na nuvem. No final de cada item vou incluir o link para download do código com as últimas alterações. Mas recomendo fortemente que façam as alterações passo-a-passo.</p><p><span><span>Objetivos</span></span></p><ul><li><div><span>Após esse módulo você vai&nbsp;estará apto a:</span></div></li><li><div><span>Migrar um banco de dados do&nbsp;SQL Server (on-premise) para o SQL Azure</span></div></li><li><div><span>Usar o Windows Azure Cache para gerenciar as variáveis de sessão</span></div></li><li><div><span>Usar o serviço de Blob para substituir a gravação de arquivos em File System</span></div></li><li><div><span>Incluir o projeto de implantação do Windows Azure na solução </span></div></li><li><div><span>Publicar a aplicação no Windows Azure</span></div></li></ul><p><span>Pré-requisitos</span></p><p><span>Abaixo estão os&nbsp;pré-requisitos para completar este módulo:</span></p><ul><li><span>IIS 7 (Internet Information Service), se não possuir utilize o </span><a href="http://www.microsoft.com/download/en/details.aspx?id=1038"><span>IIS Express</span></a><span>.</span> </li><li><a href="http://msdn.microsoft.com/vstudio/products/"><span>Microsoft Visual Studio</span></a> </li><li><a href="http://www.microsoft.com/downloads/details.aspx?displaylang=pt-br&amp;FamilyID=9cfb2d51-5ff4-4491-b0e5-b386f32c0992"><span>Microsoft .NET Framework 4.0</span></a> </li><li><a href="https://www.windowsazure.com/pt-br/develop/net/"><span>Windows Azure SDK (Software Development Kit)</span></a> </li><li><a href="http://www.microsoft.com/downloads/details.aspx?familyid=967225EB-207B-4950-91DF-EEB5F35A80EE&amp;displaylang=pt-br"><span lang="pt-BR">SQL Server Express Edition</span></a> </li><li lang="en-US"><a href="http://www.microsoft.com/downloads/details.aspx?familyid=56AD557C-03E6-4369-9C1D-E81B33D8026B&amp;displaylang=pt-br"><span>Microsoft SL Server&nbsp;Management Studio</span></a> </li><li><span>Fazer download do projeto </span><a href="http://tailspinspyworks.codeplex.com/releases/view/55744"><span>TailspinSpyworks</span></a><span> do CodePlex, opte pelo&nbsp;código fonte.</span> </li></ul><p>&nbsp;</p><p><span>Este conteúdo é uma derivação&nbsp;de um Hands-On Lab produzido pelo Rogério Cordeiro.</span></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1b04d42424974d908dafa00c00ef8fa7">]]></description>
      <comments>http://channel9.msdn.com/posts/Migrando-uma-aplicao-para-o-Azure-Introducao</comments>
      <itunes:summary>At&#233; esse ponto falamos muito das caracter&#237;sticas e funcionalidades do Windows Azure, e imagino que voc&#234; n&#227;o v&#234; a hora de come&#231;ar a trabalhar com o Windows Azure, mas porque esperar um novo projeto. Voc&#234; pode se beneficiar das caracter&#237;sticas do Windows Azure migrando uma solu&#231;&#227;o on-premises, para a nuvem realizando algumas altera&#231;&#245;es. Se voc&#234; tiver experi&#234;ncia com aplica&#231;&#245;es em ambientes clusterizados, j&#225; deve ter uma no&#231;&#227;o das altera&#231;&#245;es que iremos fazer, para quem n&#227;o tem fiquem tranquilos que irei explicar todas as altera&#231;&#245;es. Um servi&#231;o hospedado no Windows Azure consiste em uma ou mais web roles e/ou worker roles. A web role &#233; um aplicativo Web ASP.NET acess&#237;vel atrav&#233;s de HTTP ou HTTPS e &#233; geralmente o front-end para um aplicativo. Worker roles s&#227;o aplicativos de processamento em segundo plano e s&#227;o normalmente servi&#231;os de back-end. Servi&#231;os do Windows Azure podem ser compostos por um ou ambos os tipos de roles e podem executar v&#225;rias inst&#226;ncias de cada tipo. Inst&#226;ncias de roles podem ser adicionadas ou removidas com base na demanda e permitem que os aplicativos fa&#231;am o sclale-up ou down rapidamente e quando for necess&#225;rio. Quando seu servi&#231;o no Windows Azure utilizar mais de uma inst&#226;ncia de uma role ser&#225; implementado o load balance automaticamente e por isso devemos realizar algumas altera&#231;&#245;es. Servi&#231;o de armazenamento, n&#243;s j&#225; vimos que o Windows Azure fornece armazenamento na nuvem, que inclui servi&#231;o de Blob para armazenar dados de texto e bin&#225;rio, servi&#231;o de Table para armazenamento estruturado e servi&#231;o de Queue, que &#233; um modelo confi&#225;vel e persistente de mensagens entre os servi&#231;os. ASP.NET oferece suporte para diferentes implementa&#231;&#245;es de providers (provedores), como: membership, role, profile e gerenciamento de sess&#227;o. A maioria dos provedores vem com uma vers&#227;o baseada em um banco de dados SQL ou usa representa&#231;&#245;es de dados em mem&#243;ria. Os exemplos de Windows Azure incluem implementa&#231;&#245;es de provedores que usam os servi&#231;os de armazenamento como o blob </itunes:summary>
      <link>http://channel9.msdn.com/posts/Migrando-uma-aplicao-para-o-Azure-Introducao</link>
      <pubDate>Tue, 13 Mar 2012 21:49:55 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Migrando-uma-aplicao-para-o-Azure-Introducao</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/5866ca5b-d851-43fe-9615-3968a7e2e9d1.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza, Rogerio Cordeiro</dc:creator>
      <itunes:author>Vin&#237;cius Souza, Rogerio Cordeiro</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Migrando-uma-aplicao-para-o-Azure-Introducao/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>migrate</category>
    </item>
  <item>
      <title>Realizando deploy para o Windows Azure</title>
      <description><![CDATA[<p>Neste último artigo da série de artigos sobre migração você implantará a aplicação no <strong>Windows Azure</strong>, para isto primeiro você vai&nbsp;preparar a aplicação para ser implantada adicionando um projeto de implantação, em seguida criará um pacote para ser publicado no <strong>Windows Azure</strong> pelo portal de administração.</p><p><strong>Passo 1 – Adicionar um projeto de implantação do Windows Azure</strong></p><p>1. Execute o <strong>Visual Studio</strong> como administrador de <strong>Start | All Programs | Microsoft Visual Studio</strong> clicando com o botão&nbsp;direito do mouse&nbsp;no atalho do <strong>Microsoft Visual Studio</strong> e&nbsp;selecione <strong>Run as&nbsp;administrator</strong>.</p><p>2. Se a janela <strong>User Account Control</strong> aparecer, clique <strong>Yes</strong>.</p><p>3. Na opção <strong>File</strong> do menu, escolha <strong>Open</strong> em seguida <strong>Project/Solution</strong>.</p><p>4. Na janela <strong>Open Project</strong>, procure o arquivo <strong>TailspinSpyworks.sln</strong> para abrir a solução.</p><p>5. Clique com o botão direito do mouse&nbsp;no projeto <strong>TailspinSpyworks</strong> <strong>| Add Windows Azure Deployment Project</strong>.</p><p><a href="http://files.channel9.msdn.com/thumbnail/f4ea37e7-e4a7-4636-aabc-1cb296b59e8d.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/f4ea37e7-e4a7-4636-aabc-1cb296b59e8d.png" alt=""></a></p><p>6. O projeto <strong>TailspinSpyworks.Azure</strong> será adicionado&nbsp;a solução. Verifique que na lista de mensagens aparece a seguinte mensagem:&nbsp; <em>The&nbsp;project 'TailspinSpyworks.Azure' was created with a role for the project &nbsp;&nbsp;&nbsp;&nbsp; 'TailspinSpyworks'. For more information, see</em> <a href="http://go.microsoft.com/fwlink/?LinkId=226880">http://go.microsoft.com/fwlink/?LinkId=226880</a>. Navegue pela &nbsp;&nbsp;&nbsp;&nbsp; estrutura do projeto, abra os arquivos de configuração para saber como o&nbsp;projeto irá se comportar dentro do <strong>Windows Azure</strong>. Note que uma nova role&nbsp;foi adicionada automaticamente e com referência ao projeto ASP.NET &nbsp;&nbsp;&nbsp;&nbsp; <strong>TailspinSpyworks</strong>.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/8a0a2571-f523-4d3f-aaf6-9602803dea88.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/8a0a2571-f523-4d3f-aaf6-9602803dea88.png" alt="" width="515" height="315"></a></p><p><strong>Passo 2 – Criar um pacote para implantação no Windows Azure</strong></p><p>Neste passo você vai criar um pacote para publicar a aplicação dentro do <strong>Windows Azure</strong>.</p><p>1. Volte para no <strong>Visual Studio</strong>, clique com o botão direito do mouse no projeto <strong>TailspinSpyworks.Azure</strong>&nbsp;<strong>| Package</strong>.<br><a href="http://files.channel9.msdn.com/thumbnail/83723994-b182-45a0-ba09-d35db7d869c8.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/83723994-b182-45a0-ba09-d35db7d869c8.png" alt="" width="503" height="427"></a><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>&nbsp;2. Na janela <strong>Package</strong> <strong>Windows Azure Application</strong>, mantenha as configurações e clique em <strong>Package</strong>.<br>&nbsp;&nbsp;&nbsp;&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/9187cc31-4210-48d8-abfe-5e5348a27deb.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/9187cc31-4210-48d8-abfe-5e5348a27deb.png" alt="" width="376" height="192"></a>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</p><p>3. Assim que o pacote é criado,&nbsp;&nbsp;uma janela do <strong>Windows Explorer</strong>&nbsp;será aberta com dois arquivos: <strong>ServiceConfiguration.Cloud.cscfg</strong> e <strong>TailspinSpyworks.Azure.cspkg</strong>. Copie o caminho destes arquivos para ser utilizado no próximo passo.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/6449d275-e10d-4018-884d-0c63801de270.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/6449d275-e10d-4018-884d-0c63801de270.png" alt="" width="624" height="190"></a></p><p><strong>Passo 3 – Criar um componente de computação dentro do Windows Azure</strong></p><p>Neste passo você criara um novo <strong>Hosted Service</strong> para publicar a aplicação dentro do <strong>Windows Azure</strong>.</p><p>1. Acesse pelo <strong>Internet&nbsp;Explorer</strong>&nbsp;o portal do <strong>Windows Azure</strong> <a href="https://windows.azure.com">https://windows.azure.com</a>.&nbsp; Se necessário, faça login com sua conta do Windows Live.</p><p>2. Em <strong>Serviços&nbsp;hospedados, Contas de armazenamento e CDN (Hosted Services, Storage&nbsp;Accounts &amp; CDN)</strong>, painel do lado esquerdo, clique em <strong>Serviços Hospedados (Hosted Services)</strong>, em seguida clique em <strong>Novo Serviço Hospedado (New Hosted Service)</strong>.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/d662267e-93f3-40db-8e3a-257c5a108b5b.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/d662267e-93f3-40db-8e3a-257c5a108b5b.png" alt=""></a></p><ul><li>&nbsp;3. Na janela <strong>Criar um&nbsp;novo Serviço hospedado (Create a new Hosted Service)</strong>, selecione a sua subscrição, informe: </li><li>O nome do serviço; </li><li>Um prefixo único para a URL (Ex.: &lt;seunome&gt;tailspin); </li><li>A região; </li><li>Uma opção de implantação (deployment) (Preparo ou produção);<br>Um nome para a implantação (deployment) (Ex.: v1.0); </li><li>Local do pacote, escolha o&nbsp;arquivo TailspinSpyworks.Azure.cspkg </li><li>Arquivo de configuração,&nbsp;escolha o arquivo ServiceConfiguration.Cloud.cscfg de configuração (criado no &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; passo anterior). </li></ul><p>&nbsp;Clique em <strong>OK</strong> para criar o serviço hospedado e aguarde até o processo de provisionamento terminar, o processo vai levar alguns minutos.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/16183790-08dc-4c84-9d6d-0a0307715199.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/16183790-08dc-4c84-9d6d-0a0307715199.png" alt=""></a></p><p>&nbsp;4. Para testar a aplicação que&nbsp;acabou de ser implantada no <strong>Windows Azure</strong>, basta ir até a janela de &nbsp;&nbsp;&nbsp;&nbsp; propriedades do novo serviço hospedado e clicar na URL do <strong>DNS name</strong>.</p><p>Esse último artigo da série de migração você completou as etapas para migrar uma aplicação existente para o <strong>Windows Azure</strong>, os conceitos e procedimento aqui abordados podem ser utilizados para migrar aplicações Asp.Net existentes e criar novos aplicativos escaláveis no <strong>Windows Azure</strong>.</p><p>O módulo de migração foi desenvolvido tendo como base o Hands-On-Lab (Laboratório prático) de Windows Azure desenvolvido por Rogério Cordeiro.</p><p>Continuem a estudar os outros conteúdos do MVA (Microsoft Virtual Academy).</p><p>Abraço,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:83a6cf0db71b478789a4a013002e1207">]]></description>
      <comments>http://channel9.msdn.com/posts/Realizando-deploy-para-o-Windows-Azure</comments>
      <itunes:summary>Neste &#250;ltimo artigo da s&#233;rie de artigos sobre migra&#231;&#227;o voc&#234; implantar&#225; a aplica&#231;&#227;o no Windows Azure, para isto primeiro voc&#234; vai&amp;nbsp;preparar a aplica&#231;&#227;o para ser implantada adicionando um projeto de implanta&#231;&#227;o, em seguida criar&#225; um pacote para ser publicado no Windows Azure pelo portal de administra&#231;&#227;o. Passo 1 – Adicionar um projeto de implanta&#231;&#227;o do Windows Azure 1. Execute o Visual Studio como administrador de Start | All Programs | Microsoft Visual Studio clicando com o bot&#227;o&amp;nbsp;direito do mouse&amp;nbsp;no atalho do Microsoft Visual Studio e&amp;nbsp;selecione Run as&amp;nbsp;administrator. 2. Se a janela User Account Control aparecer, clique Yes. 3. Na op&#231;&#227;o File do menu, escolha Open em seguida Project/Solution. 4. Na janela Open Project, procure o arquivo TailspinSpyworks.sln para abrir a solu&#231;&#227;o. 5. Clique com o bot&#227;o direito do mouse&amp;nbsp;no projeto TailspinSpyworks | Add Windows Azure Deployment Project.  6. O projeto TailspinSpyworks.Azure ser&#225; adicionado&amp;nbsp;a solu&#231;&#227;o. Verifique que na lista de mensagens aparece a seguinte mensagem:&amp;nbsp; The&amp;nbsp;project &#39;TailspinSpyworks.Azure&#39; was created with a role for the project &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &#39;TailspinSpyworks&#39;. For more information, see http://go.microsoft.com/fwlink/?LinkId=226880. Navegue pela &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; estrutura do projeto, abra os arquivos de configura&#231;&#227;o para saber como o&amp;nbsp;projeto ir&#225; se comportar dentro do Windows Azure. Note que uma nova role&amp;nbsp;foi adicionada automaticamente e com refer&#234;ncia ao projeto ASP.NET &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; TailspinSpyworks. &amp;nbsp; Passo 2 – Criar um pacote para implanta&#231;&#227;o no Windows Azure Neste passo voc&#234; vai criar um pacote para publicar a aplica&#231;&#227;o dentro do Windows Azure. 1. Volte para no Visual Studio, clique com o bot&#227;o direito do mouse no projeto TailspinSpyworks.Azure&amp;nbsp;| Package.&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;2. Na janela Package Windows Azure Application, mantenha as configura&#231;&#245;es e clique em Package.&amp;nbsp;&amp;</itunes:summary>
      <link>http://channel9.msdn.com/posts/Realizando-deploy-para-o-Windows-Azure</link>
      <pubDate>Tue, 13 Mar 2012 02:49:56 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Realizando-deploy-para-o-Windows-Azure</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/b353fd44-4dd1-4055-aa73-2947365e08bd.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza, Rogerio Cordeiro</dc:creator>
      <itunes:author>Vin&#237;cius Souza, Rogerio Cordeiro</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Realizando-deploy-para-o-Windows-Azure/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Deployment</category>
      <category>migrate</category>
    </item>
  <item>
      <title>Utilizando o Blob para substituir o file system</title>
      <description><![CDATA[<p>As máquinas virtuais utilizadas no Windows Azure são stateless, ou seja, não mantém o seu estado entre as operações de update (Hardware ou Software) e por isso, se utilizar o armazenamento local de sua máquina virtual você pode perder todos os seus dados.</p><p>Para evitar a perda de dados e ainda podermos acessar o os dados em qualquer lugar, vamos utilizar o Windows Azure Storage. Tivemos um artigo no módulo de Introdução do MVA falando somente sobre o Windows Azure Storage, se precisar rever os conteúdo apresentado clique <a href="http://channel9.msdn.com/posts/Introducao-sobre-o-Windows-Azure-Storage">aqui</a>.</p><p>A aplicação <strong>TailspinSpyworks</strong> tem uma página com a função de cadastrar novos produtos. Neste cadastro é necessário incluir uma foto do produto, o arquivo da imagem é salvo dentro de uma pasta da aplicação. Em cenários de alta disponibilidade, não é uma boa prática a aplicação ter referencia para um pasta local. Neste exercício você irá trocar este mecanismo para gravar a imagem no serviço de Blob do Windows Azure.</p><p><strong>Passo 1 – Provisionar uma conta de storage no Windows Azure</strong></p><p>Neste passo você criará uma nova conta de storage para usar o serviço de Blob do <strong>Windows Azure</strong>.</p><p>1. Acesse pelo <strong>Internet&nbsp;Explorer</strong> o portal do <strong>Windows Azure</strong> <a href="https://windows.azure.com">https://windows.azure.com</a>.&nbsp; Se necessário, faça login com sua conta&nbsp;do Windows Live;</p><p>2. Em <strong>Serviços&nbsp;hospedados, Contas de armazenamento e CDN (Hosted Services, Storage&nbsp;Accounts &amp; CDN)</strong>, no painel do lado esquerdo, clique em <strong>Contas de&nbsp;Armazenamento (Storage Accounts)</strong>, em seguida clique em <strong>Nova conta de Armazenamento (New Storage Accout)</strong>.</p><p><a href="http://files.channel9.msdn.com/thumbnail/36c81ab8-4cef-45d2-bff2-23e038c6e930.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/36c81ab8-4cef-45d2-bff2-23e038c6e930.png" alt="" width="431" height="509"></a></p><p>3.&nbsp;Preencha a janela&nbsp;<strong>Criar uma nova conta de Armazenamento (Create a New Storage&nbsp;Account)</strong>&nbsp;com a sua subscrição do Windows Azure, uma URL única para a nova conta de storage, escolha uma região&nbsp;(<strong>OBS: utilize a mesma região dos serviços de compute</strong>), em seguida clique em <strong>OK</strong>.</p><p><a href="http://files.channel9.msdn.com/thumbnail/f157851e-0d16-40e1-8b79-c9b673d3d73c.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/f157851e-0d16-40e1-8b79-c9b673d3d73c.png" alt=""></a></p><p>4. Selecione a conta de storage que você acabou de criar e copie a <strong>Blob URL</strong> do painel de&nbsp;propriedades e cole em um bloco de notas (notepad). Em seguida clique no&nbsp;botão <strong>Exibir (View)</strong> da <strong>Chave de acesso primário (Primary&nbsp;access key)</strong>.</p><p><a href="http://files.channel9.msdn.com/thumbnail/f49a3740-c2db-4d65-aeec-ed21bd116d7e.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/f49a3740-c2db-4d65-aeec-ed21bd116d7e.png" alt="" width="357" height="362"></a></p><p>5. Na janela <strong>View&nbsp;Storage Access Keys</strong>, clique no botão ao lado do campo <strong>Chave de acesso primário (Primary access key)</strong> para copiar a chave e cole no bloco de notas.&nbsp;</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/37cf0634-7d5f-49b1-917b-9329f7f2b554.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/37cf0634-7d5f-49b1-917b-9329f7f2b554.png" alt="" width="558" height="196"></a></p><p>&nbsp;</p><p><strong>Passo 2 – Alterar o código da aplicação para usar o serviço de Blob do Windows Azure</strong></p><p>Esta é a minha parte favorita, fazer alterações de código em algumas páginas do projeto <strong>TailspinSpyworks</strong>.</p><p>1. Execute o <strong>Visual&nbsp;Studio</strong> como administrador de <strong>Start | All Programs | Microsoft Visual Studio</strong>&nbsp;clique com o botão&nbsp;direito&nbsp;do mouse no&nbsp;atalho do <strong>Microsoft&nbsp;Visual Studio</strong> e&nbsp;selecione <strong>Run as administrator</strong>.</p><p lang="en-US">2. Se a janela <strong>User&nbsp;Account Control</strong> aparecer, clique <strong>Yes</strong>.</p><p>3. Na opção <strong>File</strong> do menu, escolha <strong>Open</strong> em seguida <strong>Project/Solution</strong>.</p><p>4. Na janela <strong>Open&nbsp;Project</strong>, procure o arquivo <strong>TailspinSpyworks.sln</strong> para abrir a solução.</p><p>5. Abra o arquivo <strong>ProductAdd.aspx.cs</strong> localizado na raiz do projeto <strong>TailspinSpyworks</strong>.</p><p>6. A primeira alteração é incluir as referências.</p><p>Clique com o botão direito do mouse sobre o ptojeto <strong>TailSpinSpyworks</strong> e selecione &quot;<strong>Add Reference</strong>&quot;.</p><p>Na aba <strong>Browse,</strong> vá para a pasta <strong>C:\Program Files\Windows Azure SDK\v1.6\ref</strong> e selecione os arquivos:</p><ul><ul><ul><li>Microsoft.WindowsAzure.ServiceRuntime.dll; </li><li>Microsoft.WindowsAzure.StorageClient.dll. </li></ul></ul></ul><p>6.1. Em seguida abra o arquivo <strong>ProductAdd.aspx.cs</strong> e posicione o cursor na linha 10, e inclua o código abaixo.</p><p><pre class="brush: csharp">using Microsoft.WindowsAzure;
using Microsoft.WindowsAzure.ServiceRuntime;
using Microsoft.WindowsAzure.StorageClient;
using Microsoft.WindowsAzure.StorageClient.Protocol;
</pre></p><p>6.2. Ainda no arquivo <strong>ProductAdd.aspx.cs</strong>, posicione o cursor na linha 27, e inclua o código abaixo.</p><p><pre class="brush: csharp">try{
       if (!IsPostBack)
       {
           this.EnsureContainerExists();
       }
}
catch (System.Net.WebException we){
   Error.Text = &quot;Network error: &quot; &#43; we.Message;
   if (we.Status == System.Net.WebExceptionStatus.ConnectFailure)
   {
       Error.Text &#43;= &quot;&lt;br /&gt;Please check if the blob service is running at &quot; &#43;ConfigurationManager.AppSettings[&quot;storageEndpoint&quot;];
    }
}catch (StorageException se){
   Console.WriteLine(&quot;Storage service error: &quot; &#43; se.Message);
}
</pre></p><p>6.3. Agora posicione o cursor logo abaixo da função <strong>Page_Load</strong> e inclua o código abaixo.</p><p>&nbsp;<pre class="brush: csharp">private CloudBlobContainer GetContainer()
        {
            // Get a handle on account, create a blob service client and get container proxy
            //var account = CloudStorageAccount.FromConfigurationSetting(&quot;DataConnectionString&quot;);
            CloudStorageAccount account;
            CloudStorageAccount.TryParse(&quot;DefaultEndpointsProtocol=https;AccountName=azure20111025a;AccountKey=Rl9ZI3Z88Sf6QHr9gMbdcVz6GFshIpA13Gpfp7&#43;&#43;fdLoWXDT7dCor1/op9w78XNTKmpFXKR8&#43;2EM/YCCLeDDvA==&quot;, out account);

            var client = account.CreateCloudBlobClient();

            //return client.GetContainerReference(RoleEnvironment.GetConfigurationSettingValue(&quot;ContainerName&quot;));
            return client.GetContainerReference(&quot;gallery&quot;);

        }


        private void EnsureContainerExists()
        {
            var container = GetContainer();
            container.CreateIfNotExist();
            var permissions = container.GetPermissions();
            permissions.PublicAccess = BlobContainerPublicAccessType.Container;
            container.SetPermissions(permissions);
        }

         private void GravarImagemAzureBlob(string id, string name, string description, string tags, string fileName, string contentType, byte[] data)
        {
            // Create a blob in container and upload image bytes to it
            var blob = this.GetContainer().GetBlobReference(name);
            blob.Properties.ContentType = contentType;

            // Create some metadata for this image
            var metadata = new NameValueCollection();
            metadata[&quot;Id&quot;] = id;
            metadata[&quot;Filename&quot;] = fileName;
            metadata[&quot;ImageName&quot;] = String.IsNullOrEmpty(name) ? &quot;unknown&quot; : name;
            metadata[&quot;Description&quot;] = String.IsNullOrEmpty(description) ? &quot;unknown&quot; : description;
            metadata[&quot;Tags&quot;] = String.IsNullOrEmpty(tags) ? &quot;unknown&quot; : tags;

            // Add and commit metadata to blob
            blob.Metadata.Add(metadata);
            blob.UploadByteArray(data);

        }

        private void GravarThumbAzureBlob(string id, string name, string description, string tags, string fileName, string contentType, Stream data)
        {
            // Create a blob in container and upload image bytes to it
            var blob = this.GetContainer().GetBlobReference(name);
            blob.Properties.ContentType = contentType;

            // Create some metadata for this image
            var metadata = new NameValueCollection();
            metadata[&quot;Id&quot;] = id;
            metadata[&quot;Filename&quot;] = fileName;
            metadata[&quot;ImageName&quot;] = String.IsNullOrEmpty(name) ? &quot;unknown&quot; : name;
            metadata[&quot;Description&quot;] = String.IsNullOrEmpty(description) ? &quot;unknown&quot; : description;
            metadata[&quot;Tags&quot;] = String.IsNullOrEmpty(tags) ? &quot;unknown&quot; : tags;

            // Add and commit metadata to blob
            blob.Metadata.Add(metadata);
            blob.UploadFromStream(data);
        }</pre></p><p>&nbsp;</p><p>6.4. Procure a função <strong>ProductAddBtn_Click</strong> e dentro do bloco <strong>Try</strong>, comente as chamadas das funções <strong>GravarImagemFileSystem</strong> e <strong>GravarThumbFileSystem</strong> e inclua o código abaixo das funções previamente comentadas.&nbsp;</p><p><pre class="brush: csharp">GravarImagemAzureBlob(
                        Guid.NewGuid().ToString(),
                        imageName,
                        HttpUtility.HtmlEncode(Description.Text),
                        &quot;&quot;,
                        imageName,
                        FileUpload1.PostedFile.ContentType,
                        FileUpload1.FileBytes);

      ////código para gravar imagem thumbnail no File System
                    GravarThumbAzureBlob(
                         Guid.NewGuid().ToString(),
                         imageName,
                         HttpUtility.HtmlEncode(Description.Text),
                         &quot;&quot;,
                         imageName,
                         FileUpload1.PostedFile.ContentType,
                         CreateThumbnail(FileUpload1.FileContent));</pre></p><p>&nbsp;7. Analise o código&nbsp;apresentado e em caso de dúvida, inclua um comentário no artigo.</p><p>8. Abra o arquivo <strong>ProductDetails.aspx</strong> e altere o <strong>src</strong> do objeto Image para acessar as&nbsp;imagens do serviço de Blog que você criou no passo anterior. Faça os&nbsp;seguintes passos, posicione o cursor na linha 12 logo abaixo de.</p><p><pre class="brush: html">&lt;td style=&quot;vertical-align: top;&quot;&gt;</pre></p><p><strong>Troque a linha</strong></p><p>&nbsp;<pre class="brush: html">
&lt;img src='Catalog/Images/&lt;%# Eval(&quot;ProductImage&quot;) %&gt;'  border=&quot;0&quot; alt='&lt;%# Eval(&quot;ModelName&quot;) %&gt;' /&gt;
</pre></p><p><strong>Por essa abaixo</strong></p><p>&nbsp;<pre class="brush: html">
&lt;img src='https://[suacontadestorage].blob.core.windows.net/gallery/&lt;%# Eval(&quot;ProductImage&quot;) %&gt;'  border=&quot;0&quot; alt='&lt;%# Eval(&quot;ModelName&quot;) %&gt;' /&gt;
</pre></p><p>9. Por fim, abra o&nbsp;&nbsp;arquivo <strong>ProductsList.aspx</strong> e altere o <strong>src</strong> do objeto Image para acessar as imagens do serviço de Blog, da mesma forma que o passo anterior.&nbsp;Posicione o cursor na linha 16, logo abaixo de.</p><p><pre class="brush: html">
&lt;a href='ProductDetails.aspx?productID=&lt;%# Eval(&quot;ProductID&quot;) %&gt;'&gt;
 </pre></p><p><strong>Em seguida, troque a linha.</strong></p><p><pre class="brush: html">
&lt;image src='Catalog/Images/Thumbs/&lt;%# Eval(&quot;ProductImage&quot;) %&gt;' width=&quot;100&quot; height=&quot;75&quot; border=&quot;0&quot;&gt;
</pre></p><p><strong>Pela seguinte linha.</strong></p><p><pre class="brush: html">
&lt;image src='https://[suacontadestorage].blob.core.windows.net/gallery/&lt;%# Eval(&quot;ProductImage&quot;) %&gt;' width=&quot;100&quot; height=&quot;75&quot; border=&quot;0&quot;&gt;
</pre>&nbsp;</p><p><strong>Obs</strong>: troque <strong>[suacontadestorage]</strong> pelo nome da conta de storage que você criou anteriormente.</p><p>10. Neste momento a&nbsp;aplicação já está preparada para usar o serviço de <strong>Blob do Windows Azure</strong> e armazenar as imagens da aplicação. Para testar basta pressionar <strong>&lt;F5&gt;</strong> no&nbsp;<strong>Visual Studio</strong>, acesse a página <strong>ProductAdd.aspx</strong> e cadastre um novo produto.</p><p>Em seguida volte para a lista de produtos e verifique se o novo produto está aparecendo. Para finalizar o teste clique no detalhes do produto e para&nbsp;verificar&nbsp;que a imagem está dentro do <strong>serviço de Blob</strong>, basta clicar com o botão direito do mouse na imagem e ver as propriedades. Para verificar a URI da imagem.</p><p>Faça download do código fonte do projeto alterado, clicando <a title="Download terceiro passo." href="http://sdrv.ms/MVA_Azure_Terceiro_Passo" target="_blank">aqui</a>.</p><p>Esse artigo foi realizado utilizando o Hands-On-Lab criado por Rogério Cordeiro.</p><p>Abraço,&nbsp;</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:1d4743ed48a544d5b0eca01300278e7b">]]></description>
      <comments>http://channel9.msdn.com/posts/Utilizando-o-Blob-para-substituir-o-file-system</comments>
      <itunes:summary>As m&#225;quinas virtuais utilizadas no Windows Azure s&#227;o stateless, ou seja, n&#227;o mant&#233;m o seu estado entre as opera&#231;&#245;es de update (Hardware ou Software) e por isso, se utilizar o armazenamento local de sua m&#225;quina virtual voc&#234; pode perder todos os seus dados. Para evitar a perda de dados e ainda podermos acessar o os dados em qualquer lugar, vamos utilizar o Windows Azure Storage. Tivemos um artigo no m&#243;dulo de Introdu&#231;&#227;o do MVA falando somente sobre o Windows Azure Storage, se precisar rever os conte&#250;do apresentado clique aqui. A aplica&#231;&#227;o TailspinSpyworks tem uma p&#225;gina com a fun&#231;&#227;o de cadastrar novos produtos. Neste cadastro &#233; necess&#225;rio incluir uma foto do produto, o arquivo da imagem &#233; salvo dentro de uma pasta da aplica&#231;&#227;o. Em cen&#225;rios de alta disponibilidade, n&#227;o &#233; uma boa pr&#225;tica a aplica&#231;&#227;o ter referencia para um pasta local. Neste exerc&#237;cio voc&#234; ir&#225; trocar este mecanismo para gravar a imagem no servi&#231;o de Blob do Windows Azure. Passo 1 – Provisionar uma conta de storage no Windows Azure Neste passo voc&#234; criar&#225; uma nova conta de storage para usar o servi&#231;o de Blob do Windows Azure. 1. Acesse pelo Internet&amp;nbsp;Explorer o portal do Windows Azure https://windows.azure.com.&amp;nbsp; Se necess&#225;rio, fa&#231;a login com sua conta&amp;nbsp;do Windows Live; 2. Em Servi&#231;os&amp;nbsp;hospedados, Contas de armazenamento e CDN (Hosted Services, Storage&amp;nbsp;Accounts &amp;amp; CDN), no painel do lado esquerdo, clique em Contas de&amp;nbsp;Armazenamento (Storage Accounts), em seguida clique em Nova conta de Armazenamento (New Storage Accout).  3.&amp;nbsp;Preencha a janela&amp;nbsp;Criar uma nova conta de Armazenamento (Create a New Storage&amp;nbsp;Account)&amp;nbsp;com a sua subscri&#231;&#227;o do Windows Azure, uma URL &#250;nica para a nova conta de storage, escolha uma regi&#227;o&amp;nbsp;(OBS: utilize a mesma regi&#227;o dos servi&#231;os de compute), em seguida clique em OK.  4. Selecione a conta de storage que voc&#234; acabou de criar e copie a Blob URL do painel de&amp;nbsp;propriedades e cole em um bloco de notas (notepad). Em seguida clique no</itunes:summary>
      <link>http://channel9.msdn.com/posts/Utilizando-o-Blob-para-substituir-o-file-system</link>
      <pubDate>Tue, 13 Mar 2012 02:49:42 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Utilizando-o-Blob-para-substituir-o-file-system</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/af195726-8d21-4139-9053-52689da4fbe5.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza, Rogerio Cordeiro</dc:creator>
      <itunes:author>Vin&#237;cius Souza, Rogerio Cordeiro</itunes:author>
      <slash:comments>3</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Utilizando-o-Blob-para-substituir-o-file-system/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Azure Storage</category>
      <category>Blobs</category>
      <category>migration</category>
    </item>
  <item>
      <title>Utilizando vari&#225;veis de sess&#227;o com o Windows Azure</title>
      <description><![CDATA[<p>Uma das alterações necessárias para migrar uma aplicação para o Windows Azure é a utilização de variáveis de sessão, isso porque ao utilizar mais de uma instância, sua aplicação utilizará automaticamente um load balancer (balanceador de carga). E ao utilizar um load balancer, não tem com garantir que a requisição do usuário vai utilizar sempre a mesma máquina.</p><p>Umas das maneiras de resolver esse problema é utilizar Windows Azure Cache, nesse artigo iremos configurar a aplicação TailspinSpyworks para utilizar o Windows Azure Cache, no final do artigo você conseguirá baixar o projeto com as alterações necessárias aplicadas.</p><p><strong>Passo 1 – Provisionar o serviço de Cache</strong></p><p>Neste passo você criará uma nova subscrição para usar Windows Azure Caching.</p><ol><li value="1">Acesse pelo <strong>Internet&nbsp;Explorer&nbsp;</strong>o portal do Windows Azure Platform <a href="https://windows.azure.com">https://windows.azure.com</a>.&nbsp; Se necessário, faça login com sua conta&nbsp;do Windows Live. </li><li>No&nbsp; <strong>Barramento de serviços, Controle de&nbsp;acesso e Cache (Service Bus,&nbsp;Access Control &amp; Caching)</strong>, painel do lado esquerdo, clique em <strong>Cache</strong>. </li></ol><div><a href="http://files.channel9.msdn.com/thumbnail/fac6b240-c816-4343-a4f5-b6d135517003.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/fac6b240-c816-4343-a4f5-b6d135517003.png" alt="" width="648" height="594"></a></div><p>&nbsp;</p><ol><li value="3">Clique no botão <strong>Novo&nbsp;namespace de Serviço (New Namespace)</strong> para criar uma nova instancia de cache. </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/b4f6dcf3-ce99-401a-befa-2c93b46a6097.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/b4f6dcf3-ce99-401a-befa-2c93b46a6097.png" alt="" width="630" height="262"></a></p><p>&nbsp;Preencha os dados solicitados na janela<strong> &quot;Criar um novo namespace de serviço&quot; (Cache Service Namespace)</strong> com:</p><ul><li>Nome; </li></ul><ul><li>Escolha um país/região (<strong>OBS:</strong> Atenção&nbsp;para deixar no mesmo servidor das roles de compute); </li></ul><ul><li>Assinatura que será&nbsp;utilizada; </li></ul><ul><li><strong>Cota do&nbsp;tamanho de cache (Connection Pack Size)</strong> e clique em <strong>Criar Namespace</strong>. </li></ul><ol><li value="4">Localize a nova entrada na&nbsp;lista dos serviços e aguarde o Status do namespace ficar <strong>Ativo</strong>. </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/89f89c22-4192-4c2d-8f06-842996076aed.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/89f89c22-4192-4c2d-8f06-842996076aed.png" alt="" width="607" height="118"></a></p><p>&nbsp;Status ativo do Namespace</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/c3a42bf3-aa64-4a63-9e1a-da72fb02edca.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/c3a42bf3-aa64-4a63-9e1a-da72fb02edca.png" alt="" width="613" height="117"></a></p><ol><li value="5">Clique no namespace criado, e&nbsp;&nbsp;no painel de propriedades (a direita da tela) localize e copie os valores&nbsp;dos campos <strong>URL do serviço (Service URL)</strong> e&nbsp;<strong>Porta do&nbsp;serviço&nbsp;(Service Port)</strong>.<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </li></ol><p><a href="http://files.channel9.msdn.com/thumbnail/32fdfd0a-24a7-4e70-a1d0-3f30e1edef24.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/32fdfd0a-24a7-4e70-a1d0-3f30e1edef24.png" alt="" width="272" height="259"></a></p><ol><li value="6">Clique no botão <strong>Exibir&nbsp; (View)</strong> do&nbsp;&nbsp;campo <strong>Token de&nbsp;&nbsp;Autenticação&nbsp;(Authentication Token)</strong> do painel de propriedades. Na janela <strong>Token de Autenticação&nbsp;(Authentication Token)</strong> clique no botão Copiar para a área de transferência&nbsp;<strong>(Copy to Clipboard)</strong>.&nbsp;Para facilitar os próximos passos, use o notepad para guardar as &nbsp;&nbsp;&nbsp;&nbsp; configurações. </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/03899176-3bb1-4c73-9529-2ce503131b65.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/03899176-3bb1-4c73-9529-2ce503131b65.png" alt="" width="575" height="141"></a></p><p>&nbsp;</p><ol><li value="7">Clique em <strong>Exibir Configuração de cliente (View Client Configuration)</strong>, veja imagem abaixo e&nbsp;selecione todo o texto da janela <strong>Configuração do Cliente (Client Configuration)</strong>. Digite <strong>&lt;CTRL &#43; C&gt;</strong> para copiar e cole o texto no notepad para usar nos&nbsp;próximos passos. Este XML tem as configurações necessárias&nbsp;para acessar o <strong>Windows Azure Caching Access Control</strong>. </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/d5dd88bc-6874-45e3-a164-08f63be8d412.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/d5dd88bc-6874-45e3-a164-08f63be8d412.png" alt="" width="619" height="353"></a></p><p>&nbsp;Copiando o XML de configuração do Windows Azure Cache.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/981a9d37-4d6e-4659-904f-1e8307df7347.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/981a9d37-4d6e-4659-904f-1e8307df7347.png" alt="" width="521" height="478"></a></p><p><strong>Passo 2 – Configurando o Session State provider da aplicação para usar o Windows Azure AppFabric Caching</strong></p><p>Neste passo você vai alterar o<strong> Session State provider</strong> para usar o mecanismo de <strong>Cache do Windows Azure</strong>. Este passo requer que você adicione algumas referências no projeto <strong>TailspinSpyworks</strong> e altere o arquivo de configuração <strong>Web.config</strong>.</p><ol><li value="1">Execute o <strong>Visual Studio</strong> como <strong>administrador.</strong>&nbsp;Acesse <strong>Start | All Programs | Microsoft Visual Studio</strong> e clique com o botão direito do mouse no atalho para o Microsoft Visual Studio e escolha <strong>Run as &nbsp;&nbsp;&nbsp;&nbsp; administrator;</strong> </li><li lang="en-US">Se a janela <strong>User Account Control</strong> aparecer, clique <strong>Yes</strong>. </li></ol><ol><li value="3">Na opção <strong>File</strong> do menu, escolha <strong>Open</strong> e em seguida, selecione <strong>Project/Solution</strong>. </li></ol><ol><li value="4">Na janela <strong>Open Project</strong>, procure o arquivo <strong>TailspinSpyworks.sln</strong> para abrir a solução. </li></ol><ol><li value="5">No <strong>Solution Explorer</strong>, clique com o botão direito do mouse no projeto <strong>TailspinSpyworks</strong>&nbsp;| e selecione <strong>Add&nbsp;Reference</strong>&nbsp;| selecione a aba <strong>Browse</strong>. Navegue&nbsp;até a pasta <strong>%Program Files%\Windows Azure SDK\v1.6\Cache\ref</strong>e selecione os assemblies: <ul><li>Microsoft.ApplicationServer.Caching.Client; </li></ul><ul><li>Microsoft.ApplicationServer.Caching.Core; </li></ul><ul><li>Microsoft.Web.DistributedCache. </li></ul></li></ol><p>Em segida clique em <strong>OK</strong>.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/80bb8a87-f3a3-4abe-bb92-af399275309e.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/80bb8a87-f3a3-4abe-bb92-af399275309e.png" alt="" width="648" height="426"></a></p><ol><li value="6">Garanta que os assemblies&nbsp;façam parte do pacote. Para fazer isto, clique com o botão da direita do&nbsp;mouse na referencia <strong>Microsoft.ApplicationServer.Caching.Client</strong> | <strong>Properties</strong>. Na janela de propriedades, verifique se a opção <strong>Copy Local</strong>&nbsp;é igual&nbsp;a <strong>True</strong>. Repita este passo para os outros assemblies, incluídos no passo anterior. </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/fdc84f16-d8d4-491d-a576-ee485b7bdbcb.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/fdc84f16-d8d4-491d-a576-ee485b7bdbcb.png" alt="" width="487" height="420"></a></p><ol><li value="7">Abra o arquivo <strong>Web.config,</strong> localizado na raiz do projeto <strong>TailspinSpyworks</strong>. </li><li>Volte para o notepad com as configurações do <strong>Windows Azure Cache</strong> e copie o texto dentro da tag <strong>ConfigSections</strong> </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/2ad7e925-ae85-4147-9043-c56dfd574c9a.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/2ad7e925-ae85-4147-9043-c56dfd574c9a.png" alt="" width="652" height="240"></a></p><ol><li value="9">Volte para o <strong>Visual Studio</strong>&nbsp;e cole a sessão dentro da tag <strong>configuration</strong> do <strong>web.config</strong>. Garanta que este seja o&nbsp;primeiro elemento dentro da tag <strong>configuration</strong>. </li></ol><p>&nbsp;<pre class="brush: xml">&lt;configuration&gt;
   &lt;configSections&gt;
       &lt;section name=&quot;dataCacheClients&quot; type=&quot;Microsoft.ApplicationServer.Caching.DataCacheClientsSection, Microsoft.ApplicationServer.Caching.Core&quot;
                  allowLocation=&quot;true&quot; allowDefinition=&quot;Everywhere&quot;/&gt;
     &lt;/configSections&gt;
.....

&lt;/configuration&gt;      
</pre></p><ol><li value="10">Volte para o notepad e copie a configuração <strong>dataCacheClients</strong>. </li></ol><p><a href="http://files.channel9.msdn.com/thumbnail/3f2ffc35-e0c7-4b8b-92d2-bcb945657227.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/3f2ffc35-e0c7-4b8b-92d2-bcb945657227.png" alt="" width="659" height="389"></a></p><ol><li value="11">Volte para o Visual Studio e cole a configuração que você copiou logo após a tag configSections como mostra abaixo. </li></ol><p lang="es-AR"><pre class="brush: xml">     &lt;/configSections&gt;
      
     &lt;dataCacheClients&gt;
       &lt;dataCacheClient name=&quot;default&quot;&gt;
         &lt;hosts&gt;
           &lt;host name=&quot;[SERVICE-HOST-NAME]&quot; cachePort=&quot;22233&quot; /&gt;
         &lt;/hosts&gt;
      
         &lt;securityProperties mode=&quot;Message&quot;&gt;
           &lt;messageSecurity
             authorizationInfo=&quot;[AUTHORIZATION INFO]&quot;&gt;
           &lt;/messageSecurity&gt;
         &lt;/securityProperties&gt;
       &lt;/dataCacheClient&gt;
     &lt;/dataCacheClients&gt;
       
     &lt;dataCacheClients&gt;
       &lt;dataCacheClient name=&quot;SslEndpoint&quot;&gt;
         &lt;hosts&gt;
           &lt;host name=&quot;[SERVICE-HOST-NAME]&quot; cachePort=&quot;22243&quot; /&gt;
         &lt;/hosts&gt;
      
         &lt;securityProperties mode=&quot;Message&quot;&gt;
           &lt;messageSecurity
             authorizationInfo=&quot;[AUTHORIZATION INFO]&quot;&gt;
           &lt;/messageSecurity&gt;
         &lt;/securityProperties&gt;
       &lt;/dataCacheClient&gt;
     &lt;/dataCacheClients&gt;
</pre></p><ol><li value="12">A ultima sessão que você&nbsp;&nbsp;precisa configurar é a <strong>sessionState provider</strong>, e para fazer isto, volte&nbsp;&nbsp;para o notepad e copie o elemento <strong>sessionState</strong>. </li></ol><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/8a569126-27ef-42be-bbdc-2975e211194e.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/8a569126-27ef-42be-bbdc-2975e211194e.png" alt="" width="644" height="214"></a></p><ol><li value="13">Volte para o <strong>Visual Studio&nbsp;</strong>e cole o elemento copiado dentro da sessão <strong>system.web</strong>. </li></ol><p lang="es-AR"><pre class="brush: xml">     ...
     &lt;system.web&gt;
      
       &lt;sessionState mode=&quot;Custom&quot; customProvider=&quot;AppFabricCacheSessionStoreProvider&quot;&gt;
         &lt;providers&gt;
           &lt;add name=&quot;AppFabricCacheSessionStoreProvider&quot;
                 type=&quot;Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider, Microsoft.Web.DistributedCache&quot;
                 cacheName=&quot;default&quot;
                 useBlobMode=&quot;true&quot;
                 dataCacheClientName=&quot;default&quot; /&gt;
         &lt;/providers&gt;
       &lt;/sessionState&gt;
      

  &lt;compilation debug=&quot;true&quot; targetFramework=&quot;4.0&quot;&gt;</pre></p><ol><li value="14">&nbsp;Digite <strong>&lt;CTRL &#43; S&gt;</strong> para salvar o arquivo <strong>Web.config</strong>. </li></ol><p>Agora a aplicação já está pronta para utilizar o <strong>Windows Azure Cache</strong> como mecanismo controle de sessão. Para testar para pressionar <strong>&lt;F5&gt;</strong> no <strong>Visual Studio</strong> e navegar pelo site.</p><p>Faça download da aplicação, configurada clicando <a title="Download segundo passo" href="http://sdrv.ms/MVA_Azure_Segundo_Passo" target="_blank">aqui</a>.</p><p>Este artigo foi realizado com base em um Hands-on-Lab realizado pelo Rogério Cordeiro.</p><p>Obrigado, e continue migrando.</p><p>Vinícius</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d9374caf3f174642affaa013000363b3">]]></description>
      <comments>http://channel9.msdn.com/posts/Utilizando-variveis-de-sesso-com-o-Windows-Azure</comments>
      <itunes:summary>Uma das altera&#231;&#245;es necess&#225;rias para migrar uma aplica&#231;&#227;o para o Windows Azure &#233; a utiliza&#231;&#227;o de vari&#225;veis de sess&#227;o, isso porque ao utilizar mais de uma inst&#226;ncia, sua aplica&#231;&#227;o utilizar&#225; automaticamente um load balancer (balanceador de carga). E ao utilizar um load balancer, n&#227;o tem com garantir que a requisi&#231;&#227;o do usu&#225;rio vai utilizar sempre a mesma m&#225;quina. Umas das maneiras de resolver esse problema &#233; utilizar Windows Azure Cache, nesse artigo iremos configurar a aplica&#231;&#227;o TailspinSpyworks para utilizar o Windows Azure Cache, no final do artigo voc&#234; conseguir&#225; baixar o projeto com as altera&#231;&#245;es necess&#225;rias aplicadas. Passo 1 – Provisionar o servi&#231;o de Cache Neste passo voc&#234; criar&#225; uma nova subscri&#231;&#227;o para usar Windows Azure Caching. Acesse pelo Internet&amp;nbsp;Explorer&amp;nbsp;o portal do Windows Azure Platform https://windows.azure.com.&amp;nbsp; Se necess&#225;rio, fa&#231;a login com sua conta&amp;nbsp;do Windows Live. No&amp;nbsp; Barramento de servi&#231;os, Controle de&amp;nbsp;acesso e Cache (Service Bus,&amp;nbsp;Access Control &amp;amp; Caching), painel do lado esquerdo, clique em Cache. &amp;nbsp; Clique no bot&#227;o Novo&amp;nbsp;namespace de Servi&#231;o (New Namespace) para criar uma nova instancia de cache. &amp;nbsp; &amp;nbsp;Preencha os dados solicitados na janela &amp;quot;Criar um novo namespace de servi&#231;o&amp;quot; (Cache Service Namespace) com: Nome; Escolha um pa&#237;s/regi&#227;o (OBS: Aten&#231;&#227;o&amp;nbsp;para deixar no mesmo servidor das roles de compute); Assinatura que ser&#225;&amp;nbsp;utilizada; Cota do&amp;nbsp;tamanho de cache (Connection Pack Size) e clique em Criar Namespace. Localize a nova entrada na&amp;nbsp;lista dos servi&#231;os e aguarde o Status do namespace ficar Ativo. &amp;nbsp; &amp;nbsp;Status ativo do Namespace &amp;nbsp; Clique no namespace criado, e&amp;nbsp;&amp;nbsp;no painel de propriedades (a direita da tela) localize e copie os valores&amp;nbsp;dos campos URL do servi&#231;o (Service URL) e&amp;nbsp;Porta do&amp;nbsp;servi&#231;o&amp;nbsp;(Service Port).&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;  Clique no bot&#227;o Exibir&amp;nbsp; (View) do&amp;nbsp;&amp;nb</itunes:summary>
      <link>http://channel9.msdn.com/posts/Utilizando-variveis-de-sesso-com-o-Windows-Azure</link>
      <pubDate>Tue, 13 Mar 2012 02:49:23 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Utilizando-variveis-de-sesso-com-o-Windows-Azure</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/8ae2c941-bce3-41a6-8bc1-7a796ff73008.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza, Rogerio Cordeiro</dc:creator>
      <itunes:author>Vin&#237;cius Souza, Rogerio Cordeiro</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Utilizando-variveis-de-sesso-com-o-Windows-Azure/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>Cache</category>
      <category>migration</category>
      <category>Session</category>
    </item>
  <item>
      <title>Realizando o deploy de uma aplica&#231;&#227;o PHP no Windows Azure</title>
      <description><![CDATA[<p>No artigo anterior configuramos o ambiente de desenvolvimento no Windows para trabalharmos com PHP, agora vamos fazer um deploy de uma aplicação simples (um phpinfo) e de uma aplicação bastante o Wordpress.</p><p>Vou utilizar a estrutura de pasta criada pelo scaffolder do Windows Azure SDK para PHP do artigo anterior.</p><p>Dentro da pasta PhpOnAzure.Web crie um novo arquivo chamado index.php e abra ele para edição, em seguida adicione as linhas de código abaixo.</p><p><pre class="brush: php">
&lt;?php

phpinfo();

?&gt;
</pre></p><p><strong>Executando a aplicação PHP no ambiente local de desenvolvimento</strong></p><p>Geralmente você vai testar a sua aplicação antes de fazer deploy para o ambiente de produção. Existem dois passos intermediários que você pode utilizar para testar a aplicação antes de fazer o deploy para produção:</p><ul><li>O ambiente local de&nbsp;desenvolvimento; </li><li>E o servidor de staging. </li></ul><p>O servidor de staging está disponível no portar do Windows Azure e para utilizá-lo é semelhante ao deployment de produção. Quando você estiver satisfeito com o release de stage, você pode trocar o ambiente de stage para produção através do portal. Nesse artigo porém vou focar na utilização do servidor local de desenvolvimento.</p><p>Para testar execute os seguintes passos:</p><ol><li>Abra o console do&nbsp;Windows; </li><li>Execute o comando&nbsp;&nbsp;'<strong>package create -in=&quot;C:\temp\WindowsAzurePHPApp&quot;&nbsp;out=&quot;C:\temp\WindowsAzurePHPApp\build&quot; -dev=true</strong>' </li></ol><p>OBS: Deve ser verificado se o IIS está devidamente configurado para utilizar o PHP.</p><p>Sua aplicação vai começar a ser construída e em poucos segundos o navegados Web vai abrir e você vai visualizar a saída do método phpinfo(), como na figura abaixo.</p><p><strong><a href="http://files.channel9.msdn.com/thumbnail/f77318cb-2453-4e14-b79b-f4ae43e22336.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/f77318cb-2453-4e14-b79b-f4ae43e22336.png" alt="" width="446" height="555"></a></strong></p><p><strong>Execute a aplicação PHP no Windows Azure</strong></p><p>&nbsp;</p><p>Para executar qualquer aplicação no Windows Azure, você vai precisar de dois arquivos:</p><p>Windows Azure Package;</p><p>ServiceConfiguration.cscfg.</p><p>Mudando apenas um pouco o comando anterior, ambos os arquivos serão gerados e podem ser carregados imediatamente no portal do Windows Azure.</p><ul><ul><ol><li value="1">Execute o comando &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 'package create -in=&quot;C:\temp\WindowsAzurePHPApp&quot; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; -out=&quot;C:\temp\WindowsAzurePHPApp\release&quot; -dev=false' </li></ol></ul></ul><p>Agora você vai possuir dois arquivos na release, que serão carregados no Windows Azure como dito anteriormente.</p><p>Para fazer o deploy faça os passos abaixo:</p><ul><ul><ol><li value="1">Acesse a sua &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; conta do Windows Azure. </li><li>Botão &quot;Novo Serviço &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; hospedado&quot;, a janela abaixo será apresentada. </li></ol></ul></ul><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/3a53702b-34a3-4001-8490-74fa6e312d8d.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/3a53702b-34a3-4001-8490-74fa6e312d8d.png" alt="" width="412" height="481"></a></p><p>&nbsp;</p><ul><ul><ol><li value="3">Escolha a &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; assinatura; </li><li>Defina um nome para o &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; serviço; </li><li>Defina um prefixo de url; </li></ol><ol><li value="6">Escolha a região &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; ou grupos de afinidades; </li><li>Escolha a opção de deploy &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (Stage ou produção); </li><li>Defina um nome para &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; implantação; </li></ol><ol><li value="9">Local do pacote, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clique no botão &quot;Procurar Localmente...&quot; e vá para a pasta, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\temp\WindowsAzurePHPApp\Release, selecione o arquivo de pacote. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WindowsAzurePHPApp.cspkg; </li><li>Arquivo de configuração, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; clique no botão &quot;Procurar Localmente...&quot; e vá para a pasta, &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; C:\temp\WindowsAzurePHPApp\Release, selecione o arquivo de pacote. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; WindowsAzurePHPApp.cscfg; </li><li>Clique em ok, e aguarde &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; alguns minutos até realizar o deploy da solução. O processo consiste &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; em&nbsp; subir uma nova instância do &nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Windows Server 2008, instalar o PHP e instalar nossa aplicação. </li></ol></ul></ul><p>&nbsp;</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/ed90ef6e-cacc-48a5-8799-c68086472f44.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/ed90ef6e-cacc-48a5-8799-c68086472f44.png" alt="" width="636" height="503"></a></p><p>Quando a role alterar o seu estado para ocupado sua aplicação vai estar pronta para ser visualizada.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/542f3344-210f-4700-b087-a12473f4934a.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/542f3344-210f-4700-b087-a12473f4934a.png" alt="" width="635" height="481"></a></p><p>Agora temos uma solução PHP instalada no Windows Azure, por mais que a nossa aplicação seja simples, o processo de instalação e deploy é o mesmo para qualquer aplicação.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:484bf7a3912e4d3aac8aa01200013428">]]></description>
      <comments>http://channel9.msdn.com/posts/Realizando-o-deploy-de-uma-aplicao-PHP-no-Windows-Azure</comments>
      <itunes:summary>No artigo anterior configuramos o ambiente de desenvolvimento no Windows para trabalharmos com PHP, agora vamos fazer um deploy de uma aplica&#231;&#227;o simples (um phpinfo) e de uma aplica&#231;&#227;o bastante o Wordpress. Vou utilizar a estrutura de pasta criada pelo scaffolder do Windows Azure SDK para PHP do artigo anterior. Dentro da pasta PhpOnAzure.Web crie um novo arquivo chamado index.php e abra ele para edi&#231;&#227;o, em seguida adicione as linhas de c&#243;digo abaixo. 
&amp;lt;?php

phpinfo();

?&amp;gt;
 Executando a aplica&#231;&#227;o PHP no ambiente local de desenvolvimento Geralmente voc&#234; vai testar a sua aplica&#231;&#227;o antes de fazer deploy para o ambiente de produ&#231;&#227;o. Existem dois passos intermedi&#225;rios que voc&#234; pode utilizar para testar a aplica&#231;&#227;o antes de fazer o deploy para produ&#231;&#227;o: O ambiente local de&amp;nbsp;desenvolvimento; E o servidor de staging. O servidor de staging est&#225; dispon&#237;vel no portar do Windows Azure e para utiliz&#225;-lo &#233; semelhante ao deployment de produ&#231;&#227;o. Quando voc&#234; estiver satisfeito com o release de stage, voc&#234; pode trocar o ambiente de stage para produ&#231;&#227;o atrav&#233;s do portal. Nesse artigo por&#233;m vou focar na utiliza&#231;&#227;o do servidor local de desenvolvimento. Para testar execute os seguintes passos: Abra o console do&amp;nbsp;Windows; Execute o comando&amp;nbsp;&amp;nbsp;&#39;package create -in=&amp;quot;C:\temp\WindowsAzurePHPApp&amp;quot;&amp;nbsp;out=&amp;quot;C:\temp\WindowsAzurePHPApp\build&amp;quot; -dev=true&#39; OBS: Deve ser verificado se o IIS est&#225; devidamente configurado para utilizar o PHP. Sua aplica&#231;&#227;o vai come&#231;ar a ser constru&#237;da e em poucos segundos o navegados Web vai abrir e voc&#234; vai visualizar a sa&#237;da do m&#233;todo phpinfo(), como na figura abaixo.  Execute a aplica&#231;&#227;o PHP no Windows Azure &amp;nbsp; Para executar qualquer aplica&#231;&#227;o no Windows Azure, voc&#234; vai precisar de dois arquivos: Windows Azure Package; ServiceConfiguration.cscfg. Mudando apenas um pouco o comando anterior, ambos os arquivos ser&#227;o gerados e podem ser carregados imediatamente no portal do Windows Azure. Execute o comando &amp;nbsp;&amp;nbsp;&amp;</itunes:summary>
      <link>http://channel9.msdn.com/posts/Realizando-o-deploy-de-uma-aplicao-PHP-no-Windows-Azure</link>
      <pubDate>Mon, 12 Mar 2012 00:09:04 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Realizando-o-deploy-de-uma-aplicao-PHP-no-Windows-Azure</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/f4627069-46e4-48c3-8d58-68d46ce281a9.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Realizando-o-deploy-de-uma-aplicao-PHP-no-Windows-Azure/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>Deployment</category>
      <category>PHP</category>
    </item>
  <item>
      <title>Configurando o ambiente para trabalhar com PHP no Windows</title>
      <description><![CDATA[<p>Antes de criar pacotes para deploy e utilizar o emulador de nuvem, você tem que instalar o Windows Azure SDK (Software Development Kit), o web site do Windws Azure <a href="http://www.windwsazure.com">http://www.windwsazure.com</a> está dividido em tecnologias como .Net, PHP, Java e Node.JS.</p><p>A página que estou interessado aqui é a de PHP <a href="https://www.windowsazure.com/pt-br/develop/php/">https://www.windowsazure.com/pt-br/develop/php/</a>, nela você vai encontrar o link para download do SDK para PHP, artigos, exemplos e muito mais.</p><p>Nesse artigo, farei a instalação automáticas dos componentes necessários para configurar o ambiente de desenvolvimento utilizando o Microsoft Web Platform Installer ou simplesmente o WebPI.</p><p>Vamos instalar os seguintes componentes:</p><ul><li>PHP 5.3.1 </li><li>Windows Azure SDK </li><li>SQL Server Express </li><li>Windows Azure PHP SDK </li></ul><p><strong>PHP 5.3.1</strong></p><p>Para instalar o PHP, utilizando o WebPI clique no link <a href="http://www.microsoft.com/web/gallery/install.aspx?appid=PHP53">http://www.microsoft.com/web/gallery/install.aspx?appid=PHP53</a> e permita a execução do WebPI. Se você não possuir o WebPI instalado, você será redirecionado para instalar o WebPI, depois você será apresentado ao wizard de instalação abaixo.</p><p>A primeira tela apresenta informações sobre o software que será instalado e quem é o responsável por publicar esse conteúdo e em seguida é apresentado os pré-requisitos.</p><p>Ao instalar o PHP será instalado:</p><ul><li>PHP manager; </li></ul><ul><li>Driver do Sql Server para &nbsp;&nbsp;&nbsp;&nbsp; PHP. </li></ul><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/cba255bb-4e0b-4a6e-91ac-7e250e42bee6.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/cba255bb-4e0b-4a6e-91ac-7e250e42bee6.png" alt="" width="598" height="417"></a></p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/3557e552-6999-4aac-b080-8827951bc078.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/3557e552-6999-4aac-b080-8827951bc078.png" alt="" width="598" height="392"></a></p><p><strong>Windows Azure SDK</strong></p><p>Da mesma forma que o PHP vamos utilizar o WebPI para instalar o Windows Azure SDK, faremos isso clicando sobe o link <a href="http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureSDK">http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureSDK</a>.</p><p>O Windows Azure SDK contém todas os componentes necessários para testar e criar e empacotar aplicações para o emulador local, assim como para o Windows Azure.</p><p>Com o emulador conseguimos simular nós de computação e os serviços de storage, porém existem algumas funcionalidade que não são suportadas pelo emulador (diferenças do emulador de storage e o serviço real - <a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg433135.aspx">http://msdn.microsoft.com/en-us/library/windowsazure/gg433135.aspx</a>)</p><p><strong>SQL Server Express</strong></p><p>O SQL Server é opcional, mas para utilizar os emuladores do serviço de storage o SQL server deve ser instalado. O SQL Server Express é fornecido gratuitamente e funciona muito bem com o emulador, se você não possuir uma instalação completa do SQL Server, recomendo a instalação.</p><p>Para instalar clique no link <a href="http://www.microsoft.com/web/gallery/install.aspx?appid=sqlexpress">http://www.microsoft.com/web/gallery/install.aspx?appid=sqlexpress</a> e complete o Wizard de instalação.</p><p><strong>Windows Azure SDK for PHP</strong></p><p>O SDK para PHP pode ser obtido através da URL <a href="http://phpazure.codeplex.com/">http://phpazure.codeplex.com/</a>, o SDK é um projeto open source mantido pelo time de interoperabilidade da Microsoft e possui as seguintes características:</p><ul><li>Classes PHP para Windows Azure Blobs, Tables &amp; Queues (para operações CRUD); </li><li>Classes Helper para transporte HTTP, AuthN/AuthZ, REST &amp; Gerenciamento de erro; </li><li>Gerenciamento, Instrumentação&nbsp;e suporte a log; </li><li>Suporte para sessões PHP utilizando Table Storage; </li><li>API de gerenciamento; </li><li>Cliente de diagnóstico; </li><li>Conjunto de linha de comando para: <ul><li>Empacotamento; </li></ul><ul><li>Gerenciamento; </li></ul><ul><li>Diagnóstico; </li><li>Deployment </li></ul></li></ul><p>Após realizar o download do SDK para PHP, precisamos configurá-lo. O Windows Azure SDK para PHP não possui um instalador, ele é um pacote de arquivos que você pode imediatamente começar a utilizar.</p><p>Descompacte o arquivo PHPAzure-4.1.0 para a pasta&nbsp;<strong> C:\Program Files\Windows Azure SDK for PHP</strong>, em seguida adicione o diretório <strong>C:\Program Files\Windows Azure SDK for PHP\bin</strong> na variável de sistema PATH.</p><p>Em seguida abra o console do Windows e digite &quot;<strong>package</strong>&quot;, você deve visualizar o seguinte resultado.</p><p><a href="http://files.channel9.msdn.com/thumbnail/99e45b80-94a7-405d-a983-43ddc50a3206.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/99e45b80-94a7-405d-a983-43ddc50a3206.png" alt="" width="629" height="452"></a></p><p><strong>Iniciando o ambiente de desenvolvimento</strong></p><p>O emulador de computação</p><p>Após a instalação do SDK no menu iniciar, você deve possuir um novo item chamado &quot;Windows Azure Emulators&quot; seguido pelo número de versão. Abra a pasta e inicie o &quot;Compute Emulator&quot; se alguma janela de segurança aparecer, clique em permitir (Allow).</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/c0d82d3e-6b2d-4dd4-84c5-d1c8d56defb5.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/c0d82d3e-6b2d-4dd4-84c5-d1c8d56defb5.png" alt=""></a></p><p>Depois de iniciado o emulador de computação, você vai possuir dois novos ícones no seu System Tray, a partir desse ícone você abrir a interface do emulador de compute e iniciar/parar os emuladores.</p><p><a href="http://files.channel9.msdn.com/thumbnail/2f7cf721-d574-4ed8-84c8-84c04ce3c9d0.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/2f7cf721-d574-4ed8-84c8-84c04ce3c9d0.png" alt=""></a></p><p><strong>Storage Emulator</strong></p><p>Voltando para o menu iniciar, podemos também iniciar o emulador de storage, o mesmo procedimento<br>pode ser realizado pelo ícone do Windows Azure incluído no seu System Tray e exibido anteriormente.</p><p>Se o emulador for iniciado com sucesso, você vai ver a seguinte janela.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/56b4cb08-5ca3-4324-ae0c-97c83e271e1a.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/56b4cb08-5ca3-4324-ae0c-97c83e271e1a.png" alt="" width="547" height="393"></a></p><p>&nbsp;<strong>Verificando se o PHP foi instalado com sucesso.</strong></p><p>Execute o console do Windows, no menu iniciar digite cmd e tecle &lt;enter&gt;, em seguida digite &quot;php&quot; na linha de comando, conforme imagem abaixo.&nbsp;</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/d78e159d-fcca-46c0-9835-54cf0da27332.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/d78e159d-fcca-46c0-9835-54cf0da27332.png" alt="" width="627" height="424"></a></p><p>Se ao digitar a tecla &lt;enter&gt; você receber uma mensagem de erro do tipo &quot;MSVCR71.dll&quot;, como a apresentada na figura abaixo, execute os passos a seguir, caso contrário o seu ambiente de desenvolvimento está pronto para uso.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/c1de2e53-9c8e-414f-acb6-c55f78b83419.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/c1de2e53-9c8e-414f-acb6-c55f78b83419.png" alt=""></a></p><p><strong>Troubleshooting para o erro MSVCR71.dll</strong></p><p>Em alguns caso ao executar o PHP ocorre o seguinte erro &quot;falta da dll MSVCR71.dll&quot;, para corrigir você deve.</p><ol><li value="1">Instalar o <a href="http://www.microsoft.com/downloads/details.aspx?familyid=262d25e3-f589-4842-8157-034d1e7cf3a3&amp;displaylang=pt-br">Microsoft .NET Framework Version 1.1 Redistributable&nbsp;Package</a>; </li></ol><ol><li value="2">Após instalação, abra o&nbsp;console do Windows com os direitos elevados (clique com o botão direito do&nbsp;mouse no ícone e selecione a opção &quot;Executar como&nbsp;Administrador&quot;; </li></ol><ol><li value="3">Digite o seguinte comando { <strong>copy c:\Windows\Microsoft.NET\Framework\v1.1.4322\msvcr71.dll ; &nbsp;&nbsp;&nbsp;&nbsp; &quot;C:\Program Files (x86)\PHP\&quot;</strong> }. OBS: o diretório de instalação do php pode&nbsp;ser diferente para cada instalação. </li></ol><ol><li value="4">Em seguida digite &quot;php -v&quot; na linha de comando. </li></ol><p><a href="http://files.channel9.msdn.com/thumbnail/63850483-88b6-4221-b4f6-7409b488fce6.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/63850483-88b6-4221-b4f6-7409b488fce6.png" alt="" width="581" height="289"></a>&nbsp;</p><p>Agora você já possui um ambiente de desenvolvimento configurado para trabalhar com PHP <img src='http://ecn.channel9.msdn.com/o9/content/images/emoticons/emotion-1.gif?v=c9' alt='Smiley' /></p><p><strong>Testando tudo junto</strong></p><p>Construir uma aplicação PHP no Windows Azure pode ser um processo complexo que envolve configurar os arquivos <strong>ServiceConfiguration.cscfg</strong> e <strong>ServiceDefinition.csdef</strong>, e fazer scripts para que seja instalado o PHP e fazer quaisquer customização do PHP que seja necessário. Por sorte o PHP Windows Azure SDK possui um uma ferramenta de scaffolding que cria a estrutura básica de um projeto PHP para Windows Azure para você.</p><p>Assim você pode copiar seus arquivos para o projeto criado e realizar o deploy imediatamente, você tem o controle de todo o processo de deploy.</p><p>Execute o comando para visualizarmos a estrutura criada.</p><p><strong>scaffolder run -out=&quot;C:\temp\WindowsAzurePHPApp&quot;</strong></p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/492596d5-fb48-4dc9-a053-6c8e41b79d2a.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/492596d5-fb48-4dc9-a053-6c8e41b79d2a.png" alt="" width="640" height="432"></a>&nbsp;</p><p>O comando vai criar a seguinte estrutura de diretórios e arquivos:</p><p>PhpOnAzure.Web</p><p>&nbsp;&nbsp;&nbsp; |bin</p><p>&nbsp;&nbsp;&nbsp; |php</p><p>&nbsp;&nbsp;&nbsp; |resources</p><p>&nbsp;&nbsp;&nbsp;&nbsp;|diagnostics.wadcfg</p><p>&nbsp;&nbsp;&nbsp; |Web.config</p><p>ServiceConfiguration.cscfg</p><p>ServiceDefinition.csdef&nbsp;</p><p>&nbsp;</p><p><strong>Segue abaixo a descrição de cada diretório:</strong></p><ul><li>PhpOnAzure.Web - Este&nbsp;diretório será a raiz da sua aplicação (WebRoot), Todos os arquivos da&nbsp;aplicação vão estar neste diretório; </li></ul><ul><li>bin - Contém os scripts de&nbsp;iniciação que vão instalar o PHP e realizar outras funções que você&nbsp;desejar, durante o deploy; </li></ul><ul><li>php - Contém configurações&nbsp;customizadas do PHP.ini, assim como extensões customizadas que sua&nbsp;aplicação pode vir a requerer; </li></ul><ul><li>resources - Contém vários&nbsp;arquivos que dão suporte ao deploy de seu aplicativo. </li></ul><ul><li>diagnostics.wadcfg - Um&nbsp;arquivo básico de diagnóstico. Você pode utilizá-lo para traquear itens&nbsp;como uso de CPU e largura de banda. </li></ul><ul><li>ServiceConfiguration.cscfg -&nbsp;Contém as definições de configuração do Windows Azure para o seu&nbsp;&nbsp;deployment, este arquivo será copiado&nbsp;junto com o arquivo final; </li></ul><ul><li>ServiceDefinition.csdef -&nbsp;Contem informação sobre a configuração do seu deployment, este arquivo&nbsp;&nbsp;é&nbsp; incluído no pacote final que será&nbsp; carregado para o Windows Azure. </li></ul><p>&nbsp;</p><p>No próximo artigo, veja como realizar deploy de uma aplicação PHP para o Windows Azure.</p><p>Obrigado,</p><p>Vinícius.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/Vinicius_Souza/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:ecd1865964dd4724a63ea01101834462">]]></description>
      <comments>http://channel9.msdn.com/posts/Configurando-o-ambiente-para-trabalhar-com-PHP-no-Windows</comments>
      <itunes:summary>Antes de criar pacotes para deploy e utilizar o emulador de nuvem, voc&#234; tem que instalar o Windows Azure SDK (Software Development Kit), o web site do Windws Azure http://www.windwsazure.com est&#225; dividido em tecnologias como .Net, PHP, Java e Node.JS. A p&#225;gina que estou interessado aqui &#233; a de PHP https://www.windowsazure.com/pt-br/develop/php/, nela voc&#234; vai encontrar o link para download do SDK para PHP, artigos, exemplos e muito mais. Nesse artigo, farei a instala&#231;&#227;o autom&#225;ticas dos componentes necess&#225;rios para configurar o ambiente de desenvolvimento utilizando o Microsoft Web Platform Installer ou simplesmente o WebPI. Vamos instalar os seguintes componentes: PHP 5.3.1 Windows Azure SDK SQL Server Express Windows Azure PHP SDK PHP 5.3.1 Para instalar o PHP, utilizando o WebPI clique no link http://www.microsoft.com/web/gallery/install.aspx?appid=PHP53 e permita a execu&#231;&#227;o do WebPI. Se voc&#234; n&#227;o possuir o WebPI instalado, voc&#234; ser&#225; redirecionado para instalar o WebPI, depois voc&#234; ser&#225; apresentado ao wizard de instala&#231;&#227;o abaixo. A primeira tela apresenta informa&#231;&#245;es sobre o software que ser&#225; instalado e quem &#233; o respons&#225;vel por publicar esse conte&#250;do e em seguida &#233; apresentado os pr&#233;-requisitos. Ao instalar o PHP ser&#225; instalado: PHP manager; Driver do Sql Server para &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; PHP. &amp;nbsp; &amp;nbsp; Windows Azure SDK Da mesma forma que o PHP vamos utilizar o WebPI para instalar o Windows Azure SDK, faremos isso clicando sobe o link http://www.microsoft.com/web/gallery/install.aspx?appid=WindowsAzureSDK. O Windows Azure SDK cont&#233;m todas os componentes necess&#225;rios para testar e criar e empacotar aplica&#231;&#245;es para o emulador local, assim como para o Windows Azure. Com o emulador conseguimos simular n&#243;s de computa&#231;&#227;o e os servi&#231;os de storage, por&#233;m existem algumas funcionalidade que n&#227;o s&#227;o suportadas pelo emulador (diferen&#231;as do emulador de storage e o servi&#231;o real - http://msdn.microsoft.com/en-us/library/windowsazure/gg433135.aspx) SQL Server Express O SQL</itunes:summary>
      <link>http://channel9.msdn.com/posts/Configurando-o-ambiente-para-trabalhar-com-PHP-no-Windows</link>
      <pubDate>Sun, 11 Mar 2012 23:31:32 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Configurando-o-ambiente-para-trabalhar-com-PHP-no-Windows</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/0f470f8f-1762-4b79-8e87-ab0b67e827f7.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Vin&#237;cius Souza</dc:creator>
      <itunes:author>Vin&#237;cius Souza</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Configurando-o-ambiente-para-trabalhar-com-PHP-no-Windows/rss</wfw:commentRss>
      <category>Azure</category>
      <category>Brazilian Portuguese</category>
      <category>Interop</category>
      <category>PHP</category>
    </item>    
</channel>
</rss>