<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Rafael Godinho</title><link>http://blogs.msdn.com/b/rafaelgodinho/</link><description>Tecnologia para aplicações distribuídas</description><dc:language>en-US</dc:language><generator>Telligent Community 5.6.583.19849 (Build: 5.6.583.19849)</generator><item><title>Como rodar aplicações PHP no Windows Azure utilizando o Visual Studio 2010</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/12/30/como-rodar-aplica-231-245-es-php-no-windows-azure-utilizando-o-visual-studio-2010.aspx</link><pubDate>Fri, 30 Dec 2011 16:35:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10252074</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10252074</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/12/30/como-rodar-aplica-231-245-es-php-no-windows-azure-utilizando-o-visual-studio-2010.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Ouvi de muitas pessoas um mito que o Windows Azure somente consegue rodar aplicações desenvolvidas em .NET Framework e que não seria compatível com outras tecnologias. Como disse, isso é um mito, no Windows Azure a sua aplicação roda em um sistema operacional compatível com o Windows Server 2008 ou Windows Server 2008 R2, ou seja, praticamente tudo que é possível instalar e rodar nesses sistemas operacionais é possível fazer rodar no Windows Azure.&lt;/p&gt;  &lt;p align="justify"&gt;Tanto que a página sobre &lt;a href="http://www.windowsazure.com/en-us/develop/overview/"&gt;desenvolvimento&lt;/a&gt; do portal do Windows Azure, traz uma série de links e documentações sobre o assunto:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5706.image_5F00_559DCF10.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/4048.image_5F00_thumb_5F00_571EEB24.png" width="640" height="256" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Existem várias maneiras de configurar um ambiente PHP no Windows Azure, nos passos abaixo vou utilizar o Visual Studio 2010 para isso. Apenas notem que não utilizarei o Visual Studio 2010 para desenvolver nem depurar PHP, vou utilizá-lo apenas para deploy de uma aplicação web no Windows Azure.&lt;/p&gt;  &lt;p align="justify"&gt;O primeiro passo é criar um projeto de de Windows Azure e adicionar uma Web Role:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6607.image_5F00_496C2F1C.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1805.image_5F00_thumb_5F00_38A4846E.png" width="639" height="400" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Depois remova os arquivos criados por padrão pelo Visual Studio até que seu projeto fique com uma estrutura similar à estrutura abaixo:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5618.image_5F00_1CB34F76.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/8345.image_5F00_thumb_5F00_2221C01A.png" width="252" height="183" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Em seguida adicione os arquivos da aplicação PHP no projeto da Web Role, no meu caso adicionei o arquivo index.php, que somente traz informações do ambiente PHP através da chamada phpinfo().&lt;/p&gt;  &lt;table border="0" cellspacing="0" cellpadding="2" width="425"&gt;&lt;tbody&gt;     &lt;tr&gt;       &lt;td valign="top" width="200"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/3157.image_5F00_279030BE.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/2480.image_5F00_thumb_5F00_6A1FCC36.png" width="248" height="202" /&gt;&lt;/a&gt;&lt;/td&gt;        &lt;td valign="top" width="223"&gt;         &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5621.image_5F00_6F8E3CDA.png"&gt;&lt;img style="border: 0px currentcolor; margin-right: auto; margin-left: auto; float: none; display: block; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5125.image_5F00_thumb_5F00_359EF9EE.png" width="127" height="85" /&gt;&amp;#160;&lt;/a&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;O próximo passo é instalar o PHP no Windows Azure. Lembre-se, estamos utilizando uma Web Role no nosso projeto que na prática instala nossa aplicação para rodar no IIS, o que precisamos fazer é configurar o PHP para rodar em conjunto com o IIS. Além dessa configuração básica de execução do PHP também pode ser interessante instalar drivers de comunicação com o SQL Azure e um acelerador, como o caso do &lt;a href="http://www.php.net/manual/en/book.wincache.php"&gt;WinCache&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Para realizar essas configurações, vou utilizar uma &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/hh180155.aspx"&gt;startup task&lt;/a&gt;&amp;#160; responsável por disparar as instalações utilizando o &lt;a href="http://msdn.microsoft.com/en-us/library/windowsazure/gg433092.aspx"&gt;WebPICmd&lt;/a&gt;, que é a versão linha de comando do &lt;a href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;Web Plataform Installer&lt;/a&gt;, facilitando bastante a automação da instalação de ambientes web.&lt;/p&gt;  &lt;p&gt;O primeiro passo da startup task é adicioná-la no projeto da web application, no meu caso, criei uma pasta chamada startup e adicionei a WebPICmd descompactada e um arquivo batch, o setup.cmd. Neste ponto é importante definir a propriedade “Copy to Output Directory” de todos os arquivos com o valor “Copy always”. No print abaixo é possível ver a estrutura de pastas e arquivos:&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7752.image_5F00_66BE348E.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7774.image_5F00_thumb_5F00_5330D4ED.png" width="288" height="181" /&gt;&lt;/a&gt;&lt;/p&gt;    &lt;p&gt;O conteúdo do arquivo setup.cmd contém as chamadas para o WebPICmd realizar as instalações necessárias dos componentes do PHP no IIS&lt;/p&gt;  &lt;p&gt;&lt;em&gt;cd &amp;quot;%~dp0&amp;quot;&lt;/em&gt;&lt;em&gt;     &lt;br /&gt;md appdata       &lt;br /&gt;reg add &amp;quot;hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders&amp;quot; /v &amp;quot;Local AppData&amp;quot; /t REG_EXPAND_SZ /d &amp;quot;%~dp0appdata&amp;quot; /f       &lt;br /&gt;WebPICmdLine.exe /accepteula /Products:PHP53       &lt;br /&gt;WebPICmdLine.exe /accepteula /Products:SQLDriverPHP53IIS       &lt;br /&gt;WebPICmdLine.exe /accepteula /Products:WinCache53       &lt;br /&gt;reg add &amp;quot;hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders&amp;quot; /v &amp;quot;Local AppData&amp;quot; /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f       &lt;br /&gt;net start w3svc       &lt;br /&gt;iisreset /start       &lt;br /&gt;exit /b 0&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Já a sua indicação como startup task fica no arquivo ServiceDefinition.csdef, conforme trecho abaixo (notem que o arquivo e nem todas as tags estão completas por economia de espaço)&lt;/p&gt;  &lt;font color="#a31515" size="2" face="Consolas"&gt;&lt;font color="#a31515" size="2" face="Consolas"&gt;&lt;font color="#a31515" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt; &amp;lt;&lt;font color="#a31515"&gt;ServiceDefinition&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;name&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;WindowsAzurePHP&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot; …&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&amp;gt;         &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&amp;lt;&lt;font color="#a31515"&gt;WebRole &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;name&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;PHPApp&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;vmsize&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;Small&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&amp;#160; &lt;br /&gt;&lt;font size="2"&gt;&lt;font face="Consolas"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;&lt;font color="#a31515"&gt;Startup&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&amp;#160; &lt;br /&gt;&lt;font color="#a31515" size="2" face="Consolas"&gt;&lt;font color="#a31515" size="2" face="Consolas"&gt;&lt;font color="#a31515" size="2" face="Consolas"&gt;&lt;font color="#0000ff"&gt;&amp;lt;&lt;/font&gt;Task&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt; &lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;commandLine&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;startup\setup.cmd &amp;gt;&amp;gt; %Public%\Documents\setup.log&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;       &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; executionContext&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;elevated&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;       &lt;br /&gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&lt;font color="#ff0000" size="2" face="Consolas"&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; taskType&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;=&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;simple&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&lt;font size="2" face="Consolas"&gt;&lt;font size="2" face="Consolas"&gt;&amp;quot;&lt;/font&gt;&lt;/font&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt; /&amp;gt;&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;&amp;#160; &lt;br /&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&lt;font color="#0000ff" size="2" face="Consolas"&gt;&amp;lt;/&lt;font color="#a31515"&gt;Startup&lt;/font&gt;&lt;font color="#0000ff"&gt;&amp;gt;…&lt;/font&gt;&lt;/font&gt;&lt;/font&gt;  &lt;p&gt;Na definição da startup task digo que ela deverá executar de maneira elevada, ou seja, com permissões de administrador para poder realizar as instalações no ambiente e que também todos o texto que normalmente seria exibido na tela será redirecionado para o arquivo setup.log, podendo ser utilizado posteriormente em um diagnóstico em caso de problema.&lt;/p&gt;  &lt;p&gt;Depois disso é só fazer o deploy e testar a aplicação&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7271.image_5F00_2AB1F2D9.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1004.image_5F00_thumb_5F00_08E61A48.png" width="640" height="162" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;O código fonte deste projeto pode ser encontrado &lt;a href="https://skydrive.live.com/redir.aspx?cid=3573ba33315680f9&amp;amp;resid=3573BA33315680F9!948&amp;amp;parid=3573BA33315680F9!145"&gt;aqui&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10252074" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/PHP/">PHP</category></item><item><title>Vários exemplos de código para Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/12/21/v-225-rios-exemplos-de-c-243-digo-para-windows-azure.aspx</link><pubDate>Wed, 21 Dec 2011 20:19:50 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10250108</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10250108</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/12/21/v-225-rios-exemplos-de-c-243-digo-para-windows-azure.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;No MSDN temos vários exemplos de código utilizando as tecnologias do Windows Azure no &lt;a href="http://code.msdn.microsoft.com/windowsazure"&gt;Windows Azure Samples&lt;/a&gt;.    &lt;br /&gt;Lá existe a possibilidade de filtrar os vários exemplos por versão do Visual Studio, linguagem de programação, quem criou o código (Microsoft ou comunidade) como também pelas tecnologias (Windows Azure, Service Bus, Storage, SQL Azure, etc).&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7673.image_5F00_64396F75.png"&gt;&lt;img style="border: 0px currentcolor; display: inline; background-image: none;" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/4540.image_5F00_thumb_5F00_0F315D7B.png" width="640" height="292" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Uma opção interessante é a possibilidade de upload para enviar seu código de exemplo, você já enviou o seu?&lt;/p&gt;  &lt;p align="justify"&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10250108" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Evento–Microsoft Cloud Day–Edição 2011</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/11/22/evento-microsoft-cloud-day-edi-231-227-o-2011.aspx</link><pubDate>Tue, 22 Nov 2011 19:49:06 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10240093</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10240093</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/11/22/evento-microsoft-cloud-day-edi-231-227-o-2011.aspx#comments</comments><description>&lt;p&gt;&lt;em&gt;Post originalmente publicado no blog o &lt;/em&gt;&lt;a href="http://blogs.msdn.com/b/conde/archive/2011/11/17/evento-microsoft-cloud-day-edi-231-227-o-2011.aspx"&gt;&lt;em&gt;Luciano Condé&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Boa tarde a todos !&lt;/p&gt;  &lt;p&gt;No dia 24/11/2011, realizaremos o “Microsoft Cloud Day – Edição 2011”, este &lt;strong&gt;evento dedicado para Parceiros Microsoft&lt;/strong&gt; será realizado no auditório da Microsoft e com &lt;a href="http://click.email.microsoftemail.com/?qs=f3ed84b5da890def3a6aed9fca7fb6477b7102b02f9d5b6deca441fe9f083d1bb573927b07220a1b"&gt;&lt;strong&gt;transmissão on-line&lt;/strong&gt;&lt;/a&gt; (inscrição pelo site de parceiros) também. Felizmente (ou infelizmente, dependendo do caso), estamos com lotação esgotada para a participação no auditório. Mas para quem não estiver em São Paulo ou não puder comparecer presencialmente, pode particpar pela &lt;a href="http://click.email.microsoftemail.com/?qs=f3ed84b5da890def3a6aed9fca7fb6477b7102b02f9d5b6deca441fe9f083d1bb573927b07220a1b"&gt;&lt;strong&gt;transmissão on-line&lt;/strong&gt;&lt;/a&gt; (inscrição pelo site de parceiros)&lt;strong&gt;.&lt;/strong&gt; A nossa agenda é a seguinte:&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Mudança de modelo de negócios para a Nuvem (transmissão on-line)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Mais que mudança no processo de construir, consumir e usar aplicações, o destaque principal é a mudança no modelo de negócios que as empresas estão enfrentando. Dúvidas como “Como pensar o meu modelo de licenciamento neste novo modelo ? Como ficará o meu P&amp;amp;L (custos, revenue e gerenciamento de caixa) ? O que é importante considerar quando estou adotando a nuvem como o meu core-business.”&lt;/p&gt;  &lt;table style="border: currentcolor; line-height: normal; list-style-type: disc; border-collapse: collapse; mso-border-themecolor: text1; mso-border-alt: solid black 1.0pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt;" class="MsoTableLightList" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes;"&gt;       &lt;td style="background: black; border-width: 1pt medium medium 1pt; border-style: solid none none solid; border-color: black currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-left-themecolor: text1; mso-background-themecolor: text1;" valign="top" width="402" colspan="2"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 5;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="mso-themecolor: background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Horário&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="background: black; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-background-themecolor: text1; mso-border-themecolor: text1;" valign="top" rowspan="2" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="mso-themecolor: background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Título&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 0;"&gt;       &lt;td style="background: black; border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-background-themecolor: text1; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Início&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="background: black; border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-background-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Fim&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;08:00hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;09:00hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Check-in Welcome Coffee&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;09:00hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;12:00hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Mudança de modelo de negócios para a Nuvem&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3; mso-yfti-lastrow: yes;"&gt;       &lt;td style="border-width: medium medium 1pt 1pt; border-style: none none solid solid; border-color: currentcolor currentcolor black black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font color="#000000"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font style="font-size: 11pt;"&gt;12:&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold; mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font style="font-size: 11pt;"&gt;00hs&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium medium 1pt; border-style: none none solid; border-color: currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font color="#000000"&gt;&lt;font style="font-size: 11pt;"&gt;13&lt;/font&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font style="font-size: 11pt;"&gt;:30hs&lt;/font&gt;&lt;/span&gt;&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: currentcolor black black currentcolor; padding: 0cm 5.4pt; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Almoço&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Sessão &lt;/strong&gt;&lt;a href="http://www.microsoft.com/windowsazure/pt/br"&gt;&lt;strong&gt;Plataforma Windows Azure&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; (transmissão on-line)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Sem sombra de dúvida, a estrela do evento é a &lt;a href="http://www.microsoft.com/windowsazure/pt/br/"&gt;Plataforma Windows Azure&lt;/a&gt;. Procuraremos abordar não apenas, mas essencial, overview da Plataforma Windows Azure, mas também cenários de migração, outras aplicações que podemo ser construídas e principalmente quais os programas e ações da Microsoft para ajudar os parceiros nesta mudança. No momento de preparação, procurei trazer para esta série de palestras o time da Microsoft que tem experiência em campo (seja técnico ou comercial).&lt;/p&gt;  &lt;table style="border: currentcolor; line-height: normal; list-style-type: disc; border-collapse: collapse; mso-border-themecolor: text1; mso-border-alt: solid black 1.0pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt;" class="MsoTableLightList" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes;"&gt;       &lt;td style="background: black; border-width: 1pt medium medium 1pt; border-style: solid none none solid; border-color: black currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-left-themecolor: text1; mso-background-themecolor: text1;" valign="top" width="402" colspan="2"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 5;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="mso-themecolor: background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Horário&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="background: black; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-background-themecolor: text1; mso-border-themecolor: text1;" valign="top" rowspan="2" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="mso-themecolor: background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Título&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 0;"&gt;       &lt;td style="background: black; border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-background-themecolor: text1; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Início&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="background: black; border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-background-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Fim&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;13:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;14:30hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Conheça a Plataforma Windows Azure&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;14:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:10hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Programas e Recursos para Parceiros&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:10hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold; mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:30hs&lt;/font&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Break&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;16:40hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Cenários de migração&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 5;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;16:40hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:20hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Outros cenários de aplicações&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 6;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:20hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:30hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Encerramento&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 7; mso-yfti-lastrow: yes;"&gt;       &lt;td style="border-width: medium medium 1pt 1pt; border-style: none none solid solid; border-color: currentcolor currentcolor black black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium medium 1pt; border-style: none none solid; border-color: currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;18:00hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt 1pt medium; border-style: none solid solid none; border-color: currentcolor black black currentcolor; padding: 0cm 5.4pt; mso-border-bottom-themecolor: text1; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Sessão Geral para Perguntas e Respostas&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;&lt;strong&gt;Sessão &lt;/strong&gt;&lt;a href="http://www.microsoft.com/pt-br/windows/windowsintune/pc-management.aspx"&gt;&lt;strong&gt;Windows Intune&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; (sem transmissão on-line)&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;O Windows Intune é uma solução abrangente que reúne serviços em nuvem e uma assinatura de atualização para o sistema operacional Windows 7 para ajudar a dinamizar a segurança e o gerenciamento de computadores. Utilize o poder dos serviços e o software Windows Intune para desenvolver seus negócios e proporcionar ainda mais valor aos seus clientes—a um custo mais baixo para você.&lt;/p&gt;  &lt;table style="border: currentcolor; line-height: normal; list-style-type: disc; border-collapse: collapse; mso-border-themecolor: text1; mso-border-alt: solid black 1.0pt; mso-yfti-tbllook: 1184; mso-padding-alt: 0cm 5.4pt 0cm 5.4pt;" class="MsoTableLightList" border="1" cellspacing="0" cellpadding="0"&gt;&lt;tbody&gt;     &lt;tr style="mso-yfti-irow: -1; mso-yfti-firstrow: yes;"&gt;       &lt;td style="background: black; border-width: 1pt medium medium 1pt; border-style: solid none none solid; border-color: black currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-left-themecolor: text1; mso-background-themecolor: text1;" valign="top" width="402" colspan="2"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 5;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="mso-themecolor: background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Horário&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="background: black; border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-background-themecolor: text1; mso-border-themecolor: text1;" valign="top" rowspan="2" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 1;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;span style="mso-themecolor: background1;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Título&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 0;"&gt;       &lt;td style="background: black; border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-background-themecolor: text1; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal" align="center"&gt;&lt;b&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Início&lt;/font&gt;&lt;/font&gt;&lt;/b&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="background: black; border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-background-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal" align="center"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#ffffff"&gt;Fim&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 1;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;13:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;14:30hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Conheça o Windows Intune&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 2;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:10hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:30hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Break&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 3;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;15:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;span style="mso-bidi-font-weight: bold; mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;16:30hs&lt;/font&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;/span&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Programas e Recursos para Parceiros&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 4;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;16:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:20hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Hands on e Demos&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 5;"&gt;       &lt;td style="border-width: medium medium medium 1pt; border-style: none none none solid; border-color: currentcolor currentcolor currentcolor black; padding: 0cm 5.4pt; mso-border-left-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 4;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:20hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="padding: 0cm 5.4pt; border: currentcolor;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:30hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: medium 1pt medium medium; border-style: none solid none none; border-color: currentcolor black currentcolor currentcolor; padding: 0cm 5.4pt; mso-border-right-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Encerramento&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;      &lt;tr style="mso-yfti-irow: 6; mso-yfti-lastrow: yes;"&gt;       &lt;td style="border-width: 1pt medium 1pt 1pt; border-style: solid none solid solid; border-color: black currentcolor black black; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 68;" class="MsoNormal"&gt;&lt;span style="mso-bidi-font-weight: bold;"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;17:30hs&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt medium; border-style: solid none; border-color: black currentcolor; padding: 0cm 5.4pt; mso-border-top-themecolor: text1; mso-border-bottom-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;18:00hs&lt;/font&gt;&lt;/font&gt;&lt;/p&gt;       &lt;/td&gt;        &lt;td style="border-width: 1pt 1pt 1pt medium; border-style: solid solid solid none; border-color: black black black currentcolor; padding: 0cm 5.4pt; mso-border-themecolor: text1;" valign="top" width="201"&gt;         &lt;p style="margin: 0cm 0cm 0pt; line-height: normal; mso-yfti-cnfc: 64;" class="MsoNormal"&gt;&lt;span style="mso-ansi-language: pt-br;" lang="PT-BR"&gt;&lt;font face="Calibri"&gt;&lt;font style="font-size: 11pt;" color="#000000"&gt;Sessão Geral para Perguntas e Respostas&lt;/font&gt;&lt;/font&gt;&lt;/span&gt;&lt;/p&gt;       &lt;/td&gt;     &lt;/tr&gt;   &lt;/tbody&gt;&lt;/table&gt;  &lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10240093" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/ISV/">ISV</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Evento/">Evento</category></item><item><title>Centro de Treinamento de Windows Azure no MSDN em Português</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/10/19/centro-de-treinamento-de-windows-azure-no-msdn-em-portugu-234-s.aspx</link><pubDate>Tue, 18 Oct 2011 23:05:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10227230</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10227230</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/10/19/centro-de-treinamento-de-windows-azure-no-msdn-em-portugu-234-s.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Esse será um post rápido, gostaria de divulgar o centro de treinamento de Windows Azure em português que foi recentemente lançado no MSDN Brasil.&lt;/p&gt;  &lt;p&gt;O link para acesso é &lt;a href="https://bitly.com/CentroTreinamentoAzure"&gt;https://bitly.com/CentroTreinamentoAzure&lt;/a&gt;. Fiquem à vontade para divulgar.&lt;/p&gt;  &lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10227230" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Dica+R_E100_pida/">Dica Rápida</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/MSDN/">MSDN</category></item><item><title>Dúvidas sobre custos da Plataforma Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/10/18/d-250-vidas-sobre-custos-da-plataforma-windows-azure.aspx</link><pubDate>Tue, 18 Oct 2011 13:00:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10226923</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10226923</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/10/18/d-250-vidas-sobre-custos-da-plataforma-windows-azure.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Resolvi escrever este post porque muitas pessoas tem dúvidas sobre o funcionamento do modelo de cobrança da Plataforma Windows Azure, muitos acabam tomando um susto no recebimento da conta de uso da plataforma e acabam reclamando que existem custos “escondidos” no seu uso e acabam criando alguns mitos. Notem que coloquei o “escondido” entre aspas, pelo fato de na verdade não termos nada escondido, tudo está definido no &lt;a href="http://www.microsoft.com/windowsazure/offers/MS-AZR-0003P?currency-locale=en-us"&gt;modelo de consumo&lt;/a&gt; (usei como exemplo o modelo de pague pelo uso, mas também existe modelo de assinatura pré-definida, da plataforma.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Windows Azure Computing&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O primeiro ponto está no modelo de custo das horas computacionais. As horas nos serviços de computação do Windows Azure são computadas por core alocado por intervalos de hora de relógio e &lt;font color="#ff0000" size="4"&gt;&lt;strong&gt;NÃO&lt;/strong&gt;&lt;/font&gt;, favor notar a ênfase, no percentual do uso das CPUs. No Windows Azure, os cores são dedicados para o seu uso e não importa o quanto ele está sendo utilizado de CPU que o preço será o mesmo. Na verdade, o seu ambiente pode até estar desligado que o preço será o mesmo. Quando um ambiente é desligado, a console de gerenciamento exibe a mensagem de aviso abaixo:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1401.image_5F00_3A8A77F6.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6204.image_5F00_thumb_5F00_6B3D7FA1.png" width="510" height="34" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Logo, quando você subir várias instâncias para testar a escalabilidade da sua solução no Windows Azure, lembre-se de reduzir a quantidade das instâncias assim que terminar os testes, ou então elas continuarão sendo computadas no uso da plataforma.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Dica:&lt;/strong&gt; existe uma ferramenta no Codeplex chamada &lt;a href="http://greybox.codeplex.com/"&gt;Greybox&lt;/a&gt; que permite monitorar e remover deployments no Windows Azure. Muito útil na fase de desenvolvimento, evitando que um ambiente fique simplesmente esquecido de um dia para o outro sem ninguém utilizar.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Windows Azure Storage&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O segundo ponto de atenção está na questão das transações do Windows Azure Storage. Elas custam US$ 0,01 (um centavo de dólar) por 10.000 transações. Analisado individualmente, é um custo relativamente baixo, mas se a aplicação não for escrita com isso em mente pode representar problemas no longo prazo. Um cenário bastante comum de uso do Windows Azure Storage é o uso de Queues em uma Worker Role. As Worker Roles são implementadas com um loop infinito para fazer o processamento da aplicação, no longo prazo a conta deste tipo de aplicação fica grande.&lt;/p&gt;  &lt;p align="justify"&gt;Uma sugestão para aplicações que fazem uso de Queues é utilizar um &lt;em&gt;Thread.Sleep(intervalo)&lt;/em&gt; nos momentos que as filas ficam vazias. Recomendo fortemente a leitura do artigo &lt;a href="http://windowsazurecat.com/2010/12/best-practices-for-maximizing-scalability-and-cost-effectiveness-of-queue-based-messaging-solutions-on-windows-azure/"&gt;Best Practices for Maximizing Scalability and Cost Effectiveness of Queue-Based Messaging Solutions on Windows Azure&lt;/a&gt;, que explica como organizar suas Worker Roles sobre o ponto de vista de custo e traz até um exemplo de uso bastante completo.&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Espero que o post tenha ajudado à esclarecer um pouco o modelo de cobrança de alguns dos componentes do Windows Azure, qualquer dúvida comente no post e até a próxima.&lt;/p&gt;  &lt;p align="justify"&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10226923" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Migrando uma aplicação ASP.NET MVC 3 para Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/08/02/migrando-uma-aplica-231-227-o-asp-net-mvc-3-para-windows-azure.aspx</link><pubDate>Tue, 02 Aug 2011 17:25:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10190506</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10190506</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/08/02/migrando-uma-aplica-231-227-o-asp-net-mvc-3-para-windows-azure.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Continuando com o tema sobre migração de aplicações para Windows Azure, neste post vou falar um pouco sobre a migração de uma aplicação ASP.NET MVC 3 para Windows Azure. No processo de migração, alguns passos extras são necessários, pois, nativamente os SDKs do Windows Azure (pelo menos até a versão 1.4.1, a mais atual da data de escrita deste post) suportam somente a versão 2.0 do ASP.NET MVC.&lt;/p&gt;  &lt;p align="justify"&gt;O procedimento inicial de migração é bem similar aos passos feitos na &lt;a href="http://blogs.msdn.com/b/rafaelgodinho/archive/2011/06/29/migrando-asp-net-web-applications-para-o-windows-azure.aspx"&gt;migração de uma web application ASP.NET&lt;/a&gt;, resumidamente:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Adicionar um projeto vazio de Windows Azure na solução; &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Adicionar referências para os assemblies do Windows Azure no projeto ASP.NET; &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Adicionar uma classe que herde de RoleEntryPoint no projeto ASP.NET; &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Associar uma Web Role com o projeto ASP.NET existente. &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Depois disso, é necessário adicionar os assemblies do ASP.NET MVC 3 na sua solução antes de fazer o deploy, na verdade mesmo em um ambiente onpremise sem o ASP.NET MVC 3 instalado você pode reproduzir algumas das técnicas abaixo.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;font size="4"&gt;Técnica 1 – Adicionar manualmente referências para os assemblies na sua aplicação&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Para todos os assemblies do ASP.NET MVC 3 você precisa adicionar uma referência na sua aplicação e escolher a opção “Copy Local = True” nas propriedades do assembly. &lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Microsoft.Web.Infrastructure &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;System.Web.Helpers &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;System.Web.Mvc &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;System.Web.Razor &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;System.Web.WebPages &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;System.Web.WebPages.Deployment &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;System.Web.WebPages.Razor &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;É importante notar que um projeto ASP.NET MVC 3 já traz referências para a maioria dos assemblies acima, mas não para todos. Você precisa manualmente adicionar os assemblies faltantes.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;font size="4"&gt;Técnica 2 – Adicionar via ferramenta referências para os assemblies na sua aplicação&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O &lt;a href="http://www.microsoft.com/download/en/details.aspx?id=1491"&gt;ASP.NET MVC 3 Tools Update&lt;/a&gt; instalado traz uma novidade no Visual Studio 2010 para adicionar as referências para o ASP.NET MVC 3 via ferramenta. Para isso clique com o botão direito no seu projeto MVC e escolha a opção “Add Deployable Dependencies…” e escolha o que vc precisa.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7587.image_5F00_30299188.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/2816.image_5F00_thumb_5F00_4DBB6C87.png" width="410" height="472" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7181.2_5F00_32366A84.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="2" border="0" alt="2" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/4370.2_5F00_thumb_5F00_5AF1CFCD.png" width="501" height="233" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;&lt;font size="4"&gt;Técnica 3 – Instalar o ASP.NET MVC 3 através de seu setup utilizando uma startup task&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Eu gosto de organizar minhas startup tasks em uma pasta chamada startup dentro das minhas roles, nesta pasta eu geralmente adiciono o setup necessário e um arquivo do tipo batch (detalhe importante: o batch precisa ser salvo no formato ANSI) para iniciar o setup com todos os parâmetros e ambos precisam ter a propriedade “Copy to Output Directory = Copy always” definida. Neste caso o setup é o &lt;a href="http://download.microsoft.com/download/3/4/A/34A8A203-BD4B-44A2-AF8B-CA2CFCB311CC/AspNetMVC3Setup.exe"&gt;setup do ASP.NET MVC 3&lt;/a&gt;, e o meu batch chamei de InstallMVC.cmd, cujo conteúdo está abaixo:&lt;/p&gt;  &lt;blockquote&gt;   &lt;p align="justify"&gt;%~dp0AspNetMVC3Setup.exe /q /log %~dp0mvc3_install.htm      &lt;br /&gt;exit /b 0&lt;/p&gt; &lt;/blockquote&gt;  &lt;p align="justify"&gt;Na sintaxe batch o termo “%~dp0” indica o diretório corrente e os outros parâmetros indicam com o ASP.NET MVC 3 deve ser instalado. Note o “/q” indicando o uso de “Quiet Mode” para não exibir interface com o usuário. Afinal, ninguém vai clicar next, next e finish pra você no Windows Azure.&lt;/p&gt;  &lt;p align="justify"&gt;O último passo é configurar o arquivo ServiceDefinition.csdef para chamar o InstallMVC.cmd.&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;WebRole &lt;/span&gt;&lt;span style="color: red"&gt;name&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;MvcApplication3&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Startup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Task &lt;/span&gt;&lt;span style="color: red"&gt;commandLine&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;Startup\InstallMVC.cmd&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;executionContext&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;elevated&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Startup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;&lt;strong&gt;&lt;font size="4"&gt;Técnica 4 – Instalar o ASP.NET MVC 3 através do WebPI utilizando uma startup task&lt;/font&gt;&lt;/strong&gt;&lt;/p&gt;

