<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" media="screen" href="/styles/xslt/rss.xslt"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:media="http://search.yahoo.com/mrss/" xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd" xmlns:c9="http://channel9.msdn.com">
<channel>
	<title>Channel 9</title>
    <atom:link rel="self" type="application/rss+xml" href="http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS"></atom:link>
    <itunes:summary></itunes:summary>
    <itunes:author>Microsoft</itunes:author>
    <itunes:subtitle></itunes:subtitle>
    <image>
      <url>http://mschnlnine.vo.llnwd.net/d1/Dev/App_Themes/C9/images/feedimage.png</url>
      <title>Channel 9</title>
      <link>http://channel9.msdn.com/Niners/fabriciosanchez/Posts</link>
    </image>
    <itunes:image href=""></itunes:image>
    <itunes:category text="Technology"></itunes:category>
    <description>Channel 9 keeps you up to date with the latest news and behind the scenes info from Microsoft that developers love to keep up with. From LINQ to SilverLight – Watch videos and hear about all the cool technologies coming and the people behind them.</description>
    <link>http://channel9.msdn.com/Niners/fabriciosanchez/Posts</link>
    <language>en</language>
    <pubDate>Sun, 19 May 2013 03:30:50 GMT</pubDate>
    <lastBuildDate>Sun, 19 May 2013 03:30:50 GMT</lastBuildDate>
    <generator>Rev9</generator>
    <c9:totalResults>18</c9:totalResults>
    <c9:pageCount>1</c9:pageCount>
    <c9:pageSize>25</c9:pageSize>
  <item>
      <title>WebMatrix e o processo de publica&#231;&#227;o de aplica&#231;&#245;es</title>
      <description><![CDATA[<p>O desenvolvimento de aplicações web ha algum tempo deixou de ser algo trivial. Se adicionarmos a este fato o de que a internet mudou gradativamente seu paradigma, temos um novo ambiente constituído. Neste ambiente, dentre as muitas características presentes, citamos: reutilização de código e a presença marcante de aplicações engines e/ou aplicações do tipo CMS (Content Management System).</p><p>É neste cenário que o WebMatrix encontra-se inserido. Conforme apresentado em outros artigos aqui mesmo no portal, WebMatrix é uma ferramenta integrada de desenvolvimento que disponibiliza a desenvolvedores (através de robustos recursos para codificação, tais como: code complete, suporte nativo a HTML5, CSS3, Javascript, PHP, helpers, etc.) e usuários finais (através da Web App Gallery), um ambiente sóbrio para criação de websites em diversos níveis.</p><p>O WebMatrix é uma ferramenta gratuíta desenvolvida pela Microsoft e você efetuar o download no site oficial do produto:&nbsp;<a href="http://bit.ly/MS_WebMatrix" target="_blank">http://bit.ly/MS_WebMatrix</a>.</p><p>Aqui no treinamento temos vários artigos que cobrem muitos aspectos sobre o WebMatrix. A seguir, apresento alguns deles:</p><ul><li>WebMatrix: o que ele traz e porque você deveria conhecê-lo </li><li>Criando aplicações web com WebMatrix </li><li>Instalando o WordPress no Windows com WebMatrix </li><li>WebMatrix &#43; WordPress = Fazendo a web de forma mais simples </li></ul><p>Do que trata este artigo?</p><p>O fluxo de construção de aplicações de qualquer natureza pode ser resumido em três etapas fundamentais: a concepção/especificação da ideia; a projeção/implementação e transformação da ideia em código; publicação da aplicação.</p><p>De forma geral, desenvolvedores e técnicos envolvidos em um projeto de software tradicional ou web, concentram esforços na segunda etapa, isto é, o processo de implementação das aplicações. Assim, naturalmente a terceira etapa (tão importante quanto a segunda) acaba recebendo menor atenção e alguns problemas acabam surgindo um função disso.</p><p>Neste texto daremos atenção especial para o processo de publicação de aplicações web utilizando WebMatrix. Assim, não cobriremos o processo de desenvolvimento de novas aplicações pois, os artigos acima apresentam boas abordagens sobre isso.</p><p><strong>O que significa &quot;publicação&quot; de uma aplicação web?</strong></p><p>Aplicações web possuem peculiaridades em relação as demais aplicações. Uma destas peculiaridades é o processo de publicação.</p><p>Para que uma aplicação web possa funcionar, é preciso que a mesma esteja hospedada em um ambiente específico. Este ambiente, fornece todos os requisitos e demais tecnologias para que a referida aplicação possa ser executada. O ambiente ao qual nos referimos é um servidor (um computador com recursos poderosos) que hospeda tanto os arquivos da aplicação web como estruturas orbitantes a estas (como bancos de dados, por exemplo).</p><p>O processo de publicação é aquele que possibilita a transferência dos arquivos e demais estruturas do site/aplicação do ambiente local (o computador onde foi desenvolvido) para o ambiente remoto (servidor web, mencionado no parágrado anterior). A Figura 1 ilustra este processo.</p><p><strong><a href="http://files.channel9.msdn.com/thumbnail/ffbb51f3-5eb3-4344-91c3-d63772689fc5.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/ffbb51f3-5eb3-4344-91c3-d63772689fc5.png" alt="" width="600" height="320"></a></strong></p><p><strong>Figura 1. </strong>Ilustrando o processo de transferência de arquivos</p><p><strong>FTP ou WebDeploy?</strong></p><p>O processo de publicação de uma aplicação web (ilustrado na Figura 1) pode ser realizado de diversas formas. WebMatrix, ferramenta alvo de nosso estudo neste texto, disponibiliza em seu ambiente de publicação duas destas metodologias (as duas principais) - FTP (File Tranfer Protocol) e WebDeploy. Nas linhas a seguir, apresentamos estas metodologias em maiores detalhes.</p><ul><li>FTP: Esta metodologia utiliza um protocolo específico para a transferência de arquivos através da rede - o protocolo FTP. Basicamente a função deste protocolo garantir a transferência segura dos arquivos da origem até o destino. Muito embora funcione muito bem, este modelo possui algumas limitações. A seguir apresento as principais: <ul><li>Processo manual: o processo de publicação via FTP é manual, assim, quaisquer atualizações em arquivos da aplicação precisam ser enviados novamente um a um. Isto torna-se um problema a medida em que a aplicação cresce e o número de arquivos para administrar também. </li><li>Dificuldade com bancos de dados: uma situação não coberta pela abordagem FTP é a publicação de bases de dados de forma automática, isto é, uma vez criado no computador local o banco de dados, o usuário necessita gerar um backup ou script SQL (Structured Query Language) do mesmo para só então, em um segundo momento, utilizar este arquivo de apoio para estruturar este banco de dados junto a aplicação. </li></ul></li><li>WebDeploy: O processo de publicação via WebDeploy também disponível no WebMatrix é a reunião das melhores características do processo mencionado anteriormente com a solução dos problemas do mesmo. WebDeploy é um utilitário acoplado ao WebMatrix que realiza todo o processo de publicação. Algumas ações implementadas: <ul><li>Validação do ambiente remoto em relação ao ambiente local </li><li>Publicação automática dos arquivos do site </li><li>Publicação automática de bancos de dados </li><li>Configuração automática dos arquivos para o ambiente remoto </li></ul></li><li>A ferramenta de WebDeploy precisa apenas dos parâmetros de publicação do ambiente remoto. O restante é com a ferramenta. </li></ul><p>A Figura 2 apresenta de publicação via WebDeploy.</p><p><a href="http://files.channel9.msdn.com/thumbnail/15a3dbe4-3a9a-4a4d-a86e-11d6997cb68f.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/15a3dbe4-3a9a-4a4d-a86e-11d6997cb68f.JPG" alt="" width="600" height="450"></a></p><p><strong>Figura 2</strong>. Tela de parametrização da ferramenta WebDeploy no WebMatrix</p><p><strong>Onde publico meu site? De onde vêem os dados para configurar WebDeploy?</strong></p><p>Olhando para a Figura 2, fica evidente que algumas informações são requeridas para que o processo de publicação via WebDeploy ocorra. Se você possui pouca vivência com o ambiente de desenvolvimento web, a pergunta que pode surgir aqui é: onde consigo estas informações?</p><p>Voltando um pouco no texto, nos deparamos com a Figura 1. Nela está ilustrado o processo de publicação e fica evidente que, os arquivos e demais estruturas de um site/aplicação ficam hospedados em um servidor remoto. Estes servidores possuem endereços e credenciais de segurança que garantem tanto ao usuário quanto a empresa que mantém este servidor online, que apenas usuários autorizados estão realizando acesso ao mesmo.</p><p>Para que um site possa ser hospedado e entre em ambiente de produção, o desenvolvedor (ou outro profissional envolvido no processo de publicação) deve procurar uma empresa de hospedagem de aplicações web. Estas empresas são conhecidas popularmente como hosters e são as responsáveis em primeira instância, por garantir que o ambiente de produção esteja saudável (entenda-se: container web corretamente configurado, link de internet sem gargalo, segurança implementada, estrutura para bancos de dados online, etc.). Evidentemente que, a manutenção de todos estes serviços funcionando exige mão de obra especializada e o hoster, possui um alto custo de manutenção.</p><p>Após escolher a empresa de hospedagem de sua confiança, é preciso escolher o plano que melhor se adapta as necessidades de seu site (por exemplo: se seu site/aplicação for escrito em PHP, você precisará escolher um plano Windows com suporte a PHP e banco de dados MySQL ou SQL Server, etc.). Serviços como número de contas de e-mail, tráfego mensal de dados, número de bases de dados, dentre outros, são fatores que também devem ser igualmente analisados antes da contratação do plano.</p><p>Os hosters brasileiros oferecem basicamente dois tipos de estruturas de hospedagem: compartilhada e dedicada. A seguir apresentamos as linhas gerais de ambas.</p><ul><li>Hospedagem compartilhada: neste modelo de serviço, existe um servidor físico que possui a capacidade de hospedar n aplicações web. Este servidor dispõe de todos os requisitos técnicos para atender a demanda suportada em suas especificações. As n aplicações presentes neste servidor compartilham todos os recursos: processador, link de internet, memória (RAM / ROM), container web, etc., daí vem o nome &quot;hospedagem compartilhada&quot;. Este modelo de hospedagem de forma geral é mais barato de ser adquido e é indicado para sites/aplicações pequenas, cujo tráfego de dados e o número de visitas não seja tão elevado. Aqui, o usuário final não se preocupa com o processo de manutenção de seu site - o hoster é o responsável por isso. </li><li>Hospedagem dedicada (VPS): neste modelo, ao contratar um plano, o usuário recebe uma máquina virtual (o processo de virtualização quem realiza é o hoster) dedicada para que sua aplicação possa funcionar. Aqui, o usuário é o dono da máquina (o ambiente é dedicado) e portanto, todo processo de manutenção fica por sua conta, entretanto, todas as operações que o usuário desejar realizar e complementos que desejar instalar ele pode fazer sem permissão prévia da empresa de hospedagem. Este modelo é recomendado para aplicações médias e grandes e, de forma geral, é um pouco mais onerosa em relação ao modelo compartilhado. </li></ul><p>Após escolher a empresa de sua preferência e contratar plano que mais se adequa as suas necessidades, você receberá junto ao hoster as informações para parametrizar sua tela de WebDeploy do WebMatrix e aí sim, tudo está pronto para a publicação.</p><p><strong>Os parceiros da Microsoft Brasil no quesito hospedagem</strong></p><p>A Microsoft Brasil possui parceiros em todas as suas áreas de atuação. Para a Microsoft, empresas parceiras são aquelas que possuem credibilidade no mercado e que oferecem serviços/produtos com excelência e, no ambiente de hoster para WebMatrix também.</p><p>A Microsoft está firmando parceria com os principais hosters brasileiros para suportar em sua infraestrutura aplicações provenientes do WebMatrix. As parcerias são sempre benéficas para o usuário final, pois promoções, preços diferenciados nos principais ambientes do Brasil são gerados.</p><p>Hoje o principal parceiro Microsoft para hospedagem dedicada de WebMatrix é a Rede Host. O ambiente é homologado pelo time de especialistas da Microsoft e os preços são acessíveis tanto para hospedagem compartilhada quanto para virtual private server.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:da287d7c8a12419aa48fa02400ee7c09">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-e-o-processo-de-publicao-de-aplicaes</comments>
      <itunes:summary>O desenvolvimento de aplica&#231;&#245;es web ha algum tempo deixou de ser algo trivial. Se adicionarmos a este fato o de que a internet mudou gradativamente seu paradigma, temos um novo ambiente constitu&#237;do. Neste ambiente, dentre as muitas caracter&#237;sticas presentes, citamos: reutiliza&#231;&#227;o de c&#243;digo e a presen&#231;a marcante de aplica&#231;&#245;es engines e/ou aplica&#231;&#245;es do tipo CMS (Content Management System). &#201; neste cen&#225;rio que o WebMatrix encontra-se inserido. Conforme apresentado em outros artigos aqui mesmo no portal, WebMatrix &#233; uma ferramenta integrada de desenvolvimento que disponibiliza a desenvolvedores (atrav&#233;s de robustos recursos para codifica&#231;&#227;o, tais como: code complete, suporte nativo a HTML5, CSS3, Javascript, PHP, helpers, etc.) e usu&#225;rios finais (atrav&#233;s da Web App Gallery), um ambiente s&#243;brio para cria&#231;&#227;o de websites em diversos n&#237;veis. O WebMatrix &#233; uma ferramenta gratu&#237;ta desenvolvida pela Microsoft e voc&#234; efetuar o download no site oficial do produto:&amp;nbsp;http://bit.ly/MS_WebMatrix. Aqui no treinamento temos v&#225;rios artigos que cobrem muitos aspectos sobre o WebMatrix. A seguir, apresento alguns deles: WebMatrix: o que ele traz e porque voc&#234; deveria conhec&#234;-lo Criando aplica&#231;&#245;es web com WebMatrix Instalando o WordPress no Windows com WebMatrix WebMatrix &amp;#43; WordPress = Fazendo a web de forma mais simples Do que trata este artigo? O fluxo de constru&#231;&#227;o de aplica&#231;&#245;es de qualquer natureza pode ser resumido em tr&#234;s etapas fundamentais: a concep&#231;&#227;o/especifica&#231;&#227;o da ideia; a proje&#231;&#227;o/implementa&#231;&#227;o e transforma&#231;&#227;o da ideia em c&#243;digo; publica&#231;&#227;o da aplica&#231;&#227;o. De forma geral, desenvolvedores e t&#233;cnicos envolvidos em um projeto de software tradicional ou web, concentram esfor&#231;os na segunda etapa, isto &#233;, o processo de implementa&#231;&#227;o das aplica&#231;&#245;es. Assim, naturalmente a terceira etapa (t&#227;o importante quanto a segunda) acaba recebendo menor aten&#231;&#227;o e alguns problemas acabam surgindo um fun&#231;&#227;o disso. Neste texto daremos aten&#231;&#227;o especial para o processo de publica&#231;&#227;o de aplica</itunes:summary>
      <link>http://channel9.msdn.com/posts/WebMatrix-e-o-processo-de-publicao-de-aplicaes</link>
      <pubDate>Fri, 30 Mar 2012 14:28:55 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-e-o-processo-de-publicao-de-aplicaes</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/c188d3d9-2d34-4f4b-9bfa-130650ff1a20.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-e-o-processo-de-publicao-de-aplicaes/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>FTP7</category>
      <category>Publishing</category>
      <category>WebMatrix</category>
      <category>Web Development</category>
    </item>
  <item>
      <title>Implementando uma ferramenta de EAD com WebMatrix</title>
      <description><![CDATA[<p>Cursos de educação a distância são adotados cada vez mais por universidades e escolas técnicas brasileiras. Uma das principais ferramentas utilizadas para implementação de EAD (Ensino à Distância) é open source e WebMatrix suporta nativamente na Web App Gallery – Moodle.</p><p>Neste artigo você será apresentado ao processo de implementação do Moodle utilizando WebMatrix.</p><p><strong>O processo de instalação</strong></p><p>Se você já tentou instalar o Moodle manualmente, irá concordar que o processo é relativamente complexo. Com WebMatrix a complexidade é encapsulada pela ferramenta e você precisa executar apenas alguns passos básicos.</p><p>Com o WebMatrix em execução, na tela de entrada, selecione a opção &quot;Web App Gallery&quot;. Uma nova janela se abrirá e nela, selecione a opção &quot;CMS&quot; no menu de categorias exibido a esquerda. Em seguida, no campo de busca (canto superior direito da janela) digite o termo &quot;moodle&quot; e selecione a única opção apresentada. A Figura 1 ilustra este processo.</p><p><a href="http://files.channel9.msdn.com/thumbnail/657093a8-627a-46f2-aad1-280cdb112b82.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/657093a8-627a-46f2-aad1-280cdb112b82.JPG" alt="" width="600" height="450"></a></p><p><strong>Figura 1</strong>. Selecionando a aplicação desejada</p><p>Após nomear seu projeto (sugestivamente estou chamando de &quot;MoodleMVA&quot;), prossiga para a próxima estapa da instalação pressionando o botão &quot;Next&quot;. Na próxima etapa o assitente de instalação do WebMatrix exibe os termos de licença e os elementos ao quais ira realizar o download e instalação. Nesta tela, clicaremos na opção &quot;I Accept&quot;. A Figura 2 apresenta a tela mencionada.</p><p><a href="http://files.channel9.msdn.com/thumbnail/ea2e2eab-7f41-4ab2-bd85-bfbf6481bb55.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/ea2e2eab-7f41-4ab2-bd85-bfbf6481bb55.JPG" alt="" width="600" height="450"></a></p><p><strong>Figura 2</strong>. A tela de aceitação dos termos de licença</p><p>Ao aceitar os termos de licença você será redirecionado para uma nova tela. Esta nova que se apresenta, solicita uma informação: &quot;PasswordSalt&quot;. Como o próprio nome sugere, esta é uma senha que estará atrelada ao usuário administrador da ferramenta. Crie uma senha que atenda os padrões exigidos pela ferramenta e clique em prosseguir. A Figura 3 apresenta este processo.</p><p><a href="http://files.channel9.msdn.com/thumbnail/12af560c-5f99-4bb7-abe0-cb7373b0e7a1.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/12af560c-5f99-4bb7-abe0-cb7373b0e7a1.JPG" alt="" width="600" height="450"></a></p><p><strong>Figura 3</strong>. Criando a senha de administrador</p><p>Clicando em &quot;Next&quot; você estará habilitando o instalador do WebMatrix a baixar e instalar os elementos necessários para que o Moodle funcione corretamente. A Figura 4 mostra este procedimento ocorrendo.</p><p><a href="http://files.channel9.msdn.com/thumbnail/f7f62751-70c3-471e-8d0f-b41d65b6d239.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/f7f62751-70c3-471e-8d0f-b41d65b6d239.JPG" alt="" width="600" height="450"></a></p><p><strong>Figura 4</strong>. Assistente instalando e configurando Moodle</p><p>Após aguardar algum tempo (para que o WebMatrix baixe, instale e configure todas as ocorrências relacionadas ao Moodle) uma nova janela será exibida. Caso tudo tenha ocorrido conforme o esperado, você estará recebendo uma mensagem informando que o processo foi concluído com sucesso e abaixo, algumas informações importantes como: usuário e senha do banco de dados. A Figura 5 apresenta uma tela semelhante à aquela que você deverá estar visualizando.</p><p><a href="http://files.channel9.msdn.com/thumbnail/ed281246-40e7-490a-b8f9-04eb410492b6.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/ed281246-40e7-490a-b8f9-04eb410492b6.JPG" alt="" width="600" height="450"></a></p><p><strong>Figura 5</strong>. Mensagem de confirmação de instalação bem sucedida</p><p>Ao clicar em &quot;Ok&quot; você será levado ao ambiente já familiar do WebMatrix. Para finalizar o processo de instalação do Moodle, algumas parametrizações são necessárias. Estas parametrizações não são realizadas pelo WebMatrix mas sim, no próprio ambiente de execução da ferramente online.</p><p>Ao executar a ferramenta pela primeira vez, as informações de parametrização são requeridas. Para passar a esta etapa, o que faremos agora é executar nossa aplicação. A Figura 6 apresenta a primeira tela apresentada ao colocarmos o Moodle em execução. Esta tela pede para que você leia os termos de contrato e aceite ou não. Clicaremos em &quot;Continue&quot;.</p><p><a href="http://files.channel9.msdn.com/thumbnail/10c1a75d-5264-470c-8877-eaa51000044f.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/10c1a75d-5264-470c-8877-eaa51000044f.JPG" alt="" width="600" height="300"></a></p><p><strong>Figura 6</strong>. Aceitando os termos de contrato</p><p>Ao clicar em &quot;Continue&quot;, o Moodle realizará um check de recursos disponíveis no ambiente e os comparará com aqueles dos quais ele precisa para funcionar adequadamente e, em seguida, exibirá um relatório (Figura 7). Se tudo estiver em conformidade em seu ambiente, clique em &quot;Continue&quot;.</p><p><a href="http://files.channel9.msdn.com/thumbnail/7d991055-212d-43fa-88a2-b86ce34ad31b.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/7d991055-212d-43fa-88a2-b86ce34ad31b.JPG" alt="" width="600" height="320"></a></p><p><strong>Figura 7</strong>. Relatório do &quot;check&quot; de ambiente realizado pelo Moodle</p><p>Ao clicar em &quot;Continue&quot; na tela apresentada acima o Moodle realizará algumas configurações de ambiente. Após executar tais configurações, um novo relatório (semelhante aquele apresentado pela Figura 8) será exibido. Novamente sua tarefa será pressionar o botão &quot;Continue&quot;.</p><p><a href="http://files.channel9.msdn.com/thumbnail/cd7d755f-4956-4ea1-9dfa-3268d7f2745b.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/cd7d755f-4956-4ea1-9dfa-3268d7f2745b.JPG" alt="" width="600" height="700"></a></p><p><strong>Figura 8</strong>. Relatório apontando o sucesso da configuração automática de ambiente</p><p>Se você visualizou o relatório apresentado pela Figura 8, significa que o processo de intalação foi finalizado. Agora, a etapa seguinte consiste apenas da configuração da conta de usuário administrador e perfil de exibição do site. Basta informar os dados conforme solicitado nas telas seguintes e pronto, Moodle instalado com sucesso (Figura 11).</p><p>As demais telas de configuração de dados de usuário e do site propriamente dito, podem ser visualizadas na mesma sequência em que são apresentadas pela ferramenta nas Figuras 9, 10 e 11.</p><p><a href="http://files.channel9.msdn.com/thumbnail/8f87a812-7855-4fe6-995a-177a867bdd26.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/8f87a812-7855-4fe6-995a-177a867bdd26.JPG" alt="" width="600" height="250"></a></p><p><strong>Figura 9</strong>. Atualizando as informações do super usuário da ferramenta</p><p><a href="http://files.channel9.msdn.com/thumbnail/abaf418c-40bb-4fc0-a2a4-e3add5721a63.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/abaf418c-40bb-4fc0-a2a4-e3add5721a63.JPG" alt="" width="600" height="250"></a></p><p><strong>Figura 10</strong>. Informando nome e descrição do site</p><p><a href="http://files.channel9.msdn.com/thumbnail/14e459ee-46c0-49ab-9a3f-2ec060444b7a.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/14e459ee-46c0-49ab-9a3f-2ec060444b7a.JPG" alt="" width="600" height="250"></a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:3a13d43b7a774a1a8c97a02400e939fe">]]></description>
      <comments>http://channel9.msdn.com/posts/Implementando-uma-ferramenta-de-EAD-com-WebMatrix</comments>
      <itunes:summary>Cursos de educa&#231;&#227;o a dist&#226;ncia s&#227;o adotados cada vez mais por universidades e escolas t&#233;cnicas brasileiras. Uma das principais ferramentas utilizadas para implementa&#231;&#227;o de EAD (Ensino &#224; Dist&#226;ncia) &#233; open source e WebMatrix suporta nativamente na Web App Gallery – Moodle. Neste artigo voc&#234; ser&#225; apresentado ao processo de implementa&#231;&#227;o do Moodle utilizando WebMatrix. O processo de instala&#231;&#227;o Se voc&#234; j&#225; tentou instalar o Moodle manualmente, ir&#225; concordar que o processo &#233; relativamente complexo. Com WebMatrix a complexidade &#233; encapsulada pela ferramenta e voc&#234; precisa executar apenas alguns passos b&#225;sicos. Com o WebMatrix em execu&#231;&#227;o, na tela de entrada, selecione a op&#231;&#227;o &amp;quot;Web App Gallery&amp;quot;. Uma nova janela se abrir&#225; e nela, selecione a op&#231;&#227;o &amp;quot;CMS&amp;quot; no menu de categorias exibido a esquerda. Em seguida, no campo de busca (canto superior direito da janela) digite o termo &amp;quot;moodle&amp;quot; e selecione a &#250;nica op&#231;&#227;o apresentada. A Figura 1 ilustra este processo.  Figura 1. Selecionando a aplica&#231;&#227;o desejada Ap&#243;s nomear seu projeto (sugestivamente estou chamando de &amp;quot;MoodleMVA&amp;quot;), prossiga para a pr&#243;xima estapa da instala&#231;&#227;o pressionando o bot&#227;o &amp;quot;Next&amp;quot;. Na pr&#243;xima etapa o assitente de instala&#231;&#227;o do WebMatrix exibe os termos de licen&#231;a e os elementos ao quais ira realizar o download e instala&#231;&#227;o. Nesta tela, clicaremos na op&#231;&#227;o &amp;quot;I Accept&amp;quot;. A Figura 2 apresenta a tela mencionada.  Figura 2. A tela de aceita&#231;&#227;o dos termos de licen&#231;a Ao aceitar os termos de licen&#231;a voc&#234; ser&#225; redirecionado para uma nova tela. Esta nova que se apresenta, solicita uma informa&#231;&#227;o: &amp;quot;PasswordSalt&amp;quot;. Como o pr&#243;prio nome sugere, esta &#233; uma senha que estar&#225; atrelada ao usu&#225;rio administrador da ferramenta. Crie uma senha que atenda os padr&#245;es exigidos pela ferramenta e clique em prosseguir. A Figura 3 apresenta este processo.  Figura 3. Criando a senha de administrador Clicando em &amp;quot;Next&amp;quot; voc&#234; estar&#225; habilitando o instalador do WebMatrix a ba</itunes:summary>
      <link>http://channel9.msdn.com/posts/Implementando-uma-ferramenta-de-EAD-com-WebMatrix</link>
      <pubDate>Fri, 30 Mar 2012 14:09:39 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Implementando-uma-ferramenta-de-EAD-com-WebMatrix</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/46208f41-5a13-4b4e-a9e6-7a73dab3482b.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Implementando-uma-ferramenta-de-EAD-com-WebMatrix/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Moodle</category>
      <category>PHP</category>
      <category>WebMatrix</category>
      <category>Web Development</category>
    </item>
  <item>
      <title>Estrutura do template de site pessoal</title>
      <description><![CDATA[<p>Em outra aula neste mesmo módulo, você foi apresentado ao processo de criação de um novo site pessoal baseado em template utilizando WebMatrix.&nbsp; Neste contexto, faz sentido olhar de forma demorada para a esturtura deste modelo de aplicação pois permite visualizar um padrão arquitetônico interessante para construção de aplicações web baseadas em web pages com WebMatrix.</p><p><strong>Esturtura do template &quot;Personal Site&quot; </strong></p><p>Para que possamos começar a analisar a estrutura do template, considere a estrutura de diretórios apresentada pela Figura 1.</p><p><a href="http://files.channel9.msdn.com/thumbnail/db09677f-ca38-4cb3-ba46-fdd00e8df8b6.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/db09677f-ca38-4cb3-ba46-fdd00e8df8b6.JPG" alt=""></a></p><p><strong>Figura 1</strong>. A estrutura de diretórios do template</p><p>Iniciemos este processo de análise pelos diretórios da aplicação. São 7 (sete) diretórios sendo que, alguns deles, são estratégicos para o funcionamento da aplicação. São eles:</p><ul><li><strong>App_Code</strong>: diretório responsável por agrupar helpers, classes, funções, etc. Se algum arquivo Razor deve ser utilizado como biblioteca, este arquivo deve ser incorporado na pasta App_Code. WebMatrix buscará nesta página códigos executáveis. </li><li><strong>App_Data</strong>: diretório dedicado ao armazenamento de arquivos que atuam como fontes de dados da aplicação. Por padrão, quando um banco de dados SQL Server Compact (.sdf) é criado, sua estrutura encontra-se hospedada neste diretório. </li><li><strong>bin</strong>: diretório específico para a adição componentes da plataforma .NET. Por padrão, quando um projeto WebMatrix é criado, são adicionadas automaticamente algumas referências base.&nbsp; </li></ul><p>Os demais diretórios (Contents, images, Layouts e Styles) são intrínsecos a cada aplicação e não padrões de projeto, como é o caso daqueles visualizados nos ítens anteriores. Ainda assim, como o objetivo é entender a forma como a aplicação foi construída, vale mencionar que, o diretório &quot;Content&quot; agrupa as páginas de conteúdo da aplicação. Já o diretório &quot;images&quot;, como é possível imaginar, agrupa todas as imagens exibidas pela aplicação. O diretório &quot;Layouts&quot; é aquele que agrupa arquivos que possuem definições sobre os layouts possíveis para a aplicação, enquanto que o diretório &quot;Styles&quot; agrupa os arquivos de estilização (.css, .less, etc.).</p><p>O restante dos ítens apresentados pela Solution Explorer da Figura 1 são arquivos de inicialização padrão do site (veremos alguns deles em mais detalhes mais adiante neste texto).</p><p><strong>O diretório &quot;App_Code&quot;</strong></p><p>Conforme mencionado anteriormente, o diretório App_Code tem a função de agrupar códigos Razor executáveis para reutilização durante o projeto. Para que possamos entender sua utilidade no projeto do template, considere a Figura 2.</p><p><a href="http://files.channel9.msdn.com/thumbnail/b272d279-4045-4431-be92-5ce1f76837b9.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/b272d279-4045-4431-be92-5ce1f76837b9.JPG" alt=""></a></p><p><strong>Figura 2</strong>. Conteúdo do diretório &quot;App_Code&quot;</p><p>Expandindo-se o diretório App_Code, é possível visualizar alguns arquivos em seu interior. Estes arquivos são helpers e classes escritas em linguagem C# que possibilitam a implementação de certos recursos da aplicação. Apresentemos então uma rápida descrição acerca destes:</p><ul><li><strong>BlogHelper.cshtml</strong>: trata-se de um helper que implementa algumas funções intrínsecas a blogs. Alguns exemplos: criação de URL' amigáveis, exibição de RSS, etc. Como é possível notar, o arquivo possui a extensão &quot;.cshtml&quot; o que indica que este possui código Razor e pode haver HTML e C# misturados, caracterizando-o portanto como helper. </li><li><strong>ContentSource.cs</strong>: classe escrita em C# que implementa o mecanismo de links para conteúdos dentro da aplicação. A ideia aqui é, ao invés de ter-se um menu criado diretamente na web page view, tem-se um objeto que encapsula as características de um menu e, para cada novo conteúdo, tem-se uma instância de ítem de menu. </li><li><strong>FeedItem.cs</strong>: classe escrita em C# que possui a função de definir o objeto de feed para utilização do &quot;BlogHelper.cshtml&quot; visto anteriormente. </li><li><strong>FileHelper.cshtml</strong>: helper que possui a função de mapear e associar cada nova instância de &quot;ContentSource&quot; para os arquivos físicos em &quot;Content&quot;. </li><li><strong>Flickr.cshtml</strong>: helper que implementa a intergração com o sistema de compartilhamento de fotos do Yahoo!. Este arquivo encapsula toda a complexidade de integração com a ferramenta e disponibiliza um interface simplificada para o desenvolvedor realizar a conexão. </li><li><strong>TwitterHelper.cshtml</strong>: helper que implementa a integração da aplicação com a ferramenta de microblogs. Várias funções estão disponíveis para este helper. </li></ul><p>Com base na descrição dos arquivos fica fácil entender que, na pasta App_Code, temos o coração da aplicação implementado. Conforme o conteúdo deste artigo avança, a importância dos arquivos agrupados neste diretório lhe será cada vez meios evidente.</p><p><strong>Os arquivos padrão</strong></p><p>Além da importância já mencionada do diretório App_Code e seus arquivos, alguns outros arquivos de projeto também são fundamentais na estrutura apresentada pela Figura 1. São eles:</p><ul><li><strong>_AppStart.cshtml</strong>: arquivo executado quando a aplicação inicia sua execução. O objetivo desta página é concentrar a implementação de recursos que devem ser executados no momento em que a aplicação é carregada. O símbolo &quot;_&quot; indica ao framework que este arquivo deve ser ignorado em termos de renderização pelos navegadores assim, só funciona em background. </li><li><strong>_PageStart.cshtml</strong>: arquivo carregado também com a inicialização da aplicação. A diferença em relação a &quot;_AppStart.cshtml&quot; é que, os parâmetros indicados em &quot;_PageStart.cshtml&quot; dizem respeito as configurações visuais das páginas, enquanto a outra indica configurações relacionadas a operações lógicas. </li><li><strong>ContentPage.cshtml</strong>: página responsável por estruturar logicamente o fluxo da aplicação. &quot;ContentSource.cs&quot; e &quot;ContentPage.cshtml&quot; estão intimamente relacionados pois, enquanto o primeiro define o objeto de navegação o segundo mapeia o fluxo de navegação. </li><li><strong>Default.cshtml</strong>: página padrão a ser renderizada pelo browser. Ao executar a aplicação, &quot;Default.cshtml&quot; é a página buscada pelo IIS para ser executada enquanto as demais são executadas na sequência. </li></ul><p>Com base nas informações apresentadas até este ponto, podemos imaginar o fluxo de execução da aplicação conforme apresentado pela Figura 3.</p><p><a href="http://files.channel9.msdn.com/thumbnail/054f5b44-2465-40f1-a675-6bf572acf07b.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/054f5b44-2465-40f1-a675-6bf572acf07b.png" alt="" width="600" height="450"></a></p><p align="center"><strong>Figura 3</strong>. Fluxo de execução do template</p><p><strong>Vantagens deste modelo</strong></p><p>As vantagens de se construir uma aplicação de forma modular, separando o máximo possível as responsabilidades são latentes.</p><p>Para justificar esta afirmação, considere o exemplo da construção de web page views. A forma tradicional para construção destes elementos é: cria-se um arquivo de estilização (CSS, por exemplo) e, para cada nova página que necessite exibir algum dado no padrão de layout, o arquivo de estilos deve ser incorporado manualmente no interior destes (princípio da repetição das tarefas). Com o modelo de arquitetura proposto pelo exemplo deste template, como o arquivo &quot;_SiteLayout.cshtml&quot; implementa o layout padrão da aplicação, as demais páginas apenas herdam (automaticamente) o layout padrão.</p><p><strong>Conclusões</strong></p><p>Estruturar as aplicações com WebMatrix pode implicar em diversos benefícios, principalmente para o desenvolvedor. Características como fácil manutenção, abstração com base em objetos, dentre outras, podem impactar diretamente na qualidade da aplicação bem como na produtividade do desenvoledor.</p><p>O modelo Razor de programação foi pensado de forma a fornecer todos os recursos necessários para que desenvolvedores pudessem criar a maior gama de códigos e modelos reutilizáveis possível.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:35607b2e8c7b441284fca0220138c37e">]]></description>
      <comments>http://channel9.msdn.com/posts/Estrutura-do-template-de-site-pessoal</comments>
      <itunes:summary>Em outra aula neste mesmo m&#243;dulo, voc&#234; foi apresentado ao processo de cria&#231;&#227;o de um novo site pessoal baseado em template utilizando WebMatrix.&amp;nbsp; Neste contexto, faz sentido olhar de forma demorada para a esturtura deste modelo de aplica&#231;&#227;o pois permite visualizar um padr&#227;o arquitet&#244;nico interessante para constru&#231;&#227;o de aplica&#231;&#245;es web baseadas em web pages com WebMatrix. Esturtura do template &amp;quot;Personal Site&amp;quot;  Para que possamos come&#231;ar a analisar a estrutura do template, considere a estrutura de diret&#243;rios apresentada pela Figura 1.  Figura 1. A estrutura de diret&#243;rios do template Iniciemos este processo de an&#225;lise pelos diret&#243;rios da aplica&#231;&#227;o. S&#227;o 7 (sete) diret&#243;rios sendo que, alguns deles, s&#227;o estrat&#233;gicos para o funcionamento da aplica&#231;&#227;o. S&#227;o eles: App_Code: diret&#243;rio respons&#225;vel por agrupar helpers, classes, fun&#231;&#245;es, etc. Se algum arquivo Razor deve ser utilizado como biblioteca, este arquivo deve ser incorporado na pasta App_Code. WebMatrix buscar&#225; nesta p&#225;gina c&#243;digos execut&#225;veis. App_Data: diret&#243;rio dedicado ao armazenamento de arquivos que atuam como fontes de dados da aplica&#231;&#227;o. Por padr&#227;o, quando um banco de dados SQL Server Compact (.sdf) &#233; criado, sua estrutura encontra-se hospedada neste diret&#243;rio. bin: diret&#243;rio espec&#237;fico para a adi&#231;&#227;o componentes da plataforma .NET. Por padr&#227;o, quando um projeto WebMatrix &#233; criado, s&#227;o adicionadas automaticamente algumas refer&#234;ncias base.&amp;nbsp; Os demais diret&#243;rios (Contents, images, Layouts e Styles) s&#227;o intr&#237;nsecos a cada aplica&#231;&#227;o e n&#227;o padr&#245;es de projeto, como &#233; o caso daqueles visualizados nos &#237;tens anteriores. Ainda assim, como o objetivo &#233; entender a forma como a aplica&#231;&#227;o foi constru&#237;da, vale mencionar que, o diret&#243;rio &amp;quot;Content&amp;quot; agrupa as p&#225;ginas de conte&#250;do da aplica&#231;&#227;o. J&#225; o diret&#243;rio &amp;quot;images&amp;quot;, como &#233; poss&#237;vel imaginar, agrupa todas as imagens exibidas pela aplica&#231;&#227;o. O diret&#243;rio &amp;quot;Layouts&amp;quot; &#233; aquele que agrupa arquivos que possuem defini&#231;&#245;es sobre os layouts poss&#237;</itunes:summary>
      <link>http://channel9.msdn.com/posts/Estrutura-do-template-de-site-pessoal</link>
      <pubDate>Wed, 28 Mar 2012 18:59:16 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Estrutura-do-template-de-site-pessoal</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/5c4cc6f8-747e-4038-8e75-f3b571e59ae7.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Estrutura-do-template-de-site-pessoal/rss</wfw:commentRss>
      <category>Arquitetura</category>
      <category>Brazilian Portuguese</category>
      <category>Razor</category>
      <category>Templates</category>
      <category>WebMatrix</category>
      <category>Web Development</category>
    </item>
  <item>
      <title>Criando um site pessoal baseado em template</title>
      <description><![CDATA[<p>Nesta vídeo aula apresentamos o processo para construção de páginas pessoais utilizando o template já pronto do WebMatrix.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d5b65b41fb454ee08eaca021013741b2">]]></description>
      <comments>http://channel9.msdn.com/posts/Criando-um-site-pessoal-baseado-em-template</comments>
      <itunes:summary>Nesta v&#237;deo aula apresentamos o processo para constru&#231;&#227;o de p&#225;ginas pessoais utilizando o template j&#225; pronto do WebMatrix. </itunes:summary>
      <itunes:duration>699</itunes:duration>
      <link>http://channel9.msdn.com/posts/Criando-um-site-pessoal-baseado-em-template</link>
      <pubDate>Wed, 28 Mar 2012 14:06:37 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Criando-um-site-pessoal-baseado-em-template</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite_100.jpg" height="56" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite_220.jpg" height="124" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite_512.jpg" height="289" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.mp3" expression="full" duration="699" fileSize="11197339" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.mp4" expression="full" duration="699" fileSize="67160471" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.webm" expression="full" duration="699" fileSize="18738139" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.wma" expression="full" duration="699" fileSize="5670575" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.wmv" expression="full" duration="699" fileSize="30137680" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite_high.mp4" expression="full" duration="699" fileSize="136738616" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite_mid.mp4" expression="full" duration="699" fileSize="109973905" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite_Source.wmv" expression="full" duration="699" fileSize="23936872" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.ism/manifest" expression="full" duration="699" fileSize="5542" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/1811/512a1097-4231-4447-8e4c-0cbc071c1811/Lesson16BuildingPersonalWebsite.wmv" length="30137680" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Criando-um-site-pessoal-baseado-em-template/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Templates</category>
      <category>WebMatrix</category>
      <category>Website</category>
      <category>Web Development</category>
    </item>
  <item>
      <title>Criando um portal web com WebMatrix</title>
      <description><![CDATA[<p>WebMatrix oferece uma galeria completa de aplicações para atender a diversas demandas do mercado - a Web App Gallery. Neste vídeo é apresentado o simples processo a ser executado para se criar um portal web baseado em Joomla!</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:5fff552ac9c64325b55ca0210122bbef">]]></description>
      <comments>http://channel9.msdn.com/posts/Criando-um-portal-web-com-WebMatrix</comments>
      <itunes:summary>WebMatrix oferece uma galeria completa de aplica&#231;&#245;es para atender a diversas demandas do mercado - a Web App Gallery. Neste v&#237;deo &#233; apresentado o simples processo a ser executado para se criar um portal web baseado em Joomla! </itunes:summary>
      <itunes:duration>698</itunes:duration>
      <link>http://channel9.msdn.com/posts/Criando-um-portal-web-com-WebMatrix</link>
      <pubDate>Tue, 27 Mar 2012 18:43:43 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Criando-um-portal-web-com-WebMatrix</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_custom_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_2MB_ch9.wmv" expression="full" duration="698" fileSize="17666998" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_ch9.mp3" expression="full" duration="698" fileSize="5592952" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_ch9.webm" expression="full" duration="698" fileSize="27582660" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_ch9.wma" expression="full" duration="698" fileSize="5664513" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_ch9.wmv" expression="full" duration="698" fileSize="25097620" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_high_ch9.mp4" expression="full" duration="698" fileSize="112382012" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_low_ch9.mp4" expression="full" duration="698" fileSize="16008491" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_med_ch9.mp4" expression="full" duration="698" fileSize="87229670" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix.ism/manifest" expression="full" duration="698" fileSize="5458" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/bbef/5fff552a-c9c6-4325-b55c-a0210122bbef/Lesson15PortalWebMatrix_ch9.wmv" length="25097620" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Criando-um-portal-web-com-WebMatrix/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Development</category>
      <category>PHP</category>
      <category>PHP on Windows</category>
      <category>WebMatrix</category>
      <category>joomla</category>
      <category>portal</category>
    </item>
  <item>
      <title>ASP.NET Razor: Interagindo com bancos de dados</title>
      <description><![CDATA[<p>Na primeira aula do primeiro módulo deste treinamento, apresentamos a evolução do cenário web. Um dos períodos marcantes desta evolução, é aquele conhecido como &quot;dinâmico&quot; e, o elemento chave que possibilitou a evolução para este modelo foi o &quot;banco de dados&quot;.</p><p>Este artigo não apresentará os conceitos fundamentais de bancos de dados relacionais entretanto, veremos como ASP.NET Razor facilita o trabalho com bancos de dados em web pages utilizando WebMatrix.</p><p>Para apresentar as principais funcionalidades do modelo em relação a interação com bancos de dados, utilizaremos o exemplo do formulário já criado na aula anterior, isto é, o &quot;produto&quot;. Assim, o que faremos é:</p><ol><li>Criaremos um novo banco de dados (SQL Server); </li><li>Criaremos uma tabela (a qual chamaremos &quot;tbProduto&quot;); </li><li>Adicionaremos um trecho de código que adiciona um novo registro de produto na base recém criada; </li><li>Adicionaremos um novo trecho de código que edita os registros previamente adicionados; </li><li>Adicionaremos um novo trecho de código que remove os registros da base de dados. </li></ol><p><strong>Criando o banco de dados da aplicação</strong></p><p>Com o WebMatrix em execução, alterne para a aba &quot;Databases&quot;. No menu superior, após clicar na opção &quot;New Database&quot;, criarmos um novo banco de dados e o renomearmos para &quot;DBLoja&quot;, criaremos uma nova tabela (&quot;tbProdutos&quot;). A Figura 1 apresenta o banco de dados criado e a estrutura da tabela (para saber como utilizar a ferramenta de banco de dados do WebMatrix, assista a video aula &quot;Gerenciamento de Bancos de Dados&quot; no segundo módulo deste treinamento).</p><p><a href="http://files.channel9.msdn.com/thumbnail/06fdf94a-a63c-4092-83c9-b0c70a91a1c0.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/06fdf94a-a63c-4092-83c9-b0c70a91a1c0.JPG" alt=""></a></p><p><strong>Figura 1</strong>. Estrutura da tabela &quot;tbProdutos&quot; no banco de dados &quot;DBLoja&quot;</p><p>Como é possível observar, a estrutura do banco de dados segue o modelo apresentado pelo formulário de exemplo das aulas anteriores. A partir daqui, estamos prontos para seguir com a construção do exemplo.</p><p><strong>Construindo a página que adiciona um novo registro</strong></p><p>Após alternar para a guia &quot;Files&quot; e adicionar um novo arquivo &quot;cshtml&quot;, adicione o trecho de código apresentado pela Listagem 1.</p><p><pre class="brush: csharp">@{
    var Nome = &quot;&quot;;
    var ValorUnitario = &quot;&quot;;
    var RespostaFinal = &quot;&quot;;
    var Erro = false;
    var ConexaoBD = Database.Open(&quot;DBLoja&quot;);

    if(IsPost)
    {
        Nome = Request[&quot;txtNome&quot;];
        if(Nome.IsEmpty())
        {
            Erro = true;
            @:Por favor, informe o nome do produto.&lt;br /&gt;
        }

        ValorUnitario = Request[&quot;txtValorUnitario&quot;];
        if(ValorUnitario.IsEmpty() || !ValorUnitario.IsFloat())
        {
            Erro = true;
            @:Por favor, informe o valor unitário do produto.&lt;br /&gt;
        }

        if(Erro == false)
        {
            var SentencaSQL = &quot;INSERT INTO tbProdutos(Nome, ValorUnitario) VALUES (@0, @1)&quot;;
            var ResutadoBD = ConexaoBD.Execute(SentencaSQL, Nome, ValorUnitario.AsFloat());
            if(ResutadoBD == 1)
            {
                RespostaFinal = &quot;Produto adicionado com sucesso na base de dados.&quot;;
            }
            else
            {
                RespostaFinal = &quot;Problema encontrado ao processar a requisição. O produto não foi adicionado.&quot;;
            }
        }
    }
}
&lt;html lang=&quot;en&quot;&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;utf-8&quot; /&gt;
        &lt;title&gt;Trabalho com Formulários&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Cadastro de produto&lt;/h1&gt;
        
        &lt;form id=&quot;formProdutos&quot; action=&quot;&quot; method=&quot;post&quot;&gt;
            &lt;fieldset&gt;
            
                &lt;legend&gt;Adicionando novo prodruto&lt;/legend&gt;
            
                &lt;label for=&quot;txtNome&quot;&gt;Nome do produto&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtNome&quot; value=&quot;&quot; name=&quot;txtNome&quot; /&gt;
                &lt;br /&gt;
            
                &lt;label for=&quot;txtValorUnitario&quot;&gt;Valor unitário&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtValorUnitario&quot; value=&quot;&quot; name=&quot;txtValorUnitario&quot; /&gt;
                &lt;br /&gt;
            
                &lt;input type=&quot;submit&quot; value=&quot;Salvar&quot; id=&quot;btnEnviar&quot; name=&quot;btnEnviar&quot; /&gt;
            &lt;/fieldset&gt;
        &lt;/form&gt;
        &lt;div id=&quot;ResultadoOperacao&quot; style=&quot;font-family:Arial; letter-spacing:-1px; font-weight:bold; color:#1611b9&quot;&gt;
            @RespostaFinal
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></p><p><strong>Listagem 1</strong>. Página que implementa a lógica de inserção&nbsp;</p><p>&nbsp;</p><p>Muito do código apresentado acima lhe deve ser familiar (de aulas anteriores), assim, vamos ressaltar apenas os aspectos diretamente relacionados ao processo de conexão e adição de novos registros ao banco de dados da aplicação.</p><ul><li><strong>Linha 6</strong>: é criado dinamicamente um objeto chamado &quot;ConexaoBD&quot;. Este objeto armazena o status da conexão com o banco de dados. O objeto que implementa as ações relacionadas a bancos de dados em Razor é &quot;Database&quot;. &quot;Open&quot; é o método que estabelece a conexão com o banco de dados e, para realizar esta ação, espera uma string com o nome do banco de dados sem a extensão &quot;.sdf&quot;. É importante mencionar que, todo gerenciamento da conexão com o banco de dados é realizado pela .net framework, isentando o desenvolvedor desta tarefa. </li><li><strong>Linha 25</strong>: da linha 6 até a 24, realizamos validações simples dos dados informados no formulário (este assunto foi estudado em outra aula neste mesmo módulo). Na linha 25, caso tudo tenha sido executado com sucesso, adicionamos a sentença de inserção dos dados e realizamos esta tarefa, através de uma metodologia conhecida como &quot;parâmetros&quot;, que são indicados pelas strings &quot;@0&quot; e &quot;@1&quot;. A utilização de parâmetros é uma boa prática pois, implementa segurança em sua operação com o banco de dados, protegendo de, dentre outras características, acessos mal intencionados. </li><li><strong>Linha 26</strong>: é criada dinamicamente a variável que hospeda o valor de retorno do processamento da operação de inserção no banco de dados. No caso do método &quot;Execute&quot;, o valor retornado é um inteiro (1 para sucesso e 0 para falha). Os parâmetros dinamicamente esperados por &quot;Execute&quot; são: string com a sentença SQL e demais elementos associados aos parâmetros indicados por &quot;@&quot;. Sim, a amarração dos dados com os parâmetros ocorre aqui. </li></ul><p>Nas linhas seguintes apenas verificamos o resultado retornado. Caso tenha sido 1 (um), atribuímos à variável &quot;RespostaFinal&quot; a mensagem de sucesso. Caso contrário, retornamos a mensagem de insucesso.</p><p>A Figura 2 apresenta o resultado da execução do código apresentado pela Listagem 2.</p><p><a href="http://files.channel9.msdn.com/thumbnail/7dbcf940-2985-4902-8bca-f3787e09f60a.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/7dbcf940-2985-4902-8bca-f3787e09f60a.JPG" alt="" width="600" height="280"></a></p><p><strong>Figura 2</strong>. Gravando os dados do formulário no banco de dados exemplo</p><p><strong>Exibindo os dados do banco de dados</strong></p><p>Bancos de dados só existem porque atuam como repositórios de dados para a exibição destes no momento oportuno, correto? Neste caso, vamos dedicar certo tempo a exibir os dados da única tabela existente em nosso banco de dados de exemplo. Assim, considere o código apresentado pela Listagem 2.</p><p><pre class="brush: csharp">@{
    var ConexaoBD = Database.Open(&quot;DBLoja&quot;);
    var SentencaSQL = &quot;SELECT * FROM tbProdutos ORDER BY Nome ASC&quot;;
}

&lt;html lang=&quot;en&quot;&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;utf-8&quot; /&gt;
        &lt;title&gt;Trabalhando com BD's&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;table&gt;
            &lt;tr style=&quot;background-color:#a9a9a9; height:30px;&quot;&gt;
                &lt;td&gt;
                    Código do produto
                &lt;/td&gt;
                &lt;td&gt;
                    Nome do produto
                &lt;/td&gt;
                &lt;td&gt;
                    Valor unitário
                &lt;/td&gt;
                &lt;td&gt;
                    Operação
                &lt;/td&gt;
            &lt;/tr&gt;
            @foreach(var Registro in ConexaoBD.Query(SentencaSQL)) {
            &lt;tr&gt;
                &lt;td&gt;
                    @Registro.IDProduto
                &lt;/td&gt;
                &lt;td&gt;
                    @Registro.Nome
                &lt;/td&gt;
                &lt;td&gt;
                    @Registro.ValorUnitario
                &lt;/td&gt;
                &lt;td&gt;
                    &lt;a href=&quot;@Href(&quot;~/AtualizarDados&quot;, Registro.IDProduto)&quot; target=&quot;_self&quot;&gt;
                        Atualizar dados
                    &lt;/a&gt;
                &lt;/td&gt;
            &lt;/tr&gt;
            }
        &lt;/table&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></p><p>&nbsp;<strong>Listagem 2</strong>. Código que lista os dados cadastrados em forma de tabela</p><p>&nbsp;</p><p>Como é possível notar, o código apresentado pela Listagem 2 é extremamente simples e apresenta poucos novos aspectos a serem considerados. Vamos a eles:</p><ul><li><strong>Linha 3</strong>: a sentença SQL é modificada. Ao invés de adicionarmos dados no banco com INSERT, selecionamos os dados com SELECT. Armazenamos esta sentença em uma variável string gerada dinamicamente. </li><li><strong>Linha 27</strong>: adicionamos junto as tags HTML uma estrutura de repetição &quot;foreach&quot;. Se você conhece C#, esta estrutura lhe é familiar. Você pode conhecer um pouco mais sobre esta forma de repetição clicando <a href="http://msdn.microsoft.com/pt-br/library/ttw7t8t6(v=vs.80).aspx" target="_blank">aqui</a>. Uma observação importante aqui é: o compilador Razor é inteligente o suficiente para entender o que é&nbsp; código Razor e o que não é, facilitando assim o trabalho do desenvolvedor e tornando o código legível. </li><li><strong>Linhas 30, 33 e 36</strong>: como &quot;Registro&quot; é um objeto gerado dinamicamente em tempo de compilação e representa cada registro do banco de dados, podemos então compor a exibição do mesmo através da chamada das colunas do registro como se fossem propriedades do objeto. Nestas linhas, é exatamente isso que realizamos. </li></ul><p>O resultado do processamento do código apresentado pela Listagem 2 pode ser visualizado na Figura 3.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/18ad2649-fd9f-4ddd-89f1-f60dcd1dc7e3.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/18ad2649-fd9f-4ddd-89f1-f60dcd1dc7e3.JPG" alt="" width="600" height="200"></a></p><p>&nbsp;<strong>Figura 3</strong>. Dados do banco de dados sendo exibidos</p><p>&nbsp;</p><p><strong>Atualizando dados</strong></p><p>Outra operação comum quando estamos trabalhando com aplicações web que interagem com bancos de dados relacionais é a de atualização dos dados já existentes. Um exemplo comum que justifica esta operação em nossa aplicação exemplo, seria o reajuste de preço unitário em percentual <em>x</em>.</p><p>Para realizar tal operação, Razor ofere um modelo bem semelhante aquele apresentado pelos ítens anteriores. Para entendê-lo, considere o trecho de código apresentado pela Listagem 3.</p><p><pre class="brush: csharp">@{
    var ParametroURL = UrlData[0];
    var ConexaoBD = Database.Open(&quot;DBLoja&quot;);
    var RespostaFinal = &quot;&quot;;
    var NomeTemp = &quot;&quot;;
    var ValorUnitarioTemp = &quot;&quot;;

    if(ParametroURL.IsEmpty())
    {
        @:Não foi possível carregar os dados.
    }
    else
    {
        if(IsPost)
        {
            var Nome = Request[&quot;txtNome&quot;];
            var ValorUnitario = Request[&quot;txtValorUnitario&quot;];

            var SentencaSQLAtualiza = &quot;UPDATE tbProdutos SET Nome = @0, ValorUnitario = @1 WHERE IDProduto = @2&quot;;
            ConexaoBD.Execute(SentencaSQLAtualiza, Nome, ValorUnitario, ParametroURL);
            RespostaFinal = &quot;Dados atualizados com sucesso!&quot;;
        }
        else
        {
            var SentencaSQL = &quot;SELECT * FROM tbProdutos WHERE IDProduto = @0&quot;;
            var ResultadoBD = ConexaoBD.QuerySingle(SentencaSQL, ParametroURL);
            NomeTemp = ResultadoBD.Nome;
            ValorUnitarioTemp = ResultadoBD.ValorUnitario.ToString();
        }
        
    }
}

&lt;html lang=&quot;en&quot;&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;utf-8&quot; /&gt;
        &lt;title&gt;Trabalho com BD's&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Atualização de cadastro de produto&lt;/h1&gt;
        
        &lt;form id=&quot;formProdutos&quot; action=&quot;&quot; method=&quot;post&quot;&gt;
            &lt;fieldset&gt;
            
                &lt;legend&gt;Atualizando o prodruto&lt;/legend&gt;
            
                &lt;label for=&quot;txtNome&quot;&gt;Nome do produto&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtNome&quot; value=&quot;@NomeTemp&quot; name=&quot;txtNome&quot; /&gt;
                &lt;br /&gt;
            
                &lt;label for=&quot;txtValorUnitario&quot;&gt;Valor unitário&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtValorUnitario&quot; value=&quot;@ValorUnitarioTemp&quot; name=&quot;txtValorUnitario&quot; /&gt;
                &lt;br /&gt;
            
                &lt;input type=&quot;submit&quot; value=&quot;Salvar&quot; id=&quot;btnEnviar&quot; name=&quot;btnEnviar&quot; /&gt;
            
            &lt;/fieldset&gt;
        &lt;/form&gt;
        &lt;div id=&quot;ResultadoOperacao&quot; style=&quot;font-family:Arial; letter-spacing:-1px; font-weight:bold; color:#1611b9&quot;&gt;
            @RespostaFinal
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></p><p><strong>Listagem 3</strong>. Atualizando os dados de produtos&nbsp;</p><p>O processo de atualização dos dados em um banco é realizado através da diretiva SQL &quot;Update&quot;. O código apresentado pela Listagem 3 não apresenta novidades em relação ao que já foi estudado nas seções anteriores neste mesmo artigo. A diferença básica que ocorre aqui é: temos a conexão ao banco de dados ocorrendo em dois momentos sendo que, no primeiro, com base no código recuperado através da URL com &quot;UrlData[0]&quot;, criamos a sentença SQL de busca do registro desejado. Já no segundo momento, quando o usuário fizer postback com os dados do formulário, o sistema conecta-se novamente ao banco de dados e executa o &quot;Update&quot;.</p><p>O resultado do processo de atualização das informações de determinado registro no banco de dados pode ser visualizado nas Figuras 4 e 5.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/7321d76e-0b3b-4557-9969-d027c1f27736.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/7321d76e-0b3b-4557-9969-d027c1f27736.JPG" alt="" width="600" height="200"></a></p><p><strong>Figura 4</strong>. Alterando os dados previamente cadastrados&nbsp;</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/0ad0b108-b8aa-4d06-b551-eb7811d88c84.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/0ad0b108-b8aa-4d06-b551-eb7811d88c84.JPG" alt=""></a></p><p>&nbsp;<strong>Figura 5</strong>. Dados alterados no banco de dados</p><p><strong>Removendo dados da base</strong></p><p>Outro aspecto importante e muito comum em sistemas que armazenam dados, é a necessidade de em um momento ou outro, remover dados que encontram-se redundantes, que foram armazenados de forma incorreta ou que não mais são importantes no contexto da aplicação e estão ocupando espaço desnecessariamente.</p><p>A Listagem 4 apresenta uma das formas possíveis de utilização do Razor para realizar a a tarefa de remoção.</p><p><pre class="brush: csharp">@{
    var ParametroURL = UrlData[0];
    var ConexaoBD = Database.Open(&quot;DBLoja&quot;);
    var RespostaFinal = &quot;&quot;;
    var NomeTemp = &quot;&quot;;
    var ValorUnitarioTemp = &quot;&quot;;

    if(ParametroURL.IsEmpty())
    {
        @:Não foi possível carregar os dados.
    }
    else
    {
        if(IsPost)
        {
            var SentencaSQLRemove = &quot;DELETE FROM tbProdutos WHERE IDProduto = @0&quot;;
            ConexaoBD.Execute(SentencaSQLRemove, ParametroURL);
            RespostaFinal = &quot;Produto removido com sucesso!&quot;;
        }
        else
        {
            var SentencaSQL = &quot;SELECT * FROM tbProdutos WHERE IDProduto = @0&quot;;
            var ResultadoBD = ConexaoBD.QuerySingle(SentencaSQL, ParametroURL);
            NomeTemp = ResultadoBD.Nome;
            ValorUnitarioTemp = ResultadoBD.ValorUnitario.ToString();
        }
        
    }
}

&lt;html lang=&quot;en&quot;&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;utf-8&quot; /&gt;
        &lt;title&gt;Trabalho com BD's&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Remoção de produto&lt;/h1&gt;
        
        &lt;form id=&quot;formProdutos&quot; action=&quot;&quot; method=&quot;post&quot;&gt;
            &lt;fieldset&gt;
            
                &lt;legend&gt;Dados do produto&lt;/legend&gt;
            
                &lt;label for=&quot;txtNome&quot;&gt;Nome do produto&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtNome&quot; value=&quot;@NomeTemp&quot; name=&quot;txtNome&quot; disabled=&quot;disabled&quot; /&gt;
                &lt;br /&gt;
            
                &lt;label for=&quot;txtValorUnitario&quot;&gt;Valor unitário&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtValorUnitario&quot; value=&quot;@ValorUnitarioTemp&quot; name=&quot;txtValorUnitario&quot; disabled=&quot;disabled&quot; /&gt;
                &lt;br /&gt;
            
                &lt;input type=&quot;submit&quot; value=&quot;Remover&quot; id=&quot;btnEnviar&quot; name=&quot;btnEnviar&quot; /&gt;
            
            &lt;/fieldset&gt;
        &lt;/form&gt;
        &lt;div id=&quot;ResultadoOperacao&quot; style=&quot;font-family:Arial; letter-spacing:-1px; font-weight:bold; color:#1611b9&quot;&gt;
            @RespostaFinal
        &lt;/div&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></p><p><strong>Listagem 4</strong>. Removendo registro da base de dados&nbsp;</p><p>&nbsp;O processo de remoção de dados de uma tabela se dá através da escrita da diretiva DELETE (acessível através da linguagem SQL). Poucas mudanças são trazidas pelo código da Listagem 4. A principal delas é a troca de &quot;UPDATE&quot; por &quot;DELETE&quot; na execução do método &quot;Execute&quot;. As Figuras 6 e 7 apresentam o resultado do processamento do código apresentado pela Listagem 4.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/8c32a365-4e67-4740-bdaf-612ec7a9095a.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/8c32a365-4e67-4740-bdaf-612ec7a9095a.JPG" alt="" width="600" height="230"></a></p><p>&nbsp;<strong>Figura 6</strong>. Painel que exibe os dados a serem removidos</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/66751e36-8507-4840-85c6-aae67032cdf0.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/66751e36-8507-4840-85c6-aae67032cdf0.JPG" alt=""></a></p><p>&nbsp;<strong>Figura 7</strong>. Registro removido do banco de dados</p><p>&nbsp;Uma observação oportuna neste ponto é: ao escrever query's de atualização e remoção de dados, quase sempre deseja-se realizar este tipo de operação para registros específicos e neste contexto, a utilização da cláusula &quot;WHERE&quot; é fundamental. O esquecimento ou desconsideração desta cláusula implicará necessariamente na aplicação da operação a todos os registros da tabela.</p><p>'</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e3cbf0a9f7be4ec5b911a02100ef63f5">]]></description>
      <comments>http://channel9.msdn.com/posts/ASPNET-Razor-Interagindo-com-bancos-de-dados</comments>
      <itunes:summary>Na primeira aula do primeiro m&#243;dulo deste treinamento, apresentamos a evolu&#231;&#227;o do cen&#225;rio web. Um dos per&#237;odos marcantes desta evolu&#231;&#227;o, &#233; aquele conhecido como &amp;quot;din&#226;mico&amp;quot; e, o elemento chave que possibilitou a evolu&#231;&#227;o para este modelo foi o &amp;quot;banco de dados&amp;quot;. Este artigo n&#227;o apresentar&#225; os conceitos fundamentais de bancos de dados relacionais entretanto, veremos como ASP.NET Razor facilita o trabalho com bancos de dados em web pages utilizando WebMatrix. Para apresentar as principais funcionalidades do modelo em rela&#231;&#227;o a intera&#231;&#227;o com bancos de dados, utilizaremos o exemplo do formul&#225;rio j&#225; criado na aula anterior, isto &#233;, o &amp;quot;produto&amp;quot;. Assim, o que faremos &#233;: Criaremos um novo banco de dados (SQL Server); Criaremos uma tabela (a qual chamaremos &amp;quot;tbProduto&amp;quot;); Adicionaremos um trecho de c&#243;digo que adiciona um novo registro de produto na base rec&#233;m criada; Adicionaremos um novo trecho de c&#243;digo que edita os registros previamente adicionados; Adicionaremos um novo trecho de c&#243;digo que remove os registros da base de dados. Criando o banco de dados da aplica&#231;&#227;o Com o WebMatrix em execu&#231;&#227;o, alterne para a aba &amp;quot;Databases&amp;quot;. No menu superior, ap&#243;s clicar na op&#231;&#227;o &amp;quot;New Database&amp;quot;, criarmos um novo banco de dados e o renomearmos para &amp;quot;DBLoja&amp;quot;, criaremos uma nova tabela (&amp;quot;tbProdutos&amp;quot;). A Figura 1 apresenta o banco de dados criado e a estrutura da tabela (para saber como utilizar a ferramenta de banco de dados do WebMatrix, assista a video aula &amp;quot;Gerenciamento de Bancos de Dados&amp;quot; no segundo m&#243;dulo deste treinamento).  Figura 1. Estrutura da tabela &amp;quot;tbProdutos&amp;quot; no banco de dados &amp;quot;DBLoja&amp;quot; Como &#233; poss&#237;vel observar, a estrutura do banco de dados segue o modelo apresentado pelo formul&#225;rio de exemplo das aulas anteriores. A partir daqui, estamos prontos para seguir com a constru&#231;&#227;o do exemplo. Construindo a p&#225;gina que adiciona um novo registro Ap&#243;s alternar para a guia &amp;quot;Fi</itunes:summary>
      <link>http://channel9.msdn.com/posts/ASPNET-Razor-Interagindo-com-bancos-de-dados</link>
      <pubDate>Tue, 27 Mar 2012 14:33:15 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/ASPNET-Razor-Interagindo-com-bancos-de-dados</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/027ebad6-b519-4481-9f7c-d19ea8b12dc0.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/ASPNET-Razor-Interagindo-com-bancos-de-dados/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Razor</category>
      <category>SQL Server 2008 R2</category>
      <category>web database</category>
      <category>WebMatrix</category>
      <category>Database</category>
    </item>
  <item>
      <title>ASP.NET Razor: Trabalhando com valida&#231;&#227;o</title>
      <description><![CDATA[<p>Se existe um aspecto das web pages em que o ASP.NET Razor trouxe considerável melhoria em termos de processo, por certo este é o trabalho com formulários. Com Razor, interagir com formulários web tornou-se tarefa simples e prazerosa, como você poderá comprovar à medida em que este texto avança.<br>Neste artigo apresentaremos os principais aspectos relacionados ao processo de construção e interação associados a formulários web, dentre os quais podemos citar:</p><ul><li>Como criar e utilizar formulários web </li><li>Como utilizar dados fornecidos por usuários em um formulário web na aplicação </li><li>Como é possível validar as informações provenientes de formulários web sem javascript, utilizando Razor apenas </li></ul><p><strong>Criando formulários web</strong></p><p>O objetivo deste texto não é ensinar conceitos sobre a linguagem padrão dos navegadores web, isto é, HTML. Entretanto, como falaremos massivamente acerca de formulários, faz sentido apresentar os conceitos básicos relacionados a este importante componente das web pages.<br>A Listagem 1 apresenta um código sugestivo para implementação de um formulário web simples, simulando o cadastro de produtos em um “sistema” web qualquer.</p><p><pre class="brush: html">&lt;form id=&quot;formProdutos&quot; action=&quot;&quot; method=&quot;post&quot;&gt;
            &lt;fieldset&gt;
            
                &lt;legend&gt;Adicionando novo prodruto&lt;/legend&gt;
            
                &lt;label for=&quot;txtCodigo&quot;&gt;Código do produto&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtCodigo&quot; name=&quot;txtCodigo&quot; /&gt;
                &lt;br /&gt;
            
                &lt;label for=&quot;txtNome&quot;&gt;Nome do produto&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtNome&quot; name=&quot;txtNome&quot; /&gt;
                &lt;br /&gt;
            
                &lt;label for=&quot;txtValorUnitario&quot;&gt;Valor unitário&lt;/label&gt;
                &lt;input type=&quot;text&quot; id=&quot;txtValorUnitario&quot; name=&quot;txtValorUnitario&quot; /&gt;
                &lt;br /&gt;
            
                &lt;input type=&quot;submit&quot; value=&quot;Salvar&quot; id=&quot;btnEnviar&quot; name=&quot;btnEnviar&quot; /&gt;
            
         &lt;/fieldset&gt;
&lt;/form&gt;</pre></p><p><strong>Listagem 1</strong>.&nbsp;Um formulário simples para cadastro de produto de um sistema fictício</p><p>&nbsp;</p><p>Se você já possui algum conhecimento acerca da linguagem HTML, o trabalho com formulários deve lhe ser comum e, neste caso, minha recomendação é que prossiga para o próximo tópico deste artigo.</p><p>Os principais aspectos relacionados ao código apresentado pela Listagem 1 são:</p><ul><li>Sempre que um formulário web for necessário em determinada aplicação web, para que este possa existir, deve existir antes de mais nada, a implementação da tag &lt;form&gt;&lt;/form&gt;. </li><li>A tag &lt;form&gt; possui atributos importantes. Os principais deles são: <ul><li><u>Method</u>: indica a forma com que os dados serão enviados. GET ou POST são os valores aceitos. </li><li><u>Action</u>: possibilita ao desenvolvedor apontar os dados do formulário para processamento em arquivo externo. O valor aceito para este atributo é uma string com o caminho até o arquivo de destino. </li><li><u>Id</u>: permite atribuir um nome ao formulário. Muito embora este não seja um atributo obrigatório, é uma boa prática utilizar pois, identificará o elemento HTML na árvore DOM, o que tornará possível a manipulação do elemento através de CSS e Javasctipt. </li><li>A tag &lt;fieldset&gt; não é obrigatória no contexto de um formulário web. Esta tag encontra-se no contexto do formulário apresentado no código da Listagem 1 para adicionar um elemento visual. Ao ser renderizada esta tag adiciona uma borda ao formulário, como pode ser visualizado na Figura 1. &lt;legend&gt; permite adicionar um texto descritivo ao contexto de &lt;fieldset&gt;. </li><li>A tag &lt;label&gt; possui a função de facilitar as ações interação com formulários sem ser renderizada. O que fazemos no código da Listagem 1 é, através do atributo &quot;for&quot; de &lt;label&gt;, amarrar ao campo &lt;input&gt; pelo atributo &quot;id&quot;. </li><li>&lt;input&gt; são tags que possuem a responsabilidade de adicionar os elementos de formulários propriamente ditos. São campos de texto, listas de seleção, areas de texto, etc. Você pode encontrar um bom guia de referência para HTML clicando <a href="http://www.icmc.usp.br/ensino/material/html/" target="_blank">aqui</a>. </li></ul></li></ul><p>O resultado do processamento do trecho de código apresentado pela Listagem 1 pode ser visualizado na Figura 1.</p><p><a href="http://files.channel9.msdn.com/thumbnail/14fd2e75-18c6-4aec-a0ba-a3a6d9d870d3.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/14fd2e75-18c6-4aec-a0ba-a3a6d9d870d3.JPG" alt="" width="500" height="200"></a></p><p><strong>Figura 1</strong>.&nbsp;Formulário de exemplo em execução</p><p><strong>Lendo dados do formulário</strong></p><p>Os formulários de nada valeriam se não existisse a possibilidade do sistema no qual o formulário encontra-se inserido, ler as informações nele adicionadas.</p><p>Com ASP.NET Razor, o processo de leitura dos dados provenientes de formulários tornou-se consideravelmente mais simples. Para que a ideia envolvida neste processo torne-se mais clara, considere o trecho de código apresentado pela Listagem 2.</p><p><pre class="brush: csharp">@{
    string Codigo = &quot;&quot;;
    string Nome = &quot;&quot;;
    string ValorUnitario = &quot;&quot;;

    if(IsPost)
    {
        Codigo = Request[&quot;txtCodigo&quot;];
        Nome = Request[&quot;txtNome&quot;];
        ValorUnitario = Request[&quot;txtValorUnitario&quot;];

        Response.Write(&quot;Produto cadastrado: Código &quot; &#43; Codigo &#43; &quot; - Nome: &quot; &#43; Nome &#43; &quot; - Valor unitário: &quot; &#43; ValorUnitario);
    }
}</pre></p><p><strong>Listagem 2</strong>. Trecho de código que faz a leitura dos dados do formulário</p><p>Como é possível observar, o processo de leitura dos dados é simples. A seguir, detalhamos o trecho de código apresentado pela Listagem 1.</p><ul><li><strong>Linhas 2-4</strong>: declaramos três variáveis do tipo &quot;string&quot;. Estas variáveis serão as responsáveis por guardar os valores provenientes do formulário. Uma observação importante aqui é: as variáveis são declaradas e inicializadas. Esta é uma boa prática de desenvolvimento. </li><li><strong>Linha 6</strong>: através da propriedade &quot;IsPost&quot;, verificamos se ocorreu &quot;post-back&quot; na página. Em caso positivo, como o formulário de exemplo (Listagem 1) está configurado com o padrão de resposta &quot;post&quot;, o trecho de código interno ao &quot;if&quot; será executado. </li><li><strong>Linha 8-10</strong>: através do objeto &quot;Request&quot; (estudado em aula anterior neste módulo) obtemos o valor outrora armazenado nos campos de texto (&quot;txtCodigo&quot;, &quot;txtNome&quot; e &quot;txtValorUnitario&quot;). Estes valores são então enviados as variáveis &quot;Codigo&quot;, &quot;Nome&quot; e &quot;ValorUnitario&quot; através de uma operação simples de atribuição. </li><li><strong>Linha 12</strong>: através do objeto &quot;Response&quot; e método &quot;Write&quot; apresentamos o resultado proveniente do formulário. </li></ul><p>O resultado da execução do trecho de código apresentado pela Listagem 2 em parceria com o trecho de código apresentado pela Listagem 1 pode ser visualizado na Figura 2.</p><p><a href="http://files.channel9.msdn.com/thumbnail/c03a3f00-9778-41c9-81e2-5c51ae5453b0.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/c03a3f00-9778-41c9-81e2-5c51ae5453b0.JPG" alt="" width="600" height="250"></a></p><p><strong>Figura 2</strong>. Executando o trecho de código que lê os dados</p><p><strong>Validando dados de entrada</strong></p><p>Erros em dados informados através de formulários são comuns de serem encontrados. Os problemas são os mais diversos: informações obrigatórias são ignoradas, números de documentos informados com pontos e traços quando deveriam ser apenas números, e-mails inválidos, dentre muitos outros. Este cenário leva a seguinte conclusão: antes de trabalhar com os dados internamente no sistema, a validação deste é necessária.</p><p>Razor disponibiliza um modelo simplificado para validar dados de entrada em formulários e, neste tópico, trabalharemos com estes principais aspectos. Para realizarmos as devidas considerações, considere o trecho de código apresentado pela Listagem 3.</p><p><pre class="brush: csharp">@{
    string Codigo = &quot;&quot;;
    string Nome = &quot;&quot;;
    string ValorUnitario = &quot;&quot;;
    var Erros = false;

    if(IsPost)
    {
        Codigo = Request[&quot;txtCodigo&quot;];
        if(Codigo.IsEmpty() || !Codigo.IsInt())
        {
            Erros = true;
            @:Por favor, informe um código válido.&lt;br /&gt;
        }

        Nome = Request[&quot;txtNome&quot;];
        if(Nome.IsEmpty())
        {
            Erros = true;
            @:Por favor, informe seu nome.&lt;br /&gt;
        }
        ValorUnitario = Request[&quot;txtValorUnitario&quot;];
        if(ValorUnitario.IsEmpty() || ValorUnitario.IsFloat())
        {
            Erros = true;
            @:Por favor, informe o valor unitário do produto.&lt;br /&gt;
        }
        if(Erros == false)
        {
            &lt;text&gt;
                Os dados digitados foram:&lt;br /&gt;
                Código: @Codigo&lt;br /&gt;
                Nome: @Nome&lt;br /&gt;
                Valor unitário:&lt;br /&gt;
            &lt;/text&gt;
        }
    }
}</pre></p><p>&nbsp;<strong>Listagem 3</strong>. Validando o formulário de exemplo com Razor</p><p>&nbsp;</p><p>Alguns aspectos fundamentais do código apresentado acima:</p><ul><li>Verifica-se campo a campo do formulário, se os dados informados correspondem a aqueles esperados. Esta verificação é realizada com o apoio de uma estrutura condicional simples – &quot;if&quot;. </li><li>Se os dados são provenientes de um post, os campos são verificados. </li><li><strong>Linhas 9-14</strong>: recuperamos o valor através do objeto request e armazenamos na variável &quot;Codigo&quot;. Em seguida, através do método &quot;IsInt&quot; verificamos se o valor informado de fato é um inteiro (levando-se em consideração que o código necessariamente deverá ser um número inteiro). Na mesma sentença de verificação, através do método &quot;IsEmpty&quot; realizamos o &quot;check&quot; se de fato algum valor está armazenado. Caso as duas alternativas falhem, a variável &quot;Erros&quot; (inicializada propositalmente com &quot;false&quot;) tem seu valor alterado para &quot;true&quot;, indicando que ao menos um erro ocorreu. </li><li>O mesmo processo de validação se repete para cada campo e, ao final (linha 28), caso não existam erros, uma mensagem com os dados informados é exibida. Caso erros existam, mensagens de erros são exibidas no topo da página. </li></ul><p>O trecho de código em execução pode ser visualizado na Figura 3.</p><p><a href="http://files.channel9.msdn.com/thumbnail/824e6b0a-71ae-435d-abff-2c5cf9888cca.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/824e6b0a-71ae-435d-abff-2c5cf9888cca.JPG" alt="" width="600" height="250"></a></p><p align="center"><strong>Figura 3</strong>. O formulário sendo validado</p><p align="left"><strong>&nbsp;Conclusões</strong></p><p align="left">Utilizar ASP.NET Razor para validar informações adicionadas a formulários web em web pages é um processo simples e robusto.</p><p align="left">Existem diferentes formas e metodologias para realizar a validação de informações de formulários em páginas web (uma das principais é através de javascript e seus frameworks), entretanto, seguindo a ideia de tornar o processo de construção de web pages mais simples, realizar validações com Razor é uma interessante alternativa.&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d8850bc8ac7042af949da020013a95f9">]]></description>
      <comments>http://channel9.msdn.com/posts/ASPNET-Razor-Trabalhando-com-validao</comments>
      <itunes:summary>Se existe um aspecto das web pages em que o ASP.NET Razor trouxe consider&#225;vel melhoria em termos de processo, por certo este &#233; o trabalho com formul&#225;rios. Com Razor, interagir com formul&#225;rios web tornou-se tarefa simples e prazerosa, como voc&#234; poder&#225; comprovar &#224; medida em que este texto avan&#231;a.Neste artigo apresentaremos os principais aspectos relacionados ao processo de constru&#231;&#227;o e intera&#231;&#227;o associados a formul&#225;rios web, dentre os quais podemos citar: Como criar e utilizar formul&#225;rios web Como utilizar dados fornecidos por usu&#225;rios em um formul&#225;rio web na aplica&#231;&#227;o Como &#233; poss&#237;vel validar as informa&#231;&#245;es provenientes de formul&#225;rios web sem javascript, utilizando Razor apenas Criando formul&#225;rios web O objetivo deste texto n&#227;o &#233; ensinar conceitos sobre a linguagem padr&#227;o dos navegadores web, isto &#233;, HTML. Entretanto, como falaremos massivamente acerca de formul&#225;rios, faz sentido apresentar os conceitos b&#225;sicos relacionados a este importante componente das web pages.A Listagem 1 apresenta um c&#243;digo sugestivo para implementa&#231;&#227;o de um formul&#225;rio web simples, simulando o cadastro de produtos em um “sistema” web qualquer. &amp;lt;form id=&amp;quot;formProdutos&amp;quot; action=&amp;quot;&amp;quot; method=&amp;quot;post&amp;quot;&amp;gt;
            &amp;lt;fieldset&amp;gt;
            
                &amp;lt;legend&amp;gt;Adicionando novo prodruto&amp;lt;/legend&amp;gt;
            
                &amp;lt;label for=&amp;quot;txtCodigo&amp;quot;&amp;gt;C&#243;digo do produto&amp;lt;/label&amp;gt;
                &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;txtCodigo&amp;quot; name=&amp;quot;txtCodigo&amp;quot; /&amp;gt;
                &amp;lt;br /&amp;gt;
            
                &amp;lt;label for=&amp;quot;txtNome&amp;quot;&amp;gt;Nome do produto&amp;lt;/label&amp;gt;
                &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;txtNome&amp;quot; name=&amp;quot;txtNome&amp;quot; /&amp;gt;
                &amp;lt;br /&amp;gt;
            
                &amp;lt;label for=&amp;quot;txtValorUnitario&amp;quot;&amp;gt;Valor unit&#225;rio&amp;lt;/label&amp;gt;
                &amp;lt;input type=&amp;quot;text&amp;quot; id=&amp;quot;txtValorUnitario&amp;quot; name=&amp;qu</itunes:summary>
      <link>http://channel9.msdn.com/posts/ASPNET-Razor-Trabalhando-com-validao</link>
      <pubDate>Mon, 26 Mar 2012 19:05:35 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/ASPNET-Razor-Trabalhando-com-validao</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/aa8f24aa-7823-4676-a1d8-ea7e1935eee9.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/ASPNET-Razor-Trabalhando-com-validao/rss</wfw:commentRss>
      <category>ASP.NET</category>
      <category>Brazilian Portuguese</category>
      <category>Razor</category>
      <category>Validation</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>ASP.NET Razor: Helpers e Functions</title>
      <description><![CDATA[<p>ASP.NET Razor trouxe para as web pages da plataforma .NET uma importante e necessária revitalização. Dentre essas melhorias, destaca-se a possibilidade de se escrever trechos de código reutilizáveis e códigos com comportamentos isolados. Estes conceitos são chamados de Helpers e Functions, respectivamente. Neste artigo, estudaremos alguns aspectos fundamentais sobre estes recursos.</p><p><strong>Functions (funções)</strong></p><p>Se você já escreveu código em alguma linguagem de programação, procedimental ou não, certamente possui alguma experiência com funções.</p><p>Em linhas gerais, funções são trechos de código que realizam operações específicas que, no momento oportuno, são trazidas ao contexto de determinada operação através de uma chamada simples.</p><p>Para que este conceito fique mais claro, imagine determinada situação onde, conexões com o banco de dados da aplicação devem ser realizadas em diferentes momentos e diversas vezes ao longo da execução da mesma. Ao invés de cada web page realizar a conexão no momento necessário, o trecho de código que realiza tal operação poderia estar encapsulado em uma função, que poderia ser chamada quantas vezes fossem necessárias.</p><p>WebMatrix e ASP.NET Razor oferecem uma forma simples e organizada de se trabalhar&nbsp; com funções. A seguir, apresentamos este processo.</p><p>Com WebMatrix em execução, crie um novo projeto do tipo &quot;Empty Site&quot;. Na Solution Explorer, adicione um novo diretório chamado &quot;App_Code&quot;. Em seu interior adicione um novo arquivo do tipo &quot;.cshtml&quot; (sugestivamente nomeei o da construção deste exemplo de &quot;OperacoesMatematicas.cshtml&quot;). A Figura 1 apresenta esta etapa do processo.</p><p><a href="http://files.channel9.msdn.com/thumbnail/acb593e8-02fb-44a2-a072-45601e7eac19.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/acb593e8-02fb-44a2-a072-45601e7eac19.JPG" alt="" width="750" height="400"></a></p><p><strong>Figura 1</strong>. Adicionando um arquivo &quot;.cshtml&quot; a pasta &quot;App_Code&quot;&nbsp;</p><p>&nbsp;No arquivo récem criado, remova o código automaticamente gerado pela ferramenta e adicione aquele apresentado pela Listagem 1.</p><p><pre class="brush: csharp">@functions{

    //Operação de adição
    public static int Soma(int Valor1, int Valor2)
    {
        var Resultado = Valor1 &#43; Valor2;
        return Resultado;
    }

    //Operação de multiplicação
    public static int Multiplicacao(int Valor1, int Valor2)
    {
        var Resultado = Valor1 * Valor2;
        return Resultado;
    }

    //Operação de divisão
    public static int Divisao(int Valor1, int Valor2)
    {
        var Resultado = Valor1 / Valor2;
        return Resultado;
    }

    //Operação de subtração
    public static int Subtracao(int Valor1, int Valor2)
    {
        var Resultado = Valor1 – Valor2;
        return Resultado;
    }

}</pre></p><p>&nbsp;<strong>Listagem 1</strong>. Criando a lógica da apresentação</p><p>Como é possível notar, a aplicação que demonstrará a utilização das funções implementa um exemplo de calculadora simples que, ao receber as informações de determinado formulário, exibe o resultado da conta.</p><p>Para que funções possam funcionar corretamente com Razor e WebMatrix é preciso que o código esteja alocado dentro do bloco delimitado por &quot;@functions{}&quot;. Este bloco diz ao compilador Razor que, os métodos (são quatro funções, uma para operação aritmética) implementados internamente tem o comportamento de funções e portanto, podem ser acessadas como tal.</p><p>Como próxima etapa, o que faremos é criar o formulário que atuará como interface para a entrada de dados no sistema. Assim, adicione a raíz da aplicação um novo arquivo com a extensão &quot;.cshtml&quot; e adicione o código HTML apresentado pela Listagem 2.</p><p><pre class="brush: html">&lt;html&gt;
    &lt;head&gt;
        &lt;title&gt;Funções - Como utilizar?&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        &lt;h1&gt;Operação matemática&lt;/h1&gt;
        &lt;form method=&quot;post&quot; id=&quot;FormOperacao&quot; name=&quot;FormOperacao&quot;&gt;
            &lt;table&gt;
                &lt;tr&gt;
                    &lt;td&gt;
                        Informe o primeiro valor:
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;input type=&quot;text&quot; id=&quot;txtValor1&quot; name=&quot;txtValor1&quot; /&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;
                        Informe o segundo valor:
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;input type=&quot;text&quot; id=&quot;txtValor2&quot; name=&quot;txtValor2&quot; /&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;
                        Selecione o tipo de operação:
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;select id=&quot;slcOperacao&quot; name=&quot;slcOperacao&quot;&gt;
                            &lt;option selected=&quot;selected&quot;&gt;Selecione a operação&lt;/option&gt;
                            &lt;option value=&quot;&#43;&quot;&gt;&#43;&lt;/option&gt;
                            &lt;option value=&quot;-&quot;&gt;-&lt;/option&gt;
                            &lt;option value=&quot;*&quot;&gt;*&lt;/option&gt;
                            &lt;option value=&quot;/&quot;&gt;/&lt;/option&gt;
                        &lt;/select&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td&gt;
                        Resultado:
                    &lt;/td&gt;
                &lt;/tr&gt;
                &lt;tr&gt;
                    &lt;td id=&quot;EstiloResultado&quot;&gt;
                        
                    &lt;/td&gt;
                    &lt;td&gt;
                        &lt;input type=&quot;submit&quot; value=&quot;Calcular&quot; id=&quot;btnCalcular&quot; name=&quot;btnCalcular&quot; /&gt;
                    &lt;/td&gt;
                &lt;/tr&gt;
            &lt;/table&gt;
        &lt;/form&gt;
    &lt;/body&gt;
&lt;/html&gt;</pre></p><p><strong>Listagem 2</strong>. Formulário de entrada&nbsp;</p><p>&nbsp;Agora possuímos a interface de entrada do sistema e a lógica das operações. O que nos resta é &quot;interligar&quot; estes dois momentos e o faremos adicionando algum código Razor na web page do formulário. Assim, no topo da página do formulário, antes da tag HTML inicial, adicione o seguinte trecho de código.</p><p><pre class="brush: csharp">@{
    var ResultadoFinal = 0;
    if(IsPost)
    {
        var Valor1 = Request[&quot;txtValor1&quot;];
        var Valor2 = Request[&quot;txtValor2&quot;];
        var Operacao = Request[&quot;slcOperacao&quot;];

        switch(Operacao)
        {
            case &quot;&#43;&quot;:
                ResultadoFinal = OperacoesMatematicas.Soma(Valor1.AsInt(), Valor2.AsInt());
            break;
            case &quot;-&quot;:
                ResultadoFinal = OperacoesMatematicas.Subtracao(Valor1.AsInt(), Valor2.AsInt());
            break;
            case &quot;*&quot;:
                ResultadoFinal = OperacoesMatematicas.Multiplicacao(Valor1.AsInt(), Valor2.AsInt());
            break;
            case &quot;/&quot;:
                ResultadoFinal = OperacoesMatematicas.Divisao(Valor1.AsInt(), Valor2.AsInt());
            break;
        }

    }
}</pre></p><p><strong>Listagem 3</strong>. Interligando os dados do formulário com a lógica da aplicação&nbsp;</p><p>&nbsp;</p><p>O código apresentado pela Listagem 3 é simples e nos possibilita entender de forma bem clara como funções podem ser utilizadas no contexto de aplicações web. Na próxima aula deste módulo, estudaremos os mecanismos disponíveis no modelo Razor de programação para interagir com formulários web utilizando WebMatrix e, por isso, não detalharei estes recursos neste texto.</p><p>O principal aspecto do código apresentado pela Listagem 3 e que é objeto de nosso estudo neste artigo é a forma com a qual trazemos as funções para o contexto dos dados atuais. Assim, observe atentamente as linhas 12, 15, 18 e 21. Em ambas podemos notar &nbsp;&quot;chamadas&quot; a funções acontecendo. A nomenclatura para que isto ocorra é:</p><p align="center">[ <em>NomeDoArquivoDasFuncoes </em>].[ <em>NomeDaFuncao</em> ]( <em>Parametros</em> )</p><p>Assim, temos:</p><p align="center"><em><pre class="brush: csharp">var Resultado = OperacoesMatematicas.Soma(Valor1.AsInt(),Valor2.AsInt());</pre></em></p><p>A linha acima pode ser lida da seguinte forma: &quot;Resultado&quot; recebe o valor gerado pela execução da função &quot;Soma&quot; que possui os parâmetros &quot;Valor1&quot; convertido em inteiro e &quot;Valor2&quot; também convertido em inteiro que se encontra implementada no arquivo &quot;OperacoesMatematicas&quot;.</p><p>O resultado final com a aplicação em execução pode ser visualizado na Figura 2.</p><p><a href="http://files.channel9.msdn.com/thumbnail/11a3a894-2871-4476-9e52-298bae48d8bf.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/11a3a894-2871-4476-9e52-298bae48d8bf.JPG" alt=""></a></p><p><strong>Figura 2</strong>. A aplicação de exemplo em funcionamento</p><p><strong>Helpers</strong></p><p>Helpers e WebMatrix trouxeram um importante conceito para o processo de construção de aplicações para web: code ready (ou em português, códigos prontos). Helpers auxiliam desenvolvedores em grande escala pois facilitam o processo de reutilização de código.</p><p>Através da utilização de helpers, desenvolvedores podem criar fragmentos de código, armazená-los em repositórios locais, de rede ou na nuvem e reutilizar em projetos que necessitem da mesma demanda.</p><p>O conceito de helpers transcende o de funções visto anteriomente. Enquanto funções estão restritas ao escopo do projeto, helpers podem ser utillizados em diversos projetos. Isto faz deste recurso, um atrativo especialmente interessante.</p><p>WebMatrix traz uma galeria de diversos helpers já prontos e, além disso, permite que desenvolvedores criem seus próprios. Você pode encontrar um bom texto apresentando o processo de construção de helpers utilizando WebMatrix clicando <a href="http://fabriciosanchez.com.br/site/?p=1359" target="_blank">aqui</a>.</p><p>Neste artigo, apresentaremos o processo para utilizar um helper já existente na galeria online do WebMatrix e, para isso, lancaremos mão do mesmo projeto utilizado para explicitar o conceito de utilização de funções na seção anterior deste texto. Assim, adicione um novo arquivo ao diretório raíz do projeto também com a extensão &quot;.cshtml&quot;.</p><p>O helper que será utilizado como exemplo neste ponto é o &quot;TwitterHelper&quot;. Como o nome sugere, este helper realiza de forma extremamente simplificada a intergração com Twitter com a escrita de apenas algumas linhas de código.</p><p>Após adicionar o novo arquivo, clique sobre a opção &quot;Gallery (NuGet)&quot; localizada no menu superior, conforme ilustra a Figura 3.</p><p><a href="http://files.channel9.msdn.com/thumbnail/4bc000be-5b99-4e21-be52-73291a01c00c.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/4bc000be-5b99-4e21-be52-73291a01c00c.JPG" alt=""></a></p><p>&nbsp;<strong>Figura 3</strong>. Galeria de helpers online do WebMatrix</p><p>&nbsp;Na janela que se abre, após informar campo de busca a palavra &quot;Twitter&quot;, selecione o helper &quot;TwitterHelper&quot; e clique em &quot;Install&quot;, conforme ilustra a Figura 4.</p><p><a href="http://files.channel9.msdn.com/thumbnail/5c1e6126-7ec0-4819-9117-29ef0298b7c6.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/5c1e6126-7ec0-4819-9117-29ef0298b7c6.JPG" alt=""></a></p><p>&nbsp;<strong>Figura 4</strong>. Selecionando e instalando o helper &quot;TwitterHelper&quot;</p><p>&nbsp;</p><p>Aceitando os termos de licença e clicando novamente em &quot;Install&quot; você estará habilitando WebMatrix para que realize o trabalho para você. Ele buscará os arquivos do helper, os distribuirá nas pastas específicas do projeto e habilitará sua aplicação a utilizá-lo. A partir daí, apenas algumas linhas de código o separarão da integração.</p><p>Naturalmente que, o passo seguinte, consiste na adição do código que integra nossa aplicação web a API do Twitter. A Listagem 5 apresenta o código final da web page que realiza a integração.</p><p><pre class="brush: html">&lt;html&gt;
    &lt;head&gt;
        &lt;meta charset=&quot;utf-8&quot; /&gt;
        &lt;title&gt;Integração com Twitter&lt;/title&gt;
    &lt;/head&gt;
    &lt;body&gt;
        @TwitterGoodies.Search(&quot;WebMatrix&quot;)
    &lt;/body&gt;
&lt;/html&gt; </pre></p><p><strong>Listagem 4</strong>. Utilizando o helper para exibir dados do Twitter&nbsp;</p><p>&nbsp;</p><p>O código apresenta um aspecto fundamental: a chamada da função &quot;Search&quot; que se encontra implementada no arquivo &quot;TwitterGoodies&quot;. Este conceito lhe é familiar?</p><p>Até a próxima aula.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:986b56eb5e334dae8fe0a01c002c0f94">]]></description>
      <comments>http://channel9.msdn.com/posts/ASPNET-Razor-Helpers-e-Functions</comments>
      <itunes:summary>ASP.NET Razor trouxe para as web pages da plataforma .NET uma importante e necess&#225;ria revitaliza&#231;&#227;o. Dentre essas melhorias, destaca-se a possibilidade de se escrever trechos de c&#243;digo reutiliz&#225;veis e c&#243;digos com comportamentos isolados. Estes conceitos s&#227;o chamados de Helpers e Functions, respectivamente. Neste artigo, estudaremos alguns aspectos fundamentais sobre estes recursos. Functions (fun&#231;&#245;es) Se voc&#234; j&#225; escreveu c&#243;digo em alguma linguagem de programa&#231;&#227;o, procedimental ou n&#227;o, certamente possui alguma experi&#234;ncia com fun&#231;&#245;es. Em linhas gerais, fun&#231;&#245;es s&#227;o trechos de c&#243;digo que realizam opera&#231;&#245;es espec&#237;ficas que, no momento oportuno, s&#227;o trazidas ao contexto de determinada opera&#231;&#227;o atrav&#233;s de uma chamada simples. Para que este conceito fique mais claro, imagine determinada situa&#231;&#227;o onde, conex&#245;es com o banco de dados da aplica&#231;&#227;o devem ser realizadas em diferentes momentos e diversas vezes ao longo da execu&#231;&#227;o da mesma. Ao inv&#233;s de cada web page realizar a conex&#227;o no momento necess&#225;rio, o trecho de c&#243;digo que realiza tal opera&#231;&#227;o poderia estar encapsulado em uma fun&#231;&#227;o, que poderia ser chamada quantas vezes fossem necess&#225;rias. WebMatrix e ASP.NET Razor oferecem uma forma simples e organizada de se trabalhar&amp;nbsp; com fun&#231;&#245;es. A seguir, apresentamos este processo. Com WebMatrix em execu&#231;&#227;o, crie um novo projeto do tipo &amp;quot;Empty Site&amp;quot;. Na Solution Explorer, adicione um novo diret&#243;rio chamado &amp;quot;App_Code&amp;quot;. Em seu interior adicione um novo arquivo do tipo &amp;quot;.cshtml&amp;quot; (sugestivamente nomeei o da constru&#231;&#227;o deste exemplo de &amp;quot;OperacoesMatematicas.cshtml&amp;quot;). A Figura 1 apresenta esta etapa do processo.  Figura 1. Adicionando um arquivo &amp;quot;.cshtml&amp;quot; a pasta &amp;quot;App_Code&amp;quot;&amp;nbsp; &amp;nbsp;No arquivo r&#233;cem criado, remova o c&#243;digo automaticamente gerado pela ferramenta e adicione aquele apresentado pela Listagem 1. @functions{

    //Opera&#231;&#227;o de adi&#231;&#227;o
    public static int Soma(int Valor1, int Valor2)
    {
        var Resu</itunes:summary>
      <link>http://channel9.msdn.com/posts/ASPNET-Razor-Helpers-e-Functions</link>
      <pubDate>Thu, 22 Mar 2012 02:41:02 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/ASPNET-Razor-Helpers-e-Functions</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/8386df66-7e0f-47e7-82b0-d6b93c2d4b32.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/ASPNET-Razor-Helpers-e-Functions/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>EasingFunctions</category>
      <category>Razor</category>
      <category>WebMatrix</category>
      <category>Helpers</category>
    </item>
  <item>
      <title>Conceitos fundamentais sobre ASP.NET Razor</title>
      <description><![CDATA[<p>&nbsp;Uma aplicação web atual pode ser subdividida internamente em três camadas essenciais: acesso a dados, regras de negócio e visualização. O pattern MVC (Model-View-Controller) disponibiliza um modelo de programação fortemente baseado neste contexto. Assim, se as responsabilidades são tão separadas dentro de uma aplicação, é perfeitamente possível e natural que, os modelos internos de desenvolvimento em cada camada evoluam.</p><p>Por algum tempo no passado, muitas tecnologias e frameworks eram propostos para otimizar não apenas o processo de escrita de códigos nos dois modelos de nível mais baixo (entenda-se: dados e negócios) das aplicações mas também o resultado final gerado. Algo que ocorria frequentemente era: as tecnologias para a camada final de visualização não evoluiam no mesmo ritmo que as demais.</p><p>Com a grande evolução sofrida por tecnologias já tradicionais do processo (HTML 5, CSS 3, jQuery, LESS, etc.) e o advento de novas e robustas (como ASP.NET Razor, por exemplo), a camada de visualização de dados de aplicações web dentro da plataforma .NET teve este cenário outrora desfavorável modificado para extremamente favorável.</p><p>Este módulo do treinamento tratará apenas da camada de visualização de aplicações web dentro da plataforma .NET, mais especificamente de sua nova tecnologia padrão para este fim – a saber, ASP.NET Razor.</p><p><strong>Conhecendo o ASP.NET Razor</strong></p><p><u>Definição</u>: ASP.NET Razor é uma <em>view engine</em>. É uma nova forma de escrever visualizações em aplicações web.</p><p>Esta definição é fundamental pois traz consigo duas características muito importantes acopladas, as quais discutimos a seguir. O objetivo principal da tecnologia também está implícito através dela.</p><ul><li><strong>Não é linguagem de programação</strong>: esta é uma confusão muito comum realizada por desenvolvedores que iniciam seus estudos sobre Razor. ASP.NET Razor é um novo modelo de programação e não uma nova linguagem. Muito embora possua verbetes próprios, o que de fato ocorre é, no back-end, temos C# ou VB sendo executado. Além disso, é perfeitamente possível construir <em>views</em> utilizando Razor sem utilizar sua sintaxe específica, isto porque o usuário pode utilizar seu <em>expertise </em>de C# ou VB para escrever as <em>views</em> no modelo Razor. </li><li><strong>Linguagens robustas renderizadas na view</strong>: com Razor o desenvolvedor web ganha o poder de incorporar códigos escritos em linguagens como C# e VB em um novo ambiente – as <em>views</em>. </li></ul><p>O ASP.NET Razor surgiu como parte do projeto do WebMatrix. Na verdade, Razor surgiu para ser a linguagem padrão para a construção de aplicações .NET dentro da ferramenta. Logo, se WebMatrix surgiu com o objetivo de ser uma ferramenta que simplifica o processo de construção de aplicações web robustas, Razor automaticamente carrega a mesma responsabilidade.</p><p>Razor agregou tanto valor a ferramenta, que o time de produto do ASP.NET MVC incorporou a <em>view engine</em> como padrão do framework a partir da versão 3.</p><p><strong>Características funcionais</strong></p><p>O ASP.NET Razor possui uma série de características que a tornam extremamente interessantes. A seguir, apresentamos as principais delas:</p><ul><li><strong>Código limpo e legível</strong>: sem dúvida, a principal característica do ASP.NET Razor é a simplicidade na construção dos códigos. É possível construir páginas extremamente elaboradas, ricas em conteúdo com código organizado e limpo, gerando assim, facilidade no processo de manutenção do mesmo. </li><li>&nbsp;<strong>Razor não é uma linguagem</strong>: aqui está um motivo de grande confusão daqueles que iniciam os estudos com ASP.NET Razor. Muito embora você seja levado a pensar desta forma, o ASP.NET Razor não é uma nova linguagem de programação e sim, um novo modelo de programação. Para utilizar Razor em suas aplicações, você poderá utilizar seus conhecimentos das linguagens C# (C-Sharp) ou VB (Visual Basic). Caso sua escolha seja pela linguagem C#, o arquivo em que trabalhará terá a extensão &quot;cshtml&quot;. Caso a linguagem escolhida seja o Visual Basic, seu arquivo possuirá a extensão &quot;vbhtml&quot;. </li><li><strong>Helpers</strong>: uma das possibilidades interessantes do ASP.NET Razor é a de utilizar helpers. Helpers são funcionalidades específicas (por exemplo: formulário de busca no Bing, exibição de twits, integração com Facebook, etc.) já implementadas e disponibilizadas gratuitamente para utilização. Para alguns casos, a utilização de helpers diminui em grande escala o tempo gasto no processo de desenvolvimento de algumas tarefas. É possível também criar helpers personalizados. </li><li><strong>Fácil aprendizagem</strong>: outra característica importante do ASP.NET Razor é a facilidade na aprendizagem do mesmo, haja vista a simplicidade para escrever códigos proporcionada por ele. </li></ul><p><strong>Recursos básicos</strong></p><p>A partir daqui apresentaremos uma visão geral acerca dos recursos básicos disponíveis no modelo Razor de programação. Estes conceitos são fundamentais para entender o funcionamento da linguagem e são base para o entendimento das próximas aulas do treinamento neste módulo.</p><p>As páginas Razor podem assumir duas extensões, dependendo da linguagem base de programação escolhida. Se a escolha for codificar com C#, a página assume a extensão &quot;.cshtml&quot;. Se a escolha for por codificar em Visual Basic, a página assume a extensçao &quot;.vbhtml&quot;.</p><p><strong>1.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>Adicionando código na página com através do caracter '@'</strong></p><p>O modelo Razor de programação disponibiliza basicamente três modelos para a codificação no contexto de uma página com código HTML: bloco unitário, incorporado e bloco multi linhas (em inglês: <em>single block</em>, <em>inline </em>e<em> multi-block</em>, respectivamente).</p><p>Para que esta ideia fique clara, considere o trecho de código apresentado pela Listagem 1.</p><p><pre class="brush: text">&lt;!-- Bloco unitário --&gt;
@{ var Nome = &quot;Fabrício Lopes Sanchez&quot;; }
@{ var Idade = 28; }

&lt;!-- Incorporado --&gt;
&lt;p&gt;O nome do usuário é: @Nome&lt;/p&gt;
&lt;p&gt;A idade do usuário é: @Idade&lt;/p&gt;

&lt;!-- Multi linhas --&gt;
@{
    var Modelo = &quot;IX35&quot;;
    var Tipo = &quot;SUV&quot;;
    var Fabricante = &quot;Hyundai&quot;;
    var Mensagem = &quot;O modelo é: &quot; &#43; Modelo &#43; &quot;. Este carro é do tipo &quot; &#43; Tipo &#43; &quot; e é fabricado por &quot; &#43; Fabricante &#43; &quot;.&quot;;
}
&lt;h1&gt;Informações do carro do cliente &quot;@Nome&quot;&lt;/h1&gt;
&lt;p&gt;@Mensagem&lt;/p&gt;
</pre></p><p><strong>Listagem 1</strong>. Utilizando os blocos de código do ASP.NET Razor</p><p>Analisando-se a Listagem 1 fica fácil evidenciar os três de tipos de modelos de codificação e dispensa maiores comentários. Algumas observações pertinentes neste momento são:</p><ul><li>O interpretador do Razor é inteligente o suficiente para &quot;saber&quot; diferenciar os diferentes contextos. Um exemplo é o modelo incorporado. O interpretador é inteligente o suficiente para diferenciar o contexto do Razor do HTML. </li><li>Razor conserva aspectos dinâmicos disponíveis também nas linguagens da .NET framework, como pode ser observado através da palavra reservada &quot;var&quot;. </li><li>A linguagem escolhida para a escrita do exemplo apresentado pela Listagem 1 foi C# e, neste caso, o arquivo deveria possuir a extensão &quot;.cshtml&quot;. </li><li>Codificação de elementos HTML. Quando Razor exibe uma saída, ele codifica o conteúdo de elementos HTML por outros códigos por questão de segurança (como pode ser visualizado na Figura 2). </li><li>Com Razor é perfeitamente possível utilizar variáveis. Lembre-se, estamos utilizando C# no back-end. </li></ul><p>O resultado produzido pelo código apresentado pela Listagem 1 pode ser visualizado na Figura 1.</p><p><a href="http://files.channel9.msdn.com/thumbnail/58b32292-ba09-4217-8d33-ba74c97a1bb6.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/58b32292-ba09-4217-8d33-ba74c97a1bb6.JPG" alt=""></a></p><p>&nbsp;<strong>Figura 1</strong>. Resultado do processamento do código da Listagem 1</p><p><a href="http://files.channel9.msdn.com/thumbnail/b88f4de7-c8cd-458a-9690-b7558e1206bd.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/b88f4de7-c8cd-458a-9690-b7558e1206bd.JPG" alt=""></a></p><p><strong>Figura 2</strong>. Os caracteres codíficados pelo interpretador Razor</p><p>&nbsp;<strong>2.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>Trabalhando com objetos</strong></p><p>Objetos são elementos que possuem propriedades e métodos. Estes elementos são abstrações do mundo real e as propriedades e métodos descrevem estas abstrações. Com Razor, como trabalhamos com linguagens orientadas a objetos como plano de fundo, temos a possibilidade de utilizar este recurso.</p><p>Para entender uma das formas possíveis de se utilizar objetos com a sintaxe Razor, considere o exemplo apresentado pela Listagem 2.</p><p><pre class="brush: text">&lt;h1&gt;Trabalhando com o objeto Request&lt;/h1&gt;

&lt;table style=&quot;border:1px dotted #000;&quot;&gt;
    &lt;tr&gt;
        &lt;td&gt;URL Requisitada&lt;/td&gt;
        &lt;td&gt;Caminho Relativo&lt;/td&gt;
        &lt;td&gt;Tipo de Requisição&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
        &lt;td&gt;@Request.Url&lt;/td&gt;
        &lt;td&gt;@Request.FilePath&lt;/td&gt;
        &lt;td&gt;@Request.RequestType&lt;/td&gt;
    &lt;/tr&gt;
&lt;/table&gt;
</pre></p><p>&nbsp;<strong>Listagem 2</strong>. Trabalhando com o objeto &quot;Request&quot;</p><p>No código apresentado pela Listagem 2 basicamente o que temos é: um objeto &quot;Request&quot; e a exibição dos valores armazendas em cada propriedade. Este texto não irá apresentar os conceitos de orientação objetos pois não é o foco do mesmo. Você pode encontrar um bom texto de referência sobre orientação a objetos seguindo <a href="http://fabriciosanchez.com.br/site/?page_id=1314" target="_blank">este <em>link</em></a>.</p><p>Razor oferece ainda a possibilidade de criar suas próprias classes e instanciar seus próprios objetos.</p><p>O resultado do processamento do código apresentado pela Listagem 2 pode ser visualizado na Figura 3.</p><p><a href="http://files.channel9.msdn.com/thumbnail/7fb906ab-90f1-4204-b578-3609069453c5.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/7fb906ab-90f1-4204-b578-3609069453c5.JPG" alt=""></a>&nbsp;</p><p>&nbsp;<strong>Figura 3</strong>. Resultado do processamento do código da Listagem 2</p><p>&nbsp;<strong>3.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>Estruturas condicionais</strong></p><p>Com Razor o desenvolvedor pode construir trechos de códigos que &quot;tome decisões&quot; com base em situações específicas. A tomada de decisão pode ser realizada utilizando-se dois recursos básicos: &quot;if/else&quot; e/ou &quot;switch/case&quot;. Como exemplo de utilização, considere o trecho de código apresentado pela Listagem 3.</p><p>&nbsp;<pre class="brush: text">@{
    var Valor = 5;

    if(Valor &gt; 3)
    {
        Valor = Valor *= 3;
    }
}
&lt;p&gt;O valor da operação é: @Valor&lt;/p&gt;
</pre></p><p><strong>Listagem 3</strong>. Utilizando uma estrutura condicional&nbsp;</p><p>&nbsp;O resultado natural da execução do trecho de código apresentado pela Listagem 3 pode ser visualizado na Figura 4.</p><p><a href="http://files.channel9.msdn.com/thumbnail/2c6b24ad-cdc9-436f-9b68-b65b23e7676e.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/2c6b24ad-cdc9-436f-9b68-b65b23e7676e.JPG" alt=""></a>&nbsp;</p><p>&nbsp;<strong>Listagem 4</strong>. Tomada de decisão em execução</p><p>&nbsp;<strong>4.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </strong><strong>Conversão de tipos</strong></p><p>Razor também oferece métodos que possibilitam a conversão entre tipos de dados. Estes métodos são especialmente úteis quando os valores estão chegando de um &quot;ambiente externo&quot; e não se tem certeza quanto ao formato de entrada sendo que, para a realização de determinados tipos de operações posteriores, são requeridos tipos específicos</p><p>A Tabela 1 a seguir, apresenta os métodos para conversão de tipos disponíveis no vocabulário Razor com breve descrição e exemplos de como utilizar cada um deles.</p><table cellspacing="0" cellpadding="2"><tbody><tr><td valign="top" width="121"><p>Método</p></td><td valign="top" width="189"><p>Descrição</p></td><td valign="top" width="294"><p>Exemplos</p></td></tr><tr><td valign="top" width="121"><p>AsInt(),</p><p>IsInt()</p></td><td valign="top" width="189"><p>Converte uma string (possível de ser convertida) para o formato inteiro. IsInt verifica se o número é inteiro.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var NumeroInteiro = 0;
var NumeroString = &quot;256&quot;;
if(NumeroString.IsInt() == true)
    {
        NumeroInteiro = NumeroString.AsInt();
    }
</pre></p></td></tr><tr><td valign="top" width="121"><p>AsBool(),</p><p>IsBool()</p></td><td valign="top" width="189"><p>Converte uma string (true ou false) para um tipo booleano.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var ValorString = &quot;True&quot;;
var NovoBooleano = ValorString.AsBool();</pre></p></td></tr><tr><td valign="top" width="121"><p>AsFloat(),</p><p>IsFloat()</p></td><td valign="top" width="189"><p>Converte uma string que possuir valor decimal em um número de ponto flutuante.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var ValorFloatString = &quot;10,23&quot;;
var ValorFloat = ValorFloatString.AsFloat();</pre></p></td></tr><tr><td valign="top" width="121"><p>AsDecimal(),</p><p>IsDecimal()</p></td><td valign="top" width="189"><p>Converte uma string (possível de ser convertida) para um número decimal. Decimais possuem maior precisão em relação a float’s.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var ValorDecimalString = &quot;25485,548&quot;;
var ValorDecimal = ValorDecimalString.AsDecimal();</pre></p></td></tr><tr><td valign="top" width="121"><p>AsDateTime(),</p><p>IsDateTime()</p></td><td valign="top" width="189"><p>Converte (se possível) o valor de uma variável string em DateTime.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var DataString = &quot;08/12/1983&quot;;
var Data = DataString.AsDateTime();</pre></p></td></tr><tr><td valign="top" width="121"><p>ToString()</p></td><td valign="top" width="189"><p>Converte qualquer valor para o tipo string.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">int Valor1 = 20;
int Valor2 = 28;
int Soma = Valor1 &#43; Valor2;
var Concatenacao = Valor1.ToString() &#43; Valor2.ToString();
Response.Write(Soma);
Response.Write(Concatenacao);</pre></p></td></tr></tbody></table><p><strong><br></strong></p><p><strong>Tabela 1</strong>. Conversão de tipos utilizando Razor</p><p><strong>1. </strong><strong>Operadores</strong></p><p>Razor incorpora todas as características do C#, logo, os operadores a serem utilizados na construção das expressões lógicas e/ou aritméticas são os mesmos. A Tabela 2 apresenta os operadores da linguagem e suas formas de utilização.</p><table cellspacing="0" cellpadding="2"><tbody><tr><td valign="top" width="121"><p>Operador</p></td><td valign="top" width="189"><p>Descrição</p></td><td valign="top" width="294"><p>Exemplos</p></td></tr><tr><td valign="top" width="121"><p>&#43;, -, *, /</p></td><td valign="top" width="189"><p>Operadores disponíveis para utilização em expressões matemáticas.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">//Adição
var Soma = 12 &#43; 52;

//Subtracao
int Subtracao = 1245852 - Soma;
    
//Multiplicacao
var Multiplicacao = 12;
Multiplicacao = Multiplicacao * Subtracao;

//Divisão
var Divisao = Multiplicacao / 2;</pre></p></td></tr><tr><td valign="top" width="121"><p>=</p></td><td valign="top" width="189"><p>Operador de atribuição. Atribui o valor do lado direito para a variável/objeto à esquerda.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var Multiplicacao = 12;</pre></p></td></tr><tr><td valign="top" width="121"><p>==</p></td><td valign="top" width="189"><p>Operdador de igualdade. Retorna “true” caso os elementos comparados sejam iguais.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var A = 12;
if(A == 12)
{
   Response.Write(&quot;Iguais!&quot;);       
}</pre></p></td></tr><tr><td valign="top" width="121"><p>!=</p></td><td valign="top" width="189"><p>Operador que indica diferença. Retorna “true” caso os valores comparados sejam distintos.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">if(A != 12)
{
     Response.Write(&quot;Diferentes!&quot;);
}</pre></p></td></tr><tr><td valign="top" width="121"><p>&gt;, &lt;, &gt;=, &lt;=</p></td><td valign="top" width="189"><p>Operadores que indicam: maior, menor, maior igual, menor igual, respectivamente.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var Valor = 134;
if(Valor &gt; 100)
{
     Valor&#43;&#43;;
}
else if(Valor &lt; 100)
{
     Valor--;
}</pre></p></td></tr><tr><td valign="top" width="121"><p>&#43;</p></td><td valign="top" width="189"><p>Operador concatenador. O compilador .NET sabe a diferença em relação ao tipo de operação “&#43;” de acordo com a natureza dos valores da expressão.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var Concatenacao = Valor1.ToString() &#43; Valor2.ToString();</pre></p></td></tr><tr><td valign="top" width="121"><p>&#43;=, -=, *=, /=</p></td><td valign="top" width="189"><p>Possibilita a realização de operações matemáticas simples no momento da atribuição.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">var Valor = 134;
if(Valor &gt; 100)
{
    Valor *= 20;
    Response.Write(Valor);
}</pre></p></td></tr><tr><td valign="top" width="121"><p>.</p></td><td valign="top" width="189"><p>Operador que permite executar métodos e atributos de determinados objetos.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">Response.Write(Valor);</pre></p></td></tr><tr><td valign="top" width="121"><p>!</p></td><td valign="top" width="189"><p>Negação. Inverte o valor lógico de determinada expressão.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">if(!Valor == 143)
{
    Response.Write(&quot;O valor é diferente de 143!&quot;);
}</pre></p></td></tr><tr><td valign="top" width="121"><p>&amp;&amp;, ||</p></td><td valign="top" width="189"><p>Operadores lógicos que representam E ou OU, respectivamente nas expressões.</p></td><td valign="top" width="294"><p><pre class="brush: csharp">if(Valor &gt; 100 &amp;&amp; Valor &lt; 200)
{
    Response.Write(&quot;O valor está entre 100 e 200.&quot;);
}</pre></p></td></tr></tbody></table><p>&nbsp;</p><p><strong>Conclusão</strong></p><p>ASP.NET Razor renova o conceito de web pages dentro da plataforma .NET. Razor apresenta um novo modelo de programação na camada de visualização que permite adicionar lógica de forma robusta sem perder a simplicidade. Esta característica faz com que a curva de aprendizado de desenvolvedores web de forma geral seja minimizada.</p><p>Razor incrementa produtividade no processo de construção de páginas web pois, diminui a quantidade de código escrito e facilita a manutenção do mesmo.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:c13678de7bcf4f3abf09a01b00df8459">]]></description>
      <comments>http://channel9.msdn.com/posts/Conceitos-fundamentais-sobre-ASPNET-Razor</comments>
      <itunes:summary>&amp;nbsp;Uma aplica&#231;&#227;o web atual pode ser subdividida internamente em tr&#234;s camadas essenciais: acesso a dados, regras de neg&#243;cio e visualiza&#231;&#227;o. O pattern MVC (Model-View-Controller) disponibiliza um modelo de programa&#231;&#227;o fortemente baseado neste contexto. Assim, se as responsabilidades s&#227;o t&#227;o separadas dentro de uma aplica&#231;&#227;o, &#233; perfeitamente poss&#237;vel e natural que, os modelos internos de desenvolvimento em cada camada evoluam. Por algum tempo no passado, muitas tecnologias e frameworks eram propostos para otimizar n&#227;o apenas o processo de escrita de c&#243;digos nos dois modelos de n&#237;vel mais baixo (entenda-se: dados e neg&#243;cios) das aplica&#231;&#245;es mas tamb&#233;m o resultado final gerado. Algo que ocorria frequentemente era: as tecnologias para a camada final de visualiza&#231;&#227;o n&#227;o evoluiam no mesmo ritmo que as demais. Com a grande evolu&#231;&#227;o sofrida por tecnologias j&#225; tradicionais do processo (HTML 5, CSS 3, jQuery, LESS, etc.) e o advento de novas e robustas (como ASP.NET Razor, por exemplo), a camada de visualiza&#231;&#227;o de dados de aplica&#231;&#245;es web dentro da plataforma .NET teve este cen&#225;rio outrora desfavor&#225;vel modificado para extremamente favor&#225;vel. Este m&#243;dulo do treinamento tratar&#225; apenas da camada de visualiza&#231;&#227;o de aplica&#231;&#245;es web dentro da plataforma .NET, mais especificamente de sua nova tecnologia padr&#227;o para este fim – a saber, ASP.NET Razor. Conhecendo o ASP.NET Razor Defini&#231;&#227;o: ASP.NET Razor &#233; uma view engine. &#201; uma nova forma de escrever visualiza&#231;&#245;es em aplica&#231;&#245;es web. Esta defini&#231;&#227;o &#233; fundamental pois traz consigo duas caracter&#237;sticas muito importantes acopladas, as quais discutimos a seguir. O objetivo principal da tecnologia tamb&#233;m est&#225; impl&#237;cito atrav&#233;s dela. N&#227;o &#233; linguagem de programa&#231;&#227;o: esta &#233; uma confus&#227;o muito comum realizada por desenvolvedores que iniciam seus estudos sobre Razor. ASP.NET Razor &#233; um novo modelo de programa&#231;&#227;o e n&#227;o uma nova linguagem. Muito embora possua verbetes pr&#243;prios, o que de fato ocorre &#233;, no back-end, temos C# ou VB sendo executado. Al&#233;m</itunes:summary>
      <link>http://channel9.msdn.com/posts/Conceitos-fundamentais-sobre-ASPNET-Razor</link>
      <pubDate>Wed, 21 Mar 2012 13:34:22 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Conceitos-fundamentais-sobre-ASPNET-Razor</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/1e2e5160-1ac3-4597-8cb6-367ab8fe8bc6.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>1</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Conceitos-fundamentais-sobre-ASPNET-Razor/rss</wfw:commentRss>
      <category>aspect-oriented programming</category>
      <category>Brazilian Portuguese</category>
      <category>C#</category>
      <category>Razor</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>WebMatrix - Relat&#243;rios</title>
      <description><![CDATA[<p>O WebMatrix traz em seu conjunto de recursos o de relatórios. Com ele, é possível obter informações preciosas acerca da aplicação em construção que o ajudará a incrementá-la. Nesta vídeo aula, apresentamos as características deste recurso.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:e06ecdec6b0d452a9beba01401233e46">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Relatrios</comments>
      <itunes:summary>O WebMatrix traz em seu conjunto de recursos o de relat&#243;rios. Com ele, &#233; poss&#237;vel obter informa&#231;&#245;es preciosas acerca da aplica&#231;&#227;o em constru&#231;&#227;o que o ajudar&#225; a increment&#225;-la. Nesta v&#237;deo aula, apresentamos as caracter&#237;sticas deste recurso. </itunes:summary>
      <itunes:duration>877</itunes:duration>
      <link>http://channel9.msdn.com/posts/WebMatrix-Relatrios</link>
      <pubDate>Thu, 15 Mar 2012 14:35:47 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Relatrios</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_2MB_ch9.wmv" expression="full" duration="877" fileSize="16769872" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_ch9.mp3" expression="full" duration="877" fileSize="7024205" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_ch9.webm" expression="full" duration="877" fileSize="34284025" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_ch9.wma" expression="full" duration="877" fileSize="7112441" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_ch9.wmv" expression="full" duration="877" fileSize="29066694" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_high_ch9.mp4" expression="full" duration="877" fileSize="137823098" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_low_ch9.mp4" expression="full" duration="877" fileSize="16814308" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_med_ch9.mp4" expression="full" duration="877" fileSize="107136942" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios.ism/manifest" expression="full" duration="877" fileSize="5426" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/3e46/e06ecdec-6b0d-452a-9beb-a01401233e46/Modulo2Licao9Relatorios_ch9.wmv" length="29066694" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>2</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Relatrios/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Web</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>WebMatrix - Ambiente de codifica&#231;&#227;o</title>
      <description><![CDATA[<p>O segundo módulo deste treinamento tem dedicado atenção a apresentação das principais características funcionais do WebMatrix. Assim, nas duas aulas inaugurais deste módulo apresentamos os tipos de projetos disponíveis na ferramenta e o ambiente de configuração do Internet Information Services Express.</p><p>No texto de hoje, nos concentraremos na apresentação dos recursos disponibilizados pelo WebMatrix para gerenciamento do ambiente de codificação. Nosso objetivo é apresentar de forma clara e objetiva, como a ferramenta atende as demandas de usuários que desejam escrever seus códigos no WebMatrix.</p><p><strong>O ambiente de codificação</strong></p><p>O WebMatrix é uma ferramenta para construção de aplicações web e portanto, se existe uma característica que não pode deixar a desejar é o ambiente de codificação. Neste quesito, usuários do WebMatrix estão bem servidos.</p><p>WebMatrix disponibiliza um ambiente simples (mas não pobre) e intuitivo para a escrita de códigos para as linguagens as quais a ferramenta oferece suporte nativo.</p><p>Oferecer suporte nativo siginifica que o WebMatrix traz consigo certos recursos que facilitam o processo de escrita dos códigos nas linguagens suportadas, tais como: coloração de palavras reservadas, code-complete (intellisense), tooltip, etc. Atualmente, as linguagens suportadas nativamente na versão atual do WebMatrix são:</p><ul><li>HTML (já com atualização para a especificação 5) </li><li>CSS (já com atualização para a especificação 3) </li><li>Razor View Engine </li><li>ASP.NET </li><li>PHP </li><li>Javascript (incluindo os frameworks mais populares, como jQuery) </li><li>SQL (para a escrita de scripts de bancos de dados) </li><li>XML </li><li>C# </li><li>Visual Basic </li><li>ASP Clássico </li></ul><p>Além dos recursos específicos para as linguagens já suportadas, WebMatrix disponibiliza ainda certos recursos comuns ao ambiente, tais como: auto identação, numeração de linhas, árvore de diretórios simplificada, menu contextualizado, etc.</p><p><strong>Conhecendo o ambiente</strong></p><p>Para acessar o ambiente de codificação do WebMatrix, basta direcionar o mouse ao canto inferior esquerdo do ambiente de trabalho da ferramenta e selecionar a opção &quot;Files&quot;. Ao realizar tal procedimento, você deverá estar visualizando uma tela semelhante aquela apresentada pela Figura 1.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/738f11df-b4ad-4edd-8eaf-ec41a8fd00a4.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/738f11df-b4ad-4edd-8eaf-ec41a8fd00a4.JPG" alt=""></a></p><p align="center"><strong>Figura 1</strong>. O ambiente de codificação do WebMatrix</p><p>A Figura 1 apresenta o ambiente de codificação do WebMatrix. Conforme mencionado anteriormente, o ambiente é extremamente simples e permite a fácil operação por qualquer usuário.</p><p>Duas características são marcantes analisando-se a Figura 1: menu contextualizado e árvore de navegação entre arquivos e diretórios. A presença do menu contextualizado no WebMatrix justifica-se naturalmente se trazemos conosco o conceito fundamental da ferramenta, isto é, o de ser uma ferramenta simples e intuitiva. Menus contextualizados foram introduzidos no Office 2010 e emplacaram excelentes resultados em termos de produtividade, justamente por não permitir o desvio de atenção durante determinada operação. Já a árvore de navegação é elemento indispensável em qualquer ambiente de codificação pois, permite gerenciar de forma simplificada nos muitos arquivos constantes em um projeto de aplicação web.</p><p>A seguir apresentamos com algumas imagens recursos adicionais do ambiente de codificação oferecidos pelo WebMatrix.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/f8479590-79ca-44c2-bc0a-6c844c3bc4b7.png" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/f8479590-79ca-44c2-bc0a-6c844c3bc4b7.png" alt="" width="600" height="280"></a></p><p align="center"><strong>Figura 2</strong>. Code-complete para uma das linguagens suportadas</p><p align="center"><a href="http://files.channel9.msdn.com/thumbnail/4ac608e6-b892-4fd4-a2a7-5b4197d8eaac.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/4ac608e6-b892-4fd4-a2a7-5b4197d8eaac.JPG" alt=""></a>&nbsp;</p><p align="center"><strong>Figura 3</strong>. Recurso &quot;go to&quot;. Muito útil para arquivos com muitas linhas de código</p><p align="center"><a href="http://files.channel9.msdn.com/thumbnail/8c37ede1-63fd-4483-920c-7a12b13d05cd.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/8c37ede1-63fd-4483-920c-7a12b13d05cd.JPG" alt=""></a>&nbsp;</p><p align="center"><strong>Figura 4</strong>. Busca de expressões dentro de arquivos</p><p><strong>Conclusões</strong></p><p>Conhecer o ambiente de codificação do WebMatrix é fundamental pois, boa parte do tempo de desenvolvimento de sua aplicação, será dispendido neste local. Conhecer os recursos associados podem o ajudar a incrementar a qualidade do código e a produtividade do usuário.</p><p>O ambiente de codificação do WebMatrix proporciona todos os recursos necessários para proporcionar a seus usuários produtividade na escrita de códigos nas linguagens suportadas pela ferramenta.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:bdd58d6aa39c4b59afbaa01401485e3c">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-codificao</comments>
      <itunes:summary>O segundo m&#243;dulo deste treinamento tem dedicado aten&#231;&#227;o a apresenta&#231;&#227;o das principais caracter&#237;sticas funcionais do WebMatrix. Assim, nas duas aulas inaugurais deste m&#243;dulo apresentamos os tipos de projetos dispon&#237;veis na ferramenta e o ambiente de configura&#231;&#227;o do Internet Information Services Express. No texto de hoje, nos concentraremos na apresenta&#231;&#227;o dos recursos disponibilizados pelo WebMatrix para gerenciamento do ambiente de codifica&#231;&#227;o. Nosso objetivo &#233; apresentar de forma clara e objetiva, como a ferramenta atende as demandas de usu&#225;rios que desejam escrever seus c&#243;digos no WebMatrix. O ambiente de codifica&#231;&#227;o O WebMatrix &#233; uma ferramenta para constru&#231;&#227;o de aplica&#231;&#245;es web e portanto, se existe uma caracter&#237;stica que n&#227;o pode deixar a desejar &#233; o ambiente de codifica&#231;&#227;o. Neste quesito, usu&#225;rios do WebMatrix est&#227;o bem servidos. WebMatrix disponibiliza um ambiente simples (mas n&#227;o pobre) e intuitivo para a escrita de c&#243;digos para as linguagens as quais a ferramenta oferece suporte nativo. Oferecer suporte nativo siginifica que o WebMatrix traz consigo certos recursos que facilitam o processo de escrita dos c&#243;digos nas linguagens suportadas, tais como: colora&#231;&#227;o de palavras reservadas, code-complete (intellisense), tooltip, etc. Atualmente, as linguagens suportadas nativamente na vers&#227;o atual do WebMatrix s&#227;o: HTML (j&#225; com atualiza&#231;&#227;o para a especifica&#231;&#227;o 5) CSS (j&#225; com atualiza&#231;&#227;o para a especifica&#231;&#227;o 3) Razor View Engine ASP.NET PHP Javascript (incluindo os frameworks mais populares, como jQuery) SQL (para a escrita de scripts de bancos de dados) XML C# Visual Basic ASP Cl&#225;ssico Al&#233;m dos recursos espec&#237;ficos para as linguagens j&#225; suportadas, WebMatrix disponibiliza ainda certos recursos comuns ao ambiente, tais como: auto identa&#231;&#227;o, numera&#231;&#227;o de linhas, &#225;rvore de diret&#243;rios simplificada, menu contextualizado, etc. Conhecendo o ambiente Para acessar o ambiente de codifica&#231;&#227;o do WebMatrix, basta direcionar o mouse ao canto inferior esquerdo do ambiente de traba</itunes:summary>
      <link>http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-codificao</link>
      <pubDate>Wed, 14 Mar 2012 19:55:42 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-codificao</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/6aa6aa6e-25da-42c6-a222-a7ee365beacc.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-codificao/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Razor</category>
      <category>WebMatrix</category>
      <category>code</category>
    </item>
  <item>
      <title>WebMatrix - Ambiente de configura&#231;&#245;es</title>
      <description><![CDATA[<p>O esquema funcional do WebMatrix é baseado em quatro elementos fundamentais. Estes quatro elementos irão compor os conteúdos de nossas próximas quatro aulas. São eles: configurações do Internet Information Services Express (IIS – o container de páginas acoplado ao WebMatrix), ambiente de gerenciamento de bancos de dados (para SQL Server Compact e MySQL), ambiente de codificação e ambiente para gerenciamento de relatórios.</p><p>No artigo de hoje, concentraremos nossos esforços no sentido de conhecer as principais características relacionadas ao container de dados instalado e configurado pelo WebMatrix – o IIS.</p><p><strong>Algumas palavras sobre IIS Express</strong></p><p>O IIS Express é uma versão autônoma do já consagrado container web da Microsoft. Além de ser uma versão autônoma, isto é, uma versão dissociada da versão padrão, é uma instância otimizada para utilização por parte de desenvolvedores. Evidentemente que neste contexto certas características do produto são retiradas, o que por inércia, acarreta em outra característica: leveza. Sim, IIS Express é uma ferramenta leve, o que diminui seu tempo de download, instalação e configuração.</p><p>Algumas outras características importantes do IIS Express são:</p><ul><li>Não executa como um serviço e portanto, não requer permissões de administrador para realizar a maioria das operações. </li><li>Desenhado para obter melhor desempenho com aplicações escritas em ASP.NET e PHP. </li><li>Múltiplos usuários podem trabalhar de forma independente na mesma máquina. </li></ul><p><strong>A relação entre WebMatrix e IIS</strong></p><p>Conforme apresentado em aulas anteriores, WebMatrix é uma IDE e seu objetivo principal é fornecer um ambiente limpo e sóbrio para o desenvolvimento de aplicações web. Tornar o ambiente &quot;limpo e sóbrio&quot; neste caso, implica necessariamente em esconder aspectos relacionados a configuração de ambiente.</p><p>Com vista a este cenário, torna-se natural inferir que, ao WebMatrix ser instalado ele naturalmente instala e configura a versão Express do Internet Information Services já que este, será a base executora das aplicações criadas com a ferramenta.</p><p>O WebMatrix gerencia todas as dependências relacionadas ao correto funcionamento do IIS e das demais ferramentas acopladas e, no front-end, disponibiliza funções básicas de gerência.</p><p><strong>Gerenciando o IIS no WebMatrix</strong></p><p>Se o WebMatrix possui o objetivo de ser uma ferramenta simples e intuitiva, o painel de adminitração das funções do IIS oferecido por ele também o é. Poucas opções são disponibilizadas, entretanto, apenas aquelas que realmente são interessantes para quem escreve as asplicações.</p><p>A Figura 1 apresenta o painel de administração do WebMatrix. Este painel pode ser visualizado na ferramenta selecionando-se a opção &quot;Site&quot; no menu inferior esquerdo e, nas opções apresentadas acima, selecionando &quot;Settings&quot;.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/2300865c-8963-43f6-89af-34d77d69d045.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/2300865c-8963-43f6-89af-34d77d69d045.JPG" alt=""></a></p><p align="center"><strong>Figura 1</strong>. Opções de configuração do IIS</p><p>Fitando-se a figura acima torna-se fácil evidenciar as quatro opções básicas de configuração:</p><ul><li><u>SSL Connection</u>: a primeira opção permite ao desenvolvedor habilitar ou não a utilização de SSL para o site local. Check habilita o recurso enquanto a ausência dele não. </li><li><u>.NET Framework Version</u>: um simples drop-down-list que permite escolher a versão da .NET framework a ser utilizada no projeto. </li><li><u>PHP Settings</u>: com esta opção o usuário do WebMatrix pode selecionar se deseja ou não configurar o IIS para trabalhar com PHP. Em caso positivo (ao checar a opção &quot;Enable PHP&quot;), o WebMatrix baixa, instala e configura a versão mais recente do framework. </li><li><u>Manage Default Pages</u>: opção simples mas extremamente últil, permite adicionar,&nbsp; remover e alterar prioridade de páginas de inicialização no projeto corrente. </li></ul><p>Além dos quatro recursos para administração disponíveis no painel &quot;Settings&quot;, o WebMatrix permite ainda ao usuário monitorar o sucesso/fracasso das requisições realizadas para a aplicação em questão através do menu esquerdo &quot;Requests&quot;. A Figura 2 apresenta este monitor.</p><p><a href="http://files.channel9.msdn.com/thumbnail/c92a1938-f289-41ae-a6c4-6ab52656e4be.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/c92a1938-f289-41ae-a6c4-6ab52656e4be.JPG" alt=""></a>&nbsp;</p><p align="center"><strong>Figura 2</strong>. Gerenciando requisições</p><p><strong>Conclusões</strong></p><p>O gerenciamento de configurações do IIS dentro do WebMatrix é extremamente simplicado, seguindo a premissa de entregar ao desenvolvedor um ambiente sóbrio que, encapsule a complexidade e ao mesmo tempo ofereca as opções importantes ao usuário, não limitando-o ao auto instalador.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:ba3be9135c0440bf9cd4a01401402bc3">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-configuraes</comments>
      <itunes:summary>O esquema funcional do WebMatrix &#233; baseado em quatro elementos fundamentais. Estes quatro elementos ir&#227;o compor os conte&#250;dos de nossas pr&#243;ximas quatro aulas. S&#227;o eles: configura&#231;&#245;es do Internet Information Services Express (IIS – o container de p&#225;ginas acoplado ao WebMatrix), ambiente de gerenciamento de bancos de dados (para SQL Server Compact e MySQL), ambiente de codifica&#231;&#227;o e ambiente para gerenciamento de relat&#243;rios. No artigo de hoje, concentraremos nossos esfor&#231;os no sentido de conhecer as principais caracter&#237;sticas relacionadas ao container de dados instalado e configurado pelo WebMatrix – o IIS. Algumas palavras sobre IIS Express O IIS Express &#233; uma vers&#227;o aut&#244;noma do j&#225; consagrado container web da Microsoft. Al&#233;m de ser uma vers&#227;o aut&#244;noma, isto &#233;, uma vers&#227;o dissociada da vers&#227;o padr&#227;o, &#233; uma inst&#226;ncia otimizada para utiliza&#231;&#227;o por parte de desenvolvedores. Evidentemente que neste contexto certas caracter&#237;sticas do produto s&#227;o retiradas, o que por in&#233;rcia, acarreta em outra caracter&#237;stica: leveza. Sim, IIS Express &#233; uma ferramenta leve, o que diminui seu tempo de download, instala&#231;&#227;o e configura&#231;&#227;o. Algumas outras caracter&#237;sticas importantes do IIS Express s&#227;o: N&#227;o executa como um servi&#231;o e portanto, n&#227;o requer permiss&#245;es de administrador para realizar a maioria das opera&#231;&#245;es. Desenhado para obter melhor desempenho com aplica&#231;&#245;es escritas em ASP.NET e PHP. M&#250;ltiplos usu&#225;rios podem trabalhar de forma independente na mesma m&#225;quina. A rela&#231;&#227;o entre WebMatrix e IIS Conforme apresentado em aulas anteriores, WebMatrix &#233; uma IDE e seu objetivo principal &#233; fornecer um ambiente limpo e s&#243;brio para o desenvolvimento de aplica&#231;&#245;es web. Tornar o ambiente &amp;quot;limpo e s&#243;brio&amp;quot; neste caso, implica necessariamente em esconder aspectos relacionados a configura&#231;&#227;o de ambiente. Com vista a este cen&#225;rio, torna-se natural inferir que, ao WebMatrix ser instalado ele naturalmente instala e configura a vers&#227;o Express do Internet Information Services j&#225; que este, ser&#225; a bas</itunes:summary>
      <link>http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-configuraes</link>
      <pubDate>Wed, 14 Mar 2012 19:26:00 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-configuraes</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/805b4a46-2468-4ffd-ab68-edac75f2c7d4.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>0</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Ambiente-de-configuraes/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Configuration</category>
      <category>IIS</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>WebMatrix - Tipos de projetos dispon&#237;veis</title>
      <description><![CDATA[<p>O WebMatrix é uma ferramenta desenvolvida para facilitar o processo de construção de aplicações web, isto já é conhecido de todos. Com base nesta afirmação, faz todo sentido oferecer diferentes tipos de projetos para atender à demandas específicas de desenvolvimento para o grupo de profissionais aos quais a ferramenta se destina.</p><p>Basicamente, quando se inicia um novo projeto com WebMatrix, do início ao fim, três elementos básicos devem estar presentes: ideia, personalização/desenvolvimento e publicação. Este artigo trata do primeiro elemento, isto é, como o WebMatrix pode com suas características funcionais atender &quot;a ideia&quot; do usuário.</p><p><strong>Tipos de projetos disponíveis</strong></p><p>Uma ferramenta de desenvolvimento deve atender seus usuários em diversos aspectos. Nesse sentido, em termos de projetos, o WebMatrix disponibiliza basicamente dois modelos: templates básicos temáticos (implementados com sintaxe Razor) e galeria de aplicativos (Web App Gallery). A seguir, apresentamos cada um deles individualmente com suas características associadas.</p><p><u>Templates</u>: são 6 (seis) opções para criação de aplicações baseadas em modelos já prontos. Esta opção torna-se interessante principalmente se o usuário encontra-se em nível junior ou é novo no universo de desenvolvimento para web e está utilizando a ferramenta para aprender como construir aplicações utilizando a sintaxe Razor utilizando banco de dados e helpers. Outro aspecto importante em relação aos templates é que, em algum momento, determinado template pode atender de fato as necessidades de determinado, exigindo do responsável pelo desenvolvimento apenas personalizações. Os templates disponíveis atualmente são:</p><ul><li><em>Empty Site</em>: projeto vazio. Neste modelo, tudo deve ser criado pelo usuário. De forma geral, esta opção atende a desenvolvedores que pretendem criar soluções esepcíficas, não atendidas pelos modelos oferecidos pela ferramenta. </li><li><em>Starter Site</em>: projeto que traz um site básico. O template é todo construído com sintaxe Razor, HTML 5, CSS 3, Helpers (autenticação de usuários, etc.). </li><li><em>Bakery</em>: projeto que traz um modelo de site para padaria. De igual forma, o modelo é implementado em Razor e webstandards. </li><li><em>Photo Gallery</em>: projeto para galeria de fotos. Todas as características presentes nos modelos anteriores podem ser encontradas aqui. </li><li><em>Calendar</em>: projeto que implementa um controle de calendário. </li><li><em>Personal Site</em>: modelo que sugere a estrutura de um site pessoal, trazendo helpers para integração com twitter, facebook, etc. </li></ul><p>A Figura 1 apresenta a janela exibida pelo WebMatrix após clicar na opção &quot;Template&quot; da página inicial.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/0919898c-a088-463c-aba9-225e7fd9c8db.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/0919898c-a088-463c-aba9-225e7fd9c8db.JPG" alt=""></a></p><p align="center"><strong>Figura 1</strong>. A tela com as opções de templates do WebMatrix</p><p><u>Web App Gallery</u>: como o próprio nome sugere, a Web App Gallery (WAG) é um repositório de aplicativos web terceiros com uma característica fundamental: todos são open-source, isto é, podem ser utilizados livremente sem custo adicional. As aplicações disponíveis na WAG atendem a diferentes demandas: blogs, lojas virtuais, wikis, fóruns, CMS, dentre outros. A grande vantagem desta característica com WebMatrix é o fato de que esta última oferece todos os recursos necessários para executar a personalização, publicação e demais operações com as web apps provenientes da WAG, isto é, tudo o que o usuário precisa em um único lugar.</p><p>A Figura 2 apresenta a tela específica de aplicações oferecidas através da Web App Gallery.</p><p>&nbsp;<a href="http://files.channel9.msdn.com/thumbnail/ebaca4a7-380c-4de8-85f6-3e1d03f6822a.JPG" rel="lightbox"><img src="http://files.channel9.msdn.com/thumbnail/ebaca4a7-380c-4de8-85f6-3e1d03f6822a.JPG" alt=""></a></p><p align="center"><strong>Figura 2</strong>. Web App Gallery</p><p>Dentre as aplicações presentes na WAG, destacam-se as já populares:</p><ul><li><u>Wordpress</u>: indiscutivelmente a mais popular ferramenta para gerenciamento de conteúdos e mídias no formato de blog. Desenvolvida em linguagem PHP com banco de dados MySQL. </li><li><u>Joomla!</u>: CMS para gerenciamento de conteúdos web em formato de portal. Desenvolvida em linguagem PHP com banco de dados MySQL. </li><li><u>nopCommerce</u>: uma das lojas virtuais mais completas e utilizadas no mundo. </li><li>Dentre outras. </li></ul><p><strong>Conclusões</strong></p><p>Conhecer os tipos de projetos disponibilizados pelo WebMatrix é importante pois passa a ideia de como a ferramenta pretende atender as demandas de seus usuários.</p><p>O WebMatrix é uma ferramenta interessante para você se seu objetivo é iniciar de forma correta (entenda-se utilizando conceitos e tecnologias corretas para este cenário) no universo web ou se é desenvolvedor PHP em qualquer nível e procura uma opção interessante em termos de IDE para construir suas aplicações.</p><p>Ferramentas como Visual Studio, Visual Studio Express e outras, falam para públicos distintos, sem gerar atrito com WebMatrix, conforme mencionado no primeiro módulo deste treinamento.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:3de33e11c23947bc91a5a014013d1af2">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Tipos-de-projetos-disponveis</comments>
      <itunes:summary>O WebMatrix &#233; uma ferramenta desenvolvida para facilitar o processo de constru&#231;&#227;o de aplica&#231;&#245;es web, isto j&#225; &#233; conhecido de todos. Com base nesta afirma&#231;&#227;o, faz todo sentido oferecer diferentes tipos de projetos para atender &#224; demandas espec&#237;ficas de desenvolvimento para o grupo de profissionais aos quais a ferramenta se destina. Basicamente, quando se inicia um novo projeto com WebMatrix, do in&#237;cio ao fim, tr&#234;s elementos b&#225;sicos devem estar presentes: ideia, personaliza&#231;&#227;o/desenvolvimento e publica&#231;&#227;o. Este artigo trata do primeiro elemento, isto &#233;, como o WebMatrix pode com suas caracter&#237;sticas funcionais atender &amp;quot;a ideia&amp;quot; do usu&#225;rio. Tipos de projetos dispon&#237;veis Uma ferramenta de desenvolvimento deve atender seus usu&#225;rios em diversos aspectos. Nesse sentido, em termos de projetos, o WebMatrix disponibiliza basicamente dois modelos: templates b&#225;sicos tem&#225;ticos (implementados com sintaxe Razor) e galeria de aplicativos (Web App Gallery). A seguir, apresentamos cada um deles individualmente com suas caracter&#237;sticas associadas. Templates: s&#227;o 6 (seis) op&#231;&#245;es para cria&#231;&#227;o de aplica&#231;&#245;es baseadas em modelos j&#225; prontos. Esta op&#231;&#227;o torna-se interessante principalmente se o usu&#225;rio encontra-se em n&#237;vel junior ou &#233; novo no universo de desenvolvimento para web e est&#225; utilizando a ferramenta para aprender como construir aplica&#231;&#245;es utilizando a sintaxe Razor utilizando banco de dados e helpers. Outro aspecto importante em rela&#231;&#227;o aos templates &#233; que, em algum momento, determinado template pode atender de fato as necessidades de determinado, exigindo do respons&#225;vel pelo desenvolvimento apenas personaliza&#231;&#245;es. Os templates dispon&#237;veis atualmente s&#227;o: Empty Site: projeto vazio. Neste modelo, tudo deve ser criado pelo usu&#225;rio. De forma geral, esta op&#231;&#227;o atende a desenvolvedores que pretendem criar solu&#231;&#245;es esepc&#237;ficas, n&#227;o atendidas pelos modelos oferecidos pela ferramenta. Starter Site: projeto que traz um site b&#225;sico. O template &#233; todo constru&#237;do com sintaxe Razor, HT</itunes:summary>
      <link>http://channel9.msdn.com/posts/WebMatrix-Tipos-de-projetos-disponveis</link>
      <pubDate>Wed, 14 Mar 2012 19:14:51 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Tipos-de-projetos-disponveis</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/334c3c14-26f9-40d2-a094-b8c436b4cb83.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>10</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Tipos-de-projetos-disponveis/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Web</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>WebMatrix - Onde, quando e quem pode utilizar</title>
      <description><![CDATA[<p>WebMatrix é uma ferramenta criada com o objetivo de facilitar o processo de construção de aplicações web (como já é de seu conhecimento), entretanto, como WebMatrix é uma ferramenta proposta, implementada e disponibilizada pela Microsoft, empresa criadora de ferramentas já consagradas no mercado para finalidades semelhantes, a saber, Visual Studio (atualmente na versão 2010), Visual Web Developer Express e Expression Web, por vezes pode surgir a seguinte indagação: &quot;Se a Microsoft já possui outras boas ferramentas para construção de aplicações web, porque uma nova ferramenta para este fim?&quot;.</p><p>Este artigo pretende responder a esta e outras questões comumente realizadas por desenvolvedores que entram em contato com WebMatrix pela primeira vez. Entender o foco da ferramenta é fundamental para o sucesso na utilização da mesma.</p><p><strong>Onde utilizo o WebMatrix?</strong></p><p>Muito embora o nome da ferramenta já sugira o cenário de atuação da mesma, é comum encontrar desenvolvedores que, por desconhecerem o foco da ferramenta, não sabem exatamente o contexto de utilização do WebMatrix.</p><p>WebMatrix é um ambiente integrado de desenvolvimento para construção exclusivamente de aplicações web utilizando webstandards. As palavras &quot;exclusivamente&quot; e &quot;webstandard&quot; são decisivas para indicar que:</p><ul><li>WebMatrix não é uma ferramenta para construção de aplicações Silverlight; </li><li>WebMatrix não é uma ferramenta para construção de aplicações Windows Phone; </li><li>WebMatrix não é uma aplicação para construção de aplicações Windows Forms ou WPF (<em>Windows Presentation Foundation</em>) </li><li>Dentre outras. </li></ul><p>Assim, se o projeto de software a ser implementado contempla o cenário de atuação na web, WebMatrix pode e deve ser considerado como ferramenta de desenvolvimento.</p><p>Um aspecto crítico a ser considerado quando opções de IDE's estão sendo analisadas trata-se justamente da &quot;dimensão da aplicação&quot;. Este é um aspecto realmente crítico pois, impacta diretamente em aspectos vitais do projeto de software como: produtividade, testabilidade, integração, etc.</p><p>De forma geral, WebMatrix é uma aplicação interessante e recomendável para criação de aplicaçãoes pequenas e médias pois, certos recursos fundamentais em projetos de grande porte não são suportados por ela.</p><p><strong>Quem pode utilizar?</strong></p><p>WebMatrix possui uma característica interessante e que, acabam a diferenciando em relação a outras IDE's do mercado. A característica a qual nos referimos é: WebMatrix atende o público iniciante no universo de construção de aplicações web e além disso, fala também para o público com certa experiência.</p><p>Enquanto ferramentas como Visual Studio oferecem uma ampla gama de recursos avançados (e com isso, naturalmente atingindo um público mais avançado/experiente de desenvolvedores), WebMatrix com sua simplicidade e recursos otimizados e autoconfiguráveis, vai na contra mão, atingindo naturalmente este público leigo ou com pouca experiência no desenvolvimento para web.</p><p>Assim, é possível afirmar categoricamente que não há uma área de sobreposição de mercado entre Visual Studio, Visual Studio Developer Express, etc. com WebMatrix pois, os alvos são distintos.</p><p>São contemplados ainda pelo WebMatrix, desenvolvedores de outras plataformas que são carentes de boas IDE's para construção de seus projetos, especialmente da plataforma PHP. A partir da versão 2 beta (atual) da ferramenta, vários recursos dedicados a desenvolvedores PHP foram adicionados as features nativas do WebMatrix.</p><p>Além disso, como WebMatrix hoje instala e configura os requisitos necessários para que o PHP funcione da melhor forma possível no Internet Information Services (IIS), o ambiente entregue ao desenvolvedor é extremamente saudável.</p><p><strong>Links complementares</strong></p><p>Artigo: <a href="http://fabriciosanchez.com.br/site/?p=2169">PHP e IIS – Uma parceria de sucesso</a><br>Artigo: <a href="http://fabriciosanchez.com.br/site/?p=2254">Fast CGI: O motor do PHP no IIS</a></p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:9e7f11cf193440eea19aa0140138b906">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Onde-quando-e-quem-pode-utilizar</comments>
      <itunes:summary>WebMatrix &#233; uma ferramenta criada com o objetivo de facilitar o processo de constru&#231;&#227;o de aplica&#231;&#245;es web (como j&#225; &#233; de seu conhecimento), entretanto, como WebMatrix &#233; uma ferramenta proposta, implementada e disponibilizada pela Microsoft, empresa criadora de ferramentas j&#225; consagradas no mercado para finalidades semelhantes, a saber, Visual Studio (atualmente na vers&#227;o 2010), Visual Web Developer Express e Expression Web, por vezes pode surgir a seguinte indaga&#231;&#227;o: &amp;quot;Se a Microsoft j&#225; possui outras boas ferramentas para constru&#231;&#227;o de aplica&#231;&#245;es web, porque uma nova ferramenta para este fim?&amp;quot;. Este artigo pretende responder a esta e outras quest&#245;es comumente realizadas por desenvolvedores que entram em contato com WebMatrix pela primeira vez. Entender o foco da ferramenta &#233; fundamental para o sucesso na utiliza&#231;&#227;o da mesma. Onde utilizo o WebMatrix? Muito embora o nome da ferramenta j&#225; sugira o cen&#225;rio de atua&#231;&#227;o da mesma, &#233; comum encontrar desenvolvedores que, por desconhecerem o foco da ferramenta, n&#227;o sabem exatamente o contexto de utiliza&#231;&#227;o do WebMatrix. WebMatrix &#233; um ambiente integrado de desenvolvimento para constru&#231;&#227;o exclusivamente de aplica&#231;&#245;es web utilizando webstandards. As palavras &amp;quot;exclusivamente&amp;quot; e &amp;quot;webstandard&amp;quot; s&#227;o decisivas para indicar que: WebMatrix n&#227;o &#233; uma ferramenta para constru&#231;&#227;o de aplica&#231;&#245;es Silverlight; WebMatrix n&#227;o &#233; uma ferramenta para constru&#231;&#227;o de aplica&#231;&#245;es Windows Phone; WebMatrix n&#227;o &#233; uma aplica&#231;&#227;o para constru&#231;&#227;o de aplica&#231;&#245;es Windows Forms ou WPF (Windows Presentation Foundation) Dentre outras. Assim, se o projeto de software a ser implementado contempla o cen&#225;rio de atua&#231;&#227;o na web, WebMatrix pode e deve ser considerado como ferramenta de desenvolvimento. Um aspecto cr&#237;tico a ser considerado quando op&#231;&#245;es de IDE&#39;s est&#227;o sendo analisadas trata-se justamente da &amp;quot;dimens&#227;o da aplica&#231;&#227;o&amp;quot;. Este &#233; um aspecto realmente cr&#237;tico pois, impacta diretamente em aspectos vitais do projeto de software com</itunes:summary>
      <link>http://channel9.msdn.com/posts/WebMatrix-Onde-quando-e-quem-pode-utilizar</link>
      <pubDate>Wed, 14 Mar 2012 18:59:01 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Onde-quando-e-quem-pode-utilizar</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/0456bd76-0484-46fc-ad95-f592353f9345.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>8</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Onde-quando-e-quem-pode-utilizar/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Internet</category>
      <category>Web</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>Web Platform Installer</title>
      <description><![CDATA[<p>Desenvolvedores de forma geral não possuem o conhecimento agregado de recursos de infraestrutura para, por exemplo, instalar e configurar um ambiente IIS performático e com bons níveis de segurança além de outras características. O mesmo pode ocorrer ao instalar instâncias de bancos de dados, enfim, com todos os serviços que precisem ser &quot;setados&quot; nesse ambiente virtual recém entregue.</p><p>É justamente neste ponto da discussão que este texto pretende ser um objeto elucidativo, apresentando aspectos gerais do <em>Web Platform Installer</em>.</p><p><strong><em>Web Platform Installer</em></strong><strong>: visão geral</strong></p><p><em>Web Platform Installer </em>(ou simplesmente WebPI) é a solução proposta pela Microsoft para atender profissionais com a necessidade imposta pelo modelo apresentado acima.</p><p>O WebPI atua como um gerenciador de dependências. Para que essa ideia torne-se mais clara, consideremos o exemplo do WebMatrix (se você acompanha o site dedicado a desenvolvedores da Microsoft – MSDN, deve estar acostumado com esta ferramenta. Se você está sendo apresentado neste momento à ferramenta &quot;WebMatrix&quot;, chamamos sua atenção para a próxima aula deste módulo pois, ela será objeto de estudo da mesma.</p><p>Quando um usuário deseja instalar o WebMatrix, este &quot;baixa&quot; um arquivo de aproximadamente 2 MB. Engana-se quem pensa que este pequeno executável é a IDE em sí. Na verdade, este arquivo recém baixado é o instalador do WebPI. Após sua instalação, esta ferramenta &quot;varre&quot; a máquina do usuário realizando um <em>check list</em> e, com base nos recursos necessários para que a aplicação funcione corretamente, ela relaciona todas as dependências para que esta funcione, efetua o <em>download</em>, as instala e configura. Tudo de forma automática, sem qualquer interferência do usuário final. É função do WebPI também, manter as ferramentas instaladas, devidamente atualizadas.</p><p><strong>Algumas características do WebPI</strong></p><p>A seguir apresentamos algumas características do WebPI que corroboram para seu sucesso e ampla adoção em diversos ambientes:</p><ol start="1"><li><strong>Gratuíto</strong>: esta poderosa ferramenta pode ser utilizada sem qualquer custo adicional. É só baixar e instalar! </li><li><strong>Pequeno</strong>: o WebPI possui apenas 2 MB, ou seja, é leve o suficiente para ser executado mesmo em máquinas cujos recursos computacionais são escassos. </li><li><strong>Inteligente</strong>: o WebPI mantém todas as aplicações que estão sob sua gerência atualizadas de forma automática. </li></ol><p>Além disso, o WebPI é composto por alguns pilares. São eles:</p><ul><li><strong><em>Internet Information Services</em></strong>: você pode instalar a versão mais atual do IIS sem se preocupar com informações de configuração de ambiente, etc. </li><li><strong>Bancos de dados</strong>: instale a versão mais atual do sistema gerenciador de bancos de dados da Microsoft – O SQL Server. </li><li><strong>Framework</strong>: instale a versão mais atual da .NET <em>framework</em>. Sem complicação! </li><li><strong>Ferramentas</strong>: instale as principais ferramentas de desenvolvimento da Microsoft para desenvolvimento de aplicações. </li><li><strong>Extras</strong>: instale a versão atual do PHP para IIS e seus módulos exigidos exigidos (FastCGI, WinCache, etc.). </li></ul><p><strong>Qual a relação do WebPI com <em>Virtual Private Server</em>?</strong></p><p>Imagine o seguinte cenário: você comprou um servidor virtual privado com Windows Server 2008 R2. Se você leu o <em>post</em> onde apresento o conceito de VPS (este texto pode ser encontrado seguindo <a href="http://fabriciosanchez.com.br/site/?p=2242">este link</a>), deve estar lembrado de que, a empresa que vende o respectivo serviço, entrega o ambiente pronto, entretanto, as ferramentas e serviços adicionais necessários para que sua aplicação tenha o comportamento esperado, devem ser realizados pelo contratante, logo, você precisará preparar este ambiente para que as aplicações que você venha a criar tenham funcionamento ótimo.</p><p>Assim, a menos que você deseje (e tenha <em>skill</em> técnico para tal) preparar este ambiente de forma manual, você pode considerar a utilização do WebPI para endereçar a preparação deste ambiente. Com ele, você poderá instalar e configurar o<em> Internet Information Services</em> (inclusive para suportar nativamente PHP e MySQL), SQL Server, .NET <em>framework</em>, e muito mais.</p><p><strong>Links recomendados</strong></p><ul><li>Web Platform Installer: <a href="http://www.microsoft.com/web/downloads/platform.aspx">download</a> </li><li>Artigo: <a href="http://fabriciosanchez.com.br/site/?p=2242">Virtual Private Server – Pode ser para você</a> </li></ul> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:4224e9dfd56a4ef59b67a01401371aa8">]]></description>
      <comments>http://channel9.msdn.com/posts/Web-Platform-Installer</comments>
      <itunes:summary>Desenvolvedores de forma geral n&#227;o possuem o conhecimento agregado de recursos de infraestrutura para, por exemplo, instalar e configurar um ambiente IIS perform&#225;tico e com bons n&#237;veis de seguran&#231;a al&#233;m de outras caracter&#237;sticas. O mesmo pode ocorrer ao instalar inst&#226;ncias de bancos de dados, enfim, com todos os servi&#231;os que precisem ser &amp;quot;setados&amp;quot; nesse ambiente virtual rec&#233;m entregue. &#201; justamente neste ponto da discuss&#227;o que este texto pretende ser um objeto elucidativo, apresentando aspectos gerais do Web Platform Installer. Web Platform Installer: vis&#227;o geral Web Platform Installer (ou simplesmente WebPI) &#233; a solu&#231;&#227;o proposta pela Microsoft para atender profissionais com a necessidade imposta pelo modelo apresentado acima. O WebPI atua como um gerenciador de depend&#234;ncias. Para que essa ideia torne-se mais clara, consideremos o exemplo do WebMatrix (se voc&#234; acompanha o site dedicado a desenvolvedores da Microsoft – MSDN, deve estar acostumado com esta ferramenta. Se voc&#234; est&#225; sendo apresentado neste momento &#224; ferramenta &amp;quot;WebMatrix&amp;quot;, chamamos sua aten&#231;&#227;o para a pr&#243;xima aula deste m&#243;dulo pois, ela ser&#225; objeto de estudo da mesma. Quando um usu&#225;rio deseja instalar o WebMatrix, este &amp;quot;baixa&amp;quot; um arquivo de aproximadamente 2 MB. Engana-se quem pensa que este pequeno execut&#225;vel &#233; a IDE em s&#237;. Na verdade, este arquivo rec&#233;m baixado &#233; o instalador do WebPI. Ap&#243;s sua instala&#231;&#227;o, esta ferramenta &amp;quot;varre&amp;quot; a m&#225;quina do usu&#225;rio realizando um check list e, com base nos recursos necess&#225;rios para que a aplica&#231;&#227;o funcione corretamente, ela relaciona todas as depend&#234;ncias para que esta funcione, efetua o download, as instala e configura. Tudo de forma autom&#225;tica, sem qualquer interfer&#234;ncia do usu&#225;rio final. &#201; fun&#231;&#227;o do WebPI tamb&#233;m, manter as ferramentas instaladas, devidamente atualizadas. Algumas caracter&#237;sticas do WebPI A seguir apresentamos algumas caracter&#237;sticas do WebPI que corroboram para seu sucesso e ampla ado&#231;&#227;o em diversos ambientes:</itunes:summary>
      <link>http://channel9.msdn.com/posts/Web-Platform-Installer</link>
      <pubDate>Wed, 14 Mar 2012 18:53:16 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/Web-Platform-Installer</guid>
      <media:thumbnail url="http://files.channel9.msdn.com/thumbnail/a4af43d3-fbe6-4c4d-be03-2c6acc2af91b.png" height="100" width="100"></media:thumbnail>      
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>8</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/Web-Platform-Installer/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>WebMatrix - Gerenciamento de dados</title>
      <description><![CDATA[<p>Um dos pontos fortes do WebMatrix é o de acoplar a versão compacta do SQL Server 2008 R2 associada a uma ferramenta robusta de administração de bancos de dados. Nesta aula você será apresentado a este recurso.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:d59274b572434e8193cfa01400eb4359">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Gerenciamento-de-dados</comments>
      <itunes:summary>Um dos pontos fortes do WebMatrix &#233; o de acoplar a vers&#227;o compacta do SQL Server 2008 R2 associada a uma ferramenta robusta de administra&#231;&#227;o de bancos de dados. Nesta aula voc&#234; ser&#225; apresentado a este recurso. </itunes:summary>
      <itunes:duration>861</itunes:duration>
      <link>http://channel9.msdn.com/posts/WebMatrix-Gerenciamento-de-dados</link>
      <pubDate>Wed, 14 Mar 2012 14:46:49 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Gerenciamento-de-dados</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_2MB_ch9.wmv" expression="full" duration="861" fileSize="13243566" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_ch9.mp3" expression="full" duration="861" fileSize="6890892" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_ch9.webm" expression="full" duration="861" fileSize="33526711" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_ch9.wma" expression="full" duration="861" fileSize="6980265" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_ch9.wmv" expression="full" duration="861" fileSize="25706598" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_high_ch9.mp4" expression="full" duration="861" fileSize="133094804" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_low_ch9.mp4" expression="full" duration="861" fileSize="15005912" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_med_ch9.mp4" expression="full" duration="861" fileSize="103701932" type="video/mp4" medium="video"></media:content>
        <media:content url="http://smooth.ch9.ms/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados.ism/manifest" expression="full" duration="861" fileSize="5544" type="video/x-ms-wmv" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/4359/d59274b5-7243-4e81-93cf-a01400eb4359/Modulo2Licao4GerenciamentoDeDados_ch9.wmv" length="25706598" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>4</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Gerenciamento-de-dados/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>WebMatrix - Uma vis&#227;o geral</title>
      <description><![CDATA[<p>Neste vídeo apresentamos uma visão geral sobre WebMatrix e todos os conceitos e demais recursos associados.&nbsp;</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:f67902b43ee64aa7a9a0a0140043ca39">]]></description>
      <comments>http://channel9.msdn.com/posts/WebMatrix-Uma-viso-geral</comments>
      <itunes:summary>Neste v&#237;deo apresentamos uma vis&#227;o geral sobre WebMatrix e todos os conceitos e demais recursos associados.&amp;nbsp; </itunes:summary>
      <itunes:duration>893</itunes:duration>
      <link>http://channel9.msdn.com/posts/WebMatrix-Uma-viso-geral</link>
      <pubDate>Wed, 14 Mar 2012 04:39:35 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/WebMatrix-Uma-viso-geral</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_2MB_ch9.wmv" expression="full" duration="893" fileSize="12300824" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_ch9.mp3" expression="full" duration="893" fileSize="7152484" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_ch9.webm" expression="full" duration="893" fileSize="32967526" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_ch9.wma" expression="full" duration="893" fileSize="7244617" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_high_ch9.mp4" expression="full" duration="893" fileSize="135478869" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_low_ch9.mp4" expression="full" duration="893" fileSize="13149860" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_med_ch9.mp4" expression="full" duration="893" fileSize="105951631" type="video/mp4" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/ca39/f67902b4-3ee6-4aa7-a9a0-a0140043ca39/WebmatrixOverview_2MB_ch9.wmv" length="12300824" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>8</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/WebMatrix-Uma-viso-geral/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>WebMatrix</category>
    </item>
  <item>
      <title>A evolu&#231;&#227;o da internet</title>
      <description><![CDATA[<p>Nesta aula apresentamos uma rápida análise sobre a evolução da internet. Nela apresentamos os três períodos pelos quais ela passou e as características marcantes de cada um deles. Esta é a primeira aula do Módulo 1 do Microsoft Virtual Academy sobre WebMatrix.</p> <img src="http://m.webtrends.com/dcs1wotjh10000w0irc493s0e_6x1g/njs.gif?dcssip=channel9.msdn.com&dcsuri=http://channel9.msdn.com/Niners/fabriciosanchez/Posts/RSS&WT.dl=0&WT.entryid=Entry:RSSView:87576bb4bb8d4981a4f6a0130140ae2a">]]></description>
      <comments>http://channel9.msdn.com/posts/A-evoluo-da-internet</comments>
      <itunes:summary>Nesta aula apresentamos uma r&#225;pida an&#225;lise sobre a evolu&#231;&#227;o da internet. Nela apresentamos os tr&#234;s per&#237;odos pelos quais ela passou e as caracter&#237;sticas marcantes de cada um deles. Esta &#233; a primeira aula do M&#243;dulo 1 do Microsoft Virtual Academy sobre WebMatrix. </itunes:summary>
      <itunes:duration>1345</itunes:duration>
      <link>http://channel9.msdn.com/posts/A-evoluo-da-internet</link>
      <pubDate>Wed, 14 Mar 2012 01:20:58 GMT</pubDate>
      <guid isPermaLink="false">http://channel9.msdn.com/posts/A-evoluo-da-internet</guid>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_100_ch9.jpg" height="75" width="100"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_220_ch9.jpg" height="165" width="220"></media:thumbnail>
      <media:thumbnail url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_512_ch9.jpg" height="384" width="512"></media:thumbnail>
      <media:group>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_2MB_ch9.wmv" expression="full" duration="1345" fileSize="18355360" type="video/x-ms-wmv" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_ch9.mp3" expression="full" duration="1345" fileSize="10767649" type="audio/mp3" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_ch9.webm" expression="full" duration="1345" fileSize="48225280" type="video/webm" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_ch9.wma" expression="full" duration="1345" fileSize="10894477" type="audio/x-ms-wma" medium="audio"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_high_ch9.mp4" expression="full" duration="1345" fileSize="202386238" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_low_ch9.mp4" expression="full" duration="1345" fileSize="17165574" type="video/mp4" medium="video"></media:content>
        <media:content url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_med_ch9.mp4" expression="full" duration="1345" fileSize="158165621" type="video/mp4" medium="video"></media:content>
      </media:group>      
      <enclosure url="http://ak.channel9.msdn.com/ch9/ae2a/87576bb4-bb8d-4981-a4f6-a0130140ae2a/Modulo1Aula1AEvolucaoDaInternet_2MB_ch9.wmv" length="18355360" type="video/x-ms-wmv"></enclosure>
      <dc:creator>Fabr&#237;cio Sanchez</dc:creator>
      <itunes:author>Fabr&#237;cio Sanchez</itunes:author>
      <slash:comments>16</slash:comments>
      <wfw:commentRss>http://channel9.msdn.com/posts/A-evoluo-da-internet/rss</wfw:commentRss>
      <category>Brazilian Portuguese</category>
      <category>Internet</category>
      <category>WebMatrix</category>
    </item>    
</channel>
</rss>