<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="http://blogs.msdn.com/utility/FeedStylesheets/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/"><channel><title>Waldemir Cambiucci - Solutions Architect - Microsoft Brasil : Arquitetura de Solu&amp;#231;&amp;#245;es</title><link>http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx</link><description>Tags: Arquitetura de Solu&amp;#231;&amp;#245;es</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Algumas palavras sobre Projetos de Missão Crítica</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/06/algumas-palavras-sobre-projetos-de-miss-o-cr-tica.aspx</link><pubDate>Fri, 06 Nov 2009 22:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918852</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9918852.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9918852</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9918852</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;Essa semana acompanhei algumas discussões no forum do Grupo .NET Architects. Entre vários assuntos, um em especial chamou minha atenção: projetos de Missão Crítica. &lt;/P&gt;
&lt;P&gt;O que você entende por um &lt;STRONG&gt;Projeto de Missão Crítica&lt;/STRONG&gt;? &lt;/P&gt;
&lt;P&gt;Do &lt;A href="http://en.wikipedia.org/wiki/Mission_critical" rel=nofollow target=_blank mce_href="http://en.wikipedia.org/wiki/Mission_critical"&gt;wikipedia&lt;/A&gt; temos que o termo &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; refere-se a qualquer fator (&lt;EM&gt;equipamento, processo, procedimento, software&lt;/EM&gt;, etc.) que seja crucial para o sucesso ou completude de uma atividade ou projeto. Também pode se referir a um projeto cujo o sucesso é vital para a missão da organização ou negócio da empresa.&lt;/P&gt;
&lt;P&gt;Falando em projetos, vejamos alguns exemplos que considero de Missão Crítica:&lt;/P&gt;
&lt;P&gt;- Um sistema de controle e coleta de dados de um projeto em Física Experimental para criação de estado de plasma, rodando sobre sistema operacional Debian/Linux, com processos em C, usando pilha TCP, pode ser considerado de missão crítica para o laboratório, devido as restrições e riscos envolvidos na monitoração e controle de equipamentos;&lt;/P&gt;
&lt;P&gt;- Um núcleo de negociação para o mercado financeiro, tratando milhões de operações/dia, envolvendo mensageria em banco de dados, cache distribuído, gerenciamento de recursos em memória, etc., com requisitos rígidos de baixa latência, também é um exemplo de missão crítica;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 0px 0px 5px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb.png" width=240 height=204 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb.png"&gt;&lt;/A&gt;- Um SDCD – Sistema Digital de Controle Distribuído – para monitoração e atuação de bicos de óleo em caldeiras para a geração de vapor num planta industrial, também é um belo exemplo. Vapor é um elemento chave em diversos processos industriais, de petroquímicas a processamento de atum em lata :) &lt;/P&gt;
&lt;P&gt;- Um monitor transacional de alto desempenho, aplicando conceitos como ACID, MUTEX, CRITICAL SESSIONS, SEMÁFOROS, árvores de falhas, etc, é outro exemplo. Uma leitura obrigatória sobre o assunto é o livro Transaction Processing, confira &lt;A href="http://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1257343655&amp;amp;sr=8-1" rel=nofollow target=_blank mce_href="http://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1257343655&amp;amp;sr=8-1"&gt;aqui&lt;/A&gt;! &lt;/P&gt;
&lt;P&gt;- Um sistema SaaS – Software as a Service – sobre algum provedor em nuvem, para uma solução multi-inquilino com interfaces Web, responsável pelo núcleo de faturamento da empresa, é de missão crítica, com requisitos de disponibilidade, responsividade e desempenho. Imagine um sistema SaaS para a venda de ingressos do show de Eric Clapton ou B.B. King! :)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 0px 0px 10px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb_1.png" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb_1.png"&gt;&lt;/A&gt; - Um sistema de automação para controle de caixas margem de via, por exemplo, para determinação de presença de trens de metrô e vagões em trechos da via, abertura de portas, desvios de ramais, movimento, etc. O próprio controle do carrossel de composições na via também é crítico. Qual é o trem mais seguro? Um trem parado ou um trem na oficinal, fora da via? :)&lt;/P&gt;
&lt;P&gt;- Um sistema para contabilidade e bilhetagem de chamadas em telefonia celular, também é crítico;&lt;/P&gt;
&lt;P&gt;- Em muitos cenários, até mesmo um sistema de emails é um sistema de missão crítica para a empresa. Algumas corporações simplesmente param ou perdem negócios em casos de falha em suas caixas postais, por mais commodities que possam parecer. Impacto financeiro a vista!;&lt;/P&gt;
&lt;P&gt;- Um sistema de controle de equipamentos médicos, como scanners, tomógrafos, dispositivos de ultra-som, leitores dopplers em tempo real (opa!), entre outros mais sofisticados em medicina, são extremamente críticos em seus resultados. &lt;/P&gt;
&lt;P&gt;Considero todos os exemplos acima como sistemas de &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; em diferentes níveis, pois envolvem riscos para o negócio da empresa. &lt;/P&gt;
&lt;P&gt;Assim, podemos destacar três tipos de riscos envolvidos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Riscos Materiais;&lt;/LI&gt;
&lt;LI&gt;Riscos Financeiros; &lt;/LI&gt;
&lt;LI&gt;Riscos envolvendo Vidas Humanas; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Alguns sistemas de Missão Crítica podem envolver requisitos de &lt;STRONG&gt;Tempo Real (Real Time)&lt;/STRONG&gt;, isto é, janelas de atuação e tempos resposta bem definidos, que devem ser respeitados. Nesses casos, o número de processos envolvidos, o volume ou o número de chamadas disparadas não deve interferir no tempo de resposta do sistema. &lt;/P&gt;
&lt;P&gt;Qual é o tempo de resposta envolvido no tempo real (em milisegundos, por exemplo)? Dependerá do cenário que estamos tratando, seja um canal de &lt;EM&gt;feeders&lt;/EM&gt; de notícias com filtros sobre política ou mensagens para a abertura de cofres em sistemas de segurança bancário.&lt;/P&gt;
&lt;P&gt;Normalmente, condições de &lt;STRONG&gt;tempo real&lt;/STRONG&gt; estão envolvidas em cenários de missão crítica, mas não são obrigatórias.&lt;/P&gt;
&lt;P&gt;Meu ponto aqui é que não podemos considerar como &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; apenas o aspecto de desempenho e tempo de resposta envolvidos. Para algumas indústrias, outros atributos são tão importantes quanto, como o impacto financeiro, disponibilidade e riscos diversos.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Quão crítico é o sistema em que você está trabalhando hoje? Ele envolve riscos financeiros, riscos humanos ou riscos materiais? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Em resumo, qual é o impacto de uma falha em seu sistema para a execução do negócio de sua empresa? Aspectos como recuperação de falhas, tratamento de exceções, árvore de falhas, etc., tornam-se importantes em muitos casos. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Uma vez identificado o cenário de missão crítica, como conduzir o projeto? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Algumas perguntas são recorrentes neste momento, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Qual é o melhor sistema operacional para cada cenário? &lt;/LI&gt;
&lt;LI&gt;Qual é a melhor linguagem de programação para cada cenário? &lt;/LI&gt;
&lt;LI&gt;Qual é a melhor abordagem de patterns para cada cenário? &lt;/LI&gt;
&lt;LI&gt;Quais são as restrições de memória e disco para o SO? Poucos recursos? Desktops? Servidores? &lt;/LI&gt;
&lt;LI&gt;Quais são as necessidades de comunicação com dispositivos e periféricos diversos nesse ambiente de missão crítica? &lt;/LI&gt;
&lt;LI&gt;Quais são os drivers disponíveis para o SO escolhido? Teremos que implementar esses drivers? Existem fornecedores no mercado? &lt;/LI&gt;
&lt;LI&gt;Quais são as latências de rede e pilhas de transporte suportados? O TCP é suficiente? IPv6? Vamos precisar adotar protocolos de Tempo Real (RTP – Real Time Transport Protocol)? Vamos implementar bindings customizados para a entrega de mensagens com baixa latência? Transporte customizado?&lt;/LI&gt;
&lt;LI&gt;Qual a necessidade por tempo real, paralelismos de processos, high performance computing, cluster computing ou grid computing? &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Sem falar ainda em questões adjacentes, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Qual será o suporte necessário para a solução? &lt;/LI&gt;
&lt;LI&gt;Como será evolução da pilha de software ao longo do tempo? &lt;/LI&gt;
&lt;LI&gt;Qual é o perfil de profissionais capacitados, exigidos para o projeto? &lt;/LI&gt;
&lt;LI&gt;Quais são os guias de desenvolvimento e patterns disponíveis? &lt;/LI&gt;
&lt;LI&gt;Quais são as ferramentas para a construção de software, metodologias, documentação, etc.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Através aqui do blog, temos acompanhado a plataforma Microsoft e seu suporte para aplicações de missão crítica em diferentes níveis. &lt;/P&gt;
&lt;P&gt;Existem diversos recursos que atendem esses cenários, seja sobre a plataforma .NET ou mesmo sobre código não gerenciado, com processos em C++ sobre Windows Server. No ambiente gerenciado, recursos como interfaces de serviços em WCF – Windows Communication Foundation, mensageria com MSMQ, paralelismo, sincronização e sistemas de integração com baixa latência são alguns exemplos. Em todos os casos, o impacto para o negócio da empresa está presente. &lt;/P&gt;
&lt;P&gt;Em breve, teremos ainda novos recursos disponíveis na plataforma Microsoft, como o &lt;STRONG&gt;&lt;A href="http://www.microsoft.com/NET/Dublin.aspx" rel=nofollow target=_blank mce_href="http://www.microsoft.com/NET/Dublin.aspx"&gt;Dublin&lt;/A&gt;&lt;/STRONG&gt; (para hospedagem de serviços e processos sobre o Windows Server), o &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/data/cc655792.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Velocity&lt;/A&gt;&lt;/STRONG&gt; (para cache distribuído e aplicações de alto desempenho), novos recursos sobre &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF 4&lt;/A&gt;&lt;/STRONG&gt; e &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WF 4&lt;/A&gt;&lt;/STRONG&gt;, além da integração com a plataforma de alta escalabilidade e disponibilidade do &lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/windowsazure/" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/windowsazure/"&gt;Windows Azure&lt;/A&gt;&lt;/STRONG&gt;, que já está em contagem regressiva para seu lançamento, durante o PDC 2009.&lt;/P&gt;
&lt;P&gt;Finalizando, procure identificar em quais cenários de &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; você está pessoalmente envolvido e como será a evolução destes nos próximos meses. Você vai perceber que sua TI tem um impacto direto para o sucesso de sua empresa!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918852" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>Leitura Recomendada: Microsoft Application Architecture Guide 2nd Edition</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/05/leitura-recomendada-microsoft-application-architecture-guide-2nd-edition.aspx</link><pubDate>Thu, 05 Nov 2009 21:45:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918258</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9918258.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9918258</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9918258</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Como anunciado por &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/10/20/novidades-no-application-architecture-guide-2-0.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/10/20/novidades-no-application-architecture-guide-2-0.aspx"&gt;aqui&lt;/A&gt;, o App Arch Guide 2 foi lançado de forma impressa e já está disponível na Amazon, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeituraRecomendadaMicrosoftApplicationAr_1149F/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeituraRecomendadaMicrosoftApplicationAr_1149F/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeituraRecomendadaMicrosoftApplicationAr_1149F/image_thumb.png" width=184 height=225 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeituraRecomendadaMicrosoftApplicationAr_1149F/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft® Application Architecture Guide, 2nd Edition (Patterns &amp;amp; Practices) &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.amazon.com/Microsoft%C2%AE-Application-Architecture-Patterns-Practices/dp/073562710X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1257457119&amp;amp;sr=8-1-spell href="http://www.amazon.com/Microsoft%C2%AE-Application-Architecture-Patterns-Practices/dp/073562710X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1257457119&amp;amp;sr=8-1-spell" rel=nofollow target=_blank mce_href="http://www.amazon.com/Microsoft%C2%AE-Application-Architecture-Patterns-Practices/dp/073562710X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1257457119&amp;amp;sr=8-1-spell"&gt;http://www.amazon.com/Microsoft%C2%AE-Application-Architecture-Patterns-Practices/dp/073562710X/ref=sr_1_1?ie=UTF8&amp;amp;qid=1257457119&amp;amp;sr=8-1-spell&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Confira aqui o post do J.D. Meier sobre o anúncio, feito hoje!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Now Available: patterns &amp;amp; practices Application Architecture Book&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://blogs.msdn.com/jmeier/archive/2009/11/05/now-available-patterns-practices-application-architecture-book.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/jmeier/archive/2009/11/05/now-available-patterns-practices-application-architecture-book.aspx"&gt;http://blogs.msdn.com/jmeier/archive/2009/11/05/now-available-patterns-practices-application-architecture-book.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918258" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Exemplo de arquitetura em camadas para o .NET 3.5 SP1</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/04/exemplo-de-arquitetura-em-camadas-para-o-net-3-5-sp1.aspx</link><pubDate>Wed, 04 Nov 2009 16:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917384</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9917384.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9917384</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9917384</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada, o especialista &lt;A href="http://blogs.msdn.com/rafaelgodinho/default.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/rafaelgodinho/default.aspx"&gt;Rafael Godinho&lt;/A&gt; comentou com o pessoal sobre um belo exemplo de projeto em .NET 3.5 SP1, que está disponível no codeplex para estudo. &lt;/P&gt;
&lt;P&gt;O projeto é um exemplo de arquitetura em camadas usando o .NET 3.5 SP1, com interface de serviços WCF e camadas de negócios bem definidas. Com frequência recebo pedidos de exemplos de projeto e organização de arquiteturas em camadas para aplicações sobre o .NET 3.5. &lt;/P&gt;
&lt;P&gt;Assim, aqui vai uma dica interessante de estudo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_thumb.png" width=536 height=380 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Layered Architecture Sample for .NET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://layersample.codeplex.com/" rel=nofollow target=_blank mce_href="http://layersample.codeplex.com/"&gt;http://layersample.codeplex.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Os fontes estão disponíveis para donwload, falta um guia ou passo-a-passo para estudos, mas o projeto é um bom exemplo de organização, que vale o estudo. Confira!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917384" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>ebook Arquitetura de Soluções no Download Center do MSDN</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/31/ebook-arquitetura-de-solu-es-no-download-center-do-msdn.aspx</link><pubDate>Sat, 31 Oct 2009 20:26:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9915719</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9915719.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9915719</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9915719</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Disponibilizei o &lt;STRONG&gt;ebook Arquitetura de Soluções&lt;/STRONG&gt; no download center do MSDN, facilitando assim seu acesso, confira:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Download do ebook Arquitetura de Soluções&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=df61c997-8718-4836-8b4c-eb55042e379e&amp;amp;DisplayLang=pt-br" rel=nofollow target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=df61c997-8718-4836-8b4c-eb55042e379e&amp;amp;DisplayLang=pt-br"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=df61c997-8718-4836-8b4c-eb55042e379e&amp;amp;DisplayLang=pt-br&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Bom feriado para todos e até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9915719" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Novidades no Application Architecture Guide 2.0</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/20/novidades-no-application-architecture-guide-2-0.aspx</link><pubDate>Tue, 20 Oct 2009 22:18:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9910223</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9910223.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9910223</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9910223</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Que tal o Application Architecture Guide 2.0 no formato .CHM, mais fácil de navegar pelos temas desejados? &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_thumb_1.png" width=125 height=158 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_thumb_1.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;STRONG&gt;App Arch Guide 2.0a - CHM File &lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A href="http://apparchcontrib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=33990" rel=nofollow target=_blank mce_href="http://apparchcontrib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=33990"&gt;http://apparchcontrib.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=33990&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O arquivo acima ainda está em Beta, sendo revisado pelo time do patterns&amp;amp;practices. Feita a ressalva, vale conferir o arquivo!&lt;/P&gt;
&lt;P&gt;Outra novidade é que até o final deste ano, uma versão impressão do App Arch Guide 2.0 será lançada, veja a capa:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_thumb_2.png" width=184 height=225 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ApplicationArchitectureGui.0emformatoCHM_11D12/image_thumb_2.png"&gt;&lt;/A&gt; O livro ainda virá com algumas atualizações!!!&lt;/P&gt;
&lt;P&gt;O formato original em PDF da versã0 2.0 encontra-se no link:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices: App Arch Guide 2.0 Knowledge Base &lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/AppArch" rel=nofollow target=_blank mce_href="http://www.codeplex.com/AppArch"&gt;http://www.codeplex.com/AppArch&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9910223" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Novo portal do msdn já está no ar!</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/20/novo-portal-do-msdn-j-est-no-ar.aspx</link><pubDate>Tue, 20 Oct 2009 12:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909839</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9909839.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9909839</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9909839</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_thumb_1.png" width=185 height=66 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_thumb_1.png"&gt;&lt;/A&gt; Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Novidades na página do &lt;STRONG&gt;msdn&lt;/STRONG&gt;! Agora o portal está com novo layout, além de um novo logo!&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_thumb.png" width=244 height=172 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Novoportaldomsdnjestnoar_12300/image_thumb.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;Ref.: &lt;A title=http://msdn.microsoft.com/pt-br/default.aspx href="http://msdn.microsoft.com/pt-br/default.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/default.aspx"&gt;http://msdn.microsoft.com/pt-br/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Para os times trabalhando com Windows Azure, o &lt;STRONG&gt;portal de Azure&lt;/STRONG&gt; também mudou:&lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title=http://msdn.microsoft.com/pt-br/azure/default.aspx href="http://msdn.microsoft.com/pt-br/azure/default.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/azure/default.aspx"&gt;http://msdn.microsoft.com/pt-br/azure/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E para os arquitetos, confira o novo &lt;STRONG&gt;Centro de Arquitetura MSDN&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title=http://msdn.microsoft.com/pt-br/architecture/default.aspx href="http://msdn.microsoft.com/pt-br/architecture/default.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/architecture/default.aspx"&gt;http://msdn.microsoft.com/pt-br/architecture/default.aspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9909839" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item><item><title>Leitura Recomendada: eBook Arquitetura de Soluções</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/01/ebook-sobre-arquitetura-de-solu-es.aspx</link><pubDate>Thu, 01 Oct 2009 16:47:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9901916</guid><dc:creator>wcamb</dc:creator><slash:comments>17</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9901916.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9901916</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9901916</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Comemorando os dois anos deste blog, estou publicando aqui meu primeiro &lt;STRONG&gt;eBook&lt;/STRONG&gt;, sobre &lt;STRONG&gt;Arquitetura de Soluções&lt;/STRONG&gt;! :)&lt;/P&gt;
&lt;P&gt;&lt;A title="ebook Arquitetura de Soluções" href="http://cid-ac0dc53ca97927a5.skydrive.live.com/self.aspx/ebookAS/ebookAS.xps" rel=nofollow target=_blank mce_href="http://cid-ac0dc53ca97927a5.skydrive.live.com/self.aspx/ebookAS/ebookAS.xps"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/eBooksobreArquiteturadeSolues_1484F/image1.png" width=188 height=244 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/eBooksobreArquiteturadeSolues_1484F/image1.png"&gt;&lt;/A&gt; &lt;STRONG&gt;ebook Arquitetura de Soluções&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Ref.: &lt;A href="http://cid-ac0dc53ca97927a5.skydrive.live.com/browse.aspx/ebookAS" target=_blank mce_href="http://cid-ac0dc53ca97927a5.skydrive.live.com/browse.aspx/ebookAS"&gt;http://cid-ac0dc53ca97927a5.skydrive.live.com/browse.aspx/ebookAS&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Pois é, nesse mês de outubro de 2009 o blog “&lt;STRONG&gt;Arquitetura de Soluções&lt;/STRONG&gt;” faz dois anos e parece que foi ontem que ele começou. Já foram mais de &lt;STRONG&gt;270 posts&lt;/STRONG&gt; publicados sobre vários assuntos e temas relacionados à arquitetura de software.&lt;/P&gt;
&lt;P&gt;Para registrar essa data, resolvi consolidar os principais posts por assuntos num ebook, que fica assim disponível para sua leitura off-line. &lt;/P&gt;
&lt;P&gt;Entre os tópicos principais você vai encontrar &lt;STRONG&gt;SOA, SOI, WCF, SAAS, Aplicações Compostas, Windows Azure&lt;/STRONG&gt;, entre outros.&lt;/P&gt;
&lt;P&gt;Como todo ebook, essa é apenas a versão 1.0. Fiquem a vontade para sugestões, comentários ou correções que acharem interessante! &lt;/P&gt;
&lt;P&gt;Espero que gostem! &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9901916" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Lightweight Architecture Alternative Assessment Method (LAAAM)</title><link>http://blogs.msdn.com/wcamb/archive/2009/09/28/lightweight-architecture-alternative-assessment-method-laaam.aspx</link><pubDate>Mon, 28 Sep 2009 19:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9900311</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9900311.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9900311</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9900311</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada, descobri um assunto bem interessante (thanks Markus!) sobre métodos para definição de arquiteturas e entre eles o &lt;STRONG&gt;LAAAM - Lightweight Architecture Alternative Assessment Method.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Em resumo, o LAAAM é um método que tem por objetivo orientar as definições de arquitetura de forma alinhada às reais necessidades do negócio da aplicação, de modo rápido e eficiente.&lt;/P&gt;
&lt;P&gt;Como sabemos, as decisões em arquitetura possuem um impacto direto no sucesso de um projeto. Por isso, antecipá-las já nos primeiros passos do ciclo de desenvolvimento de software ajuda a diminuir os riscos de projeto, economizando também recursos e tempo de desenvolvimento com correções tardias. Já observamos a presença do arquiteto ao longo do ciclo de vida do projeto, por exemplo, em métodos ágeis como o MSF for Agile.&lt;/P&gt;
&lt;P&gt;O principal mecanismo do método LAAAM é focar na definição sobre a qualidade de um sistema ou produto. Normalmente, estamos preocupados com qualidades de alto nível, porém, o LAAAM promete ajudar a determinar aspectos mais concretos, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;qual o tipo de escalabilidade ou flexibilidade o sistema deve atingir; &lt;/LI&gt;
&lt;LI&gt;quais são os atributos de qualidade mais importantes para atender os objetivos do sistema; &lt;/LI&gt;
&lt;LI&gt;qual é o processo racional de decisão para cada parte da arquitetura, entre outros. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Descobri um vídeo bem interessante que comenta alguns aspectos sobre o LAAAM, no link abaixo: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/4b7acc6ecf46_EFA6/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/4b7acc6ecf46_EFA6/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/4b7acc6ecf46_EFA6/image_thumb.png" width=244 height=168 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/4b7acc6ecf46_EFA6/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title=http://channel9vip.orcsweb.com/shows/ARCast.TV/ARCastTV-Using-LAAAM-to-Make-Good-Architectural-Decisions-Fast/ href="http://channel9vip.orcsweb.com/shows/ARCast.TV/ARCastTV-Using-LAAAM-to-Make-Good-Architectural-Decisions-Fast/" rel=nofollow target=_blank mce_href="http://channel9vip.orcsweb.com/shows/ARCast.TV/ARCastTV-Using-LAAAM-to-Make-Good-Architectural-Decisions-Fast/"&gt;http://channel9vip.orcsweb.com/shows/ARCast.TV/ARCastTV-Using-LAAAM-to-Make-Good-Architectural-Decisions-Fast/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Para saber mais, veja ainda esse post, do próprio Jeromy:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Lightweight Architecture Alternative Assessment Method (LAAAM) &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://blogs.msdn.com/jeromyc/archive/2005/08/27/457081.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/jeromyc/archive/2005/08/27/457081.aspx"&gt;http://blogs.msdn.com/jeromyc/archive/2005/08/27/457081.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Como você, estou apenas iniciando minhas leituras sobre o LAAAM, que tem sua raiz em outro método, o &lt;STRONG&gt;Architecture Tradeoff Analysis Method&lt;/STRONG&gt;, desenvolvido por um dos times da &lt;STRONG&gt;SEI - Software Engineering Institute&lt;/STRONG&gt;, na&lt;STRONG&gt; Carnegie Mellon University.&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9900311" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category></item><item><title>Programação Paralela com DryadLINQ</title><link>http://blogs.msdn.com/wcamb/archive/2009/09/21/programa-o-paralela-com-dryadlinq.aspx</link><pubDate>Mon, 21 Sep 2009 17:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9897562</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9897562.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9897562</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9897562</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Depois de um post do Otávio na semana passada, acabei dando uma circulada pelos projetos da &lt;STRONG&gt;Microsoft Research&lt;/STRONG&gt; e encontrei algo bem legal!&lt;/P&gt;
&lt;P&gt;Para quem não viu, o &lt;A href="http://blogs.msdn.com/otavio/archive/2009/09/12/mapreduce-no-windows-azure.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/otavio/archive/2009/09/12/mapreduce-no-windows-azure.aspx"&gt;Otávio&lt;/A&gt; falou rapidamente sobre &lt;A title=MapReducing href="http://en.wikipedia.org/wiki/Mapreduce" rel=nofollow target=_blank mce_href="http://en.wikipedia.org/wiki/Mapreduce"&gt;MapReducing&lt;/A&gt;, uma estratégia interessante para a divisão de tarefas no processamento paralelo, que é bem aderente para uma série de cenários com demanda de alta performance, como em pesquisas científicas e simulações.&lt;/P&gt;
&lt;P&gt;Usando as palavras do Otávio, &lt;EM&gt;&lt;FONT color=#0000a0&gt;“…a idéia é simples: se quisermos aumentar o paralelismo de uma operação, um processo Mestre deve dividir a tarefa em diversas partições, uma para cada processo Trabalhador. Chamamos este passo de Map. Em seguida, cada processo retorna seu resultado parcial para o processo Mestre, que aglutina e retorna todas as respostas para quem requisitou o processamento. Chamamos este passo de Reduce…”&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;O post original continua a explicação sobre o tema e como podemos aplicar a estratégia sobre o &lt;STRONG&gt;Windows Azure&lt;/STRONG&gt;, um ambiente de alta escalabilidade e armazenamento de dados ilimitado. Tipos como &lt;STRONG&gt;Web Roles, Worker Roles, Queues&lt;/STRONG&gt; e &lt;STRONG&gt;Tables&lt;/STRONG&gt; permitem uma implementação suave desse tipo de abordagem para uma computação de alto desempenho.&lt;/P&gt;
&lt;P&gt;Na Microsoft Research, encontrei o projeto &lt;STRONG&gt;DryadLINQ&lt;/STRONG&gt;, que é um ambiente de programação para a construção de aplicações paralelas de alta escalabilidade de dados, rodando sobre clusters de PC. Como descrito pelo time da Research, o objetivo do projeto é tornar a computação paralela simples o suficiente para projetos do dia-a-dia. &lt;/P&gt;
&lt;P&gt;O desenho abaixo ilustra a arquitetura do projeto &lt;STRONG&gt;DryadLINQ&lt;/STRONG&gt;, veja: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DryadLINQ_10FD2/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DryadLINQ_10FD2/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DryadLINQ_10FD2/image_thumb.png" width=510 height=340 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DryadLINQ_10FD2/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DryadLINQ&lt;/STRONG&gt; …pronuncia-se [dr’aied link] :) &lt;BR&gt;Ref.: &lt;A href="http://research.microsoft.com/en-us/projects/dryadLINQ/" rel=nofollow target=_blank mce_href="http://research.microsoft.com/en-us/projects/dryadLINQ/"&gt;http://research.microsoft.com/en-us/projects/dryadLINQ/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Já está disponível uma versão acadêmica para testes, assim como uma documentação em .PDF bem completa. A partir desta documentação, retirei a listagem abaixo, onde vemos a referência para a biblioteca &lt;STRONG&gt;LinqToDryad&lt;/STRONG&gt; e o código para a listagem de conteúdo de um arquivo texto (só para ilustrar).&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System.Collections.Generic;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System.Linq;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System.Text;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; LinqToDryad;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; Program&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum8&gt;   8:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum9&gt;   9:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; ShowOnConsole&amp;lt;T&amp;gt;(IQueryable&amp;lt;T&amp;gt; data)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum10&gt;  10:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum11&gt;  11:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;foreach&lt;/SPAN&gt; (T r &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; data)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum12&gt;  12:&lt;/SPAN&gt;             Console.WriteLine(&lt;SPAN style="COLOR: #006080"&gt;"{0}"&lt;/SPAN&gt;, r);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum13&gt;  13:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum14&gt;  14:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;static&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; Main(&lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt;[] args)&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum15&gt;  15:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum16&gt;  16:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; basedirectory = &lt;SPAN style="COLOR: #006080"&gt;@"file://\\machine\directory"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum17&gt;  17:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; filename = &lt;SPAN style="COLOR: #006080"&gt;"inputfile.txt"&lt;/SPAN&gt;;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum18&gt;  18:&lt;/SPAN&gt;         DryadDataContext ddc = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; DryadDataContext(basedirectory);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum19&gt;  19:&lt;/SPAN&gt;         DryadTable&amp;lt;LineRecord&amp;gt; table = ddc.GetTable&amp;lt;LineRecord&amp;gt;(filename);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum20&gt;  20:&lt;/SPAN&gt;         ShowOnConsole(table);&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum21&gt;  21:&lt;/SPAN&gt;         Console.ReadKey();&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum22&gt;  22:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum23&gt;  23:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P mce_keep="true"&gt;Para conferir a versão já disponívei e alguns exemplos em &lt;STRONG&gt;DryadLINQ&lt;/STRONG&gt;, veja:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Dryad and DryadLINQ: Academic Release&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://connect.microsoft.com/site/sitehome.aspx?SiteID=891" rel=nofollow target=_blank mce_href="http://connect.microsoft.com/site/sitehome.aspx?SiteID=891"&gt;http://connect.microsoft.com/site/sitehome.aspx?SiteID=891&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Some sample programs written in DryadLINQ&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://research.microsoft.com/pubs/66811/tr-2008-74.pdf" rel=nofollow target=_blank mce_href="http://research.microsoft.com/pubs/66811/tr-2008-74.pdf"&gt;http://research.microsoft.com/pubs/66811/tr-2008-74.pdf&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A programação paralela envolve diversos desafios, assim como abordagens específicas para seu tratamento. &lt;/P&gt;
&lt;P&gt;Porém, temos visto muito de sua aplicação restrita em ambientes de pesquisa e universidades. Creio que iniciativas como o &lt;STRONG&gt;DryadLINQ&lt;/STRONG&gt; e mesmo técnicas como o &lt;STRONG&gt;MapReducing&lt;/STRONG&gt; sobre ambientes de computação na nuvem devem trazer a programação paralela para mais perto das iniciativas comerciais num futuro próximo. O próprio&lt;STRONG&gt; .NET 4.0&lt;/STRONG&gt; está chegando com alguns recursos importantes para programação paralela, como o &lt;STRONG&gt;Task Parallel Library&lt;/STRONG&gt; (TPL), o &lt;STRONG&gt;Parallel LINQ&lt;/STRONG&gt; (PLINQ), o &lt;STRONG&gt;Coordination Data Structures&lt;/STRONG&gt; (CDS), além de melhorias na &lt;STRONG&gt;System.Threading&lt;/STRONG&gt;. Cada um desses recursos deve merecer um post dedicado no futuro.&lt;/P&gt;
&lt;P&gt;Olhando um pouco o &lt;STRONG&gt;Parallel LINQ (PLINQ),&lt;/STRONG&gt; ele permite aos desenvolvedores aproveitarem os múltiplos núcleos de uma máquina multicore, através do modelo de programação do LINQ.&lt;/P&gt;
&lt;P&gt;Veja abaixo um exemplo de código com &lt;STRONG&gt;PLINQ&lt;/STRONG&gt;, onde notamos o uso da cláusula &lt;STRONG&gt;.AsParallel(), &lt;/STRONG&gt;que ativa o aproveitamento multicore disponível na máquina:&lt;/P&gt;
&lt;DIV style="BORDER-BOTTOM: silver 1px solid; TEXT-ALIGN: left; BORDER-LEFT: silver 1px solid; PADDING-BOTTOM: 4px; LINE-HEIGHT: 12pt; BACKGROUND-COLOR: #f4f4f4; MARGIN: 20px 0px 10px; PADDING-LEFT: 4px; WIDTH: 97.5%; PADDING-RIGHT: 4px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; MAX-HEIGHT: 200px; FONT-SIZE: 8pt; OVERFLOW: auto; BORDER-TOP: silver 1px solid; CURSOR: text; BORDER-RIGHT: silver 1px solid; PADDING-TOP: 4px" id=codeSnippetWrapper&gt;
&lt;DIV style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px" id=codeSnippet&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum1&gt;   1:&lt;/SPAN&gt; var q = from p &lt;SPAN style="COLOR: #0000ff"&gt;in&lt;/SPAN&gt; people.AsParallel()&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum2&gt;   2:&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;SPAN style="COLOR: #0000ff"&gt;where&lt;/SPAN&gt; p.Name == queryInfo.Name &amp;amp;&amp;amp; &lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum3&gt;   3:&lt;/SPAN&gt;               p.State == queryInfo.State &amp;amp;&amp;amp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum4&gt;   4:&lt;/SPAN&gt;               p.Year &amp;gt;= yearStart &amp;amp;&amp;amp;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum5&gt;   5:&lt;/SPAN&gt;               p.Year &amp;lt;= yearEnd&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum6&gt;   6:&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; orderby p.Year ascending&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;PRE style="BORDER-BOTTOM-STYLE: none; TEXT-ALIGN: left; PADDING-BOTTOM: 0px; LINE-HEIGHT: 12pt; BORDER-RIGHT-STYLE: none; BACKGROUND-COLOR: white; MARGIN: 0em; PADDING-LEFT: 0px; WIDTH: 100%; PADDING-RIGHT: 0px; FONT-FAMILY: 'Courier New', courier, monospace; DIRECTION: ltr; BORDER-TOP-STYLE: none; COLOR: black; FONT-SIZE: 8pt; BORDER-LEFT-STYLE: none; OVERFLOW: visible; PADDING-TOP: 0px"&gt;&lt;SPAN style="COLOR: #606060" id=lnum7&gt;   7:&lt;/SPAN&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; select p;&lt;/PRE&gt;&lt;!--CRLF--&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Um assunto puxa o outro e as oportunidades são imensas. &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9897562" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Sessões Back to Basics? Por que não?</title><link>http://blogs.msdn.com/wcamb/archive/2009/09/14/sess-es-back-to-basics-por-que-n-o.aspx</link><pubDate>Mon, 14 Sep 2009 19:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9895037</guid><dc:creator>wcamb</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9895037.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9895037</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9895037</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Estamos em tempo de mudança. Como o Markus fala de vez em quando, “o Mundo Mudou!”. Concordo com vocês, as vezes é difícil acompanhar o ritmo das mudanças e inovações que atingem nossa área. TI é assim! Durante o último &lt;STRONG&gt;Tech-ed Brasil 2009&lt;/STRONG&gt;, eu ouvi o mesmo comentário de vários participantes: “Qual tecnologia eu devo usar?”, “O que eu preciso estudar agora?”, “Porque temos tantos frameworks e opções diferentes disponíveis?”, “O que eu uso para uma aplicação Web?”, entre outros.&lt;/P&gt;
&lt;P&gt;De fato, não temos uma resposta padrão ou simples para todas essas perguntas. Tenho trabalhado em TI nos últimos 15 anos e já vi diversas mudanças em arquitetura, alavancadas por diferentes fatores. Quem aqui não viu (tudo bem, alguns aqui não viram) o nascimento do cliente/servidor, aplicações com C++, VB6, componentes em COM+ sobre Windows Server 2000, as novidades do mundo Web, a adoção de Web Services em alta escala pelas empresas, etc. Você viu também a publicação do .NET Framework, sua evolução com as versões 2.0, depois 3.0 com o WCF e o WPF, o uso de serviços REST, o .NET 3.5 SP1. Finalmente, vimos o crescimento da discussão em torno de SOA, SOI, SAAS e mais recentemente o Cloud Computing, o provisionamento dinâmico, a computação de alta escala, o Windows Azure, etc.&lt;/P&gt;
&lt;P&gt;Durante o Tech-ed Brasil, tive a oportunidade de falar sobre a iniciativa Software + Serviços da Microsoft, que oferece uma visão para a TI do futuro. Um dos slides que usei mostra a evolução das arquiteturas dominantes nas últimas décadas. Claro, é uma simplificação do que aconteceu em TI, mas vale como ilustração, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/23743df73966_BA30/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/23743df73966_BA30/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/23743df73966_BA30/image_thumb.png" width=505 height=238 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/23743df73966_BA30/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Em cada década, tivemos uma arquitetura dominante, que definiu o estilo e o comportamento do software que era construído para o mercado e para nossos usuários. Vale destacar que cada nova arquitetura apareceu como uma nova alternativa de infraestrutura, adicionando valor e novas opções de recursos para as arquiteturas existentes. Essa combinação tem sido observada até hoje e muitas empresas ainda convivem com várias dessas arquiteturas, ao mesmo tempo.&lt;/P&gt;
&lt;P&gt;Mas retornando às dores de nosso dia-a-dia e pensando nas perguntas que vimos no começo deste post, existe ao menos uma coisa que é constante nessa evolução toda: &lt;STRONG&gt;a aplicação de bons príncípios de engenharia de software&lt;/STRONG&gt;. Independente do tipo de framework, camada, componente ou novos recursos que você adote, lembre-se sempre de princípios como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Programação Estruturada;&lt;/LI&gt;
&lt;LI&gt;Programação Orientada a Objetos;&lt;/LI&gt;
&lt;LI&gt;Modelagem de Dados e Teoria de Conjuntos;&lt;/LI&gt;
&lt;LI&gt;Bons Patterns de Arquitetura;&lt;/LI&gt;
&lt;LI&gt;Tipos Abstratos de Dados, Filas, Pilhas, Listas Ligadas, Caches;&lt;/LI&gt;
&lt;LI&gt;Otimização de Algortimos, etc.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Como arquitetos de software, creio que é saudável manter “frescos na memória” esses conceitos. Separe um tempinho de seu corrido dia para relembrar os tópicos acima. &lt;/P&gt;
&lt;P&gt;Creio que uma sessão “&lt;STRONG&gt;back-to-basics&lt;/STRONG&gt;” de vez em quando vai ajudá-lo a olhar os vários recursos e frameworks sob um prisma diferente. Isso também vai ajudá-lo a reconhecer quais tecnologias você pode aplicar em sua empresa, no momento certo de sua necessidade. &lt;/P&gt;
&lt;P&gt;É o que eu tenho feito e tem funcionado!!!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9895037" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>Pensando na evolução da TI de uma empresa.</title><link>http://blogs.msdn.com/wcamb/archive/2009/09/11/pensando-na-evolu-o-de-uma-arquitetura-de-ti.aspx</link><pubDate>Fri, 11 Sep 2009 20:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9894306</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9894306.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9894306</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9894306</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Durante o Tech-ed Brasil 2009, tive algumas discussões que mais ou menos foram replicadas essa semana, com outras empresas e arquitetos.&lt;/P&gt;
&lt;P&gt;Uma dessas discussões foi sobre a evolução da TI numa empresa, com o foco em sua organização e maturidade. Veja o desenho abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PensandoemarquiteturadeTIesuasopes_68C/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PensandoemarquiteturadeTIesuasopes_68C/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PensandoemarquiteturadeTIesuasopes_68C/image_thumb.png" width=532 height=266 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PensandoemarquiteturadeTIesuasopes_68C/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;No primeiro bloco, vemos o que é chamado de uma arquitetura “Spaghetti” ou “Macarronada” ou digamos “Noooooossa” :) É muito comum encontrarmos esse tipo de organização de TI, onde para cada comunicação entre sistemas temos um tipo dedicado de conexão, sem padronização, reuso de funcionalidades ou normalização de mensagens e formatos de dados. O custo de manuteção desse tipo de arquitetura é alto, assim como sua administração é complicada, com erros recorrentes. Atualmente, tenho visto muitas empresas iniciando ações para sair desse tipo de arquitetura e organização em TI.&lt;/P&gt;
&lt;P&gt;Um segundo estágio nessa evolução pode ser o uso de um motor de EAI – Enterprise Application Integration. Uma infraestrutura de EAI oferece um cenário padronizado de conectividade entre sistemas, facilitando a comunicação entre os serviços existentes através de adaptadores padronizados, schemas de mensagens, formatos de dados versionados, além de uma série de patterns para transformação de mensagens, subscrição, publicação, auditoria, tracing, entre outros, de forma centralizada. Porém, algumas empresas aplicam cenários de EAI em alguns departamentos, enquanto ainda permitem a continuidade de arquiteturas “macarrônicas” em outros andares, seja por problemas históricos, políticos ou de investimentos. &lt;/P&gt;
&lt;P&gt;Finalmente, coloco aqui um terceiro estágio de evolução, o ESB – Enterprise Service Bus, ou barramento corporativo de serviços. Podemos pensar num ESB como um conjunto de patterns de EAI, adicionado a patterns de roteamento de mensagens, composição de mensagens e serviços, tratamento de exceção, resolução de chamadas para serviços, etc. Uma grande diferença entre EAI e um ESB é a possibilidade de composição dinâmica de serviços. Enquanto que num cenário de EAI temos links estáticos entre clientes e provedores, no modelo ESB o desacoplamento é ainda maior, sendo possível a composição dinâmica de chamadas. A presença de um repositório ou catálogo de serviços também é parte desse tipo de solução, seja através de um UDDI ou mesmo de catálogo em bancos de dados.&lt;/P&gt;
&lt;P&gt;O que achei interessante essa semana foi ver como cenários assíncronos de mensageria, assim como a possibilidade de publicação de serviços ou dados num ambiente na nuvem tornam-se participantes dessa nova TI que arquitetos começam a imaginar. Mensageria não é novidade de forma alguma, mas mensageria entre diferentes infraestrutura de TI me pareceu interessante.&lt;/P&gt;
&lt;P&gt;Como tenho dito para algumas pessoas, nossa TI no futuro será cada vez mais híbrida, combinando serviços e dados ora no ambiente local (on-premise), ora no ambiente hospedado (em hosters e provedores) ora na nuvem. Um dos aspectos importantes que teremos será a combinação de SLA’s e níveis de operação, assim como mecanismos de monitoração, logging e administração unificados, que torne a vida do ITPro mais fácil para esses cenários.&lt;/P&gt;
&lt;P&gt;Cloud Computing é uma evolução de SOA? Depois de um EAI, sigo para um ESB? E depois de um ESB, sigo para o uso de um ISB – Internet Service Bus? De fato, penso que essas perguntas não têm muita relevância. O mais importante será mesmo aproveitar o melhor de cada infraestrutura, de acordo com as reais necessidades de sua aplicação, solução ou negócio. Fique atento ao que realmente interessa para sua empresa! Se você é um ITPro, fique atento às ferramentas de administração que estão aparecendo. Se você é um desenvolvedor, fique atento aos frameworks e opções de tecnologias que surgem para a construção de aplicações. E se você é um arquiteto, seja de soluções ou de infra, fique atento na hora de aplicar a melhor tecnologia que atende sua empresa.&lt;/P&gt;
&lt;P&gt;Seja usando SAAS, EAI, ESB, ISB, ERP, CRM, SC, UDDI, SOAP, REST, HTTP, TCP, etc. o que vale mesmo é atender corretamente seu usuário final, não é mesmo?&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9894306" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>Qual a importância de um arquiteto?</title><link>http://blogs.msdn.com/wcamb/archive/2009/08/14/qual-a-import-ncia-de-um-arquiteto.aspx</link><pubDate>Fri, 14 Aug 2009 15:19:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9869915</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9869915.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9869915</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9869915</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada, o &lt;A href="http://blogs.technet.com/markuschristen/" rel=nofollow target=_blank mce_href="http://blogs.technet.com/markuschristen/"&gt;Markus Christen&lt;/A&gt; havia iniciado uma discussão sobre o papel do arquiteto no &lt;A href="http://arqbr.groups.live.com/" rel=nofollow target=_blank mce_href="http://arqbr.groups.live.com"&gt;ARQBR&lt;/A&gt;. Algumas pessoas avançaram as discussões offline e tivemos algumas conclusões. Gostaria de colocar aqui uma visão consolidada sobre o tema.&lt;/P&gt;
&lt;P&gt;Pessoalmente, tenho visto diversos tipos de profissionais atuando como arquitetos no mercado. &lt;/P&gt;
&lt;P&gt;Pensando em &lt;STRONG&gt;arquitetos de soluções&lt;/STRONG&gt;, focados em projetos e na construção de sistemas, qual a importância deles? Gosto muito da seguinte frase para explicar a importância do arquiteto de soluções: "Arquitetura de software é o conjunto de decisões de design as quais, se feitas incorretamente, podem provocar o cancelamento de seu projeto". :) &lt;/P&gt;
&lt;P&gt;Ainda pensando na construção de software, a&lt;STRONG&gt; SEI - Software Engineering Institute | Carnegie Mellon&lt;/STRONG&gt;, tem conduzido uma pesquisa sobre definições para arquitetura de software em todo o mundo, através do link abaixo: &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A href="http://www.sei.cmu.edu/architecture/community_definitions.html" rel=nofollow target=_blank mce_href="http://www.sei.cmu.edu/architecture/community_definitions.html"&gt;http://www.sei.cmu.edu/architecture/community_definitions.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Lendo as várias definições, fica claro que mesmo pensando na construção de software, o papel do arquiteto e suas atividades são muito diversificados. Mas é sempre direcionado pelas decisões que podem conduzir uma solução para o sucesso ou fracasso, decisões essas relacionadas com a escolha e a combinação de tecnologias aplicáveis para aquela solução. Assim, creio que podemos resumir a importância do arquiteto de solução nessa palavra: &lt;STRONG&gt;direção&lt;/STRONG&gt;! Direção para a melhor arquitetura de software que será empregada, buscando a aplicação de uma &lt;STRONG&gt;boa engenharia de software&lt;/STRONG&gt; sempre.&lt;/P&gt;
&lt;P&gt;Pensando em &lt;STRONG&gt;arquitetos enterprise&lt;/STRONG&gt; ou &lt;STRONG&gt;corporativos&lt;/STRONG&gt;, esses estão mais distantes do mundo de soluções, muito envolvidos com o negócio da empresa. Qual o papel da TI para a missão da empresa? Qual o impacto de longo prazo do investimento em uma determinada tecnologia ou abordagem de solução. Alguns exemplo? Pense na adoção de um sistema Web para o terminal de auto-atendimento de um banco de varejo. Estamos falando de quantos terminais espalhados pelo Brasil? Pense na adoção de uma plataforma baseada em serviços para a oferta de produtos para corretoras de valores? Qual o impacto de segurança e velocidade de implantação de novos produtos nessa infra-estrutura? Enfim, uma decisão tomada pelo arquiteto corporativo é apresentada para o núcleo de negócios da empresa e normalmente, tem um tempo de maturidade e implantação de médio e longo prazo. Mas são importantes pelo poder de influência e impacto no dia-a-dia de todos da corporação. Qual a importância desse profissional hoje em dia? &lt;/P&gt;
&lt;P&gt;Finalmente, pensando em &lt;STRONG&gt;arquitetos de infra-estrutura&lt;/STRONG&gt;, estamos num momento muito especial em TI, vendo o nascimento de uma nova plataforma de infra-estrutura disponível na nuvem. Nos próximos anos, o cloud computing será uma realidade para muitas empresas, que buscam a composição de custos entre software e infra-estrutura on-premise e software e serviços na nuvem. O arquiteto de infra-estrutura e IT Pros, que atuam diretamente nesse ambiente de suporte a software poderão focar cada vez mais nas capacidades de TI, oferecendo uma infra-estrutura combinada que irá permitir a construção de soluções mais flexíveis, dinâmicas e transparentes para o usuário final. Qual a importância do arquitetura de infra-estrutura? Suas decisões, o quanto mais alinhadas com a direção de negócio e desenvolvimento da empresa, permitirão uma maior velocidade na adoção de novas tecnologias, consequentemente, um posicionamento melhor no mercado de atuação de sua empresa. &lt;/P&gt;
&lt;P&gt;Agora, uma nova pergunta: você que está na carreira de arquiteto, como está se preparando para tomar as decisões corretas em sua empresa? &lt;/P&gt;
&lt;P&gt;O impacto de suas decisões pode ser tão grande quanto o sucesso ou fracasso de uma campanha, de um projeto, de um produto ou de um lançamento em sua empresa. Prepare-se! &lt;/P&gt;
&lt;P&gt;Alguns links interessantes: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Worldwide Institute of Software Architects - WWISA&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.wwisa.org/" rel=nofollow target=_blank mce_href="http://www.wwisa.org/"&gt;http://www.wwisa.org/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;IASA - International Association of Software Architects&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.iasahome.org/web/home/home" rel=nofollow target=_blank mce_href="http://www.iasahome.org/web/home/home"&gt;http://www.iasahome.org/web/home/home&lt;/A&gt; &lt;BR&gt;&lt;A href="http://www.wwisa.org/" mce_href="http://www.wwisa.org/"&gt;http://www.wwisa.org/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;The Architecture Journal &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/architecture/bb410935.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/architecture/bb410935.aspx"&gt;http://msdn.microsoft.com/en-us/architecture/bb410935.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Dev Center de Arquitetura no MSDN Brasil&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A title=http://msdn.microsoft.com/pt-br/architecture/default.aspx href="http://msdn.microsoft.com/pt-br/architecture/default.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/architecture/default.aspx"&gt;http://msdn.microsoft.com/pt-br/architecture/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :) &lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9869915" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>O ritmo da inovação e o papel do arquiteto</title><link>http://blogs.msdn.com/wcamb/archive/2009/08/05/o-ritmo-da-inova-o-e-o-papel-do-arquiteto.aspx</link><pubDate>Wed, 05 Aug 2009 17:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9858067</guid><dc:creator>wcamb</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9858067.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9858067</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9858067</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada estive com uma equipe de arquitetura de uma empresa do setor financeiro, discutindo sobre tendências em TI e a visão para a computação na nuvem. Com certeza, 2009 está sendo o ano do Cloud Computing. &lt;/P&gt;
&lt;P&gt;Uma pergunta que aparece nesse tipo de discussão é sobre quando adotar uma nova plataforma. Vale a pena investir na computação na nuvem? Quais benefícios a plataforma pode oferecer para o meu negócio?&lt;/P&gt;
&lt;P&gt;Esse é o mesmo dilema quando pensamos em investir em treinamentos sobre novas tecnologias, como frameworks, ferramentas de desenvolvimento ou plataformas de aplicações. O cenário é mais crítico quando a TI da empresa está desatualizada em relação ao mercado. Se você ainda desenvolve em ASP com componentes COM+ em VB6 e possui alguns sites em ASP.NET com .NET 1.1, por exemplo, o impacto de uma evolução é maior, tanto na capacitação de sua equipe como na percepção de melhorias para o usuário e para o negócio da empresa.&lt;/P&gt;
&lt;P&gt;Veja o gráfico abaixo, onde temos o tempo no eixo “x” e a vantagem competitiva de uma empresa num determinado mercado no eixo “y”.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CloudComputingeodilemadainovao_144AF/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CloudComputingeodilemadainovao_144AF/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CloudComputingeodilemadainovao_144AF/image_thumb.png" width=520 height=371 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CloudComputingeodilemadainovao_144AF/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;O desenho ilustra o impacto da adoção de uma inovação tecnológica ao longo do tempo. Imagine 3 empresas para uma determinada área de atuação.&lt;/P&gt;
&lt;P&gt;A primeira é uma empresa ágil, que rapidamente incorpora inovações estratégicas e consegue um melhor posicionamento no mercado em relação a seus concorrentes. Para isso, essa empresa investe em novas tecnologias, acompanha o lançamento de novas plataformas e ferramentas de mercado, assim como mantém uma cultura de constante avaliação de suas soluções em relação ao negócio da empresa. Como resultado, é reconhecida como uma empresa inovadora e que lança tendências ou aproveita os benefícios de uma nova tecnologia, melhorando sua&amp;nbsp; produtividade, tempo para o lançamento de novos produtos, redução de custos, alcance para novos mercados, etc.&lt;/P&gt;
&lt;P&gt;Com o passar do tempo, uma segunda empresa adota a mesma inovação, ainda conseguindo um bom posicionamento no mercado. Muitas vezes, essa empresa é uma seguidora de líderes da indústria, um cenário muito comum no mercado financeiro e entre bancos.&lt;/P&gt;
&lt;P&gt;Finalmente, uma terceira empresa adota as inovações estratégicas de forma tardia, não aproveitando os benefícios e oportunidades da adoção de uma nova tecnologia, apenas corrigindo sua posição no mercado. Muitas vezes, essa empresas trata a área de TI como um universo apenas operacional, de suporte ao negócio da empresa sem relevância, não reconhecendo o impacto e possíveis oportunidades que a primeira empresa conseguiu aproveitar. &lt;/P&gt;
&lt;P&gt;Existem diversos motivos que posicionam uma empresa em cada um desses 3 perfis, como cultura organizacional, histórico de projetos, tamanho da empresa, tolerância ao risco, burocracia, inércia das áreas envolvidas, resistência a novas formas de trabalho, etc. Reconhecer em qual grupo sua empresa está é o primeiro passo nessa auto-análise tecnológica. A partir desse diagnóstico, identificar quais benefícios e o impacto de uma nova tecnologia para o negócio da empresa deve oferecer bons argumentos para uma tomada de decisão. &lt;/P&gt;
&lt;P&gt;Ao mesmo tempo, um tópico que aparece é o chamado “dilema da inovação”. O aparecimento de novas tecnologias e inovações estratégicas também pode criar empresas emergentes, que aproveitam com maior sucesso de novas demandas do mercado ou de seus clientes, que também percebem os benefícios da inovação disponível.&lt;/P&gt;
&lt;P&gt;Entre 2009 e 2010, vamos acompanhar de perto uma das maiores ondas de lançamentos de tecnologias e inovações na plataforma Microsoft. Teremos &lt;A href="http://www.microsoft.com/office/2010/" rel=nofollow target=_blank mce_href="http://www.microsoft.com/office/2010/"&gt;Office 2010&lt;/A&gt;, &lt;A href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx" rel=nofollow target=_blank mce_href="http://sharepoint.microsoft.com/2010/Sneak_Peek/Pages/default.aspx"&gt;SharePoint 2010&lt;/A&gt;, &lt;A href="http://www.microsoft.com/exchange/2010/en/us/default.aspx" rel=nofollow target=_blank mce_href="http://www.microsoft.com/exchange/2010/en/us/default.aspx"&gt;Exchange 2010&lt;/A&gt;, &lt;A href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx" rel=nofollow target=_blank mce_href="http://www.microsoft.com/visualstudio/en-us/products/2010/default.mspx"&gt;Visual Studio 2010&lt;/A&gt;, &lt;A href="http://msdn.microsoft.com/en-us/netframework/dd819232.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/netframework/dd819232.aspx"&gt;.NET 4.0&lt;/A&gt;, &lt;A href="http://msdn.microsoft.com/pt-br/azure/cc994380.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/azure/cc994380.aspx"&gt;Windows Azure&lt;/A&gt;, &lt;A href="http://technet.microsoft.com/pt-br/evalcenter/dd459137.aspx" rel=nofollow target=_blank mce_href="http://technet.microsoft.com/pt-br/evalcenter/dd459137.aspx"&gt;Windows Server 2008 R2&lt;/A&gt;, &lt;A href="http://technet.microsoft.com/pt-br/evalcenter/dd353205.aspx" rel=nofollow target=_blank mce_href="http://technet.microsoft.com/pt-br/evalcenter/dd353205.aspx"&gt;Windows 7&lt;/A&gt;, entre tantos outros.&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;Em tempo de crise, investir em inovação é tão importante quanto controlar os custos operacionais da empresa. Cada empresa possui um histórico próprio que explica seu posicionamento e seu grau de inovação no mercado. &lt;/P&gt;
&lt;P&gt;Como arquitetos, como podemos ajudar nossa empresa no entendimento dessas questões, para dar o próximo passo evolutivo no ritmo das inovações em TI? Fica para pensar…&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9858067" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>Estudo de caso : um mapa para decisões de projeto</title><link>http://blogs.msdn.com/wcamb/archive/2009/07/29/estudo-de-caso-um-mapa-para-decis-es-de-projeto.aspx</link><pubDate>Wed, 29 Jul 2009 18:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9852182</guid><dc:creator>wcamb</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9852182.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9852182</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9852182</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Recentemente, acompanhei algumas discussões interessantes sobre aspectos para a decisão pela plataforma .NET em um determinado projeto.&lt;/P&gt;
&lt;P&gt;A partir desse bate-papo, achei que seria bom comentar aqui uma solução que acompanhei para um projeto Web multi-tenant de média/alta complexidade no ambiente corporativo. Assim, vamos explorar alguns dos pontos avaliados pela equipe para a decisão pela plataforma .NET.&lt;/P&gt;
&lt;P&gt;Considere esse projeto apenas como uma abordagem possível, já que:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;projetos são sempre diferentes entre si, seja em recursos, tempo ou equipes. Faça suas adaptações e avaliações de acordo com a sua realidade;&lt;/LI&gt;
&lt;LI&gt;pessoas bem capacitadas é sempre importante, para qualquer plataforma, seja .NET, JAVA, PHP ou RUBY;&lt;/LI&gt;
&lt;LI&gt;um mapa claro das reais necessidades da empresa também ajuda para manter as expectativas sob controle, assim como a escolha pela tecnologia mais aderente. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Considere ainda a necessidade por uma boa &lt;STRONG&gt;engenharia de software&lt;/STRONG&gt; versus o atendimento de um cenário mais simples, com pouco perspectiva de evolução.&lt;/P&gt;
&lt;P&gt;Para começar, veja o desenho de arquitetura escolhido para o projeto, conforme temos no &lt;A href="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586" rel=nofollow target=_blank mce_href="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586"&gt;Application Architecture Guide 2.0&lt;/A&gt;:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_thumb.png" width=457 height=442 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A partir desse mapa, vejamos alguns pontos que a equipe considerou ao escolher a plataforma .NET: &lt;/P&gt;
&lt;P&gt;1. EVOLUÇÃO: A plataforma .NET tem evoluído desde 2002. Desconsiderando o .NET 1.0 (2002) e o .NET 1.1 (2003), da versão 2.0 em diante (2005) tem sido adicionado novos recursos e protocolos de forma integrada ao framework, atendendo uma série de cenários no mercado. Alguns exemplos são serviços REST, consultas integradas via LINQ, AJAX, padrões MVC, frameworks de sincronização, caching, etc. Como a evolução é contínua, isso garante o atendimento de novos cenários não originalmente previstos; &lt;/P&gt;
&lt;P&gt;2. LINGUAGEM: A plataforma .NET oferece 2 grandes linguagens para o desenvolvimento de aplicações, C# e VB.NET. Claro, existem outras, mas são as de maior presença no mercado. A equipe considerou a linguagem C# como alternativa por decisão de projeto apenas, já que os recursos e namespaces oferecidos são os mesmos sobre .NET. A síntaxe de C# também pesou na decisão, devido alguns membros trabalharem em Java em projetos paralelos;&lt;/P&gt;
&lt;P&gt;3. WEB+RIA: Para cenários de aplicações WEB evoluindo para RIA - Rich Internet Application, a dupla &lt;STRONG&gt;ASP.NET + AJAX&lt;/STRONG&gt; foi bem avaliada, considerando uma evolução para &lt;STRONG&gt;ASP.NET + SILVERLIGHT&lt;/STRONG&gt; em alguns cenários. Na época, era o Silverlight 2.0. Hoje, temos o Siverlight 3.0 com o framework em desenvolvimento &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/.NET+RIA+Services/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/.NET+RIA+Services/default.aspx"&gt;.NET RIA SERVICES&lt;/A&gt;, que promete implementação interessante, integrando serviços Web Services em JAVA, camadas em nHibernate e bancos ORACLE, serviços REST, etc. A solução hoje é 80% ASP.NET + AJAX, considerando algumas funcionalidades de LOB para Silverlight 3.0. Por ter iniciado antes do lançamento, o ASP.NET MVC está sendo avaliado somente agora;&lt;/P&gt;
&lt;P&gt;4. SERVIÇOS: De modo geral, o suporte de serviços no lado do servidor e na camada de negócios foi bem implementado com o &lt;STRONG&gt;WCF - Windows Communication Framework&lt;/STRONG&gt;, presente na plataforma .NET desde sua versão 3.0 (2006). Uma das grandes características do WCF é sua extensibilidade com a adição de novos Bindings de conectividade, seja através de soluções domésticas ou de mercado. Na solução em questão, foram aplicados os bindings padrão TCP, wsHTTPBinding e basicHTTPBindig para integração Java;&lt;/P&gt;
&lt;P&gt;5. PERFORMANCE: A estabilidade e robustez do modelo ASP.NET+WCF foi bem avaliada desde as provas de conceito. Isso contou para garantir uma plataforma que tivesse alta escalabilidade ao longo do tempo. Os números para mensagens por segundo e suporte para múltiplas instâncias de serviços foram muito bons! Realize provas de conceito, sempre. Veja um artigo clássico sobre performance do WCF, &lt;A href="http://msdn.microsoft.com/en-us/library/bb310550.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/library/bb310550.aspx"&gt;aqui&lt;/A&gt;. Para os testes usaram o Web Capacity Analysis Tool do Internet Information Services (IIS) 6.0 Resource Kit Tools, além das ferramentas de Web Testing do Visual Studio 2008.&lt;/P&gt;
&lt;P&gt;6. PROCESSOS: Em cenários de coordenação de processos, o WF - Windows Workflow Foundation também foi avaliado, uma vez que sua implementação é visual e integrada a própria IDE do Visual Studio. Alguns desses workflows fazem chamadas para serviços WCF, coordenando processos de negócio. O template &lt;STRONG&gt;Sequential Workflows Service Library&lt;/STRONG&gt; foi o mais adotado. Já falamos dele por aqui, &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/03/17/sequential-workflow-service-library-integrando-servi-os-wcf-com-workflows-wf-no-net-3-5.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/03/17/sequential-workflow-service-library-integrando-servi-os-wcf-com-workflows-wf-no-net-3-5.aspx"&gt;veja&lt;/A&gt;; &lt;/P&gt;
&lt;P&gt;7. TRANSAÇÃO: O suporte transacional obtido com o WCF e WF garantiu também a aplicação de transações distribuídas, integrando serviços em .NET e JAVA, através do protocolo WS-AT (&lt;A href="http://msdn.microsoft.com/en-us/library/ms729784.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms729784.aspx"&gt;Atomic Transaction&lt;/A&gt;), suportado pelo WCF e WF no .NET. Como alguns web services participantes estão em Java, foi usado o WSIT para o suporte transacional, com interoperabilidade Java e .NET. Veja mais &lt;A href="https://wsit-docs.dev.java.net/releases/1-0-FCS/Overview2.html#wp149787" rel=nofollow target=_blank mce_href="https://wsit-docs.dev.java.net/releases/1-0-FCS/Overview2.html#wp149787"&gt;aqui&lt;/A&gt;. &lt;/P&gt;
&lt;P&gt;8. HOSTING: Outro aspecto importante avaliado foi o HOSTING, isto é, onde as camadas de apresentação e lógica seriam hospedadas. No cenário sobre .NET, as páginas ASP.NET e porções em Silverlight foram hospedados em baterias de máquinas de apresentação, sobre IIS7 (&lt;A href="http://blogs.msdn.com/wcamb/archive/2009/07/24/alguns-recursos-da-fam-lia-windows.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/07/24/alguns-recursos-da-fam-lia-windows.aspx"&gt;Windows Server 2008&lt;/A&gt;). Para a camada de negócios e serviços, máquinas W2k8 foram dedicadas para hospedagem de serviços sobre a dupla &lt;STRONG&gt;IIS7/&lt;A href="http://msdn.microsoft.com/en-us/library/ms734677(VS.100).aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms734677(VS.100).aspx"&gt;WAS&lt;/A&gt; - Windows Process Activation Service&lt;/STRONG&gt;. Desse modo, foi possivel garantir o "desacoplamento" desejado para o projeto, separando a frente de apresentação e balanceamento de carga Web da frente de serviços e negócios, permitindo a futura exportação de serviços para outros sistemas. Avalie esse cenário como uma expansão futura real e desejável. De modo geral, pense em Web Services sobre HTTP/SOAP. Para cenários de serviços com alta performance, usamos o WAS para suportar o transporte em TCP/Binário e não em HTTP/SOAP/XML apenas. Veja mais sobre arquitetura WAS &lt;A href="http://msdn.microsoft.com/en-us/library/ms789006.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/library/ms789006.aspx"&gt;aqui&lt;/A&gt;;&lt;/P&gt;
&lt;P&gt;9. ADMINISTRAÇÃO: Foi avaliado que a construção de serviços WCF e WF e a preparação da equipe sobre a plataforma .NET garantiria a adoção de &lt;A href="http://msdn.microsoft.com/pt-br/magazine/2009.01.net40.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/magazine/2009.01.net40.aspx"&gt;&lt;STRONG&gt;Dublin&lt;/STRONG&gt;&lt;/A&gt; sobre o Windows Server 2008 no futuro. O Dublin deve ampliar as funcionalidades de gerenciamente e administração de serviços WCF e WF no servidor de aplicações, criando um hosting com melhor governança para a solução. Mais um ponto para a adoção do .NET. A equipe começou com W2k3 e passou logo para W2K8 durante o projeto; &lt;/P&gt;
&lt;P&gt;10. SEGURANÇA: Para cenários de autenticação, autorização e controle de acesso, aplicamos os exemplos disponíveis na &lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/wcamb/archive/2009/04/13/hands-on-labs-for-enterprise-library-4-1-march-2009.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/04/13/hands-on-labs-for-enterprise-library-4-1-march-2009.aspx"&gt;Enterprise Library&lt;/A&gt;&lt;/STRONG&gt;, o que ajudou muito na produtividade; &lt;/P&gt;
&lt;P&gt;11. TESTES: Avaliamos também a aplicação de cenários de testes sobre o Visual Studio 2008, diretamente relacionado a plataforma .NET; &lt;/P&gt;
&lt;P&gt;12. CONFIGURAÇÃO: Considerando a dupla ASP.NET+WCF, tivemos bons resultados na velocidade de configuração do ambiente de produção, devido principalmente o desacoplamento entre ambos. A configuração via XML e EndPoints também foi um ponto interessante de avaliação no uso de serviços em WCF, recurso muito bem avaliado na plataforma .NET; &lt;/P&gt;
&lt;P&gt;13. PRODUTIVIDADE: Em relação ao processo de desenvolvimento em si, aplicamos alguns templates customizados, criados em tempo de planejamento e arquitetura. Desse modo, foi possível disponibilizar em servidores da rede de desenvolvimento alguns templates específicos para páginas CRUD e serviços WCF, aumentando muito a produtividade da equipe de desenvolvimento. Avaliamos também o uso de guias de automação sobre o Visual Studio, como a dupla GAT/GAX, mas o cenário foi bem atendido apenas com os templates puros em .vstemplate para páginas ASP.NET e serviços WCF/WF; &lt;/P&gt;
&lt;P&gt;14. PERSISTÊNCIA: Considerando bancos de dados em Oracle e SQL Server, foi aplicada uma camada ORM com nHibernate, em .NET. A equipe está realizando testes com o &lt;A href="http://blogs.msdn.com/wcamb/archive/2008/12/22/construindo-solu-es-com-entity-framework-e-arquitetura-em-m-ltiplas-camadas.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2008/12/22/construindo-solu-es-com-entity-framework-e-arquitetura-em-m-ltiplas-camadas.aspx"&gt;Entity Framework&lt;/A&gt;, aguardando a &lt;A href="http://channel9.msdn.com/pdc2008/TL20/" rel=nofollow target=_blank mce_href="http://channel9.msdn.com/pdc2008/TL20/"&gt;versão 2.0&lt;/A&gt; ser lançada. Para a manipulação das coleções obtidas de consultas, diversos módulos de negócio manipulam os itens através de consultas &lt;A href="http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/vcsharp/aa336746.aspx"&gt;LINQ&lt;/A&gt;, integradas ao C# no .NET. Essa abordagem de manipulação integrada permitiu um grande ganho de produtividade, devido o uso do intellisense em tempo de desenvolvimento, assim como facilidade de construção de consultas e filtros sobre coleções; &lt;/P&gt;
&lt;P&gt;15. CAPACITAÇÃO: Em relação a capacitação da equipe, foi planejado 40 horas de treinamento formal em WCF e 24 horas de treinamento formal WF. O uso de templates bem formatados para cada camada do projeto garantiu uma curva de aprendizado suave para a equipe; &lt;/P&gt;
&lt;P&gt;16. RECURSOS: Foram considerados alguns sites importantes para o apoio da equipe. Entre os links principais, cito: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WCF – Windows Communication Foundation&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.aspx" target=_blank mce_href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.aspx"&gt;http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WF – Windows Workflow Foundation&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windows%20Workflow%20Foundation.aspx" rel=nofollow target=_blank mce_href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windows%20Workflow%20Foundation.aspx"&gt;http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windows%20Workflow%20Foundation.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Sem esquecer do material impresso, através de livros para o .NET 3.x (WCF, WF e ASP.NET). &lt;/P&gt;
&lt;P&gt;17. PROJETO: Em relação ao processo de gerenciamento, o time não aplicou o &lt;A href="http://pt.wikipedia.org/wiki/Scrum" rel=nofollow target=_blank mce_href="http://pt.wikipedia.org/wiki/Scrum"&gt;SCRUM&lt;/A&gt; de forma rígida, mas manteve o PRODUCT BACKLOG, assim como o papel do SCRUM MASTER, SPRINTs de 3 a 4 semanas e as SCRUM Meetings diárias. &lt;/P&gt;
&lt;P&gt;18. COMPLEXIDADE: Avalio o projeto como de média para alta complexidade, considerando o potencial de crescimento e escalabilidade prevista. Apesar do aspecto multi-tenant (multi-inquilino), a integração com o legado, o controle de acesso, a integração transacional com serviços Jrava e a necessidade de crescimento de novas funcionalidades foram fatores também críticos. Para os mais rígidos, aplicar a &lt;A href="http://pt.wikipedia.org/wiki/An%C3%A1lise_de_pontos_de_fun%C3%A7%C3%A3o" target=_blank mce_href="http://pt.wikipedia.org/wiki/An%C3%A1lise_de_pontos_de_fun%C3%A7%C3%A3o"&gt;Análise por Pontos de Função&lt;/A&gt; também ajuda.&lt;/P&gt;
&lt;P&gt;19. FRAMEWORKS: Não foi construído um &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/07/15/frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/07/15/frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx"&gt;framework de desenvolvimento&lt;/A&gt; para o projeto. Ao invés, foram construídos bons templates para páginas CRUD e façades de serviços e workflows. Dessa maneira, a equipe conseguiu grande produtividade no desenvolvimento sem o custo adicional de manutenção de um framework doméstico. Fábricas de Software ou DSL’s não foram consideradas pela equipe por enquanto. :)&lt;/P&gt;
&lt;P&gt;20. ALM – Application Lifecycle Management: como parte importante do projeto, foram considerados os vários papeis e processos previstos no &lt;A href="http://en.wikipedia.org/wiki/Application_Lifecycle_Management" rel=nofollow target=_blank mce_href="http://en.wikipedia.org/wiki/Application_Lifecycle_Management"&gt;ALM&lt;/A&gt; aplicado sobre &lt;A href="http://msdn.microsoft.com/en-us/teamsystem/aa718795.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/teamsystem/aa718795.aspx"&gt;MSF for Agile&lt;/A&gt; (MSF for Agile Software Development Process Guidance). O uso de VSTS – Visual Studio Team System como ferramenta de apoio ao processo de desenvolvimento e projeto também foi importante para o sucesso do ALM adotado.&lt;/P&gt;
&lt;P&gt;Assim, fizemos as seguintes considerações para a plataforma .NET: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;capacidade de desacoplamento entre apresentação e serviços (via WCF);&lt;/LI&gt;
&lt;LI&gt;suporte para a construção de serviços com transporte via HTTP, MSMQ e TCP (via WCF);&lt;/LI&gt;
&lt;LI&gt;facilidade na construção de processo por workflows, realizando chamadas coordenadas para serviços (via WF);&lt;/LI&gt;
&lt;LI&gt;integração do desenvolvimento e testes com a ferramenta de desenvolvimento principal, via Visual Studio 2008;&lt;/LI&gt;
&lt;LI&gt;suporte a frameworks de sincronização, caching, xml, coleções, etc, além da possibilidade de se trabalhar com configuração desacoplada para a camada de apresentação e de negócios (via web.config);&lt;/LI&gt;
&lt;LI&gt;disponibilidade de bons exemplos de código na web (via a Enterprise Library 3.1 e 4.1). Mais recentemente, o Hands On Lab da EntLib 4.1 trouxe bons exemplos para alguns cenários não avaliados originalmente;&lt;/LI&gt;
&lt;LI&gt;facilidade de construção de Web Forms via RAD no Visual Studio;&lt;/LI&gt;
&lt;LI&gt;suporte para integração futura com outros cenários de apresentação e canais de relacionamento, como o ambiente Mobile; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Passamos aqui por alguns aspectos de decisão do projeto e algumas justificativas que levaram a adoção da plataforma .NET no cenário acima. &lt;/P&gt;
&lt;P&gt;A partir desse exemplo, podemos montar uma planilha de decisão mais ampla, para a comparação ou avaliação de outras tecnologias, considerando:&lt;/P&gt;
&lt;P&gt;1. redução de custos de desenvolvimento; &lt;BR&gt;2. redução de custos de manutenção; &lt;BR&gt;3. agilidade no processo de desenvolvimento; &lt;BR&gt;4. produtividade e ferramentas de automação no desenvolvimento; &lt;BR&gt;5. facilidade de integração com sistemas legados; &lt;BR&gt;6. interoperabilidade com outras plataformas; &lt;BR&gt;7. segurança; &lt;BR&gt;8. suporte transacional; &lt;BR&gt;9. mobilidade; &lt;BR&gt;10. capacitação da equipe; &lt;BR&gt;11. conectividade com web services e padrão WS-I.org; &lt;BR&gt;12. suporte a padrões W3C; &lt;BR&gt;13. facilidade de depuração e ferramentas; &lt;BR&gt;14. integração e rastreabilidade no ambiente de infra-estrutura; &lt;BR&gt;15. custo total de infra-estrutura necessária, etc. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Para pensar…&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Creio que um dos aspectos importantes na adoção da plataforma .NET no cenário acima foi a decisão pela boa &lt;STRONG&gt;engenharia de software&lt;/STRONG&gt;. O projeto precisava considerar balanceamento de carga, crescimento e escalabilidade ao longo do tempo, integração com o legado e diferentes plataformas, múltiplos bancos, processos via workflows e interfaces de serviços, etc. Era uma solução Web multi-inquilino, com potencial de crescimento no ambiente corporativo, e que sinalizava evolução ao longo do tempo.&lt;/P&gt;
&lt;P&gt;Veja que a equipe não avaliou outros recursos importantes, como Live Services ou Cloud Computing através da plataforma Azure. Considerando valores de pricing da plataforma, assim como o desenvolvimento e depuração integrados sobre o Visual Studio 2008, a nuvem passa a ser uma opção cada vez mais interessante para projetos semelhantes também de baixa e média complexidade. Avalie se sua aplicação SAAS sobre ASP.NET + Banco de Dados não é também aderente ao modelo elástico da nuvem.&lt;/P&gt;
&lt;P&gt;Em cenários menores, a análise acima pode ser exagerada (exemplo, um site simples sobre 1 única máquina consumindo 1 único banco de dados, com equipe reduzida). Mas se sua aplicação tem potencial de crescimento ou aspectos SaaS / Web 2.0 mais corporativos, passa a ser importante considerar os componentes de arquitetura de forma mais completa. A lista abaixo foi retirada do App Arch Guide 2.0:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_thumb_2.png" width=513 height=299 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DecisesdeprojetoumasoluoWeb_8674/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Veja o que você realmente precisa em sua solução e escolha a melhor tecnologia de forma &lt;STRONG&gt;racional&lt;/STRONG&gt; e com boas memórias de cálculo justificando suas decisões. &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9852182" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>Pricing no Windows Azure</title><link>http://blogs.msdn.com/wcamb/archive/2009/07/16/pricing-no-windows-azure.aspx</link><pubDate>Thu, 16 Jul 2009 15:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9835542</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9835542.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9835542</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9835542</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Saiu!!! Foi publicada na terça-feira (14/07) a lista de preços para a primeira onda de países suportados comercialmente pelo Windows Azure. Confira:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Confirming Commercial Availability and Announcing Business Model &lt;BR&gt;&lt;/STRONG&gt;&lt;A title=http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx href="http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx"&gt;http://blogs.msdn.com/windowsazure/archive/2009/07/14/confirming-commercial-availability-and-announcing-business-model.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Pricing &amp;amp; Licensing Overview&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/azure/pricing.mspx" rel=nofollow target=_blank mce_href="http://www.microsoft.com/azure/pricing.mspx"&gt;http://www.microsoft.com/azure/pricing.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Na primeira onda teremos &lt;FONT color=#000080&gt;Australia, Austria, Belgium, Canada, Denmark, Finland, France, Germany, Ireland, India, Italy, Japan, Netherlands, New Zealand, Norway, Portugal, Spain, Sweden, Switzerland, UK e United States.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Na segunda onda, prevista para Março de 2010 teremos &lt;FONT color=#000080&gt;&lt;STRONG&gt;Brasil&lt;/STRONG&gt;, Chile, Colombia, Czech Republic, Greece, Hong Kong, Hungary, Israel, South Korea, Malaysia, Mexico, Poland, Puerto Rico, Romania, Singapore e Taiwan.&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;A tabela de preços é a seguinte: &lt;BR&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PricingnoWindowsAzure_14FE2/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PricingnoWindowsAzure_14FE2/image_2.png"&gt;&lt;BR&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PricingnoWindowsAzure_14FE2/image_thumb.png" width=516 height=348 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PricingnoWindowsAzure_14FE2/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Em algum momento deveremos ter simuladores online disponíveis no portal do Azure para o cálculo de diferentes cenários, combinando horas de computação, espaço contratado (storage), banda, transação, etc. Mas já podemos fazer algumas contas em nossas planilhas pessoais. &lt;/P&gt;
&lt;P&gt;Nesse exercício, vale identificar os corretos valores de comparação, não apenas os valores acima com a operação do software. Pense em custos locais (on-premise) que temos hoje, como utilities, manutenção, downtime, custos por falhas, pessoal, etc. Já troquei algumas palavrinhas com o &lt;A href="http://blogs.msdn.com/otavio/" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/otavio/"&gt;Otávio&lt;/A&gt; e o &lt;A href="http://blogs.msdn.com/conde/" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/conde/"&gt;Condé&lt;/A&gt;, sobre o que seriam exemplos de análise. Assim que os primeiros rascunhos fecharem, publico aqui um exemplo para nossas discussões. &lt;/P&gt;
&lt;P&gt;Outro assunto interessante é sobre a qualidade do software escrito. Considerando que alguns custos são diretamente relacionados com o modelo de operação da aplicação, pensar num desenvolvimento que seja otimizado em relação a banda, consolidação de transações, número de mensagens trocadas, etc. passa a ser relevante na conta, não concorda?&lt;/P&gt;
&lt;P&gt;Assim, creio que teremos 2 novas ondas pela frente: uma primeira onde de TI, visando identificar as aplicações mais aderentes ao modelo elástico de computação na nuvem, por indústria (manufatura, finanças, bens e consumo, etc); e uma segunda onda, que deve identificar as otimizações e melhores práticas para o desenvolvimento de aplicações na nuvem, para uma redução de custos associados ao modelo do micro-pagamento e custos por operação. &lt;/P&gt;
&lt;P&gt;Sem dúvida, a nova década da computação já começou…&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;/FONT&gt;&lt;/P&gt;Por enquanto é só! Até o próximo post :) 
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9835542" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Windows+Azure/default.aspx">Windows Azure</category></item></channel></rss>