&lt;p align="justify"&gt;Muita gente não sabe, mas existe uma versão do Web Platform Installer (WebPI) para rodar em linha de comando, é o chamado &lt;a href="http://go.microsoft.com/?linkid=9752821"&gt;WebPICmdLine&lt;/a&gt;. Ele pode ser utilizado para instalar aplicações e componentes de maneira similar à versão visual do WebPI. Depois de feito o download, extraia o conteúdo do pacote e adicione os 3 arquivos .dll e o arquivo .exe na pasta startup, de maneira similar à técnica 3 (lembre-se de modificar a propriedade “Copy to Output Directory = Copy always” para todos os arquivos.&lt;/p&gt;

&lt;p align="justify"&gt;Depois o arquivo batch que será chamado como uma startup task deverá ter o seguinte conteúdo:&lt;/p&gt;

&lt;blockquote&gt;
  &lt;p align="justify"&gt;md &amp;quot;%~dp0appdata&amp;quot; 
    &lt;br /&gt;reg add &amp;quot;hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders&amp;quot; /v &amp;quot;Local AppData&amp;quot; /t REG_EXPAND_SZ /d &amp;quot;%~dp0appdata&amp;quot; /f 

    &lt;br /&gt;&amp;quot;%~dp0webpicmdline&amp;quot; /AcceptEula /Products:MVC3 &amp;gt;&amp;gt;log.txt 2&amp;gt;&amp;gt;err.txt 

    &lt;br /&gt;reg add &amp;quot;hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders&amp;quot; /v &amp;quot;Local AppData&amp;quot; /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f 

    &lt;br /&gt;exit /b 0&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p align="justify"&gt;O conteúdo deve ser executado em 5 linhas no total, por favor, corrija as quebras de linha manualmente.&lt;/p&gt;

&lt;p align="justify"&gt;Em uma primeira impressão pode ser complicado entender o script acima, em linhas gerais ele modifica o endereço do “Local AppData” do usuário, executa a instalação e depois retorna o “Local AppData” para o local padrão. &lt;/p&gt;

&lt;p align="justify"&gt;Toda essa alteração é necessária por uma combinação de fatores: uma startup task rodando de maneira elevada é executada como Local System Account e o local do perfil deste usuário fica na pasta System32. O WebPICmdLine está compilado para Any CPU e no Windows Azure será executado como 64bits (lembrete: todas as máquinas do Windows Azure executam como 64 bits) mas o setup do ASP.NET MVC3, que o WebPI faz download e salva na pasta do perfil do usuário, executa como 32bits. Em um ambiente 64bits um processo 32bits não enxerga a pasta System32, somente a pasta SysWOW64. Logo, quando o setup do ASP.NET MVC3 for executado ele não consegue se encontrar para extrair o conteúdo que precisa ser instalado e acaba falhando. Mudando a pasta “Local AppData” todo mundo consegue se enxergar e a coisa toda funciona \o/.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10190506" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/MVC/">MVC</category></item><item><title>Migrando o seu banco de dados SQL Server para SQL Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/07/20/migrando-o-seu-banco-de-dados-sql-server-para-sql-azure.aspx</link><pubDate>Wed, 20 Jul 2011 20:03:44 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10188316</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10188316</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/07/20/migrando-o-seu-banco-de-dados-sql-server-para-sql-azure.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Tempos atrás fiz um post sobre como &lt;a href="http://blogs.msdn.com/b/rafaelgodinho/archive/2011/06/29/migrando-asp-net-web-applications-para-o-windows-azure.aspx"&gt;migrar uma aplicação ASP.NET para Windows Azure&lt;/a&gt;. Hoje vou falar sobre um cenário complementar, como migrar o banco de dados SQL Server de uma aplicação para o ambiente do SQL Azure.&lt;/p&gt;  &lt;p align="justify"&gt;Primeiro é necessário analisar qual o objetivo da migração, ou seja, migrar os objetos, dados ou ambos. Para migração de objetos, uma abordagem pode ser exportar via o SQL Server Management Studio (SSMS) do SQL 2008 R2 um script no formato do SQL Azure. Para migração de dados, podemos utilizar um pacote do SQL Server Integration Services (SSIS) ou até mesmo o utilitário BCP de linha de comando. Quando é necessário migrar objetos e dados, uma boa opção pode ser utilizar o Import/Export Wizard do SQL Server.&lt;/p&gt;  &lt;p align="justify"&gt;No Windows Azure Platform Training Course é possível encontrar o lab &lt;a href="http://msdn.microsoft.com/en-us/WAZPlatformTrainingCourse_MigratingDatabasestoSQLAzure"&gt;Migrating Databases do SQL Azure&lt;/a&gt; que demonstra exatamente como realizar a migração exportando o script dos objetos com o SSMS e migrando os dados com o BCP.&lt;/p&gt;  &lt;p align="justify"&gt;Porém, neste post quero mostrar para vocês uma outra possibilidade. Estou falando do &lt;a href="http://sqlazuremw.codeplex.com/"&gt;SQL Azure Migration Wizard&lt;/a&gt; (SAMW), uma ferramenta open source mantida pela comunidade e disponível no CodePlex. Neste post estou utilizando a versão 3.7.4 da ferramenta.&lt;/p&gt;  &lt;p align="justify"&gt;Depois de realizar download e executar o SAMW devemos escolher a opção SQL Database e clicar em next.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/0474.image_5F00_4428F878.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1805.image_5F00_thumb_5F00_52A3F49D.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Depois disso é necessário fornecer a conexão do servidor de origem dos dados.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6114.image_5F00_6EF136BD.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/0827.image_5F00_thumb_5F00_1AC18AAD.png" width="356" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Em seguida, é necessário escolher o banco de dados de origem, estou utilizando o banco da aplicação que criei durante o Roadshow da Microsoft que fizemos este ano.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5102.image_5F00_51BB68E6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1401.image_5F00_thumb_5F00_286420E8.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Depois é necessário informar quais objetos serão migrados, vou deixar a opção padrão e migrar todos.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/8764.image_5F00_2C8DF8AD.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7183.image_5F00_thumb_5F00_57F219A7.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O SAMW mostra um resumo do que vai ser realizado. Se vc quiser mudar algo, pode clicar no back e realizar as alterações.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/2577.image_5F00_03563AA2.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/2084.image_5F00_thumb_5F00_4C2CACA8.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Ele solicita a confirmação para gerar o script&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/4478.image_5F00_22D564AA.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; margin: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6786.image_5F00_thumb_5F00_4EA5B899.png" width="244" height="153" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;E depois retorna o resultado do processamento com o script de criação dos objetos e também dados no formato do BCP (sim, ele não reinventa a roda e aproveita para utilizar o BCP) que foram exportados e que agora devem ser importados.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/3005.image_5F00_65848A15.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1854.image_5F00_thumb_5F00_02AA3220.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Em seguida, devemos fornecer as informações para conexão com o SQL Azure&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/4087.image_5F00_5D7CC1E6.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/2425.image_5F00_thumb_5F00_1476A020.png" width="356" height="417" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O próximo passo é fornecer qual banco de dados será utilizado como destino dos objetos e dados, note que também existe a possibilidade de criar um novo banco de dados.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6646.image_5F00_1259A157.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/8780.image_5F00_thumb_5F00_4BFC3B41.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O SAMW solicita confirmação para execução do script.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6644.image_5F00_4D7D5755.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7536.image_5F00_thumb_5F00_599ED17C.png" width="337" height="175" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Ele executa os scripts de criação dos objetos e também comandos BCP para importação dos dados.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/8780.image_5F00_7EBC1BE8.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/7723.image_5F00_thumb_5F00_2294CD76.png" width="436" height="484" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Espero que o post tenha ajudado e com certeza o SAMW é uma ferramenta que vale a pena ter no seu toolkit.&lt;/p&gt;  &lt;p align="justify"&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10188316" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/SQL+Azure/">SQL Azure</category></item><item><title>Apresentação sobre criação de aplicações com baixa latência e alta escala com Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/07/15/apresenta-231-227-o-sobre-cria-231-227-o-de-aplica-231-245-es-com-baixa-lat-234-ncia-e-alta-escala-com-windows-azure.aspx</link><pubDate>Fri, 15 Jul 2011 22:11:21 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10187067</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10187067</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/07/15/apresenta-231-227-o-sobre-cria-231-227-o-de-aplica-231-245-es-com-baixa-lat-234-ncia-e-alta-escala-com-windows-azure.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;No início deste mês fiz uma apresentação no evento The Developers Conference em São Paulo sobre como criar aplicações de baixa latência e alta escala com o Windows Azure.&lt;/p&gt;  &lt;p&gt;Quem tiver interesse, a apresentação e o código fonte estão abaixo.&lt;/p&gt;  &lt;p&gt;&lt;iframe height="327" src="http://r.office.microsoft.com/r/rlidPowerPointEmbed?p1=1&amp;amp;p2=1&amp;amp;p3=SD3573BA33315680F9!442&amp;amp;p4=&amp;amp;kip=1" frameborder="0" width="402" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;  &lt;p&gt;&lt;iframe style="padding-bottom: 0px; background-color: #fcfcfc; padding-left: 0px; width: 98px; padding-right: 0px; height: 115px; padding-top: 0px" title="Preview" marginheight="0" src="https://skydrive.live.com/embedicon.aspx/P%c3%bablico/BaixaLatenciaAltaEscala.zip?cid=3573ba33315680f9&amp;amp;sc=documents" frameborder="0" marginwidth="0" scrolling="no"&gt;&lt;/iframe&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10187067" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Migrando ASP.NET Web Applications para o Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/06/29/migrando-asp-net-web-applications-para-o-windows-azure.aspx</link><pubDate>Wed, 29 Jun 2011 19:20:26 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10181556</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10181556</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/06/29/migrando-asp-net-web-applications-para-o-windows-azure.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Hoje gostaria de discutir uma solução para realizar a migração de uma ASP.NET Web Application para o Windows Azure. Com os passos abaixo é possível reaproveitar o seu projeto, sem a necessidade de criar um novo projeto e migrar todo o código fonte. Então vou iniciar com uma solução no Visual Studio 2010 contendo apenas um projeto do tipo ASP.NET Web Application, conforme print abaixo:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/3010.1_5F00_6F8264A3.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="1" border="0" alt="1" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1854.1_5F00_thumb_5F00_1FC9395A.png" width="284" height="288" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O próximo passo é adicionar um novo projeto &lt;strong&gt;VAZIO &lt;/strong&gt;de Windows Azure na sua solução, é só clicar OK e não selecionar nenhum tipo de role.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5557.3_5F00_7DFD60C8.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="3" border="0" alt="3" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6644.3_5F00_thumb_5F00_09B2A7FB.png" width="516" height="323" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Em seguida é necessário adicionar 3 referências para assemblies do Windows Azure no seu projeto ASP.NET:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;     &lt;div align="justify"&gt;Microsoft.WindowsAzure.Diagnostics &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Microsoft.WindowsAzure.ServiceRuntime &lt;/div&gt;   &lt;/li&gt;    &lt;li&gt;     &lt;div align="justify"&gt;Microsoft.WindowsAzure.StorageClient &lt;/div&gt;   &lt;/li&gt; &lt;/ul&gt;  &lt;p align="justify"&gt;Depois, é necessário adicionar uma classe que herde de RoleEntryPoint no seu projeto ASP.NET, no meu caso chamei de WebRole.cs:&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;using &lt;/span&gt;System;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Collections.Generic;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Linq;
&lt;span style="color: blue"&gt;using &lt;/span&gt;System.Web;
&lt;span style="color: blue"&gt;using &lt;/span&gt;Microsoft.WindowsAzure.ServiceRuntime;

&lt;span style="color: blue"&gt;namespace &lt;/span&gt;WebApplication
{
    &lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;WebRole &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;RoleEntryPoint
    &lt;/span&gt;{
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;No final seu projeto ASP.NET deve ficar similar ao print abaixo:&lt;/p&gt;

&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/4174.8_5F00_266C1D10.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="8" border="0" alt="8" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/0361.8_5F00_thumb_5F00_0FC9CEC9.png" width="311" height="601" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p align="justify"&gt;Neste ponto as alterações necessárias no projeto ASP.NET foram finalizadas e agora é o momento de associá-lo ao projeto de Windows Azure. Para isso, devemos clicar com o botão direito em Roles e em seguida escolher a opção “Add/Web Role Project in solution…”, conforme print abaixo:&lt;/p&gt;

&lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;

&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/6237.6_5F00_14CC0C78.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="6" border="0" alt="6" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/5732.6_5F00_thumb_5F00_04DCC7B4.png" width="448" height="394" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p align="justify"&gt;O próximo passo é escolher o projeto que deve ser associado na janela que é apresentada.&lt;/p&gt;

&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/1832.7_5F00_36F3F231.png"&gt;&lt;img style="background-image: none; border-bottom: 0px; border-left: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top: 0px; border-right: 0px; padding-top: 0px" title="7" border="0" alt="7" src="http://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-01-08-58-metablogapi/8284.7_5F00_thumb_5F00_34D6F368.png" width="482" height="408" /&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p align="justify"&gt;À partir deste ponto a infraestrutura do Visual Studio está migrada para utilizar um projeto de Windows Azure, agora é só começar a testar e depurar.&lt;/p&gt;

&lt;p align="justify"&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10181556" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Treinamento online sobre desenvolvimento para plataforma Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/06/21/treinamento-online-sobre-desenvolvimento-para-plataforma-windows-azure.aspx</link><pubDate>Tue, 21 Jun 2011 17:31:24 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10177506</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10177506</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/06/21/treinamento-online-sobre-desenvolvimento-para-plataforma-windows-azure.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Amanhã (22/06/2011) irei ministrar um treinamento online sobre desenvolvimento para a plataforma Windows Azure no portal iMasters (atenção, não é um webcast do MSDN).&lt;/p&gt;  &lt;p&gt;Para se inscrever acesse o &lt;a href="http://pro.imasters.com.br/distancia/cursos/desenvolvimento-para-a-plataforma-windows-azure/"&gt;link&lt;/a&gt;. Vejo vocês amanhã!&lt;/p&gt;  &lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10177506" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Webcast/">Webcast</category></item><item><title>Material de estudo para desenvolvedores</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/05/30/material-de-estudo-para-desenvolvedores.aspx</link><pubDate>Mon, 30 May 2011 20:11:33 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10169700</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10169700</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/05/30/material-de-estudo-para-desenvolvedores.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Resolvi trazer uma série de links com muita informação para estudo, com training kits para download e também Hands On Labs.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83-B309-53B7B77EDF78&amp;amp;displaylang=en"&gt;Windows Azure Platform Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=ca23285f-bab8-47fa-b364-11553e076a9a"&gt;Windows Phone 7 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en"&gt;VisualStudio 2010 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://channel9.msdn.com/learn/courses/Silverlight4/"&gt;Silverlight 4 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?familyid=83A80A0F-0906-4D7D-98E1-3DD6F58FF059&amp;amp;displaylang=en"&gt;SharePoint 2010 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=b90fadab-f4f9-4452-aa61-ed7bd5d8111e"&gt;Office 2010 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?FamilyID=1c333f06-fadb-4d93-9c80-402621c600e7&amp;amp;displaylang=en"&gt;Windows 7 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=fffaad6a-0153-4d41-b289-a3ed1d637c0d"&gt;SQL Server 2008 R2 Training Kit&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://windowsclient.net/learn/"&gt;Labs de Windows Client&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/windowsserver/gg675185"&gt;Windows Server AppFabric – Hosting&lt;/a&gt;     &lt;br /&gt;&lt;a href="http://msdn.microsoft.com/en-us/windowsserver/gg675186"&gt;Windows Server AppFabric – Caching&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;[Update 31/05/2011]&lt;/p&gt;  &lt;p&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?displaylang=en&amp;amp;familyid=c8498c9b-a85a-4afa-90c0-593d0e4850cb"&gt;PHP on Windows and SQL Server Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=C3E315FA-94E2-4028-99CB-904369F177C0&amp;amp;displaylang=en"&gt;Identity Developer Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=c48b3eb4-ad4b-461c-9d5a-25f45d949b92&amp;amp;displaylang=en"&gt;Windows Server 2008 R2 Developer Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?familyid=20686A1D-97A8-4F80-BC6A-AE010E085A6E&amp;amp;displaylang=en"&gt;Windows Mobile 6.5 Developer Tool Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ada43555-f785-4553-b5c7-6c17a499a6e0"&gt;SharePoint and Silverlight Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=ac1d8eb5-ac8e-45d5-b1e3-efb8e4e3ebd1"&gt;Visual Studio LightSwitch Beta 2 Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=38c2ccfc-510c-4627-a33c-95e9d19f3478"&gt;BizTalk 2010 Developer Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=0a906559-28bd-4f5d-ac18-f895a200a2a5"&gt;Web Campos Training Kit&lt;/a&gt;    &lt;br /&gt;&lt;/p&gt;  &lt;p&gt;Se vc lembrar de algum outro material de estudo, deixe seu comentário que eu atualizado a lista.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10169700" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Material+de+Estudo/">Material de Estudo</category></item><item><title>Série de vídeos para ISVs entenderam as transformações e oportunidades com o Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/05/27/s-233-rie-de-v-237-deos-para-isvs-entenderam-as-transforma-231-245-es-e-oportunidades-com-o-windows-azure.aspx</link><pubDate>Thu, 26 May 2011 23:36:48 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10168872</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10168872</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/05/27/s-233-rie-de-v-237-deos-para-isvs-entenderam-as-transforma-231-245-es-e-oportunidades-com-o-windows-azure.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Tempo atrás o &lt;a href="http://blogs.msdn.com/b/conde/"&gt;Luciano Condé&lt;/a&gt; fez um &lt;a href="http://blogs.msdn.com/b/conde/archive/2011/05/10/s-233-rie-de-v-237-deos-para-isvs-entenderam-as-transforma-231-245-es-e-oportunidades-com-o-windows-azure.aspx"&gt;post&lt;/a&gt; sobre o tópico e como entendo que é um assunto muito importante estou duplicando o post dele aqui no meu blog. Entendo que faz muito sentido para empresas desenvolvedoras de software que estão avaliando o desenvolvimento para plataforma de cloud.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;O portal &lt;a href="http://www.msdev.com/Default.aspx"&gt;Msdev&lt;/a&gt; publicou uma &lt;a href="http://www.msdev.com/Directory/SeriesDescription.aspx?CourseId=171"&gt;série de vídeos&lt;/a&gt; (média de 30 mins de duração) para que gestores de ISVs (Independent Software Vendors – Vendedores independente de Software) possam entender como a &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Plataforma Windows Azure&lt;/a&gt; gera transformações e cria novas oportunidades de negócios. Os vídeos são bens didáticos e trazem cases e referências para quem precisa entender mais sobre a nuvem e o &lt;a href="http://www.microsoft.com/windowsazure/"&gt;Windows Azure&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Os vídeos estão em inglês, mas você acessar o transcript em português. Eles estão prometendo que em breve teremos voiceover em português. Seguem os links dos vídeos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.msdev.com/Directory/Description.aspx?eventId=1970"&gt;How will cloud services impact your business&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;&lt;em&gt;Transcript: &lt;a href="http://cdn.msdev.com/assets/Saas_Webinar_1_Portuguese_Transcript.docx"&gt;Brazilian Portuguese&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.msdev.com/Directory/Description.aspx?eventId=1971"&gt;Cloud services: planning for financial success&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;&lt;em&gt;Transcript: &lt;a href="http://cdn.msdev.com/assets/Saas_Webinar_2_Portuguese_Transcript.docx"&gt;Brazilian Portuguese&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.msdev.com/Directory/Description.aspx?eventId=1972"&gt;Packaging and pricing cloud offerings&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;&lt;em&gt;Transcript: &lt;a href="http://cdn.msdev.com/assets/Saas_Webinar_3_Portuguese_Transcript.docx"&gt;Brazilian Portuguese&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.msdev.com/Directory/Description.aspx?eventId=1973"&gt;Demand generation and cloud services&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;&lt;em&gt;Transcript: &lt;a href="http://cdn.msdev.com/assets/Saas_Webinar_4_Portuguese_Transcript.docx"&gt;Brazilian Portuguese&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt;    &lt;li&gt;&lt;b&gt;&lt;i&gt;&lt;a href="http://www.msdev.com/Directory/Description.aspx?eventId=1974"&gt;Sales and support in the cloud&lt;/a&gt;&lt;/i&gt;&lt;/b&gt;      &lt;ul&gt;       &lt;li&gt;&lt;strong&gt;&lt;em&gt;Transcript: &lt;a href="http://cdn.msdev.com/assets/Saas_Webinar_5_Portuguese_Transcript.docx"&gt;Brazilian Portuguese&lt;/a&gt;&lt;/em&gt;&lt;/strong&gt;&lt;/li&gt;     &lt;/ul&gt;   &lt;/li&gt; &lt;/ul&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10168872" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/ISV/">ISV</category></item><item><title>Webcast - Tire as suas dúvidas sobre o Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/04/30/webcast-tire-as-suas-d-250-vidas-sobre-o-windows-azure.aspx</link><pubDate>Sat, 30 Apr 2011 15:12:38 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10159733</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>2</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10159733</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/04/30/webcast-tire-as-suas-d-250-vidas-sobre-o-windows-azure.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Recentemente a Plataforma Windows Azure fez um ano de disponibilidade no Brasil, mas apesar disso temos notado que ainda existem algumas pessoas com dúvidas e dificuldades sobre o assunto.&lt;/p&gt;  &lt;p&gt;Para tentar sanar essas dificuldades, estamos promovendo um webcast no formato perguntas e respostas no dia 04/05/2011 às 18:00 (horário de Brasília), que terá a participação do &lt;a href="http://blogs.msdn.com/b/otavio/"&gt;Otávio Coelho&lt;/a&gt; e do &lt;a href="http://blogs.msdn.com/b/conde/"&gt;Luciano Condé&lt;/a&gt;, além da minha.&lt;/p&gt;  &lt;p&gt;Para participar, basta se &lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032486096&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;registrar&lt;/a&gt;. &lt;/p&gt;  &lt;p&gt;Outra coisa, se vc tiver alguma dúvida e quiser adiantá-la, deixe um comentário aqui no meu blog que responderemos ao vivo.&lt;/p&gt;  &lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10159733" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Webcast/">Webcast</category></item><item><title>Windows Azure no MPR (Microsoft Platform Ready)</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/04/20/windows-azure-no-mpr-microsoft-platform-ready.aspx</link><pubDate>Wed, 20 Apr 2011 20:51:17 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10156412</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10156412</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/04/20/windows-azure-no-mpr-microsoft-platform-ready.aspx#comments</comments><description>&lt;p&gt;Você que está desenvolvendo aplicações para Windows Azure e tem interesse em buscar algumas informações de divulgação, acho que vale a pena conhecer um pouco do &lt;a href="http://www.microsoftplatformready.com/brasil/home.aspx"&gt;MPR&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;O &lt;a href="http://blogs.msdn.com/b/rogerioc/"&gt;Rogério Cordeiro&lt;/a&gt; fez uma série de posts sobre o assunto entendo que vale a pena de serem lidos:&lt;/p&gt;  &lt;ul&gt;   &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/rogerioc/archive/2011/04/06/windows-azure-no-mpr-parte-1-o-que-233-mpr-microsoft-platform-ready.aspx"&gt;Parte 1 - O que é MPR (Microsoft Platform Ready)?&lt;/a&gt; &lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/rogerioc/archive/2011/04/06/windows-azure-no-mpr-parte-2-como-cadastrar-minha-aplica-231-227-o-azure-no-mpr-microsoft-platform-ready.aspx"&gt;Parte 2 - Como cadastrar minha aplicação Azure no MPR (Microsoft Platform Ready) ?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/rogerioc/archive/2011/04/07/windows-azure-no-mpr-parte-3-como-testar-a-minha-aplica-231-227-o-azure-para-o-mpr-microsoft-platform-ready.aspx"&gt;Parte 3 - Como testar a minha aplicação Azure para o MPR (Microsoft Platform Ready)?&lt;/a&gt;&lt;/li&gt;    &lt;li&gt;&lt;a href="http://blogs.msdn.com/b/rogerioc/archive/2011/04/07/windows-azure-no-mpr-parte-4-como-informar-que-a-minha-aplica-231-227-o-233-compat-237-vel-com-azure-no-mpr-microsoft-platform-ready.aspx"&gt;Parte 4 - Como informar que a minha aplicação é compatível com Azure no MPR (Microsoft Platform Ready)?&lt;/a&gt;&lt;/li&gt; &lt;/ul&gt;  &lt;p&gt;Se vc cadastrou a sua aplicação no MPR, lembre-se de deixar um comentário aqui no blog!&lt;/p&gt;  &lt;p&gt;[]’s   &lt;br /&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10156412" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/MPR/">MPR</category></item><item><title>Processamento assíncrono e queues no Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/04/08/processamento-ass-237-ncrono-e-queues-no-windows-azure.aspx</link><pubDate>Fri, 08 Apr 2011 17:35:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10151480</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10151480</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/04/08/processamento-ass-237-ncrono-e-queues-no-windows-azure.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Hoje vou fazer um post rápido sobre como trabalhar com processamento assíncrono e queues no Windows Azure. Este padrão de processamento assíncrono é muito útil para liberar o processamento do lado do cliente, sem ficar bloqueado esperando algum tipo de retorno e permite a possibilidade de escalar o lado servidor conforme a demanda de processamento de mensagens, geralmente implementado através de um worker role.&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/7120.image_5F00_5D679DC0.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/4405.image_5F00_thumb_5F00_4C33C01D.png" width="476" height="185" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Pela imagem acima, é possível perceber que o padrão consiste de um lado que grava uma mensagem em uma fila e de outro lado que lê esta mensagem para realizar o processamento.&lt;/p&gt;  &lt;p align="justify"&gt;Para gravar a ler a mensagem da fila é necessário utilizar a classe CloudQueueClient, disponível no assembly Microsoft.WindowsAzure.StorageClient. Do lado de quem grava a mensagem, por exemplo, uma Web Role o código utilizado seria similar ao abaixo:&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount &lt;/span&gt;storageAccount = &lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;.Parse(connectionString); 
&lt;span style="color: #2b91af"&gt;CloudQueueClient &lt;/span&gt;queueStorage = storageAccount.CreateCloudQueueClient();
&lt;span style="color: blue"&gt;var &lt;/span&gt;queue = queueStorage.GetQueueReference(queueName.ToLower());
queue.CreateIfNotExist();
&lt;span style="color: blue"&gt;var &lt;/span&gt;message = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudQueueMessage&lt;/span&gt;(conteudoMensagem);
queue.AddMessage(message);&lt;/pre&gt;

&lt;pre class="code"&gt;&amp;#160;&lt;/pre&gt;

&lt;p align="justify"&gt;Já para ler a mensagem, o Worker Role deve ter uma implementação muito parecida com a abaixo, tratando detalhes da queue no método OnStart e tratando as mensagens no método Run.&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&lt;/span&gt;&amp;#160;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public override bool &lt;/span&gt;OnStart()
{
    &lt;span style="color: green"&gt;// Set the maximum number of concurrent connections 
    &lt;/span&gt;&lt;span style="color: #2b91af"&gt;ServicePointManager&lt;/span&gt;.DefaultConnectionLimit = 12;

    &lt;span style="color: green"&gt;// read storage account configuration settings
    &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;.SetConfigurationSettingPublisher((configName, configSetter) =&amp;gt;
    {
        configSetter(&lt;span style="color: #2b91af"&gt;RoleEnvironment&lt;/span&gt;.GetConfigurationSettingValue(configName));
    });

    &lt;span style="color: blue"&gt;var &lt;/span&gt;storageAccount = &lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;.FromConfigurationSetting(&lt;span style="color: #a31515"&gt;&amp;quot;WindowsAzureStorageConnectionString&amp;quot;&lt;/span&gt;);

    &lt;span style="color: green"&gt;// initialize queue storage 
    &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudQueueClient &lt;/span&gt;queueStorage = storageAccount.CreateCloudQueueClient();
    queue = queueStorage.GetQueueReference(&lt;span style="color: #2b91af"&gt;RoleEnvironment&lt;/span&gt;.GetConfigurationSettingValue(&lt;span style="color: #a31515"&gt;&amp;quot;QueueName&amp;quot;&lt;/span&gt;));

    &lt;span style="color: blue"&gt;bool &lt;/span&gt;storageInitialized = &lt;span style="color: blue"&gt;false&lt;/span&gt;;
    &lt;span style="color: blue"&gt;while &lt;/span&gt;(!storageInitialized)
    {
        &lt;span style="color: blue"&gt;try
        &lt;/span&gt;{
            &lt;span style="color: green"&gt;// create the message queue(s)
            &lt;/span&gt;queue.CreateIfNotExist();

            storageInitialized = &lt;span style="color: blue"&gt;true&lt;/span&gt;;
        }
        &lt;span style="color: blue"&gt;catch &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;StorageClientException &lt;/span&gt;e)
        {
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(e.ErrorCode == &lt;span style="color: #2b91af"&gt;StorageErrorCode&lt;/span&gt;.TransportError)
            {
                &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.TraceError(&lt;span style="color: #a31515"&gt;&amp;quot;Storage services initialization failure. &amp;quot;
                    &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;&amp;quot;Check your storage account configuration settings. If running locally, &amp;quot;
                    &lt;/span&gt;+ &lt;span style="color: #a31515"&gt;&amp;quot;ensure that the Development Storage service is running. Message: '{0}'&amp;quot;&lt;/span&gt;, e.Message);
                System.Threading.&lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(5000);
            }
            &lt;span style="color: blue"&gt;else
            &lt;/span&gt;{
                &lt;span style="color: blue"&gt;throw&lt;/span&gt;;
            }
        }
    }

    &lt;span style="color: blue"&gt;return base&lt;/span&gt;.OnStart();
}&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public override void &lt;/span&gt;Run()
{
    &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.TraceInformation(&lt;span style="color: #a31515"&gt;&amp;quot;Listening for queue messages...&amp;quot;&lt;/span&gt;);

    &lt;span style="color: blue"&gt;while &lt;/span&gt;(&lt;span style="color: blue"&gt;true&lt;/span&gt;)
    {
        &lt;span style="color: blue"&gt;try
        &lt;/span&gt;{
            &lt;span style="color: green"&gt;// retrieve a new message from the queue
            &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudQueueMessage &lt;/span&gt;msg = queue.GetMessage();
            &lt;span style="color: blue"&gt;if &lt;/span&gt;(msg != &lt;span style="color: blue"&gt;null&lt;/span&gt;)
            {
                &lt;span style="color: green"&gt;// parse message retrieved from queue
                &lt;/span&gt;&lt;span style="color: blue"&gt;var &lt;/span&gt;messageContent = msg.AsString;

                ProcessMessage(messageContent);

                &lt;span style="color: green"&gt;// remove message from queue
                &lt;/span&gt;queue.DeleteMessage(msg);
            }
            &lt;span style="color: blue"&gt;else
            &lt;/span&gt;{
                System.Threading.&lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(1000);
            }
        }
        &lt;span style="color: blue"&gt;catch &lt;/span&gt;(&lt;span style="color: #2b91af"&gt;StorageClientException &lt;/span&gt;e)
        {
            &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.TraceError(&lt;span style="color: #a31515"&gt;&amp;quot;Exception when processing queue item. Message: '{0}'&amp;quot;&lt;/span&gt;, e.Message);
            System.Threading.&lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(5000);
        }
    }
}&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10151480" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Fazendo upload de arquivos grandes para o Windows Azure Storage</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/03/30/fazendo-upload-de-arquivos-grandes-para-o-windows-azure-storage.aspx</link><pubDate>Wed, 30 Mar 2011 14:17:29 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10147756</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10147756</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/03/30/fazendo-upload-de-arquivos-grandes-para-o-windows-azure-storage.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Nos meus últimos posts, escrevi sobre como fazer upload de um arquivo para um BLOB do Windows Azure Storage. Nesta ocasião, utilizei o método UploadFile para gravar o arquivo, que apesar de funcionar possui uma limitação de um tamanho máximo de 64 MB para cada arquivo.&lt;/p&gt;  &lt;p&gt;No post de hoje vou falar um pouco sobre como fazer upload de arquivos maiores que 64 MB. Para fazer isso, devemos utilizar os métodos PutBlock e PutBlockList de um objeto do tipo CloudBlockBlob. O método PutBlock deve ser utilizado para subir trechos do arquivo, sendo que cada trecho pode ter o tamanho máximo de 4 MB. Já o método PutBlockList deve ser utilizado para efetivar a gravação dos blocos , como também a sua sequência.&lt;/p&gt;  &lt;p&gt;A combinação desses métodos permite que o upload de um arquivo para um BLOB possa ser interrompido para posteriormente ser retomado, ou até mesmo que vários blocos possam ser enviados de maneira paralela ou sem ordenação, pois ela só é definida ao chamar o método PutBlockList.&lt;/p&gt;  &lt;p&gt;Abaixo fiz um pequeno algoritmo para subir trechos de 1 MB de um arquivo para um BLOB.&lt;/p&gt;  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private static void &lt;/span&gt;PutBlocks(&lt;span style="color: blue"&gt;string &lt;/span&gt;filePath, &lt;span style="color: #2b91af"&gt;CloudBlockBlob &lt;/span&gt;blob)
{
    &lt;span style="color: blue"&gt;int &lt;/span&gt;blockId = 0;
    &lt;span style="color: blue"&gt;const int &lt;/span&gt;blockSize = 1024 * 1024; &lt;span style="color: green"&gt;// 1 MB
    &lt;/span&gt;&lt;span style="color: blue"&gt;byte&lt;/span&gt;[] blockContent = &lt;span style="color: blue"&gt;new byte&lt;/span&gt;[blockSize];
    &lt;span style="color: #2b91af"&gt;FileStream &lt;/span&gt;file = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;FileStream&lt;/span&gt;(filePath, &lt;span style="color: #2b91af"&gt;FileMode&lt;/span&gt;.Open);
    &lt;span style="color: blue"&gt;int &lt;/span&gt;bytesRead = 0;
    &lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt; blockList = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;List&lt;/span&gt;&amp;lt;&lt;span style="color: blue"&gt;string&lt;/span&gt;&amp;gt;();

    &lt;span style="color: blue"&gt;while &lt;/span&gt;((bytesRead = file.Read(blockContent, 0, blockSize)) &amp;gt; 0)
    {
        &lt;span style="color: #2b91af"&gt;MemoryStream &lt;/span&gt;ms = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MemoryStream&lt;/span&gt;(blockContent, 0, bytesRead)
        {
            Position = 0 &lt;span style="color: green"&gt;//Move o stream para o início
        &lt;/span&gt;};

        &lt;span style="color: blue"&gt;string &lt;/span&gt;blockId64 = &lt;span style="color: #2b91af"&gt;Convert&lt;/span&gt;.ToBase64String(&lt;span style="color: #2b91af"&gt;BitConverter&lt;/span&gt;.GetBytes(blockId));
        blob.PutBlock(blockId64, ms, &lt;span style="color: blue"&gt;null&lt;/span&gt;);
        blockList.Add(blockId64);

        ms.Close();
        blockId++;
    }

    blob.PutBlockList(blockList);

    file.Close();
}&lt;/pre&gt;

&lt;p&gt;[]’s 
  &lt;br /&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10147756" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Fazendo o upload de arquivo para o Windows Azure BLOB Storage</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/02/20/fazendo-o-upload-de-arquivo-arquivo-para-o-windows-azure-blob-storage.aspx</link><pubDate>Sun, 20 Feb 2011 21:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10131962</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10131962</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/02/20/fazendo-o-upload-de-arquivo-arquivo-para-o-windows-azure-blob-storage.aspx#comments</comments><description>&lt;p&gt;Ol&amp;aacute; pessoal,&lt;/p&gt;
&lt;p&gt;Tenho notado um cen&amp;aacute;rio bastante comum de aplica&amp;ccedil;&amp;otilde;es que &amp;eacute; a necessidade de fazer upload de informa&amp;ccedil;&amp;otilde;es para o Windows Azure BLOB Storage, ent&amp;atilde;o resolvi fazer um post sobre o assunto mostrando um exemplo e ir explicando os seus passos.&lt;/p&gt;
&lt;p&gt;O primeiro passo necess&amp;aacute;rio &amp;eacute; acessar uma conta do Storage, que &amp;eacute; feito conforme abaixo:&lt;/p&gt;
&lt;pre class="code"&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount &lt;/span&gt;storageAccount = &lt;br /&gt;    &lt;span style="color: #2b91af"&gt;CloudStorageAccount&lt;/span&gt;.Parse(connectionString);&lt;/pre&gt;
&lt;p&gt;Notem que uma connection string &amp;eacute; necess&amp;aacute;ria e ela pode variar de acordo com o ambiente que o c&amp;oacute;digo rodar. No ambiente local de desenvolvimento, utilizando o storage emulator, a string ser&amp;aacute; &amp;ldquo;UseDevelopmentStorage=true&amp;rdquo;. J&amp;aacute; no ambiente de produ&amp;ccedil;&amp;atilde;o do Windows Azure ela deve ter um formato similar ao seguinte &amp;ldquo;DefaultEndpointsProtocol=https;AccountName=&amp;lt;Sua Conta&amp;gt;;AccountKey=&amp;lt;Sua Chave&amp;gt;&amp;rdquo;, notem o uso do https, bastante recomendado para comunica&amp;ccedil;&amp;atilde;o atrav&amp;eacute;s da internet.&lt;/p&gt;
&lt;p&gt;Para saber qual a sua chave de acesso ao Windows Azure Storage, acesse o portal &lt;a href="http://windows.azure.com"&gt;http://windows.azure.com&lt;/a&gt; com a sua conta, escolha a op&amp;ccedil;&amp;atilde;o de storage e visualize a primary ou a secondary key do lado direito, conforme print abaixo:&lt;/p&gt;
&lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/5661.image_5F00_66CE7335.png"&gt;&lt;img height="68" width="440" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/3583.image_5F00_thumb_5F00_20DD4015.png" alt="image" border="0" title="image" style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Depois disso, precisamos instanciar um CloudBlobClient para ter acesso ao Container, que precisamos garantir que existe e depois ter acesso ao Blob em si:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #2b91af"&gt;CloudBlobClient &lt;/span&gt;blobClient = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; storageAccount.CreateCloudBlobClient(); &lt;br /&gt;&lt;span style="color: #2b91af"&gt;CloudBlobContainer &lt;/span&gt;container = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudBlobContainer&lt;/span&gt;(containerUri.ToLower(), blobClient); &lt;br /&gt;&lt;br /&gt;container.CreateIfNotExist(); &lt;br /&gt;&lt;br /&gt;&lt;span style="color: #2b91af"&gt;CloudBlob &lt;/span&gt;blob = container.GetBlobReference( &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;span style="color: #2b91af"&gt;Path&lt;/span&gt;.GetFileName(filePath.ToLower()));&lt;/p&gt;
&lt;p&gt;Notem que chamo o m&amp;eacute;todo CreateIrNotExist do container, assim garanto que ele sempre existir&amp;aacute; antes de tentar gravar algum Blob dentro dele.&lt;/p&gt;
&lt;p&gt;Depois de ter a inst&amp;acirc;ncia do Blob para trabalhar, posso fazer upload algum conte&amp;uacute;do:&lt;/p&gt;
&lt;pre class="code"&gt;blob.UploadFile(filePath);&lt;/pre&gt;
&lt;p&gt;Um ponto importante que precisa ser notado, &amp;eacute; que todas as refer&amp;ecirc;ncias de endere&amp;ccedil;o nos Blobs e Containers precisam ser lowercase, garanto isso chamando o m&amp;eacute;todo ToLower em todas as Uris.&lt;/p&gt;
&lt;p&gt;O c&amp;oacute;digo completo ficaria assim:&lt;/p&gt;
&lt;p&gt;&lt;span style="color: #2b91af"&gt;CloudStorageAccount &lt;/span&gt;storageAccount = &lt;br /&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; CloudStorageAccount&lt;/span&gt;.Parse(connectionString); &lt;br /&gt;&lt;span style="color: #2b91af"&gt;CloudBlobClient &lt;/span&gt;blobClient = &lt;br /&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; storageAccount.CreateCloudBlobClient(); &lt;br /&gt;&lt;span style="color: #2b91af"&gt;CloudBlobContainer &lt;/span&gt;container = &lt;br /&gt;&lt;span style="color: blue"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;CloudBlobContainer&lt;/span&gt;(containerUri.ToLower(), blobClient); &lt;br /&gt;container.CreateIfNotExist(); &lt;br /&gt;&lt;span style="color: #2b91af"&gt;CloudBlob &lt;/span&gt;blob = container.GetBlobReference( &lt;br /&gt;&lt;span style="color: #2b91af"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; Path&lt;/span&gt;.GetFileName(filePath.ToLower())); &lt;br /&gt;blob.UploadFile(filePath);&lt;/p&gt;
&lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10131962" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Hospedando um serviço WCF em uma Worker Role do Windows Azure – Utilizando Endpoints Http</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/02/14/hospedando-um-servi-231-o-wcf-em-uma-worker-role-do-windows-azure-utilizando-endpoints-http.aspx</link><pubDate>Mon, 14 Feb 2011 19:41:36 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10129161</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10129161</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/02/14/hospedando-um-servi-231-o-wcf-em-uma-worker-role-do-windows-azure-utilizando-endpoints-http.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Tempos atrás fiz um post sobre como &lt;a href="http://blogs.msdn.com/b/rafaelgodinho/archive/2010/10/19/hospedando-um-servi-231-o-wcf-em-uma-worker-role-do-windows-azure.aspx"&gt;hospedar serviço WCF utilizando uma Worker Role do Windows Azure&lt;/a&gt; e neste exemplo era utilizado o protocolo Tcp para publicar um endpoint público do Windows Azure e também para estabelecer a conexão entre o cliente e o serviço.&lt;/p&gt;  &lt;p&gt;Entretanto, recebi alguns contatos de pessoas adaptando o exemplo para utilizar o protocolo Http e recebendo mensagens de erro ao abrir o Service Host, a mensagem recebida seguia o padrão abaixo:&lt;/p&gt;  &lt;p&gt;“HTTP could not register URL &lt;a href="http://+:&amp;lt;Porta&amp;gt;/&amp;lt;Endere&amp;ccedil;o&amp;gt;"&gt;/&amp;quot;&amp;gt;/&amp;quot;&amp;gt;/&amp;quot;&amp;gt;http://+:&amp;lt;Porta&amp;gt;/&amp;lt;Endereço&amp;gt;&lt;/a&gt;. Your process does not have access rights to this namespace (see &lt;a href="http://go.microsoft.com/fwlink/?LinkId=70353"&gt;http://go.microsoft.com/fwlink/?LinkId=70353&lt;/a&gt; for details).”&lt;/p&gt;  &lt;p&gt;Isso ocorre porque os usuários normais do Windows não possuem permissão para escutar em portas utilizando o protocolo Http, isso é gerenciado pelo driver Http.Sys. Uma das alternativas para contornar esta restrição é explicitamente dar a permissão para o usuário conseguir abrir uma porta específica Http. No mundo Onpremise, isso é feito utilizando o comando netsh.exe como administrador, mas como podemos fazer com um código executando no Windows Azure?&lt;/p&gt;  &lt;p&gt;A idéia é exatamente a mesma, lembre-se que as máquinas que executam o seu código no Windows Azure são baseadas no Windows Server 2008 e no Windows Server 2008 R2, desta maneira também podemos executar o comando netsh.exe e permitir a abertura da porta Http.&lt;/p&gt;  &lt;p&gt;À partir do Windows Azure SDK 1.3, temos o advento de uma funcionalidade chamada startup task, que é a execução de uma aplicação responsável por instalar e configurar os pré-requisitos necessários da solução e é executada antes que o método RoleEntryPoint.OnStart seja chamado, ou seja, antes que a Worker Role inicie o seu processamento.&lt;/p&gt;  &lt;p&gt;Para fazê-la funcionar devemos adicionar um arquivo texto com a extensão .cmd (poderia ser .bat também) no seu projeto, resolvi chamar o meu de AddUrlAcl.cmd, como pode ser visto abaixo:&lt;/p&gt;  &lt;p&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/4857.clip_5F00_image002_5F00_3136CA6B.jpg"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="clip_image002" border="0" alt="clip_image002" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/2112.clip_5F00_image002_5F00_thumb_5F00_70947DFB.jpg" width="226" height="202" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p&gt;Depois disso, é necessário ir nas propriedades desse arquivo e modificar o “Copy to Output Directory” para “Copy Always” e o seu conteúdo deve ser:&lt;/p&gt;  &lt;pre&gt;echo off&lt;br /&gt;netsh http add urlacl url=http://+:1234/ user=\everyone&lt;/pre&gt;
Importante, notem que configurei a Worker Role para utilizar a porta 1234 no seu endpoint. 

&lt;p&gt;Em seguida, devemos adicionar o trecho abaixono arquivo ServiceDefinition.csdef, isso deve ficar dentro da tag WorkerRole:&lt;/p&gt;

&lt;p&gt;&amp;#160;&lt;/p&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Startup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;br /&gt;    &lt;/span&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;Task &lt;/span&gt;&lt;span style="color: red"&gt;commandLine&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;AddUrlAcl.cmd&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;          executionContext&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;elevated&amp;quot; &lt;br /&gt;&lt;/span&gt;&lt;span style="color: red"&gt;          taskType&lt;/span&gt;&lt;span style="color: blue"&gt;=&amp;quot;simple&amp;quot;/&amp;gt;&lt;br /&gt;&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;Startup&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;&lt;/span&gt;&lt;/pre&gt;

&lt;p&gt;Agora é só fazer o deploy, façam os testes e me digam se funcionou.&lt;/p&gt;

&lt;p&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10129161" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category></item><item><title>Semana especial de Windows Azure nos webcasts do MSDN</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/01/28/semana-especial-de-windows-azure-nos-webcasts-do-msdn.aspx</link><pubDate>Fri, 28 Jan 2011 20:16:27 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10121692</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10121692</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/01/28/semana-especial-de-windows-azure-nos-webcasts-do-msdn.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/6404.image_5F00_44FB121B.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/3364.image_5F00_thumb_5F00_1BA3CA1D.png" width="197" height="53" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Teremos uma semana especial de Windows Azure nos webcasts do MSDN que vai ocorrer entre 14 à 18 de fevereiro de 2011. A lista dos webcasts e os links de inscrição estão abaixo:&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032475815&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;&lt;strong&gt;Introdução ao Windows Azure&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O objetivo deste webcast é fornecer uma visão geral sobre o Windows Azure, a plataforma de computação em nuvem da Microsoft. Serão apresentados os principais conceitos sobre computação em nuvem e como a plataforma Windows Azure suporta aplicações desse tipo. Ao final, você terá uma visão geral sobre as oportunidades e benefícios da plataforma Windows Azure para suas aplicações.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Quando: &lt;/strong&gt;segunda-feira, 14 de fevereiro de 2011 12:00 Brasília     &lt;br /&gt;&lt;strong&gt;Duração: &lt;/strong&gt;60 Minutos     &lt;br /&gt;&lt;strong&gt;Palestrante: &lt;/strong&gt;&lt;a href="http://blogs.msdn.com/wcamb"&gt;Waldemir Cambiucci&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032475817&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;&lt;strong&gt;Principais recursos de desenvolvimento do Windows Azure&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;O objetivo deste webcast é fornecer uma visão geral dos principais recursos de desenvolvimento disponíveis no Windows Azure. Serão abordadas as diferentes opções de armazenamento da plataforma, como Blobs, Queues, Tables e Azure Drives, assim como o armazenamento de dados no SQL Azure. Também serão apresentados os principais conceitos do Windows Azure AppFabric, que são o Service Bus (usado para troca de mensagens entre serviços ou aplicações) e o Access Control (que provê serviços de autenticação e autorização).&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Quando: &lt;/strong&gt;terça-feira, 15 de fevereiro de 2011 12:00 Brasília     &lt;br /&gt;&lt;strong&gt;Duração: &lt;/strong&gt;60 Minutos     &lt;br /&gt;&lt;strong&gt;Palestrante: &lt;/strong&gt;Caio Chaves&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032475819&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;&lt;strong&gt;Windows Azure e SQL Azure - Criando sua aplicação para a nuvem&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Para garantir que você esteja usando todas as vantagens do Windows Azure e do SQL Azure, você precisa conhecer mais do que simplismente escrever código. Você precisa saber como incorporar sua aplicação em um ambiente de time, deploy, monitorar, gerenciar e capturar as informações de diagnóstico da nuvem. Neste webcast você aprenderá como ter sucesso nos projetos que usarão o Windows Azure e SQL Azure, incluindo o ambiente de desenvolvimento, o desenvolvimento de uma aplicação ASP.NET para o Windows Azure e acessar uma base de dados no SQL Azure. Aprenderá também, como usar o portal Windows Azure para monitorar e gerenciar sua aplicação.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Quando: &lt;/strong&gt;quarta-feira, 16 de fevereiro de 2011 12:00 Brasília     &lt;br /&gt;&lt;strong&gt;Duração: &lt;/strong&gt;60 Minutos     &lt;br /&gt;&lt;strong&gt;Palestrante:&lt;/strong&gt; &lt;a href="http://blogs.msdn.com/rogerioc/"&gt;Rogério Cordeiro&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032475821&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;&lt;strong&gt;Migrando para o Azure&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Este webcast irá tratar das principais dificuldades e caminhos para a migração de um aplicativo para a Plataforma Windows Azure. Migração de Banco, uso de variáveis de sessão, identidade na Nuvem, uso ou não das novas estruturas de dados - estas são algumas das questões relevantes para uma boa migração que serão tratadas.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Quando: &lt;/strong&gt;quinta-feira, 17 de fevereiro de 2011 12:00 Brasília     &lt;br /&gt;&lt;strong&gt;Duração: &lt;/strong&gt;60 Minutos     &lt;br /&gt;&lt;strong&gt;Palestrante: &lt;/strong&gt;&lt;a href="http://blogs.msdn.com/otavio/"&gt;Otávio Pecego Coelho&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="https://msevents.microsoft.com/CUI/WebCastEventDetails.aspx?EventID=1032475823&amp;amp;EventCategory=4&amp;amp;culture=pt-BR&amp;amp;CountryCode=BR"&gt;&lt;strong&gt;Gerenciamento, diagnósticos e depuração de aplicações no Windows Azure&lt;/strong&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;A plataforma Windows Azure fornece um conjunto rico de ferramentas para auxiliar desenvolvedores e profissionais de IT para entender como as suas aplicações estão rodando na produção e com isto criar as melhores estratégias para mantê-las 100% do tempo disponíveis par aos seus clientes. Esta apresentação aborda os principais pilares para depuração, gerenciamento e análise de comportamento da sua aplicação : Diagnostics API, Remote Desktop, Start-ups tasks, Management Services API.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Quando: &lt;/strong&gt;sexta-feira, 18 de fevereiro de 2011 12:00 Brasília     &lt;br /&gt;&lt;strong&gt;Duração: &lt;/strong&gt;60 Minutos     &lt;br /&gt;&lt;strong&gt;Palestrante:&lt;/strong&gt; &lt;a href="http://blogs.msdn.com/conde/"&gt;Luciano Condé&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10121692" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Webcast/">Webcast</category></item><item><title>Artigo publicado na MSDN Magazine</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/01/28/artigo-publicado-na-msdn-magazine.aspx</link><pubDate>Fri, 28 Jan 2011 16:08:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10121558</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>1</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10121558</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2011/01/28/artigo-publicado-na-msdn-magazine.aspx#comments</comments><description>&lt;p align="justify"&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/gg535671.aspx"&gt;&lt;img style="background-image: none; border-right-width: 0px; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/7635.image_5F00_69D9EECE.png" width="529" height="160" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Gostaria de compartilhar com vcs um artigo meu que foi publicado na MSDN Magazine: &lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://msdn.microsoft.com/en-us/magazine/gg535671.aspx"&gt;Scalable, Long-Running Workflows with Windows Server AppFabric&lt;/a&gt;, o artigo original está em inglês mas a tradução para português não deve demorar para ser publicada, quando tiver o link atualizo o post.&lt;/p&gt;  &lt;p align="justify"&gt;O artigo trata de como podemos utilizar um existente de Windows Server para criarmos aplicações com suporte à escala e uma grande quantidade de requisições utilizando o Windows Workflow Foundation e o Windows Server AppFabric, sem a necessidade de crescer a infra-estrutura.&lt;/p&gt;  &lt;p align="justify"&gt;&lt;strong&gt;Update&lt;/strong&gt;&lt;/p&gt;  &lt;p align="justify"&gt;A versão traduzida para português pode ser encontrada &lt;a href="http://msdn.microsoft.com/pt-br/magazine/gg535671.aspx"&gt;aqui&lt;/a&gt;. &lt;/p&gt;  &lt;p align="justify"&gt;&amp;#160;&lt;/p&gt;  &lt;p align="justify"&gt;RG&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10121558" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Server/">Windows Server</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/WF/">WF</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/AppFabric/">AppFabric</category></item><item><title>Screencast - Hospedando um serviço WCF em uma Worker Role do Windows Azure</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/12/29/screecast-hospedando-um-servi-231-o-wcf-em-uma-worker-role-do-windows-azure.aspx</link><pubDate>Wed, 29 Dec 2010 19:42:59 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10109966</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10109966</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/12/29/screecast-hospedando-um-servi-231-o-wcf-em-uma-worker-role-do-windows-azure.aspx#comments</comments><description>&lt;p&gt;Dando continuidade do post &lt;a href="http://blogs.msdn.com/b/rafaelgodinho/archive/2010/10/19/hospedando-um-servi-231-o-wcf-em-uma-worker-role-do-windows-azure.aspx"&gt;hospedando um serviço WCF em uma Worker Role do Windows Azure&lt;/a&gt;, segue o screencast passo-a-passo.&lt;/p&gt; &lt;object width="480" height="385"&gt;&lt;param name="movie" value="http://www.youtube.com/v/neDYVc7YZk4?fs=1&amp;amp;hl=en_US&amp;amp;rel=0"&gt;&lt;/param&gt;&lt;param name="allowFullScreen" value="true"&gt;&lt;/param&gt;&lt;param name="allowscriptaccess" value="always"&gt;&lt;/param&gt;&lt;embed src="http://www.youtube.com/v/neDYVc7YZk4?fs=1&amp;amp;hl=en_US&amp;amp;rel=0" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="480" height="385"&gt;&lt;/embed&gt;&lt;/object&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10109966" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Screencast/">Screencast</category></item><item><title>Callback com WCF</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/12/23/callback-com-wcf.aspx</link><pubDate>Thu, 23 Dec 2010 16:56:02 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10108632</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10108632</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/12/23/callback-com-wcf.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Dando continuidade ao post &lt;a href="http://blogs.msdn.com/b/rafaelgodinho/archive/2010/11/25/opera-231-245-es-one-way-com-wcf.aspx"&gt;Operações One-Way com WCF&lt;/a&gt;, resolvi escrever sobre uma tecnologia complementar que é o callback. O callback permite que o serviço WCF chame operações para serem executadas no lado do cliente, sendo bastante útil se utilizado em conjunto com operações one-way em cenários de longa duração.&lt;/p&gt;  &lt;p align="justify"&gt;Neste tipo de uso o cliente chama uma operação one-way, não precisa esperar o retorno do serviço e sua thread está liberada para outros processamentos, o serviço realiza o seu trabalho e quando necessário, por exemplo, no término do processamento, envia mensagens para o cliente através do callback. O diagrama de sequência abaixo ilustra o processo de comunicação:&lt;/p&gt;  &lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/0143.image_5F00_7BED223A.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/1207.image_5F00_thumb_5F00_67F38FA4.png" width="332" height="250" /&gt;&lt;/a&gt;&lt;/p&gt;  &lt;p align="justify"&gt;Para que a comunicação ocorra com sucesso, é necessário que o binding utilizado suporte callback, os bindings NetTcpBinding e NetNamedPipeBinding suportam callback, pois funcionam em cima de protocolos que suportam comunicação bidirecional. Já o protocolo HTTP não suporta este tipo de comunicação, fazendo com que os bindings BasicHttpBinding ou WSHttpBinding não suportem callback. Uma alternativa para callback com HTTP é o uso do WSDualHttpBinding, que abre dois canais de comunicação HTTP: um para chamadas no sentido do cliente para o serviço e outro para chamadas do serviço para o cliente.&lt;/p&gt;  &lt;p align="justify"&gt;Para que o serviço WCF entenda o callback, é necessário definir um contrato de callback com suas operações e também indicar no ServiceContract qual o tipo que deve ser utilizado para callback, o código fica similar ao código abaixo:&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IContractCallback
&lt;/span&gt;{
    [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;(IsOneWay=&lt;span style="color: blue"&gt;true&lt;/span&gt;)]
    &lt;span style="color: blue"&gt;void &lt;/span&gt;OnCallback();
}&lt;/pre&gt;
&lt;/div&gt;

&lt;div align="justify"&gt;
  &lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;ServiceContract&lt;/span&gt;(CallbackContract = &lt;span style="color: blue"&gt;typeof&lt;/span&gt;(&lt;span style="color: #2b91af"&gt;IContractCallback&lt;/span&gt;))]
&lt;span style="color: blue"&gt;public interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IService
&lt;/span&gt;{
    [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;(IsOneWay=&lt;span style="color: blue"&gt;true&lt;/span&gt;)]
    &lt;span style="color: blue"&gt;void &lt;/span&gt;ProcessarOneWay();
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;Do lado do cliente, é necessário informar ao serviço qual objeto é o responsável pelo callback. Para isso é necessário implementar a interface de callback e também passar uma instância desta classe para o contexto co WCF, conforme abaixo:&lt;/p&gt;

&lt;div align="justify"&gt;
  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyCallback &lt;/span&gt;:  CallbackServiceReference.&lt;span style="color: #2b91af"&gt;IServiceCallback
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public void &lt;/span&gt;OnCallback()
    {
        &lt;span style="color: #2b91af"&gt;MessageBox&lt;/span&gt;.Show(&lt;span style="color: #a31515"&gt;&amp;quot;OnCallback&amp;quot;&lt;/span&gt;);
    }
}&lt;/pre&gt;
&lt;/div&gt;

&lt;div align="justify"&gt;
  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;private void &lt;/span&gt;button1_Click(&lt;span style="color: blue"&gt;object &lt;/span&gt;sender, &lt;span style="color: #2b91af"&gt;RoutedEventArgs &lt;/span&gt;e)
{
    CallbackServiceReference.&lt;span style="color: #2b91af"&gt;IServiceCallback &lt;/span&gt;callback = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;MyCallback&lt;/span&gt;();
            
    &lt;span style="color: #2b91af"&gt;InstanceContext &lt;/span&gt;ctx = &lt;span style="color: blue"&gt;new &lt;/span&gt;&lt;span style="color: #2b91af"&gt;InstanceContext&lt;/span&gt;(callback);
            
    CallbackServiceReference.&lt;span style="color: #2b91af"&gt;ServiceClient &lt;/span&gt;proxy = 
        &lt;span style="color: blue"&gt;new &lt;/span&gt;CallbackServiceReference.&lt;span style="color: #2b91af"&gt;ServiceClient&lt;/span&gt;(ctx);

    proxy.ProcessarOneWay();
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;Já do lado do serviço precisamos acessar a instância informada do objeto que gerencia o callback para conseguirmos chamar suas operações, isso deve ser feito utilizando o OperationContext, sempre utilizando a interface definida no contrato de callback, conforme abaixo:&lt;/p&gt;

&lt;div align="justify"&gt;
  &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public void &lt;/span&gt;ProcessarOneWay()
{
    &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(
        &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;Início ProcessarOneWay - {0}&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now));
            
    &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(15000);
            
    &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(
        &lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;Fim ProcessarOneWay - {0}&amp;quot;&lt;/span&gt;, &lt;span style="color: #2b91af"&gt;DateTime&lt;/span&gt;.Now));

    &lt;span style="color: #2b91af"&gt;IContractCallback &lt;/span&gt;callback = 
        &lt;span style="color: #2b91af"&gt;OperationContext&lt;/span&gt;.Current.GetCallbackChannel&amp;lt;&lt;span style="color: #2b91af"&gt;IContractCallback&lt;/span&gt;&amp;gt;();

    callback.OnCallback();
}&lt;/pre&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;
  &lt;br /&gt;&lt;/p&gt;

