<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:atom="https://www.w3.org/2005/Atom" xmlns:sy="https://purl.org/rss/1.0/modules/syndication/" xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:wfw="https://wellformedweb.org/CommentAPI/" xmlns:slash="https://purl.org/rss/1.0/modules/slash/"
  version="2.0">
  <channel>
    <title>W3field (Brasil)</title>
    <atom:link
      href="https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/feed.xml"
      rel="self"
      type="application/rss+xml" />
    <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/feed.xml</link>
    <description />
    <lastBuildDate>Tue, 16 Apr 2019 05:23:10 GMT</lastBuildDate>
    <language>en-US</language>
    <sy:updatePeriod>hourly</sy:updatePeriod>
    <sy:updateFrequency>1</sy:updateFrequency>
    <item>
      <title>Casa nova!</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/casa-nova</link>
      <pubDate>Mon, 27 Sep 2010 18:05:01 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/09/27/casa-nova/</guid>
      <description><![CDATA[&#160;  Pois é, resolvi mudar o endereço blog. A partir de agora os artigos estarão em...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p>Pois é, resolvi mudar o endereço blog. A partir de agora os artigos estarão em <a href="https://blogs.msdn.com/b/teixeira">https://blogs.msdn.com/b/teixeira</a></p>  <p>Logo logo trago novidades… só para atiçar a curiosidade, vou começar postar em breve uns artigos com dicas rápidas para otimizar o tempo de carregamento de páginas do seu site. </p>  <p>Abraços,</p>  <p>Paulo.</p>]]></content:encoded>
    </item>
    <item>
      <title>.NET Framework no Windows 7/Windows 2008 R2</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/net-framework-no-windows-7windows-2008-r2</link>
      <pubDate>Mon, 28 Jun 2010 21:50:00 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/06/28/net-framework-no-windows-7windows-2008-r2/</guid>
      <description><![CDATA[A algum tempo atrás durante um treinamento que ministrava surgiu uma dúvida sobre a compatibilidade...]]></description>
      <content:encoded><![CDATA[<p><span style="font-family: calibri; font-size: small">A algum tempo atrás durante um treinamento que ministrava surgiu uma dúvida sobre a compatibilidade do .NET Framework no Windows 2008 R2. Depois de muito pesquisar internamente, finalmente ficou esclarecido o que é e o que não é compatível. Para simplificar, montei uma tabela que descreve os cenários/combinações possíveis.</span></p>  <table style="width: 414px" border="0" cellspacing="1" cellpadding="2" bgcolor="#cccccc"><tbody>     <tr>       <td bgcolor="#ffffff" valign="top" width="37">         <p align="center"><span style="font-family: calibri; font-size: small">.NET</span></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72">         <p align="center"><strong><span style="font-family: calibri; font-size: small">Win 2003</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72">         <p align="center"><strong><span style="font-family: calibri; font-size: small">Vista</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72">         <p align="center"><strong><span style="font-family: calibri; font-size: small">Win 2008</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72">         <p align="center"><strong><span style="font-family: calibri; font-size: small">Win 7</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="80">         <p align="center"><strong><span style="font-family: calibri; font-size: small">Win 2008 R2</span></strong></p>       </td>     </tr>      <tr>       <td bgcolor="#ffffff" valign="top" width="37">         <p align="center"><span style="font-family: calibri; color: #ff0000; font-size: small"><strong>v 1.1</strong></span></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72">         <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-size: small"><span style="font-family: calibri">             <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>              <p align="center">               <br /><span style="background-color: #ffff00; color: #ff0000">(32-bits somente)</span></p>           </span></span></td>        <td bgcolor="#ffffff" valign="top" width="80">         <p align="center"><span style="background-color: #ffff00; font-family: calibri; color: #ff0000; font-size: small"><strong>Não Compatível</strong></span></p>       </td>     </tr>      <tr>       <td bgcolor="#ffffff" valign="top" width="37">         <p align="center"><strong><span style="font-family: calibri; font-size: small">2.0</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="80"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>     </tr>      <tr>       <td bgcolor="#ffffff" valign="top" width="37">         <p align="center"><strong><span style="font-family: calibri; font-size: small">3.0</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="80"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>     </tr>      <tr>       <td bgcolor="#ffffff" valign="top" width="37">         <p align="center"><strong><span style="font-family: calibri; font-size: small">3.5</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small"><span style="font-family: calibri; font-size: small">             <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>           </span></span></td>        <td bgcolor="#ffffff" valign="top" width="80"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>     </tr>      <tr>       <td bgcolor="#ffffff" valign="top" width="37">         <p align="center"><strong><span style="font-family: calibri; font-size: small">4.0</span></strong></p>       </td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="72"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>        <td bgcolor="#ffffff" valign="top" width="80"><span style="font-family: calibri; font-size: small">           <p align="center"><span style="font-family: calibri; font-size: small">Compatível</span></p>         </span></td>     </tr>   </tbody></table>  <p><span style="font-size: small"><span style="font-family: calibri">Observe que o .NET Framework 1.1 somente foi testado com o Windows 7 32-bits. Há relatos disponíveis na internet atestando que o mesmo pode ser instalado em versões 64 bits. <strong>Todavia, a Microsoft não realizou testes de regressão com o .NET Framework 1.1 no Windows 7 64bits ou no Windows 2008 R2. </strong></span></span></p>  <p><span style="font-family: calibri; font-size: small">Na prática isso significa que caso você instale o framework 1.1 num desses sistemas, ele poderá não funcionar da forma esperada, apresentado erros “inexplicáveis”. Também significa que se você tiver um contrato de suporte diretamente com a Microsoft (Suport Premier), este cenário não se enquadrará nas políticas de suportabilidade cobertas pelo seu contrato, e portanto, não será dada sequência a investigação da causa-raiz do problema pelo qual você estará passando. </span></p>  <p><span style="font-family: calibri; font-size: small">Abraços,</span></p>  <p><span style="font-family: calibri; font-size: small">Paulo.</span></p>  <p><span style="font-family: calibri; font-size: small">Update: agora temos um artigo falando sobre o tema: </span>“.NET Framework 1.1 not supported on Windows 7 nor Windows Server 2008 R2” <a href="https://support.microsoft.com/kb/2489698">https://support.microsoft.com/kb/2489698</a></p>]]></content:encoded>
    </item>
    <item>
      <title>Usando o Application Request Routing para migrar sites para o IIS7 - parte 4</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-4</link>
      <pubDate>Tue, 08 Jun 2010 07:47:00 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/06/08/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-4/</guid>
      <description><![CDATA[&nbsp;
Continuando a nossa s&eacute;rie, vamos agora para a parte mais interessante. Ap&oacute;s a...]]></description>
      <content:encoded><![CDATA[<p>&nbsp;</p>
<p><span style="font-family: Calibri; font-size: small;">Continuando a nossa s&eacute;rie, vamos agora para a parte mais interessante. Ap&oacute;s a configura&ccedil;&atilde;o do ARR com Shared Configuration e Offline Files, estamos prontos para migrar as aplica&ccedil;&otilde;es dos servidores antigos para o novo ambiente IIS7, de forma transparente para o usu&aacute;rio final. O objetivo principal &eacute; fazer o balanceamento de acordo com a URL chamada. Por exemplo, se voc&ecirc; abrir o navegador colocando o endere&ccedil;o <a href="https://www.contoso.com/app1">www.contoso.com/app1</a> o ARR dever&aacute; direcionar o tr&aacute;fego para um certo conjunto de servidores antigos (por exemplo com IIS5 ou 6), mas se voc&ecirc; usar <a href="https://www.contoso.com/app2">www.contoso.com/app2</a>, o ARR direciona o tr&aacute;fego para outros servidores j&aacute; com IIS7. Com isso, voc&ecirc; ter&aacute; tempo de homologar cada uma das suas aplica&ccedil;&otilde;es e migr&aacute;-las de forma controlada, sem ter que arriscar uma migra&ccedil;&atilde;o de todos os servidores/sites em um &uacute;nico passo. </span></p>
<p><span style="font-family: Calibri; font-size: small;">Para atingir este objetivo, vamos configurar dois <em>WebFarms</em> nos seus servidores ARR, sendo:</span></p>
<ul>
<li><span style="font-family: Calibri; font-size: small;">Um webfarm com servidores antigos (IIS5, IIS6, Apache, ou qquer outro webserver)</span> </li>
<li><span style="font-family: Calibri; font-size: small;">Um webfarm com os novos servidores IIS7 para os quais as aplica&ccedil;&otilde;es ser&atilde;o migradas. </span></li>
</ul>
<table cellpadding="2" cellspacing="0" border="0" style="width: 508px;">
<tbody>
<tr>
<td width="200" valign="top"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/7002.arrfarms_3F4C216F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/7002.arrfarms_5F00_3F4C216F.png"><img height="187" width="201" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/1134.arrfarms_thumb_0C4C6B3B.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/1134.arrfarms_5F00_thumb_5F00_0C4C6B3B.png" alt="arr-farms" border="0" title="arr-farms" class="wlDisabledImage" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /></a></td>
<td width="306" valign="top">Para criar os farms, no n&oacute; &ldquo;Server Farms&rdquo; do IIS Manager do servidor ARR-1, clica-se com o bot&atilde;o direito e seleciona-se &ldquo;Create Server Farm&rdquo;, e definindo um nome para o primeiro farm (aqui chamado de ANTIGO). O IIS Manager ir&aacute; perguntar se &eacute; necess&aacute;rio criar uma regra para direcionar todos os requests para este farm automaticamente. Como este &eacute; o farm que conter&aacute; a maioria das aplica&ccedil;&otilde;es (ainda n&atilde;o homologadas para o ambiente com IIS7), deve-se permitir a cria&ccedil;&atilde;o da regra (clicando no bot&atilde;o &ldquo;Yes&rdquo;). </td>
</tr>
</tbody>
</table>
<p><span style="font-family: Calibri; font-size: small;">Em seguida, deve-se adicionar cada um dos servidores no n&oacute; &ldquo;Servers&rdquo;. </span></p>
<p><span style="font-family: Calibri; font-size: small;">Repete-se ent&atilde;o o processo de cria&ccedil;&atilde;o para o segundo farm (chamado de &ldquo;NOVO&rdquo;) mas desta vez n&atilde;o cria-se a regra para direcionar todos os requests para o farm, visto que somente algumas aplica&ccedil;&otilde;es (j&aacute; homologadas para o IIS7) ser&atilde;o direcionadas ao mesmo. Tamb&eacute;m n&atilde;o se esque&ccedil;a de adicionar os servidores correspondentes no n&oacute; &ldquo;Servers&rdquo;. </span></p>
<p><b><span style="font-family: Calibri; font-size: small;">Cria&ccedil;&atilde;o das Regras do Proxy Reverso</span></b></p>
<p><span style="font-family: Calibri; font-size: small;">Ao se criar o primeiro farm (ANTIGO), tamb&eacute;m foi criada automaticamente uma regra que ir&aacute; redirecionar todo o tr&aacute;fego para o mesmo. A regra fica armazenada no arquivo applicationHost.config na pasta compartilhada do Shared Configuration. A se&ccedil;&atilde;o que cont&eacute;m esta configura&ccedil;&atilde;o &eacute; chamada &lt;globalRules&gt;. A seguir, um exemplo desta se&ccedil;&atilde;o:</span></p>
<blockquote>
<p><span style="font-family: Courier New; font-size: x-small;">&lt;system.webServer&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;rewrite&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;globalRules&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;clear /&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;rule name="ARR_Antigo_loadbalance" patternSyntax="ECMAScript" stopProcessing="true"&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;match url=".+" /&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;action type="Rewrite" url="https://Antigo/{R:0}" /&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;/rule&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;/globalRules&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;/rewrite&gt; <br /></span><span style="font-family: Courier New; font-size: x-small;">&lt;/system.webServer&gt;</span></p>
</blockquote>
<p><span style="font-family: Calibri; font-size: small;">Note que, no exemplo acima, a regra foi mudada para utilizar express&otilde;es regulares ao inv&eacute;s de caracteres curinga (wildcards).</span></p>
<p><span style="font-family: Calibri; font-size: small;">Uma vez que esta regra j&aacute; est&aacute; criada, deve-se ent&atilde;o criar regras para direcionar cada uma das aplica&ccedil;&otilde;es j&aacute; homologadas para o farm NOVO. Para fazer isso, no IIS Manager, clica-se no farm NOVO e em seguida no painel direito, seleciona-se &ldquo;Routing Rules&rdquo;.</span></p>
<p><span style="font-family: Calibri; font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/3288.arrfarmsrules_2A4A792F.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/3288.arrfarmsrules_5F00_2A4A792F.png"><img height="115" width="505" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/4621.arrfarmsrules_thumb_5A914DE5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/4621.arrfarmsrules_5F00_thumb_5F00_5A914DE5.png" alt="arr-farms-rules" border="0" title="arr-farms-rules" class="wlDisabledImage" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;">No painel central, marca-se a op&ccedil;&atilde;o &ldquo;Use URL Rewrite to inspect incoming requests&rdquo; e em seguida, no painel da esquerda, clica-se em &ldquo;Apply&rdquo;. Nesse momento, uma nova regra similar a do farm ANTIGO &eacute; criada mas a mesma necessita alguns ajustes. </span></p>
<p><span style="font-family: Calibri; font-size: small;">No painel da esquerda, em &ldquo;Advanced Routing&rdquo;, clica-se em &ldquo;URL Rewrite&rdquo; para abrir as regras j&aacute; criadas. Edita-se a nova regra ARR_NOVO_LOADBALANCE rec&eacute;m-criada, para ajustar os seus par&acirc;metros. </span></p>
<p><span style="font-family: Calibri; font-size: small;">Esta regra dever&aacute; utilizar express&otilde;es regulares, e ao inv&eacute;s de fazer o <i>match</i> para todos os requests, somente aqueles direcionados a aplica&ccedil;&atilde;o em quest&atilde;o &eacute; que devem ser atendidos. A figura a seguir ilustra a configura&ccedil;&atilde;o da regra criada: </span></p>
<p><span style="font-family: Calibri; font-size: small;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/0083.arrnovoinboundrule_63BD6359.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/0083.arrnovoinboundrule_5F00_63BD6359.png"><img height="538" width="508" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/4718.arrnovoinboundrule_thumb_2FA8C406.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/4718.arrnovoinboundrule_5F00_thumb_5F00_2FA8C406.png" alt="arr-novo-inbound-rule" border="0" title="arr-novo-inbound-rule" class="wlDisabledImage" style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" /></a></span></p>
<p><span style="font-family: Calibri; font-size: small;">Note que o <i>pattern</i> foi ajustado para combinar com a URL da aplica&ccedil;&atilde;o que ir&aacute; fazer parte do balanceamento. </span></p>
<p><b><span style="font-family: Calibri; font-size: small;">Um aspecto importante &eacute; que, para cada aplica&ccedil;&atilde;o a ser balanceada, uma regra como esta dever&aacute; ser criada. Ao final, existir&atilde;o N regras distintas, correspondendo a cada uma das aplica&ccedil;&otilde;es direcionadas para o farm com IIS7.</span></b></p>
<p><span style="font-family: Calibri; font-size: small;">Para concluir, as regras devem ser ajustadas para obedecer uma certa preced&ecirc;ncia: as regras mais &ldquo;acima&rdquo; na janela do URL Rewrite s&atilde;o processadas primeiramente. Assim, a &uacute;ltima regra deve ser a que direciona todos os requests para o farm ARR_ANTIGO. &Eacute; poss&iacute;vel ajustar a preced&ecirc;ncia das regras e tamb&eacute;m outros detalhes como o nome das mesmas.</span></p>
<p><span style="font-family: Calibri;"><span style="font-size: small;">&Eacute; isso ai! Agora voc&ecirc; consegue migrar suas aplica&ccedil;&otilde;es de forma tranquila, sem o risco de um upgrade as escuras. </span></span></p>]]></content:encoded>
    </item>
    <item>
      <title>Usando o Application Request Routing para migrar sites para o IIS7 - parte 3</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-3</link>
      <pubDate>Mon, 24 May 2010 17:34:50 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/05/24/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-3/</guid>
      <description><![CDATA[&#160;  Ok, no post anterior desta série nós configuramos dois servidores IIS com ARR para utilizar...]]></description>
      <content:encoded><![CDATA[<p>&#160;</p>  <p><font size="3" face="Calibri">Ok, no post anterior desta série nós configuramos dois servidores IIS com ARR para utilizar o recurso de configuração compartilhada (Shared Configuration).</font></p>  <p><font face="Calibri"><font size="3">Com isso, os servidores ARR irão sempre “buscar” a sua configuração no share de rede que foi especificado. <font color="#c0504d"><font color="#000000">Então vem a pergunta de sempre: </font><font color="#ff0000">mas e se o compartilhamento ficar indisponível?</font> </font></font></font></p>  <p><font size="3" face="Calibri">Realmente, problemas sérios podem ocorrer caso se esteja usando o Shared Configuration e o compartilhamento onde está armazenada a informação de configuração falhe. No momento que o compartilhamento está inacessível, os servidores no Farm recebem uma notificação e o serviço Web será interrompido em todo o farm (o que eu tenho certeza, não é algo que você iria desejar). </font></p>  <p><font size="3" face="Calibri">Bom, para evitar este problema, existem algumas alternativas, dentre elas o uso de um servidor de arquivos em Cluster, utilização de replicação do conteúdo via DFS-R, <strong>ou o uso de Offline Files</strong>. </font></p>  <p><font size="3" face="Calibri">Esta ultima opção, apesar de aparentemente simples, é uma das mais eficientes e atende as os requisitos, e portanto é a que vamos usar aqui.</font></p>  <p><font size="3" face="Calibri">Para habilitar o Offline Files, o compartilhamento no servidor ARR-1 deve estar configurado com o “Caching” habilitado, como já configurado no Passo 1 da configuração do recurso Shared Configuration descrito no meu post anterior. </font></p>  <p>   <table border="0" cellspacing="0" cellpadding="2" width="530"><tbody>       <tr>         <td valign="top" width="323">           <p><font face="Calibri"><font size="3">No servidor ARR-2, o recurso “Desktop Experience” deve estar instalado, pois ele é necessário para configurar os “Offline Files” (somente após a sua instalação aparece o ícone no painel de controle). Então vamos lá, para configurar os “Offline Files”, deve-se executar os seguintes passos: <strong></strong></font></font></p>            <p><strong><font size="3" face="Calibri">Passo 1: Habilitar o Offline Files no painel de controle do servidor ARR-2. </font></strong></p>            <p><font size="3" face="Calibri">No painel de controle e selecione “Offline Files”; em seguida, clique no botão “Enable Offline Files”. O sistema irá solicitar um restart, mas antes de prosseguir, é necessário ajustar o cache para que o mesmo seja somente-leitura. </font></p>         </td>         </tr></tbody></table><b>           <table><tbody><tr><td valign="top" width="205"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/2337.picture2_3A2DA13D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/2337.picture2_5F00_3A2DA13D.png"><font size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/2337.picture2_3A2DA13D.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/2337.picture2_5F00_3A2DA13D.png"><font size="3" face="Calibri"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/6472.picture2_42151DD2.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/6472.picture2_5F00_42151DD2.png"><img style="border-bottom: 0px; border-left: 0px; display: inline; border-top: 0px; border-right: 0px" class="wlDisabledImage" title="picture2" border="0" alt="picture2" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/0160.picture2_thumb_14C0AFD5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/0160.picture2_5F00_thumb_5F00_14C0AFD5.png" width="206" height="233" /></a></font></a></font></a></td>         </tr></tbody></table></b>      </p>  <p><strong><font size="3" face="Calibri">Passo 2: Colocar o cache como somente-leitura</font></strong></p>  <p><font size="3" face="Calibri">Através de um prompt de comando e emite-se o seguinte comando:      <br /><font size="2" face="Courier New">REG ADD &quot;HKLM\System\CurrentControlSet\Services\CSC\Parameters&quot;        <br />/v ReadOnlyCache /t REG_DWORD /d 1 /f</font></font></p>  <p><font size="3" face="Calibri">Em seguida, reinicia-se o servidor. </font></p>  <p><b><font size="3" face="Calibri">Passo 3: Habilitar o cache para a pasta com os arquivos do Shared Configuration no servidor ARR-2. </font></b></p>  <table border="0" cellspacing="0" cellpadding="2" width="523"><tbody>     <tr>       <td valign="top" width="263"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/8880.picture13_206AF74C.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/8880.picture13_5F00_206AF74C.png"><font size="3" face="Calibri"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="picture1[3]" border="0" alt="picture1[3]" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/7713.picture13_thumb_56203CA6.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/CommunityServer-Blogs-Components-WeblogFiles/00-00-00-89-89-metablogapi/7713.picture13_5F00_thumb_5F00_56203CA6.png" width="244" height="214" /></font></a></td>        <td valign="top" width="258">         <p><font size="3" face="Calibri">Após reiniciar o servidor ARR-2, deve-se conectar no compartilhamento de arquivos no servidor ARR-1 e, clicando com o botão direito sobre o mesmo, selecionar a opção “Always Available Offline”. Para confirmar se a configuração foi realizada com sucesso, abre-se o Sync Center no painel de controle. No Sync Center também é possível estabelecer uma agenda de sincronização personalizada (o padrão é ocorrer uma sincronização por dia, mas é possível ajustar para a mesma para atender os requisitos de negócio). </font></p>          <p style="margin: 0in 0in 10pt 0.5in" class="MsoNormal"><span style="mso-ansi-language: pt-br" lang="PT-BR"><font size="3" face="Calibri"></font></span></p>          <p><font color="#000000" size="3" face="Calibri">&#160;</font></p>       </td>     </tr>   </tbody></table>  <br />  <div style="border-bottom: windowtext 1pt solid; border-left: windowtext 1pt solid; padding-bottom: 1pt; padding-left: 4pt; padding-right: 4pt; background: #dbe5f1; margin-left: 0.5in; border-top: windowtext 1pt solid; margin-right: 0in; border-right: windowtext 1pt solid; padding-top: 1pt; mso-element: para-border-div; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: accent1; mso-background-themetint: 51">   <p style="border-bottom: medium none; border-left: medium none; padding-bottom: 0in; margin: 0in 0in 10pt; padding-left: 0in; padding-right: 0in; background: #dbe5f1; border-top: medium none; border-right: medium none; padding-top: 0in; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt"><span><font size="3"><font color="#000000"><font face="Calibri"><strong>Importante</strong>: O recurso de Offline Files somente será visivel no Sync Center se os arquivos no compartilhamento estiverem em uso. Por isso, é muito importante que o Shared Configuration tenha sido habilitado de forma correta nos dois servidores <strong>antes</strong> da configuração dos Offline Files. </font></font></font></span></p> </div>  <p><font size="3" face="Calibri"><strong></strong></font></p>  <p><font size="3" face="Calibri"><strong>Referências adicionais: </strong></font></p>  <p><font size="3" face="Calibri">“Setting up Shared configuration on IIS 7.0” </font><a href="https://blogs.iis.net/wonyoo/archive/2009/01/12/setting-up-shared-configuration-on-iis-7-0.aspx"><font size="3" face="Calibri">https://blogs.iis.net/wonyoo/archive/2009/01/12/setting-up-shared-configuration-on-iis-7-0.aspx</font></a></p>  <p><font size="3" face="Calibri">Já estamos chegando ao final desta série, e a melhor parte está chegando.&#160; <br />Fique ligado! </font></p>]]></content:encoded>
    </item>
    <item>
      <title>Hotfixes e patches: quanto tempo para colocar em produção?</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/hotfixes-e-patches-quanto-tempo-para-colocar-em-produo</link>
      <pubDate>Fri, 14 May 2010 13:20:34 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/05/14/hotfixes-e-patches-quanto-tempo-para-colocar-em-produo/</guid>
      <description><![CDATA[Uma das verificações que sempre fazemos quando estamos avaliando problemas em um servidor Web é se o...]]></description>
      <content:encoded><![CDATA[<p><font size="3" face="Calibri">Uma das verificações que sempre fazemos quando estamos avaliando problemas em um servidor Web é se o mesmo está com todos os hotfixes e patches instalados (geralmente não estão). Os clientes sempre se justificam dizendo: “Não há uma regra”, ou “tenho que testar tudo antes, e por isso é que demoramos 6 meses para colocar na produção”. </font></p>  <p><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/IIShotf_E2EC/image_2.png" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/IIShotf_E2EC/image_2.png"><font size="3" face="Calibri"><img style="border-right-width: 0px; display: inline; border-top-width: 0px; border-bottom-width: 0px; border-left-width: 0px" class="wlDisabledImage" title="image" border="0" alt="image" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/IIShotf_E2EC/image_thumb.png" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/IIShotf_E2EC/image_thumb.png" width="515" height="119" /></font></a></p>  <p><font size="3" face="Calibri">E esta acaba sendo sempre a resposta que todos nós costumamos ouvir quando se fala sobre aplicação de hotfix e/ou patches em produção. </font></p>  <p><font size="3" face="Calibri">O problema com isso é que cada um faz o que quer. Mas existe um guia (em inglês) disponível falando como montar um processo para atualização de hotfixes e patches (de segurança, mas que você pode aplicar para tudo). </font></p>  <p><font size="3" face="Calibri">Para conhecer mais, baixe Microsoft Security Update Guide: </font><a href="https://www.microsoft.com/downloads/details.aspx?FamilyID=c3d986d0-ecc3-4ce0-9c25-048ec5b52a4f&amp;displaylang=en"><font size="3" face="Calibri">https://www.microsoft.com/downloads/details.aspx?FamilyID=c3d986d0-ecc3-4ce0-9c25-048ec5b52a4f&amp;displaylang=en</font></a></p>  <p><font size="3" face="Calibri">Abraços,</font></p>  <p><font size="3" face="Calibri">Paulo.</font></p>]]></content:encoded>
    </item>
    <item>
      <title>Usando o Application Request Routing para migrar sites para o IIS7 - parte 2</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-2</link>
      <pubDate>Wed, 12 May 2010 10:54:00 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/05/12/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-2/</guid>
      <description><![CDATA[No meu post anterior falei como instalar o IIS e o ARR para criar uma solu&ccedil;&atilde;o...]]></description>
      <content:encoded><![CDATA[<table style="width: 560px;" border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<p><span style="font-family: Calibri; font-size: small;">No meu post anterior falei como instalar o IIS e o ARR para criar uma solu&ccedil;&atilde;o que permita a migra&ccedil;&atilde;o transparente de aplica&ccedil;&otilde;es de um ambiente &ldquo;antigo&rdquo; para o IIS7.x. Um ponto importante nesta configura&ccedil;&atilde;o &eacute; que os dois servidores devem possuir <strong>exatamente</strong> a mesma configura&ccedil;&atilde;o, ou inconsist&ecirc;ncias podem ocorrer ao processar as requisi&ccedil;&otilde;es nos servidores ARR. </span></p>
<p><span style="font-family: Calibri; font-size: small;">O IIS7.x felizmente possui um recurso que permite em manter todos os arquivos de configura&ccedil;&atilde;o do IIS em um &uacute;nico local de rede compartilhado por todos os servidores do WebFarm, chamado de <strong>Shared Configuration</strong>. Esta configura&ccedil;&atilde;o &eacute; necess&aacute;ria para que ambos os servidores utilizem sempre o mesmo conjunto de regras de rotamento para os requests, evitando inconsist&ecirc;ncias. </span></p>
<p style="padding-left: 30px;"><span style="color: #0000ff; font-family: Calibri; font-size: small;"><strong>UPDATE (09/02/2013)</strong>: o Shared Configuration n&atilde;o &eacute; requerido para o ARR funcionar. Se voc&ecirc; estiver usando um &uacute;nico servidor poder&aacute; seguir sem utiliz&aacute;-lo, mas se tiver dois ou mais servidores &eacute; recomendado que fa&ccedil;a uso deste recurso. </span></p>
<p><span style="font-family: Calibri; font-size: small;">Os seguintes passos s&atilde;o requeridos para essa configura&ccedil;&atilde;o:</span></p>
<p><strong><span style="font-family: Calibri; font-size: small;">Passo 1: Cria&ccedil;&atilde;o de pasta compartilhada no Servidor ARR-1: </span></strong></p>
<p><span style="font-family: Calibri; font-size: small;">Para habilitar o Shared Configuration, uma pasta compartilhada na rede deve ser criada em um servidor de arquivos, ou em um dos servidores Web com o ARR. Para facilitar o gerenciamento, optamos por criar a pasta compartilhada (SHAREDCONFIG) em um dos servidores ARR. </span></p>
<p><span style="font-family: Calibri; font-size: small;">A pasta compartilhada deve atender os seguintes requisitos:</span></p>
<ul>
<li><span style="font-family: Calibri; font-size: small;">deve possuir o &ldquo;Caching&rdquo; habilitado (no pr&oacute;ximo post explicarei mais detalhes deste requisito);</span></li>
<li><span style="font-family: Calibri; font-size: small;">deve ter assignado um usu&aacute;rio com direitos de escrita na mesma.</span></li>
</ul>
<p><span style="font-family: Calibri; font-size: small;">Para atender estes requisitos, cria-se um usu&aacute;rio local nos dois servidores ARR com o mesmo nome de login e mesma senha, ou usa-se uma conta de dom&iacute;nio para atribuir as permiss&otilde;es no share. Tamb&eacute;m configura-se o &ldquo;Caching&rdquo; do compartilhamento conforme as figuras a seguir: </span></p>
<table style="width: 522px;" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="247"><span style="font-family: Calibri; font-size: x-small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image003%5B47%5D.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image003%5B47%5D.jpg"><img class="wlDisabledImage" style="display: inline; border: 0px;" title="image003[47]" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image003%5B47%5D_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image003%5B47%5D_thumb.jpg" alt="image003[47]" width="244" height="243" border="0" /></a>&nbsp;&nbsp; </span></td>
<td valign="top" width="273"><span style="font-family: Calibri; font-size: x-small;"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image004%5B47%5D.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image004%5B47%5D.jpg"><img class="wlDisabledImage" style="display: inline; border: 0px;" title="image004[47]" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image004%5B47%5D_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image004%5B47%5D_thumb.jpg" alt="image004[47]" width="244" height="186" border="0" /></a></span></td>
</tr>
</tbody>
</table>
<p><strong><span style="font-family: Calibri; font-size: small;">Passo 2: Exporta&ccedil;&atilde;o da configura&ccedil;&atilde;o do IIS para a pasta compartilhada no servidor ARR-1. </span></strong></p>
<table style="width: 519px;" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="200"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image005_2.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image005_2.jpg"><span style="font-family: Calibri; font-size: x-small;"><img class="wlDisabledImage" style="display: inline; border-width: 0px;" title="image005" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image005_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image005_thumb.jpg" alt="image005" width="244" height="206" border="0" /></span></a></td>
<td valign="top" width="317"><span style="font-family: Calibri; font-size: small;">No servidor ARR1, utilizando a console de gerenciamento do IIS, deve ser exportada a configura&ccedil;&atilde;o do IIS para a pasta compartilhada criada no passo 1. Antes de exportar a configura&ccedil;&atilde;o &eacute; necess&aacute;rio certificar-se que o usu&aacute;rio criado possui permiss&otilde;es de escrita tanto no compartilhamento de rede quanto no sistema de arquivos NTFS. Se o mesmo n&atilde;o possuir permiss&otilde;es adequdas, uma mensagem de erro ser&aacute; exibida. </span></td>
</tr>
</tbody>
</table>
<p><strong><span style="font-family: Calibri; font-size: small;">Passo 3: Configura&ccedil;&atilde;o do Shared Configuration nos servidores ARR-1 e ARR-2</span></strong></p>
<table style="width: 518px;" border="0" cellspacing="0" cellpadding="2">
<tbody>
<tr>
<td valign="top" width="304"><span style="font-family: Calibri; font-size: small;">No servidor ARR-1, utilizando a console de gerenciamento do IIS, deve-se configurar o recurso de Shared Configuration. Para isso, utiliza-se o compartilhamento de rede criado no servidor pr&oacute;prio ARR‑1. Deve-se repetir os mesmos passos no servidor ARR-2.</span></td>
<td valign="top" width="212"><a href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image006_2.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image006_2.jpg"><span style="font-family: Calibri; font-size: x-small;"><img class="wlDisabledImage" style="display: inline; border-width: 0px;" title="image006" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image006_thumb.jpg" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/6ca8f8473c9d_CC17/image006_thumb.jpg" alt="image006" width="244" height="118" border="0" /></span></a></td>
</tr>
</tbody>
</table>
<p class="MsoNormal" style="margin: 0in 0in 10pt; background: #dbe5f1; mso-border-alt: solid windowtext .5pt; mso-background-themecolor: accent1; mso-background-themetint: 51; mso-padding-alt: 1.0pt 4.0pt 1.0pt 4.0pt; padding: 0in;"><span><span style="font-family: Calibri;"><span style="font-size: small;"><strong><span style="text-decoration: underline;">Importante</span></strong>: <br /><br />Ap&oacute;s configurar o recurso de Shared Configuration, as altera&ccedil;&otilde;es de configura&ccedil;&atilde;o realizadas em um dos servidores ser&atilde;o aplicadas a todos os membros do farm (no nosso caso, ARR-1 e ARR-2). Para instalar novos pacotes do IIS (por exemplo, suporte a ASP, ASP.NET ou outro qualquer), deve-se <strong><span style="text-decoration: underline;">desabilitar</span> </strong>o recurso de Shared Configuration dos dois servidores. Em seguida, o pacote deve ser instalado individualmente em cada servidor. Deve-se repetir os tr&ecirc;s passos descritos acima. A n&atilde;o observ&acirc;ncia deste procedimento poder&aacute; levar a inconsist&ecirc;ncias de configura&ccedil;&atilde;o em um dos servidores do farm. </span></span></span></p>
<p><span style="font-family: Calibri; font-size: x-small;">Refer&ecirc;ncias adicionais: </span></p>
<p><a href="https://learn.iis.net/page.aspx/264/shared-configuration/"><span style="font-family: Calibri; font-size: x-small;">https://learn.iis.net/page.aspx/264/shared-configuration/</span></a></p>
<p><span style="font-family: Calibri; font-size: small;">A gente continua em breve.</span></p>
<p><span style="font-family: Calibri; font-size: small;">Paulo.</span></p>
</td>
</tr>
</tbody>
</table>
<p>&nbsp;</p>]]></content:encoded>
    </item>
    <item>
      <title>Usando o Application Request Routing para migrar sites para o IIS7 - parte 1</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-1</link>
      <pubDate>Mon, 10 May 2010 18:33:00 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2010/05/10/usando-o-application-request-routing-para-migrar-sites-para-o-iis7-parte-1/</guid>
      <description><![CDATA[Vários de nossos clientes encontram dificuldades para migrar os seus servidores...]]></description>
      <content:encoded><![CDATA[<table style="width: 560px;" cellspacing="0" cellpadding="0" border="0"><tbody>     <tr>       <td>         <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">Vários de nossos clientes encontram dificuldades para migrar os seus servidores e aplicações do IIS5 ou IIS6 para novos servidores baseados no IIS7.x (ou do PHP rodando no Linux/Unix para o IIS7). O grande problema é a dificuldade de homologar divervas aplicações e colocá-las todas em produção em poucos dias. </span></span></span></p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;"><a href="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/2604.image_1B33E547.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-89-metablogapi/2604.image_5F00_1B33E547.png"><img title="image" style="border: 0px currentcolor; float: right; display: inline; background-image: none;" border="0" alt="image" align="right" src="https://msdnshared.blob.core.windows.net/media/MSDNBlogsFS/prod.evol.blogs.msdn.com/CommunityServer.Blogs.Components.WeblogFiles/00/00/00/89/89/metablogapi/2671.image_thumb_133C42E5.png" original-url="https://blogs.msdn.com/cfs-file.ashx/__key/communityserver-blogs-components-weblogfiles/00-00-00-89-89-metablogapi/2671.image_5F00_thumb_5F00_133C42E5.png" width="158" height="240" /></a>Na prática, para implementar tal solução é necessário ter um mecanismo que permita a homologação e migração gradual das aplicações para um novo ambiente de forma transparente para os seus usuários. </span></span></span></p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">Muitos desses clientes já possuem um equipamento capaz de realizar o balanceamento de carga na camada 3 (camada de rede), mas para atingir esse objetivo é necessário implementar um balanceamento na camada de aplicação (protocolo HTTP, camada 7) que seja capaz de interpretar os requests e redirecionar o tráfego para os servidores apropriados. </span></span></span></p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri; font-size: small;">Para atender felizmente contamos com um novo componente OOB do IIS7, o Application Request Routing (ARR) que é capaz cumprir esta tarefa. Lembrando que vamos usar o termo ARR mas na realidade estamos falando de um servidor Web IIS especializado (que não irá servir páginas diretamente, e sim fazer um “proxy-reverso” para outros servidores Web. Os servidores Web que hospedam o conteúdo podem ser de quaisquer versões ou plataformas (você pode ter até um Apache rodando em Linux e usar o ARR para fazer esse roteamento das aplicações). Vou descrever como montar esta solução nos meus próximos posts, e vamos começar pelo básico: a instalação do IIS e do ARR:               <br /></span></span><strong style="mso-bidi-font-weight: normal;"></strong></p>          <p style="margin: 0in 0in 10pt;"><strong style="mso-bidi-font-weight: normal;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri;"><span style="font-size: small;">Instalação do IIS </span></span></span></strong></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri;"><span style="font-size: small;">Vamos começar com um laboratório onde instalamos dois servidores Windows 2008 R2 x64 em ambiente virtual (Hyper-V), para posterior configuração do Application Request Routing, chamados aqui de de ARR-1<span style="mso-spacerun: yes;">&#160; </span>e ARR-2. Note que recomendo que em um ambiente de produção real, sejam utilizados servidores físicos para esta função (afinal, quando é que você iria virtualizar os seus balanceadores de carga de hardware que possui hoje?) </span></span></span></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri;"><span style="font-size: small;">Os servidores IIS devem possuir os requisitos mínimos necessários. A instalação do IIS restringi-se somente aos componentes descritos conforme a listagem a seguir:</span></span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-CommonHttpFeatures</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-StaticContent</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-DefaultDocument</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HttpErrors</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HttpRedirect</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HealthAndDiagnostics</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HttpLogging</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-LoggingLibraries</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-RequestMonitor</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HttpTracing</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-Security</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-RequestFiltering</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-IPSecurity</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-Performance</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HttpCompressionStatic</span></span></p>          <p class="MsoListParagraph" style="margin: 0in 0in 0pt 0.75in; line-height: normal; text-indent: -0.25in; mso-list: l2 level1 lfo2;"><span style="font-family: symbol; mso-fareast-font-family: symbol; mso-bidi-font-family: symbol;"><span style="mso-list: ignore;"><span style="font-size: small;">·</span><span style="font: 7pt/normal &quot;Times New Roman&quot;; font-size-adjust: none; font-stretch: normal;">&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; </span></span></span><span style="font-family: calibri;"><span style="font-size: small;">IIS-HttpCompressionDynamic</span></span></p>          <p class="MsoBodyText" style="margin: 0in 0in 6pt 0.25in;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;">&#160;</span></span></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">Para fazer a instalação do IIS 7.5 via prompt de comando, utilizamos o seguinte comando: </span></span></span></p>          <p class="MsoBodyText" style="margin: 0in 0in 6pt 0.25in;"><span lang="PT-BR" style="font-family: &quot;Courier New&quot;; font-size: 8pt; mso-ansi-language: pt-br;">start /w pkgmgr /l:log.etw /iu:IIS-WebServerRole;IIS-WebServer;IIS-CommonHttpFeatures;IIS-StaticContent;IIS-DefaultDocument;IIS-HttpErrors;IIS-HttpRedirect;IIS-HealthAndDiagnostics;IIS-HttpLogging;IIS-LoggingLibraries;IIS-RequestMonitor;IIS-HttpTracing;IIS-Security;IIS-IPSecurity;IIS-RequestFiltering;IIS-Performance;IIS-HttpCompressionStatic;IIS-HttpCompressionDynamic;IIS-WebServerManagementTools;IIS-ManagementScriptingTools;WAS-WindowsActivationService;WAS-ProcessModel;IIS-NetFxExtensibility;WAS-NetFxEnvironment;WAS-ConfigurationAPI;IIS-ManagementService</span></p>          <p class="MsoBodyText" style="margin: 0in 0in 6pt 0.25in;"><span lang="PT-BR" style="font-family: &quot;Courier New&quot;; font-size: 8pt; mso-ansi-language: pt-br;">&#160;</span></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">Para confirmar via prompt de comando se a instalação ocorreu conforme o esperado utilizamos o seguinte comando: </span></span></span></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span lang="PT-BR" style="line-height: 115%; font-family: &quot;Courier New&quot;; font-size: 8pt; mso-ansi-language: pt-br;">Servermanagercmd.exe /query</span></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">Além disso, foi necessário instalar o Feature “Desktop Experience”, requirido posteriormente para a configuração do recurso de Offline Files (depois explico por que isso é necessário). Para instalar este componente via prompt de comando, utilizamos o seguinte: </span></span></span></p>          <p style="margin: 0in 0in 10pt 0.25in; tab-stops: 274.5pt;"><span style="line-height: 115%; font-family: &quot;Courier New&quot;; font-size: 8pt;">start /w pkgmgr.exe /iu:Desktop-Experience</span></p>          <p style="margin: 0in 0in 10pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-family: calibri; font-size: small;"></span></strong></p>          <p style="margin: 0in 0in 10pt;"><strong style="mso-bidi-font-weight: normal;"><span style="font-family: calibri;"><span style="font-size: small;">Instalação do Application Request Routing (ARR).</span></span></strong></p>          <p style="margin: 0in 0in 10pt 0.5in;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri;"><span style="font-size: small;">O Application Request Routing (ARR) é um component OOB (Out-of-Box) que deve ser baixado do site da Microsoft ou do IIS.NET. Para fazer download do mesmo, basta utilizar o seguinte endereço:</span></span></span></p>          <p style="margin: 0in 0in 10pt 0.5in;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri;"><span style="font-size: small;"><a href="https://www.iis.net/downloads/category/handle-requests">https://www.iis.net/downloads/category/handle-requests</a>&#160;</span></span></span></p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">No próximo post, vou continuar descrevendo como montarmos a estrutura necessária para migrar aplicações de um ambiente IIS5/6 para o IIS7 de forma transparente para o usuário final.</span></span></span></p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-size: small;"><span style="font-family: calibri;">Vejo vocês logo!</span></span></span></p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri; font-size: small;">Paulo.</span></span></p>          <p style="margin: 0in 0in 10pt;">&#160;</p>          <p style="margin: 0in 0in 10pt;"><span lang="PT-BR" style="mso-ansi-language: pt-br;"><span style="font-family: calibri; font-size: small;">UPDATE (09/02/2013): Links para download do ARR foram atualizados, algumas referências às versões RC dos pacotes citados anteriormente foram removidos. </span></span></p>       </td>     </tr>   </tbody></table>]]></content:encoded>
    </item>
    <item>
      <title>Cães e gatos contra bots!</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/ces-e-gatos-contra-bots</link>
      <pubDate>Fri, 26 Oct 2007 11:27:00 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2007/10/26/ces-e-gatos-contra-bots/</guid>
      <description><![CDATA[Ok, n&atilde;o entendeu nada do t&iacute;tulo deste post, n&eacute;? Desta vez vou fugir um pouco da...]]></description>
      <content:encoded><![CDATA[<p>Ok, n&atilde;o entendeu nada do t&iacute;tulo deste post, n&eacute;? Desta vez vou fugir um pouco da parte t&eacute;cnica e mostrar uma "brincadeira" muito inteligente que encontrei no site do MS Research (<a href="https://research.microsoft.com">https://research.microsoft.com</a>). Primeiro, e como justificativa, cabe a pergunta: algu&eacute;m j&aacute; entrou numa dasquelas p&aacute;ginas em que para voc&ecirc; enviar um determinado formul&aacute;rio tem que ditigar aquelas letras que aparecem em uma imagem distorcida, como a abaixo?</p>
<p><a atomicselection="true" href="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/ProtejaoseuwebsitecontrabotsusandooAssi_14741/hip-example.png" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/ProtejaoseuwebsitecontrabotsusandooAssi_14741/hip-example.png"><img height="48" width="218" src="https://msdnshared.blob.core.windows.net/media/TNBlogsFS/BlogFileStorage/blogs_msdn/pfebrasil_iisdev/WindowsLiveWriter/ProtejaoseuwebsitecontrabotsusandooAssi_14741/hip-example_thumb.png" original-url="https://blogs.msdn.com/blogfiles/pfebrasil_iisdev/WindowsLiveWriter/ProtejaoseuwebsitecontrabotsusandooAssi_14741/hip-example_thumb.png" alt="hip-example" border="0" style="border-top-width: 0px; border-left-width: 0px; border-bottom-width: 0px; border-right-width: 0px" /></a> </p>
<p>Convenhamos, &eacute; horr&iacute;vel. Pois bem, o pessoal do MS Research tem um projeto que&nbsp;substitui essas imagens por&nbsp;algo que somente n&oacute;s, humanos, somos capazes de fazer (e de quebra &eacute; divertido). Trata-se da nossa capacidade de identificar (corretamente) c&atilde;es e gatos. &Eacute; isso mesmo! O projeto <a href="https://research.microsoft.com/asirra/">ASIRRA</a> (Animal Species Image Recognition for Restricting Access) oferece um conjunto de APIs (WebServices) que voc&ecirc; pode adicionar ao seu site e que ao inv&eacute;s de usar imagens como&nbsp;a acima, usa fotos de c&atilde;es e gatos, e pede que n&oacute;s os identifiquemos. O mais interessante &eacute; que&nbsp;muito dif&iacute;cil que&nbsp;uma imagem de um c&atilde;o, ou gato, se repita: s&atilde;o 3 milh&otilde;es de imagens diferentes. Vale a pena&nbsp;dar uma olhadinha: <a href="https://research.microsoft.com/asirra">https://research.microsoft.com/asirra</a>.</p>
<p>Paulo.</p>]]></content:encoded>
    </item>
    <item>
      <title>Microsoft anuncia acesso ao código fonte do .NET Framework 3.5</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/microsoft-anuncia-acesso-ao-cdigo-fonte-do-net-framework-3-5</link>
      <pubDate>Wed, 03 Oct 2007 13:22:03 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2007/10/03/microsoft-anuncia-acesso-ao-cdigo-fonte-do-net-framework-3-5/</guid>
      <description><![CDATA[A Microsoft anunciou hoje que até o final do ano, juntamente com o lançamento do Visual Studio 2008,...]]></description>
      <content:encoded><![CDATA[<p>A Microsoft anunciou hoje que até o final do ano, juntamente com o lançamento do Visual Studio 2008, irá disponibilizar o acesso ao código-fonte do .NET Framework 3.5 sob os termos da <a href="https://www.microsoft.com/resources/sharedsource/licensingbasics/referencelicense.mspx">Microsoft Shared Source Licensing</a>. Será possível baixar o código-fonte em um pacote único (para uso localmente), ou através de um plugin para o VS2008 que irá facilitar o debugging de trechos do próprio .net framework. Você pode ver maiores detalhes nos blogs <a href="https://www.hanselminutes.com/default.aspx?showID=101">https://www.hanselminutes.com/default.aspx?showID=101</a> e <a title="https://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx" href="https://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx">https://weblogs.asp.net/scottgu/archive/2007/10/03/releasing-the-source-code-for-the-net-framework-libraries.aspx</a>. A licença não permite a alteração ou mesmo a recompilação do código-fonte pelos clientes. </p>  <p>&quot;Let's rock&quot;. Um argumento a menos! </p>]]></content:encoded>
    </item>
    <item>
      <title>Estudo de caso: ASP clássico - problemas mais comuns</title>
      <link>https://docs.microsoft.com/archive/blogs/pfebrasil_iisdev/estudo-de-caso-asp-clssico-problemas-mais-comuns</link>
      <pubDate>Wed, 26 Sep 2007 21:04:17 GMT</pubDate>
      <dc:creator><![CDATA[Paulo Teixeira - MSFT]]></dc:creator>
      <guid
        isPermaLink="false">https://blogs.msdn.microsoft.com/pfebrasil_iisdev/2007/09/26/estudo-de-caso-asp-clssico-problemas-mais-comuns/</guid>
      <description><![CDATA[Estive há algum tempo em um cliente que reclamava de algum processo que estava causando o uso de...]]></description>
      <content:encoded><![CDATA[<p><font size="3" face="Calibri">Estive há algum tempo em um cliente que reclamava de algum processo que estava <em>causando</em> o uso de 100% de CPU no seu servidor SQL. Como <em>efeito </em>disso, uma importante aplicação Web sofria lentidão generalizada. O servidor em questão era uma máquina bem robusta, e que atendia exclusivamente a essa aplicação Web baseada no ASP clássico. </font></p>  <p><font size="3" face="Calibri">Para começar e antes de tudo, acho que vale fazer uma distinção importante aqui: </font></p>  <blockquote>   <p><font size="3"><font face="Calibri"><font color="#000080"><b>Causa:</b> do Lat. <i>Causa</i>, s. f., aquilo ou aquele que ocasiona um acontecimento ou faz que uma coisa exista; princípio; origem; motivo, razão, pretexto; partido.</font> </font></font></p> </blockquote>  <blockquote>   <p><font color="#000080"><font size="3"><font face="Calibri"><b>Efeito:</b> </font></font></font><a><font color="#000080" size="3" face="Calibri">do Lat. <i>Effectu, </i>s. m., resultado, consequência; produto de uma causa; fim; destino; aplicação; eficácia; execução, realização; cumprimento; impressão moral, sensação; Fís., fenomeno de particular importância produzido por uma causa bem determinada.</font></a><font size="3" face="Calibri"> </font></p> </blockquote>  <p><font size="3" face="Calibri">A nossa experiência no suporte Microsoft tem nos mostrado que confundir <i>causa</i> e <i>efeito</i> é algo muito comum. Eu pessoalmente sou muito cético quando se atribui a <i>causa </i>ao SQL Server ou ao IIS quando há problemas em um ambiente Web. Isso porque, em geral, tanto SQL quanto o IIS sofrem os <i>efeitos</i> de aplicações mal comportadas. Se uma aplicação faz uso incorreto de memória ou de outros recursos do sistema, em geral, <i>os</i> <i>efeitos</i> aparecem no IIS. Se a aplicação faz uso de queries de forma inadvertida ou tem um modelo de dados inadequado, em geral, <i>os efeitos</i> aparecem no SQL. </font></p>  <p><font size="3" face="Calibri">Com base nessa experiência iniciei o meu trabalho atacando exatamente a minha área de atuação, ou seja, a configuração do servidor IIS. O servidor em questão era baseado no Windows 2003 SP1 com IIS6. </font></p>  <p><font size="3"><font face="Calibri">Como sempre, o primeiro passo foi olhar os contadores de performance para avaliar se o equipamento estava bem dimensionado e se havia algum gargalo. Os contadores básicos do S.O. são aqueles relacionados a CPU, disco, rede e memória. Infelizmente (ou felizmente) já de início foi possível descartar a existência de gargalos; a máquina estafa “sobrando”. Porém algo que as vezes passa desapercebido me chamou a atenção: o consumo de memória de um Worker Process do IIS6.... mas vamos guardar essa informação para logo mais. <del></del></font></font></p>  <p><font size="3" face="Calibri">Também olhei o log de eventos de aplicação. Por incrível que pareça é possível contar nos dedos os administradores que realmente olham e dão importância aos logs do sistema. E ai cabe um puxão de orelha: isso quase sempre só acontece com administradores Windows. Se pegaramos os administradores Unix facilmente encontraremos um que regularmente dá uma “olhadela” no syslog. </font></p>  <p><font size="3" face="Calibri">Pois bem, no log de aplicações encontrei algo semelhante ao descrito abaixo: </font></p>  <blockquote>   <p><font size="2" face="Courier New">8/20/2007 4:49:39 PM Active Server Pages Warning None 9 N/A SERVER_01 Warning: 500 Server Error. .        <br /></font><font size="2" face="Courier New">8/20/2007 4:49:25 PM Active Server Pages Warning None 9 N/A SERVER_01 Warning: File /search_payment.asp Line 29 Type mismatch: 'fValidateC'. .        <br /></font><font size="2" face="Courier New">8/20/2007 4:48:58 PM Active Server Pages Warning None 9 N/A SERVER_01 Warning: File /basket_001.asp Line 33 Type mismatch: 'oBasket.Item(...)'. .        <br /></font><font size="2" face="Courier New">8/20/2007 4:48:48 PM Active Server Pages Warning None 9 N/A SERVER_01 Warning: File /finalizebuy01_.asp Line 304 Type mismatch: 'oBasket.Item(...)'</font>. . </p> </blockquote>  <p><font size="3" face="Calibri">Obviamente, por essas entradas, fica claro que a aplicação estava apresentando problemas. Havia pelo menos três tipos distintos de erros, e nesse instante não havia mais como descartar que o SQL poderia estar sofrendo <i>efeitos</i> de uma aplicação mal comportada. Ainda assim não havia nenhuma relação comprovada entre esses erros e o consumo de 100% CPU no banco de dados. </font></p>  <p><font size="3" face="Calibri">A primeira coisa que me ocorreria é tentar capturar mais informações no instante em que esses erros estavam ocorrendo, ou no instante que a CPU no banco estivesse em 100%. Seria possível capturar facilmente esses erros gerando um <em>dump</em> de memória utilizando o utilitário <em>Debug Diagnostics, </em>também conhecido como DebugDiag (que pode ser baixado do </font><a href="https://www.microsoft.com/downloads"><font size="3" face="Calibri">www.microsoft.com/downloads</font></a><font size="3" face="Calibri">). </font></p>  <p><font size="3" face="Calibri">Entretando isso simplesmente não era possível nesse caso. O porquê? Dois fatores contribuiram para tornar isso impossível: </font></p>  <blockquote>   <p><font size="3" face="Calibri">a) a aplicação era crítica para o cliente (uma solução de comércio eletrônico);        <br /></font><font size="3" face="Calibri">b) o consumo de memória do Worker Process responsável por processar a aplicação; </font></p> </blockquote>  <p><font size="3" face="Calibri">Como citei há pouco, não havia gargalos no ambiente. De fato, o uso de memória física estava muito baixo. Mas então qual era o problema com o Worker Process? O problema estava exatamente no consumo de <i>memória virtual</i> ou melhor, do espaço de endereços de memória virtual. Usando o contador <i>Process\Virtual Bytes</i> do performance monitor notei que a instância do W3WP.EXE que executava a aplicação ocupada 1.8Gb de memória virtual!! Isso realmente é algo MUITO além do normal (<u>em geral</u> uma aplicação “bem comportada” costuma consumir menos que 1Gb de memória virtual). </font></p>  <p><font size="3" face="Calibri">E qual o problema de usar o Debug Diagnostics? Ao se gerar um dump de memória, o DebugDiag (e qquer outro debugger) irá criar um arquivo cujo tamanho final será muito próximo ao tamanho de memória virtual utilizada pelo processo (no nosso caso, 1.8Gb). Infelizmente, gerar um arquivo desse tamanho pode ser uma tarefa bem demorada, mesmo em um equipamento adequado. </font></p>  <p><font size="3" face="Calibri">Apesar de não poder gerar o dump de memória, esse consumo excessivo de memória também me apontou para algumas possibilidades interessantes em relação a causa do problema. Infelizmente a ausência do dump também me deixava somente no terreno das possibilidades (ou das incertezas) e uma outra abordagem se fazia necessária. Como identificar a origem dos problemas da aplicação? Como encontrar uma correlação entre os problemas na aplicação e os efeitos no banco de dados? </font></p>  <p><font size="3" face="Calibri">A única solução possível foi fazer uma revisão estática de código (popularmente chamado &quot;Code Review&quot;).&#160; Antes que alguém pergunte, fazer isso numa aplicação que tem 1000 páginas é inviável. E esse era o caso. Todavia, sabemos que &quot;estatisticamente&quot; o código costuma apresentar um <em>padrão</em> de desenvolvimento, ou seja, se há algo errado, o erro costuma ser repetido em diversos locais do código. Também sabemos que a regra 80/20 costuma se aplicar, ou seja, em 20% das páginas estão concentrados 80% dos problemas mais críticos da aplicação. Por isso o nosso objetivo em um Code Review (executado com uma visão de Suporte) é atacar extamente esses 20% de código. </font></p>  <p><font size="3" face="Calibri">O primeiro passo então é definir o nosso escopo (os 20%), e isso é feito através da análise de logs do IIS. Através do uso do LogParser, conseguimos identificar as TOP páginas com Erros 500, e também as páginas com maior tempo de duração. O Code Review é realizado com foco nessas páginas. Como fazer isso? </font></p>  <blockquote>   <p><font color="#008040" size="2" face="Courier New"># maior número de hits        <br />logparser &quot;SELECT TOP 20 cs-uri-stem as URI, count(*) as Hits, AVG(time-taken) as AvgTimeTaken, AVG(sc-bytes) As AvgSentBytes, AVG(cs-bytes) as AvgRecvBytes FROM ex*.log ORDER BY Hits DESC GROUP BY cs-uri-stem&quot;         <br />#maior tempo gasto         <br /></font><font color="#008040" size="2" face="Courier New">logparser &quot;SELECT TOP 20 cs-uri-stem as URI, count(*) as Hits, AVG(time-taken) as AvgTimeTaken, AVG(sc-bytes) As AvgSentBytes, AVG(cs-bytes) as AvgRecvBytes FROM ex*.log ORDER BY AvgTimeTaken DESC GROUP BY cs-uri-stem&quot;        <br /># páginas com erros 500, ordenadas pelo número de hits</font>       <br /><font color="#0000ff" size="2" face="Courier New"><font color="#008040">logparser &quot;SELECT TOP 20 cs-uri-stem as URI, count(*) as Hits, AVG(time-taken) as AvgTimeTaken, AVG(sc-bytes) As AvgSentBytes, AVG(cs-bytes) as AvgRecvBytes FROM ex*.log WHERE sc-status =&#160; 500 ORDER BY Hits DESC GROUP BY cs-uri-stem&quot;</font> </font></p> </blockquote>  <p><font size="3" face="Calibri">Com essas queries do logparser conseguimos identificar o nosso conjunto de páginas. Após isso, basta fazer uso de um pouco de experiência&#160; (e algumas referências que listo abaixo) para varrer o código e encontrar (se houver) os principais problemas da aplicação. Para resumir o resultado do trabalho, após a análise do código das páginas, o que foi encontrado foi o seguinte: </font></p>  <ul>   <li><font size="3" face="Calibri">Diversos problemas em relação ao mecanismo de acesso à dados utilizado, causados pela falta de padronização no acesso ao banco de dados. Estavam sendo usadas queries “ad-hoc”, stored procedures, updatable client-side cursors e instruções SQL DML na atualização dos dados, algumas vezes diretamente a partir do código ASP e outras vezes com o auxilio de um componente COM, ou seja, uma tríade de mecanismos para acesso à dados. </font></li>    <li><font size="3" face="Calibri">O sistema armazenava um <em>non-agile object</em> em uma variável de sessão para um dos processos mais importanes do site (a cesta de compras). </font></li>    <li><font size="3" face="Calibri">O cache estava desabilitado programaticamente em praticamente 80% do código da aplicação (o que revela também uma falta de padronização ao se desenvolver o código - afinal, se houvesse padrão ou seria tudo, ou nada habilitado).</font> </li>    <li><font size="3" face="Calibri">A forma com que o código foi criado e estava organizado gerava grandes <em>asp templates </em>para serem processados pelo IIS (e isso representa uma sobrecarga a mais no servidor). </font>&#160; </li> </ul>  <p><font size="3" face="Calibri">Como podemos ver havia grandes problemas a serem enfretados, e um longo trabalho teve início a partir desta análise da aplicação. Se você leu estes últimos itens acima e ficou pensando consigo mesmo: &quot;Puxa, e agora? Não entendi nem por que isso é considerado problema!&quot;, não se preocupe. </font><font size="3" face="Calibri">Nos próximos <em>posts</em> eu vou comentar cada um dos tópicos encontrados. Por outro lado se você entendeu tudo, mesmo assim eu lhe convido a retornar, afinal, sempre pode haver alguma informação que contribua para o seu conhecimento. </font></p>  <p><font size="3" face="Calibri">Vejo vocês em breve. </font></p>  <p><font color="#800000" size="3" face="Calibri">Paulo.</font> </p>  <p><font size="3" face="Calibri"></font>&#160;</p>  <table border="0" cellspacing="0" cellpadding="2" width="100%"><tbody>     <tr>       <td bgcolor="#cccccc" valign="top" width="100%">         <p><font size="3" face="Calibri"><strong>Referências adicionais para auxiliar em um processo de Code Review para aplicações ASP clássico: </strong></font></p>          <p><b>25+ ASP Tips to Improve Performance and Style</b>             <br /><a href="https://msdn2.microsoft.com/en-us/library/ms972335.aspx">https://msdn2.microsoft.com/en-us/library/ms972335.aspx</a> </p>          <p><b>ADO Performance Best Practices </b>            <br /><a href="https://msdn2.microsoft.com/en-us/library/aa496013(SQL.80).aspx%20">https://msdn2.microsoft.com/en-us/library/aa496013(SQL.80).aspx </a></p>          <p><b>Optimizing Performance in SQL Server Solutions </b>            <br /><a href="https://msdn2.microsoft.com/en-us/sql/aa336291.aspx%20">https://msdn2.microsoft.com/en-us/sql/aa336291.aspx </a></p>          <p><b>6 Ways to Boost ADO Application Performance </b>            <br /><a href="https://msdn2.microsoft.com/en-us/library/aa175762(sql.80).aspx">https://msdn2.microsoft.com/en-us/library/aa175762(sql.80).aspx</a> </p>          <p><b>Windows 2000 Web Server Best Practices for High Availability</b>             <br /><a href="https://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/deploy/rollout/websrvbp.mspx">https://www.microsoft.com/technet/prodtechnol/windows2000serv/technologies/iis/deploy/rollout/websrvbp.mspx</a> </p>          <p><b>Design guidelines for Visual Basic components under ASP              <br /></b><a href="https://support.microsoft.com/default.aspx?scid=kb;en-us;243548&amp;sd=tech">https://support.microsoft.com/default.aspx?scid=kb;en-us;243548&amp;sd=tech</a> </p>          <p><b>Improving MDAC Application Performance</b>             <br /><a href="https://msdn2.microsoft.com/en-us/library/ms810818.aspx">https://msdn2.microsoft.com/en-us/library/ms810818.aspx</a> </p>          <p><b>INFO: ADO/ASP Scalability FAQ</b>             <br /><a href="https://support.microsoft.com/default.aspx?scid=kb;en-us;176056&amp;sd=tech">https://support.microsoft.com/default.aspx?scid=kb;en-us;176056&amp;sd=tech</a> </p>          <p><b>How to resolve Retain in Memory and Unattended Execution problems in ActiveX controls that are running on IIS</b>             <br /><a href="https://support.microsoft.com/kb/833891">https://support.microsoft.com/kb/833891</a> </p>          <p><b>Design guidelines for Visual Basic components under ASP</b>             <br /><a href="https://support.microsoft.com/kb/243548">https://support.microsoft.com/kb/243548</a>             <br /></p>         <b>Visual Basic 6.0 Code Advisor            <br /></b><a href="https://msdn2.microsoft.com/en-us/vbasic/ms789135.aspx">https://msdn2.microsoft.com/en-us/vbasic/ms789135.aspx</a>           <br />          <br /></td>     </tr>   </tbody></table>]]></content:encoded>
    </item>
  </channel>
</rss>