&lt;p align="justify"&gt;Com isso, é possível utilizar a infraestrutura do WCF para cenários de comunicação mais complexos entre cliente e serviço, atendendo à diversos cenários de uso. O código fonte utilizado pode ser baixado &lt;a href="http://cid-3573ba33315680f9.office.live.com/self.aspx/P%c3%bablico/WCFOneWayCallback.zip"&gt;aqui&lt;/a&gt;.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10108632" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/WCF/">WCF</category></item><item><title>Novidades do Windows Azure SDK 1.3</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/11/30/novidades-do-windows-azure-sdk-1-3.aspx</link><pubDate>Tue, 30 Nov 2010 22:51:54 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10098632</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10098632</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/11/30/novidades-do-windows-azure-sdk-1-3.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Hoje foi lançado a versão 1.3 do SDK do Windows Azure, o download pode ser feito &lt;a href="http://www.microsoft.com/downloads/en/details.aspx?FamilyID=7a1089b6-4050-4307-86c4-9dadaa5ed018"&gt;aqui&lt;/a&gt;.&lt;/p&gt;  &lt;p&gt;Além disso, a &lt;a href="http://www.microsoft.com/windowsazure/newinsdk1.3/"&gt;lista de novidades&lt;/a&gt; está disponível no próprio site do Windows Azure.&lt;/p&gt;  &lt;p&gt;Por último teremos um &lt;a href="https://swrt.worktankseattle.com/webcast/5975/preview.aspx"&gt;webcast&lt;/a&gt; no dia 01/12/2010 (&lt;strike&gt;tb conhecido como amanhã&lt;/strike&gt;) para falar sobre o assunto.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10098632" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Azure/">Windows Azure</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Dica+R_E100_pida/">Dica Rápida</category></item><item><title>Operações One-Way com WCF</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/11/25/opera-231-245-es-one-way-com-wcf.aspx</link><pubDate>Thu, 25 Nov 2010 18:01:35 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10096739</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10096739</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/11/25/opera-231-245-es-one-way-com-wcf.aspx#comments</comments><description>&lt;p&gt;Olá pessoal,&lt;/p&gt;  &lt;p&gt;Em alguns cenários, o processamento de um serviço pode ser demorado e pode ser necessário liberar o cliente para continuar o seu processamento enquanto o serviço trabalha as informações em background. Em outros cenários, o cliente simplesmente não necessita de um retorno do término do processamento, ele simplesmente precisa de uma garantia que a solicitação chegou no servidor e confia que este fará o seu papel.&lt;/p&gt;  &lt;p&gt;Para criar uma operação One-Way com WCF, é necessário decorar a operação com IsOneWay = true no atributo OperationContract e também é necessário retornar void, afinal uma operação One-Way não tem retorno.&lt;/p&gt;  &lt;pre class="code"&gt;[&lt;span style="color: #2b91af"&gt;ServiceContract&lt;/span&gt;]
&lt;span style="color: blue"&gt;public interface &lt;/span&gt;&lt;span style="color: #2b91af"&gt;IService
&lt;/span&gt;{
    [&lt;span style="color: #2b91af"&gt;OperationContract&lt;/span&gt;(IsOneWay=&lt;span style="color: blue"&gt;true&lt;/span&gt;)]
    &lt;span style="color: blue"&gt;void &lt;/span&gt;ProcessarOneWay();
}&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font face="Calibri"&gt;O próximo passo é implementar o serviço e a operação One-Way, no exemplo abaixo simulo uma operação com 15 segundos de duração:&lt;/font&gt;&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;span style="color: blue"&gt;public class &lt;/span&gt;&lt;span style="color: #2b91af"&gt;Service &lt;/span&gt;: &lt;span style="color: #2b91af"&gt;IService
&lt;/span&gt;{
    &lt;span style="color: blue"&gt;public void &lt;/span&gt;ProcessarOneWay()
    {
        &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;Início ProcessarOneWay - {0}&amp;quot;&lt;/span&gt;, DateTime.Now));
        &lt;span style="color: #2b91af"&gt;Thread&lt;/span&gt;.Sleep(15000);
        &lt;span style="color: #2b91af"&gt;Trace&lt;/span&gt;.WriteLine(&lt;span style="color: blue"&gt;string&lt;/span&gt;.Format(&lt;span style="color: #a31515"&gt;&amp;quot;Fim ProcessarOneWay - {0}&amp;quot;&lt;/span&gt;, DateTime.Now));
    }
}&lt;/pre&gt;

&lt;pre class="code"&gt;&lt;font face="Calibri"&gt;O link para download está disponível &lt;a href="http://cid-3573ba33315680f9.office.live.com/self.aspx/P%c3%bablico/WCFOneWay.zip"&gt;aqui&lt;/a&gt;.&lt;/font&gt;&lt;/pre&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10096739" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/WCF/">WCF</category></item><item><title>Gerenciando serviços WCF RIA Services com o Windows Server AppFabric</title><link>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/10/29/gerenciando-servi-231-os-wcf-ria-services-com-o-windows-server-appfabric.aspx</link><pubDate>Fri, 29 Oct 2010 19:09:23 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:10083179</guid><dc:creator>Rafael.Godinho</dc:creator><slash:comments>0</slash:comments><wfw:commentRss xmlns:wfw="http://wellformedweb.org/CommentAPI/">http://blogs.msdn.com/b/rafaelgodinho/rsscomments.aspx?WeblogPostID=10083179</wfw:commentRss><comments>http://blogs.msdn.com/b/rafaelgodinho/archive/2010/10/29/gerenciando-servi-231-os-wcf-ria-services-com-o-windows-server-appfabric.aspx#comments</comments><description>&lt;p align="justify"&gt;Olá pessoal,&lt;/p&gt;  &lt;p align="justify"&gt;Esta semana estava conversando com o &lt;a href="http://blogs.msdn.com/wcamb"&gt;Waldemir Cambiucci&lt;/a&gt; sobre a possibilidade do Windows Server AppFabric conseguir gerenciar serviços WCF RIA Services. A boa notícia é que é possível sim, a má notícia é que isso não ocorre por padrão.&lt;/p&gt;  &lt;p align="justify"&gt;Para fazer o Windows Server AppFabric identificar os WCF RIA Services expostos, é necessário fazer uma pequena alteração no arquivo web.config adicionando Service Activations para cada Domain Service exposto, um exemplo está abaixo:&lt;/p&gt;  &lt;div align="justify"&gt;   &lt;div style="overflow: auto"&gt;     &lt;pre class="code"&gt;&lt;span style="color: blue"&gt;&amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceHostingEnvironment &lt;/span&gt;&lt;span style="color: red"&gt;aspNetCompatibilityEnabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot; &lt;span style="color: red"&gt;multipleSiteBindingsEnabled&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;true&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;&amp;gt;
    &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceActivations&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
      &amp;lt;&lt;/span&gt;&lt;span style="color: #a31515"&gt;add &lt;/span&gt;&lt;span style="color: red"&gt;service&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;BusinessApplication1.Web.Services.DomainService1&lt;/span&gt;&amp;quot;
            &lt;span style="color: red"&gt;factory&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;System.ServiceModel.DomainServices.Hosting.DomainServiceHostFactory, System.ServiceModel.DomainServices.Hosting, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35&lt;/span&gt;&amp;quot; 
            &lt;span style="color: red"&gt;relativeAddress&lt;/span&gt;&lt;span style="color: blue"&gt;=&lt;/span&gt;&amp;quot;&lt;span style="color: blue"&gt;~/Services/BusinessApplication1-Web-Services-DomainService1.svc&lt;/span&gt;&amp;quot; &lt;span style="color: blue"&gt;/&amp;gt;
    &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceActivations&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
  &amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;serviceHostingEnvironment&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&amp;lt;/&lt;/span&gt;&lt;span style="color: #a31515"&gt;system.serviceModel&lt;/span&gt;&lt;span style="color: blue"&gt;&amp;gt;
&lt;/span&gt;&lt;/pre&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;p align="justify"&gt;Note que o endereço do serviço é composto pelo endereço da classe, incluindo o seu Namespace, substituindo “.” por “-“.&lt;/p&gt;

&lt;p align="justify"&gt;O passo acima foi feito porque o arquivo .svc para o Domain Service não existe fisicamente, ele é criado pelo runtime do WCF RIA Services quando o serviço é chamado. Devido à isso o Windows Server AppFabric não tem como identificar quais são os serviços expostos para gerenciar. Ao adicionarmos um Service Activation, o Windows Server AppFabric consegue identificar que o Domain Service existe antes mesmo de alguma chamada ser realizada para ele.&lt;/p&gt;

&lt;p align="justify"&gt;Segue abaixo um print do Domain Service configurado acima sendo reconhecido pela console de gerenciamento do Windows Server AppFabric.&lt;/p&gt;

&lt;p align="justify"&gt;&lt;a href="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/5850.image_5F00_3BCCCB1D.png"&gt;&lt;img style="background-image: none; border-right-width: 0px; margin: ; padding-left: 0px; padding-right: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px; padding-top: 0px" title="image" border="0" alt="image" src="http://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-01-08-58-metablogapi/0068.image_5F00_thumb_5F00_679D1F0C.png" width="480" height="174" /&gt;&lt;/a&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=10083179" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/WCF/">WCF</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Windows+Server/">Windows Server</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/Silverlight/">Silverlight</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/AppFabric/">AppFabric</category><category domain="http://blogs.msdn.com/b/rafaelgodinho/archive/tags/RIA+Services/">RIA Services</category></item></channel></rss>
