<?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 : Frameworks</title><link>http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx</link><description>Tags: Frameworks</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>.NET 4.0 e Visual Studio 2010 Beta 2, no ar!</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/28/net-4-0-e-visual-studio-2010-beta-2-no-ar.aspx</link><pubDate>Wed, 28 Oct 2009 22:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9914375</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9914375.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9914375</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9914375</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/NET4.0eVisualStudio2010Beta2noar_11510/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/NET4.0eVisualStudio2010Beta2noar_11510/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; MARGIN-LEFT: 0px; BORDER-TOP: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/NET4.0eVisualStudio2010Beta2noar_11510/image_thumb.png" width=221 height=70 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/NET4.0eVisualStudio2010Beta2noar_11510/image_thumb.png"&gt;&lt;/A&gt; Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;O .NET 4.0 Beta 2 foi disponibilizado recentemente, confira: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft .NET Framework 4 Beta 2&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=DED875C8-FE5E-4CC9-B973-2171B61FE982&amp;amp;displaylang=en" rel=nofollow target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=DED875C8-FE5E-4CC9-B973-2171B61FE982&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=DED875C8-FE5E-4CC9-B973-2171B61FE982&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Da mesma forma, o Visual Studio 2010 Beta 2 também já está disponível para testes: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Visual Studio 2010 Professional Beta 2 - ISO&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=A80DFB5D-51C6-4778-8656-A9FF29D3A132&amp;amp;displaylang=en" rel=nofollow target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=A80DFB5D-51C6-4778-8656-A9FF29D3A132&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=A80DFB5D-51C6-4778-8656-A9FF29D3A132&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Visual Studio 2010 Ultimate Beta 2 - ISO &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=DC333AC8-596D-41E3-BA6C-84264E761B81&amp;amp;displaylang=en" rel=nofollow target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=DC333AC8-596D-41E3-BA6C-84264E761B81&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=DC333AC8-596D-41E3-BA6C-84264E761B81&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E como não podia faltar, o Training Kit da dupla .NET 4 e VS2010 já está no ar: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en" rel=nofollow target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=752CB725-969B-4732-A383-ED5740F02E93&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Nesses pacotes, você vai encontrar novidades sobre C# 4.0, ASP.NET 4.0, WCF e WF, Parallel Extensions (que vai merecer um post dedicado sobre o assunto), Entity Framework, além das novidades do próprio Visual Studio Team System. Vale a pena conferir! &lt;/P&gt;
&lt;P&gt;Em tempo, conversei hoje com uma empresa sobre a construção de frameworks de desenvolvimento e como torná-los desacoplados de tecnologias e versões de plataformas. Isso é possível? Minha resposta é simples: todo framework, seja horizontal ou vertical, está acomplado de alguma forma à plataforma base escolhida. Se você escolhe Java como base para seu framework, estará acomplado ao Java, da mesma forma se escolher .NET, estará acoplado ao .NET. Sem segredo aqui. Isso vai acontecer pelo uso de interfaces como WCF, J2EE, WF, JBOSS, ASP.NET MVC, AJAX, etc.&lt;/P&gt;
&lt;P&gt;Porém, para uma dada plataforma, você pode fazer escolhas na definição interna de seu framework, a fim de minimizar os custos de evolução e manter um acompanhamento leve com o próprio versionamento da plataforma hospedeira. Isso é obtido através de uma boa definição de quais capacidades serão atendidas pelo framework, da definição clara de quais cenários de aplicação serão tratados, evitando-se a construção de frameworks horizontais “balas de prata’, que servem para tudo e para todos, além de cuidados com a camada de persistência, uma boa definição de interfaces de serviços, qual a abordagem para regras de negócio, etc. &lt;/P&gt;
&lt;P&gt;Não se iluda: as plataformas e frameworks horizontais de fornecedores vão continuar evoluindo, espere sempre por mudanças! Prepara-se para elas!&lt;/P&gt;
&lt;P&gt;.NET 4.0 está chegando e com recursos incríveis, fique atento e procure identificar quais capacidades você realmente precisa e pode aproveitar desse novo framework.&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=9914375" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx">Frameworks</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>Architecture in a Box: Frameworks de Desenvolvimento e Blocos de Aplicação</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/21/architecture-in-a-box-frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx</link><pubDate>Wed, 21 Oct 2009 11:20:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9910501</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9910501.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9910501</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9910501</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxFrameworksdeDesenvolvi_12C56/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxFrameworksdeDesenvolvi_12C56/image_2.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/ArchitectureinaBoxFrameworksdeDesenvolvi_12C56/image_thumb.png" width=240 height=119 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxFrameworksdeDesenvolvi_12C56/image_thumb.png"&gt;&lt;/A&gt; Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Na sessão de hoje da série Architecture in a Box, vamos falar de um tema muito constante nas empresas: &lt;STRONG&gt;Frameworks de Desenvolvimento. &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Já tivemos boas discussões por aqui no blog, como &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;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: left; WIDTH: 425px" id=__ss_2301399&gt;
&lt;OBJECT style="MARGIN: 0px" width=425 height=355&gt;&lt;PARAM NAME="movie" VALUE="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab307-frameworksandapplicationblocks-wcamb-091020181140-phpapp01&amp;amp;stripped_title=aab307-frameworks-and-application-blocks-wcamb"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowScriptAccess" VALUE="always"&gt;
&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab307-frameworksandapplicationblocks-wcamb-091020181140-phpapp01&amp;amp;stripped_title=aab307-frameworks-and-application-blocks-wcamb" mce_src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab307-frameworksandapplicationblocks-wcamb-091020181140-phpapp01&amp;amp;stripped_title=aab307-frameworks-and-application-blocks-wcamb" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;DIV style="FONT-FAMILY: tahoma,arial; HEIGHT: 26px; FONT-SIZE: 11px; PADDING-TOP: 2px"&gt;View more &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/" mce_href="http://www.slideshare.net/"&gt;documents&lt;/A&gt; from &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/wcamb" mce_href="http://www.slideshare.net/wcamb"&gt;Waldemir Cambiucci&lt;/A&gt;.&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;A sessão acima consolida algumas questões relevantes quando falamos sobre Frameworks de Desenvolvimento, assim como os principais desafios envolvidos em suas construções. Espero que gostem! &lt;/P&gt;
&lt;P&gt;As próximas sessões do Arch in a Box serão dedicadas para o mundo Azure, finalizando a série. &lt;/P&gt;
&lt;P&gt;Por isso, fiquem a vontade para sugestões de novos temas.&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=9910501" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arch+in+a+Box/default.aspx">Arch in a Box</category></item><item><title>Algumas palavrinhas sobre Domain-Specific Language (DSL)</title><link>http://blogs.msdn.com/wcamb/archive/2009/08/17/algumas-palavrinhas-sobre-domain-specific-language-dsl.aspx</link><pubDate>Mon, 17 Aug 2009 16:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9872318</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9872318.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9872318</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9872318</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada voltei a falar com algumas empresas sobre DSLs e Fábricas de Software. Como muitos já sabem, o tema está bastante relacionado com a construção de frameworks de desenvolvimento, patterns, guias de automação e ainda com a abstração de um domínio para o desenvolvimento de software.&lt;/P&gt;
&lt;P&gt;Uma &lt;STRONG&gt;DSL – Domain Specific Language&lt;/STRONG&gt; – ou linguagem específica de domínio (alguns até preferecem linguagem de domínio específico), é uma ferramenta de geração de software e modelagem, que permite ao usuário a criação de soluções iniciais a partir de artefatos componentes da DSL. Uma DSL pode envolver linguagens de modelagem, templates, referências a frameworks de desenvolvimento, atividades, exemplos de código, etc. &lt;/P&gt;
&lt;P&gt;Em resumo, uma DSL oferece ferramentas para a modelagem de soluções, com grande variabilidade de resultados. Um exemplo já clássico de DSL gráfica é o editor de modelos de dados do &lt;STRONG&gt;Entity Framework&lt;/STRONG&gt;, sobre o Visual Studio 2008, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DomainSpecificLanguageDSLoretorno_10B55/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DomainSpecificLanguageDSLoretorno_10B55/image_6.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/DomainSpecificLanguageDSLoretorno_10B55/image_thumb_2.png" width=506 height=295 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DomainSpecificLanguageDSLoretorno_10B55/image_thumb_2.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Na figura acima você vê do lado esquerdo, os shapes disponíveis na DSL, como &lt;STRONG&gt;Entity&lt;/STRONG&gt;, &lt;STRONG&gt;Association&lt;/STRONG&gt; e &lt;STRONG&gt;Inheritance&lt;/STRONG&gt;, que podem ser adicionados ao modelo desenhado a partir das tabelas do banco (no lado direito da figura). A DSL oferece assim, uma grande flexibilidade para a criação de novos modelos EDMX, em nosso exemplo.&lt;/P&gt;
&lt;P&gt;Mas nem só de DSLs gráficas vive o mercado. Veja a figura abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DomainSpecificLanguageDSLoretorno_10B55/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DomainSpecificLanguageDSLoretorno_10B55/image_4.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/DomainSpecificLanguageDSLoretorno_10B55/image_thumb_1.png" width=544 height=267 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/DomainSpecificLanguageDSLoretorno_10B55/image_thumb_1.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Podemos classificar as DSLs em domínios horizontais e verticais, de acordo com o foco de cenário que deve atender. Também, sua especialização pode ser mais genérica (de propósito geral) ou mais específica (atendendo um cenário determinado). Ainda, uma DSL pode ser gráfica, textual, baseada em formulários ou um modelo híbrido.&lt;/P&gt;
&lt;P&gt;Quando precisamos de uma DSL? Existem cenários de desenvolvimento que envolvem: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;grande complexidade nas operações e métodos; &lt;/LI&gt;
&lt;LI&gt;mudanças frequentes em requisitos e organização do software; &lt;/LI&gt;
&lt;LI&gt;busca por maior agilidade entre a definição e a execução do projeto de software; &lt;/LI&gt;
&lt;LI&gt;muitos pontos de manutenção do projeto, etc. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Em cenários como esses, a aplicação de uma DSL torna-se interessante. Segundo &lt;A href="http://msdn.microsoft.com/en-us/oslo/dd727707.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/oslo/dd727707.aspx"&gt;Martin Fowler&lt;/A&gt;, ainda podemos classificar uma DSL como interna (ou Embedded) e externa. &lt;/P&gt;
&lt;P&gt;Uma &lt;STRONG&gt;DSL interna&lt;/STRONG&gt; pode ser entendida como uma maneira de se projetar uma API ou uma interface no domínio da aplicação, usando uma linguagem mais natural para o desenvolvedor, com palavras dentro de um contexto ou domínio específico. Uma DSL interna aproveita os recursos de uma linguagem host maior, por exemplo, um parser de aplicação feito em C# (veja que não precisamos criar um compilador, regras rígidas de gramática ou descrições para C#, elas já existem).&lt;/P&gt;
&lt;P&gt;Já uma &lt;STRONG&gt;DSL externa&lt;/STRONG&gt; é mais ampla e exige um esforço de implementação maior, pois aplica restrições e considerações de gramáticas e linguagens de programação, como as linguagem &lt;STRONG&gt;Tipo-2&lt;/STRONG&gt; ou &lt;STRONG&gt;Livres de Contexto&lt;/STRONG&gt; (pensando na &lt;A href="http://pt.wikipedia.org/wiki/Hierarquia_de_Chomsky" rel=nofollow target=_blank mce_href="http://pt.wikipedia.org/wiki/Hierarquia_de_Chomsky"&gt;Hierarquia de Chomsky&lt;/A&gt;, lembra dela?). ;) São exemplos de DSLs externas o T-SQL, transformadores XSLT, a linguagem SQL, etc. Sendo linguagens mais completas, oferecem um poder de modelagem para seus usuários muito maior.&lt;/P&gt;
&lt;P&gt;Finalmente, podemos esperar para breve novidades no mundo das DSLs sobre a plataforma Microsoft. A plataforma &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/OSLO/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/OSLO/default.aspx"&gt;OSLO&lt;/A&gt; promete um grande uso dessas ferramentas, para a criação e manipulação de modelos no chamado &lt;STRONG&gt;MDD – Model Driven Design&lt;/STRONG&gt;. Mas esse é um assunto para outro post :)&lt;/P&gt;
&lt;P&gt;DSL é um assunto bem interessante e tem muita coisa publicada na web. Se você ficou interessante em conhecer mais sobre DSL’s, alguns links que eu recomendo são esses:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;DSLs: The Good, the Bad, and the Ugly&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.infoq.com/presentations/Truth-about-DSL" rel=nofollow target=_blank mce_href="http://www.infoq.com/presentations/Truth-about-DSL"&gt;http://www.infoq.com/presentations/Truth-about-DSL&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Como separar semântica e implementação da DSL&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/brasil/msdn/arquitetura/Journal/SeparatingDSLSemanticsfromImplementation.mspx" rel=nofollow target=_blank mce_href="http://www.microsoft.com/brasil/msdn/arquitetura/Journal/SeparatingDSLSemanticsfromImplementation.mspx"&gt;http://www.microsoft.com/brasil/msdn/arquitetura/Journal/SeparatingDSLSemanticsfromImplementation.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introducing Domain Specific Languages - Martin Fowler &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/oslo/dd727707.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/oslo/dd727707.aspx"&gt;http://msdn.microsoft.com/en-us/oslo/dd727707.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Generating Code for DSLs&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://martinfowler.com/articles/codeGenDsl.html" rel=nofollow target=_blank mce_href="http://martinfowler.com/articles/codeGenDsl.html"&gt;http://martinfowler.com/articles/codeGenDsl.html&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;FurtaSpace - www.afurtado.net &lt;/STRONG&gt;(Blog do André Furtado, que tem diversos posts sobre DSLs) &lt;BR&gt;&lt;A href="http://afurtado1980.spaces.live.com/default.aspx" mce_href="http://afurtado1980.spaces.live.com/default.aspx"&gt;http://afurtado1980.spaces.live.com/default.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Frameworks de Desenvolvimento&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx" mce_href="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx"&gt;http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GAT/GAX&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx" mce_href="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx"&gt;http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Uma última pergunta: você tem usado DSLs em seu dia-a-dia como arquiteto? Quais DSLs têm sido mais importantes? Consegue reconhecê-las? &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=9872318" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx">GAT / GAX</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/OSLO/default.aspx">OSLO</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/DSL/default.aspx">DSL</category></item><item><title>ArqCast Brasil falando sobre Frameworks de Desenvolvimento</title><link>http://blogs.msdn.com/wcamb/archive/2009/07/16/arqcast-brasil-falando-sobre-frameworks-de-desenvolvimento.aspx</link><pubDate>Fri, 17 Jul 2009 00:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9836145</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9836145.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9836145</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9836145</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Essa semana publicamos mais um vídeo no &lt;STRONG&gt;Channel9 Brasil&lt;/STRONG&gt;, sobre &lt;STRONG&gt;Frameworks de Desenvolvimento&lt;/STRONG&gt;. Foi um bate-papo interessante que tive com o &lt;A href="http://blogs.technet.com/markuschristen/" rel=nofollow target=_blank mce_href="http://blogs.technet.com/markuschristen/"&gt;Markus&lt;/A&gt;, que achamos legal compartilhar com vocês. &lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://channel9.msdn.com/posts/Markus+Christen/ArqCast-Brasil-Frameworks-de-Desenvolvimento/" rel=nofollow target=_blank mce_href="http://channel9.msdn.com/posts/Markus+Christen/ArqCast-Brasil-Frameworks-de-Desenvolvimento/"&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/ArqCastBrasilfalandosobreFrameworksdeDes_D2A5/image_5.png" width=260 height=200 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArqCastBrasilfalandosobreFrameworksdeDes_D2A5/image_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title=http://channel9.msdn.com/posts/Markus+Christen/ArqCast-Brasil-Frameworks-de-Desenvolvimento/ href="http://channel9.msdn.com/posts/Markus+Christen/ArqCast-Brasil-Frameworks-de-Desenvolvimento/" rel=nofollow target=_blank mce_href="http://channel9.msdn.com/posts/Markus+Christen/ArqCast-Brasil-Frameworks-de-Desenvolvimento/"&gt;http://channel9.msdn.com/posts/Markus+Christen/ArqCast-Brasil-Frameworks-de-Desenvolvimento/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse video é uma sequência do post publicado também essa semana, &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/07/15/frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/07/15/frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx"&gt;aqui&lt;/A&gt;! Comentários e sugestões, fiquem a vontade! &lt;/P&gt;
&lt;P&gt;Estamos com vários temas em mente para os próximos &lt;STRONG&gt;ArqCasts&lt;/STRONG&gt;, mas aceitamos idéias e sugestões! Aproveitem!!!&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=9836145" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/ArqCast/default.aspx">ArqCast</category></item><item><title>Frameworks de desenvolvimento e blocos de aplicação</title><link>http://blogs.msdn.com/wcamb/archive/2009/07/15/frameworks-de-desenvolvimento-e-blocos-de-aplica-o.aspx</link><pubDate>Wed, 15 Jul 2009 14:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9834172</guid><dc:creator>wcamb</dc:creator><slash:comments>4</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9834172.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9834172</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9834172</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada estive com alguns times falando sobre frameworks de desenvolvimento. Esse assunto está sempre em alta, principalmente em tempos de crise, quando produtividade, padronização e qualidade de software ganham uma certa importância.&lt;/P&gt;
&lt;P&gt;Existem várias questões envolvidas em projetos de frameworks, tanto que já tivemos por aqui um post sobre esses desafios, &lt;A href="http://blogs.msdn.com/wcamb/archive/2007/12/17/desafios-na-constru-o-de-frameworks-parte-1.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2007/12/17/desafios-na-constru-o-de-frameworks-parte-1.aspx"&gt;confira&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;Uma pergunta que surgiu durante a discussão foi sobre a diferença entre &lt;STRONG&gt;blocos de aplicações&lt;/STRONG&gt; e &lt;STRONG&gt;frameworks de desenvolvimento&lt;/STRONG&gt;. Pergunta interessante, respondi da seguinte maneira…&lt;/P&gt;
&lt;P&gt;Podemos definir &lt;STRONG&gt;blocos de aplicações&lt;/STRONG&gt; como peças de código que são comuns em diversos projetos de software. Exemplos de blocos são componentes de cache, logging, validação, monitoração, etc. Uma empresa que coleciona blocos de aplicações pode reaproveitá-los durante o desenvolvimento de diversos sistemas. Ao longo do tempo, para um mesmo domínio de aplicação teremos diversas aplicações utilizando os mesmos blocos construtivos, conforme a necessidade. Ganha-se com o reuso e com a previsibilidade de comportamento desses componentes, que amadurecem ao longo do tempo, com as constantes intervenções e depurações. Veja a figura abaixo que ilustra esse cenário:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Frameworksdedesenvolvimentoeblocosdeapli_1458D/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/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_thumb.png" width=523 height=364 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Já um &lt;STRONG&gt;framework de desenvolvimento&lt;/STRONG&gt; envolve uma solução inicial dentro de um domínio de solução ou problema. Essa solução inicial envolve certos blocos construtivos que ajudam na solução, como componentes de acesso a dados, configuração, logging, monitoração, etc. muitas vezes os mesmos componentes que antes funcionavam apenas como blocos de aplicação. O ponto chave desse cenário é a coordenação dos vários elementos dentro do mesmo domínio, fornecendo um ambiente para a construção de nossas aplicações. O framework oferece assim uma solução inicial para novas aplicações. Assim, ilustro um framework de desenvolvimento através da figura abaixo, onde cada aplicação é imersa dentro do ambiente fornecido pelo framework, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_4.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/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_thumb_1.png" width=512 height=337 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Frameworksdedesenvolvimentoeblocosdeapli_1458D/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;O que vocês acham? Compraram as definições acima?&lt;/P&gt;
&lt;P&gt;Seja para a adoção de blocos de aplicação ou para a construção de frameworks de desenvolvimento, continuo sugerindo a &lt;STRONG&gt;Enterprise Library 4.1&lt;/STRONG&gt; como um bom começo. Ela oferece bons exemplos e alguns cenários de forma antecipada, economizando muita codificação durante nossos projetos.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Para pensar:&lt;/STRONG&gt; &lt;FONT color=#000080&gt;atualmente, estamos com o .NET 3.5 SP1 e em breve o .NET 4.0 será lançado. Novos frameworks e templates têm sido anunciados como Velocity, .NET RIA Services, Sync Framework, Live Framework, entre outros. Esse processo é contínuo e com certeza, novos protocolos e modelos de programação devem surgir ao longo dos anos. Oslo também desponta no horizonte próximo. Por isso, ao projetar seu framework de desenvolvimento, pense sempre em &lt;STRONG&gt;MUDANÇA&lt;/STRONG&gt;, e até espere por ela!!!&lt;/FONT&gt;&amp;nbsp;&lt;FONT color=#000080&gt;Isso fará seu projeto mais flexível, suportando adaptações futuras, versionamento de interfaces, configuração dinâmica e composição de funcionalidades.&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Se o ritmo continuar o mesmo, 2009 (.NET 4.0), 2010 (.NET 5.0), 2011 (.NET 6.0), 2012 (.NET 7.0), 2013… brincadeirinha, mas você já entendeu, certo? &lt;/P&gt;
&lt;P&gt;Como já disse &lt;A href="http://pt.wikipedia.org/wiki/Her%C3%A1clito_de_%C3%89feso" rel=nofollow target=_blank mce_href="http://pt.wikipedia.org/wiki/Her%C3%A1clito_de_%C3%89feso"&gt;Heráclito de Éfeso&lt;/A&gt;, 500 a.C. “&lt;STRONG&gt;Panta rhei&lt;/STRONG&gt;”, isto é, “&lt;STRONG&gt;Tudo flui&lt;/STRONG&gt;”, “&lt;STRONG&gt;Tudo é movimento&lt;/STRONG&gt;”, “&lt;STRONG&gt;Tudo muda&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=9834172" 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/Frameworks/default.aspx">Frameworks</category></item><item><title>Desafios no mercado brasileiro e algumas ações da Microsoft</title><link>http://blogs.msdn.com/wcamb/archive/2008/12/11/desafios-no-mercado-brasileiro-e-algumas-a-es-da-microsoft.aspx</link><pubDate>Thu, 11 Dec 2008 20:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9197578</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9197578.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9197578</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9197578</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Seguindo a linha "...&lt;EM&gt;o comentário que virou post&lt;/EM&gt;", vou aproveitar os comentários do leitor Roberto, que colocou várias questões importantes sobre o impacto da evolução da plataforma Microsoft no mercado brasileiro. Grande Roberto, segue aqui algumas considerações que faço a partir de seus comentários, muito relevantes. Vamos lá:&lt;/P&gt;
&lt;P&gt;É fato: temos algumas empresas no mercado brasileiro que ainda estão em versões antigas do .NET Framework, seja 1.1, 2.0 ou mesmo 3.0; realmente, a velocidade das mudanças e inovações de hoje têm feito com que até o&lt;STRONG&gt; &lt;/STRONG&gt;.NET Framework 3.0, publicado em novembro de 2006, seja chamado de "antigo" pelo mercado. Falando em evolução do .NET Framework, compilei um roadmap para suas principais versões, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=314 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_thumb.png" width=509 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nota: &lt;EM&gt;no desenho acima, destaquei apenas os principais RTM's, sem colocar alguns Service Packs, Hot Fixes ou Betas do Framework. Também coloquei o .NET 4.0, que deve chegar no final de 2009, acompanhando o VS2010.&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Com certeza, nossa área tem evoluído muito rapidamente nos últimos anos. Na platafoma Microsoft, entre o &lt;STRONG&gt;PDC 2005&lt;/STRONG&gt; e o &lt;STRONG&gt;PDC 2008&lt;/STRONG&gt; por exemplo, vimos lançamentos como Windows Vista, SQL Server 2005, .NET 3.0, SQL Server 2008, .NET 3.5, .NET 3.5 SP1 além da consolidação de conceitos como SOA, SAAS, SOI, WEB 2.0, RIA entre outros.&lt;/P&gt;
&lt;P&gt;Temos então um cenário interessante: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;as inovações são inúmeras e disponibilizadas cada vez mais rapidamente (no mínimo anualmente) para o mercado pelos fornecedores de plataforma e software (sem falar nas inovações de hardware, dispositivos, plataformas embarcadas, telefonia, etc. que possuem um impacto direto no pervasive computing, na usabilidade e acessibilidade de nossos usuários); &lt;/LI&gt;
&lt;LI&gt;muitas empresas têm focado a redução de custos, minimizando treinamentos ou atualizações periódicas; &lt;/LI&gt;
&lt;LI&gt;muitas empresas possuem hoje equipes de desenvolvimento que dominam o negócio da empresa, mas que não tiveram tempo suficiente para acompanhar as atualizações de plataforma desses últimos anos; &lt;/LI&gt;
&lt;LI&gt;o mercado recebe anualmente novos desenvolvedores recém formados, que conhecem algumas novas tecnologias, mas ainda não têm experiências verticais em cenários de indústria, isto é, não dominam o negócio da empresa; &lt;/LI&gt;
&lt;LI&gt;e finalmente, existe um desalinhamento entre a velocidade com que o mercado recebe atualizações e a velocidade com que as empresas no Brasil absorvem essas atualizações, por uma série de fatores; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Resultado: &lt;STRONG&gt;Grande Desafio!&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Nesse contexto, a Microsoft tem procurado apoiar o mercado através de diversas maneiras, localizando muito material para o Brasil. São dezenas de programas, eventos e canais de comunicação para as várias comunidades, como ITPro's, Desenvolvedores, Arquitetos, Parceiros, Empresas, Acadêmicos, etc. O objetivo de todos esses programas é um só: fornecer o máximo de conteúdo que ajude os vários segmentos de profissionais de TI em suas empresas nessa constante evolução. &lt;/P&gt;
&lt;P&gt;Para ilustrar, veja alguns exemplos de material publicado pela Microsoft para o mercado brasileiro, focando &lt;STRONG&gt;desenvolvedores&lt;/STRONG&gt; e &lt;STRONG&gt;arquitetos&lt;/STRONG&gt;:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Portal do MSDN e seus vários DEV CENTER's&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/" target=_blank mce_href="http://www.msdnbrasil.com.br/"&gt;http://www.msdnbrasil.com.br/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Portal de Arquitetura do MSDN&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A title=http://www.microsoft.com/brasil/msdn/arquitetura/home.mspx href="http://www.microsoft.com/brasil/msdn/arquitetura/home.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/arquitetura/home.mspx"&gt;http://www.microsoft.com/brasil/msdn/arquitetura/home.mspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Centro de Informações para Desenvolvedores Iniciantes&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/beginner/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/beginner/default.aspx"&gt;http://msdn.microsoft.com/pt-br/beginner/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Academia .NET Protector &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/academianetprotector/" target=_blank mce_href="http://www.msdnbrasil.com.br/academianetprotector/"&gt;http://www.msdnbrasil.com.br/academianetprotector/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Desenvolvedor 5 Estrelas&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/cinco_estrelas/" target=_blank mce_href="http://www.msdnbrasil.com.br/cinco_estrelas/"&gt;http://www.msdnbrasil.com.br/cinco_estrelas/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Webcasts do MSDN &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/msdn/eventos/eventos.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/eventos/eventos.mspx"&gt;http://www.microsoft.com/brasil/msdn/eventos/eventos.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Media Center do MSDN &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/microsoft.mediacenter/mediacenter.aspx" target=_blank mce_href="http://www.msdnbrasil.com.br/microsoft.mediacenter/mediacenter.aspx"&gt;http://www.msdnbrasil.com.br/microsoft.mediacenter/mediacenter.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MSDN Experience&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx" target=_blank mce_href="http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx"&gt;http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Artigos de Arquitetura do MSDN &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.microsoft.com/brasil/msdn/arquitetura/articles.mspx href="http://www.microsoft.com/brasil/msdn/arquitetura/articles.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/arquitetura/articles.mspx"&gt;http://www.microsoft.com/brasil/msdn/arquitetura/articles.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Developer Excellence Award &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/DevExcellenceAward/default.aspx" target=_blank mce_href="http://www.msdnbrasil.com.br/DevExcellenceAward/default.aspx"&gt;http://www.msdnbrasil.com.br/DevExcellenceAward/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Revista MSDN Magazine em Português &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/magazine/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/magazine/default.aspx"&gt;http://msdn.microsoft.com/pt-br/magazine/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fóruns MSDN&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/msdn/forum/forum.aspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/forum/forum.aspx"&gt;http://www.microsoft.com/brasil/msdn/forum/forum.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Comunidade INETA&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.inetabr.org/" target=_blank mce_href="http://www.inetabr.org/"&gt;http://www.inetabr.org/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Porta 25 - Open Source Software Lab&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://porta25.technetbrasil.com.br/porta25/Home/tabid/36/EntryID/77/Default.aspx" target=_blank mce_href="http://porta25.technetbrasil.com.br/porta25/Home/tabid/36/EntryID/77/Default.aspx"&gt;http://porta25.technetbrasil.com.br/porta25/Home/tabid/36/EntryID/77/Default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Quando fiz esse levantamento com o &lt;A href="http://blogs.msdn.com/rogerioc/" target=_blank mce_href="http://blogs.msdn.com/rogerioc/"&gt;Rogério Cordeiro&lt;/A&gt;, confesso que me surpreendi com as inúmeras presenças e ações da Microsoft no meio online.&lt;/P&gt;
&lt;P&gt;Focando &lt;STRONG&gt;infra-estrutura&lt;/STRONG&gt;, já que arquitetura de soluções envolve plataforma de desenvolvimento e plataforma de infra-estrutura, veja quanto material:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Portais de Tecnologia Technet – TECHCENTERS&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://technet.microsoft.com/pt-br/bb421517.aspx" target=_blank mce_href="http://technet.microsoft.com/pt-br/bb421517.aspx"&gt;http://technet.microsoft.com/pt-br/bb421517.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Academias TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/technet/academia/default.aspx" target=_blank mce_href="http://www.microsoft.com/brasil/technet/academia/default.aspx"&gt;http://www.microsoft.com/brasil/technet/academia/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Profissional 5 Estrelas (Infra-estrutura – TECHNET)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.technetbrasil.com.br/cincoestrelas/" target=_blank mce_href="http://www.technetbrasil.com.br/cincoestrelas/"&gt;http://www.technetbrasil.com.br/cincoestrelas/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Webcasts do TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/technet/eventos/webcasts/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/technet/eventos/webcasts/default.mspx"&gt;http://www.microsoft.com/brasil/technet/eventos/webcasts/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;TECHNET Experience&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/technet/experience/default.aspx" target=_blank mce_href="http://www.microsoft.com/brasil/technet/experience/default.aspx"&gt;http://www.microsoft.com/brasil/technet/experience/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;IT HERO&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/technet/ithero/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/technet/ithero/default.mspx"&gt;http://www.microsoft.com/brasil/technet/ithero/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Fóruns TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://forums.microsoft.com/technet-br/default.aspx?siteid=29" target=_blank mce_href="http://forums.microsoft.com/technet-br/default.aspx?siteid=29"&gt;http://forums.microsoft.com/technet-br/default.aspx?siteid=29&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Comunidades TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://technet.microsoft.com/pt-br/bb291006.aspx" target=_blank mce_href="http://technet.microsoft.com/pt-br/bb291006.aspx"&gt;http://technet.microsoft.com/pt-br/bb291006.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;TECHNET Magazine&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://technet.microsoft.com/pt-br/magazine/default.aspx" target=_blank mce_href="http://technet.microsoft.com/pt-br/magazine/default.aspx"&gt;http://technet.microsoft.com/pt-br/magazine/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Blogs TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.technetbrasil.com.br/blog/Blogs.aspx" target=_blank mce_href="http://www.technetbrasil.com.br/blog/Blogs.aspx"&gt;http://www.technetbrasil.com.br/blog/Blogs.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Videocasts TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/technet/videocast/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/technet/videocast/default.mspx"&gt;http://www.microsoft.com/brasil/technet/videocast/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Calendário de Eventos TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/technet/EventsCalendar/Default.aspx" target=_blank mce_href="http://www.microsoft.com/brasil/technet/EventsCalendar/Default.aspx"&gt;http://www.microsoft.com/brasil/technet/EventsCalendar/Default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Central de Avaliações TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://technet.microsoft.com/en-ca/evalcenter/default.aspx" target=_blank mce_href="http://technet.microsoft.com/en-ca/evalcenter/default.aspx"&gt;http://technet.microsoft.com/en-ca/evalcenter/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Laboratórios Virtuais TECHNET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://technet.microsoft.com/en-ca/virtuallabs/default.aspx" target=_blank mce_href="http://technet.microsoft.com/en-ca/virtuallabs/default.aspx"&gt;http://technet.microsoft.com/en-ca/virtuallabs/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A lista acima foi outra surpresa obtida com o &lt;A href="http://blogs.technet.com/rodias/" target=_blank mce_href="http://blogs.technet.com/rodias/"&gt;Rodrigo Dias&lt;/A&gt;, nosso especialista em gerenciamento e infra-estrutura.&lt;/P&gt;
&lt;P&gt;De forma presencial, tivemos ainda:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Tech-Ed Brasil 2008&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.teched.com.br/" target=_blank mce_href="http://www.teched.com.br/"&gt;http://www.teched.com.br/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Heroes {Community} Launch&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/msdn/eventos/hcl/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/eventos/hcl/default.mspx"&gt;http://www.microsoft.com/brasil/msdn/eventos/hcl/default.mspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Mix 2007 e 2008&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/remix/" target=_blank mce_href="http://www.msdnbrasil.com.br/remix/"&gt;http://www.msdnbrasil.com.br/remix/&lt;/A&gt; e &lt;A href="http://www.msdnbrasil.com.br/mixessentials/" target=_blank mce_href="http://www.msdnbrasil.com.br/mixessentials/"&gt;http://www.msdnbrasil.com.br/mixessentials/&lt;/A&gt;&lt;/P&gt;&lt;STRONG&gt;RAF 2008 - Regional Architect Forum Brasil &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/blog/blog_tag_RAF.aspx" target=_blank mce_href="http://www.msdnbrasil.com.br/blog/blog_tag_RAF.aspx"&gt;http://www.msdnbrasil.com.br/blog/blog_tag_RAF.aspx&lt;/A&gt; 
&lt;P&gt;&lt;STRONG&gt;Eventos presenciais da comunidade técnica&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/brasil/msdn/EventsCalendar/Default.aspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/EventsCalendar/Default.aspx"&gt;http://www.microsoft.com/brasil/msdn/EventsCalendar/Default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E para o meio &lt;STRONG&gt;Acadêmico&lt;/STRONG&gt; também são muitos eventos e programas ativos, como Células Acadêmicas, Student Partners, Student to Business, DreamSpark, apoio aos professores e universidades, entre outros. Veja mais detalhes no link abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft | Educação &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.microsoft.com/brasil/educacao/comunidadeacademica/default.mspx href="http://www.microsoft.com/brasil/educacao/comunidadeacademica/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/educacao/comunidadeacademica/default.mspx"&gt;http://www.microsoft.com/brasil/educacao/comunidadeacademica/default.mspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Ainda sobre o meio acadêmico, não podemos esquecer o &lt;STRONG&gt;Imagine Cup&lt;/STRONG&gt;, onde o Brasil sempre faz bonito com seus alunos e participação:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ImagineCup 2008 &lt;BR&gt;&lt;/STRONG&gt;&lt;A title=http://www.microsoft.com/brasil/educacao/comunidadeacademica/imaginecup/2008/default.mspx href="http://www.microsoft.com/brasil/educacao/comunidadeacademica/imaginecup/2008/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/educacao/comunidadeacademica/imaginecup/2008/default.mspx"&gt;http://www.microsoft.com/brasil/educacao/comunidadeacademica/imaginecup/2008/default.mspx&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Por último, ainda temos o apoio da Microsoft para empresas &lt;STRONG&gt;Start-Up's&lt;/STRONG&gt;, um programa mundial que está chegando para o Brasil, muito recente... esse é quente!!! :)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Programa Microsoft SOL &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.microsoftsol.com.br/ href="http://www.microsoftsol.com.br/" target=_blank mce_href="http://www.microsoftsol.com.br/"&gt;http://www.microsoftsol.com.br/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Enfim, anualmente temos muitos eventos e a muita presença online, muito material e muitos canais abertos para as várias comunidades de TI. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Reflexões sobre o futuro&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_14.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 10px 5px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=86 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_thumb_6.png" width=144 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_thumb_6.png"&gt;&lt;/A&gt; Pessoalmente, creio que 2009 será um grande ano para a plataforma Microsoft, com os diversos lançamentos previstos. É verdade, teremos novas tecnologias, novas versões de produtos, frameworks e oportunidades diversas para as empresas clientes, fornecedores de software, hosters e consumidores finais. É um compromisso da Microsoft com a inovação. Ao mesmo tempo, podemos esperar muito material localizado, entre webcasts, artigos, how to's, fóruns, além dos eventos presenciais que irão continuar. Os blogs e discussões online são parte desse apoio. &lt;/P&gt;
&lt;P&gt;Creio também que 2009 será um grande ano para a arquitetura de soluções no Brasil. Como arquitetos, seremos confrontados com um cenário desafiador na economia, o que exigirá soluções mais ágeis, de valor, que apóiem de forma concreta o negócio e a operação de nossas empresas. Por isso, vejo como uma grande oportunidade a aplicação de inovações e novas tecnologias, que tragam uma maior produtividade e qualidade na construção de software para as várias verticais. Soluções como Microsoft Blueprint, Multi-Enterprise Business Application, ou mesmo o uso de um Service Bus no Windows Azure ou o SQL Services para dados na nuvem, são exemplos de inovações de grande impacto. Sem falar de frameworks mais maduros como WPF, WCF, WF ou os mais recentes Entity Framework, ADO.NET Data Services, ASP.NET Dynamic Data, ou ainda os recém chegados Velocity, Sync, Live Framework, etc. É muita inovação!!!&lt;/P&gt;
&lt;P&gt;Mas o desafio realmente existe (o Roberto tem razão). Porém, temos um bom material disponível que pode auxiliar as empresas brasileiras nesse ponta-pé inicial. Tenho ouvido também sobre iniciativas de departamentos de RH, que estão usando muito desse material na definição de planos de treinamento para seus funcionários, o que é ótimo e muito pragmático. Veja por exemplo o site do MSDN Experience:&lt;/P&gt;&lt;STRONG&gt;MSDN Experience&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx" target=_blank mce_href="http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx"&gt;http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx&lt;/A&gt; 
&lt;P&gt;Depois dessas reflexões, vamos voltar para as perguntas do Roberto:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Estamos (ou estaremos) preparados para isso ?&amp;nbsp; &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 10px 0px 0px 10px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=100 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_thumb_1.png" width=136 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Desafiosnomercadobrasileirooutrocomentri_FBCF/image_thumb_1.png"&gt;&lt;/A&gt; Já tenho notícias de algumas empresas que estão se preparando para esses novos frameworks, avaliando .NET 3.5 SP1 com Velocity, Sync, Entity Framework, etc. Também, tivemos um evento sobre o Windows Azure recentemente (aqui em SP) e muitas pessoas responderam que pretendem estudar os serviços da plataforma na nuvem já em 2009, o que é muito animador. Esse é o espírito: manter a antena ligada sobre o que está chegado na plataforma Microsoft. O importante é não seguir o ANTI-PATTERN do desenho acima. :)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;O que você acha desse cenário "confuso" aqui no Brasil ? &lt;BR&gt;&lt;/STRONG&gt;O Brasil é um país complexo, cheio de oportunidades e contrastes. A realidade brasileira também é regionalizada, variando bastantes de estado para estado. Não é um cenário "confuso", diria que complexo, pois as variáveis e racionais são muitas. Cada empresa precisa mesmo definir bem sua estratégia para 2009 e para o futuro.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Existem planos da Microsoft para um aculturamento, treinamento e divulgação da tecnologia para o pessoal aqui ? Seja na forma de incursão acadêmica (caminho mais difícil e sólido) ou através de iniciativas independentes ?&lt;/STRONG&gt; &lt;BR&gt;Tentei responder essa pergunta com a lista acima e um pouco de reflexão. Existe um esforço constante da Microsoft em divulgar esse material, através de campanhas, eventos e ações de marketing. Espero ter colaborado para isso. E convido a todos para avaliarem esse material. O feedback de vocês é a maior força de mudança e transformação, seja junto aos fornecedores ou dentro de suas empresas. &lt;/P&gt;
&lt;P&gt;Já terminando, sugiro a todos (arquitetos e líderes de equipe) que reflitam sobre o plano de treinamento nas empresas, o plano de carreira para nossos desenvolvedores e o plano de atualização para nossa TI, para que todos possamos aproveitar as dezenas de inovações que fornecedores como a Microsoft têm disponibilizado. Gerenciamento de pessoas e plano de capacitação de equipes também é papel do arquiteto. Temos muito que colaborar com nossas impressões e direções.&lt;/P&gt;
&lt;P&gt;Espero que esse blog seja uma contribuição nesse processo. Desde já, agradeço a todos os comentários que têm possibilitado bate-papos como esse. &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post ou comentário que virou post... :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9197578" 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/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>.NET Framework e seus recursos : evoluir é preciso...</title><link>http://blogs.msdn.com/wcamb/archive/2008/12/02/net-framework-e-seus-recursos-evoluir-preciso.aspx</link><pubDate>Tue, 02 Dec 2008 18:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9164937</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9164937.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9164937</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9164937</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Alguns posts atrás, falamos sobre os desafios para a evolução de soluções baseadas em versões antigas do .NET Framework. Na verdade, para muitas empresas essas versões ainda são plataformas correntes, devido uma série de fatores históricos de cada empresa ou indústria. Veja o post &lt;A href="http://blogs.msdn.com/wcamb/archive/2008/11/06/evoluindo-frameworks-dom-sticos-por-onde-come-ar.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2008/11/06/evoluindo-frameworks-dom-sticos-por-onde-come-ar.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;O grande risco do adiamento dessa atualização é a perda de agilidade para o negócio, além da impossibilidade de utilização de recursos e avanços oferecidos pelas novas tecnologias.&lt;/P&gt;
&lt;P&gt;Para relembrar os frameworks disponíveis na plataforma .NET e suas versões, veja a figura abaixo (atualizei a figura em relação ao post anterior):&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=511 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_thumb_1.png" width=470 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Cada atualização do .NET Framework, a partir da versão 2.0, adicionou novos recursos e frameworks, acompanhando necessidades de mercado ou inovações oferecidas pela plataforma, como protocolos, bindings, estruturas, etc. Porém, ao longo dessa evolução, a &lt;EM&gt;CLR - Commun Language Runtime&lt;/EM&gt; foi mantida, o que garantiu a compatibilidade entre todas as versões.&lt;/P&gt;
&lt;P&gt;Além desses pacotes, outras tecnologias estão em desenvolvimento como &lt;STRONG&gt;Velocity -&lt;/STRONG&gt; para construção de uma camada de cache unificado, &lt;STRONG&gt;Sync -&lt;/STRONG&gt; para o tratamento de sessões de sincronização entre participantes de uma solução, além de melhorias adicionadas ao WCF 4.0, WF 4.0, Linguagem C#, etc. Tem muita coisa chegando em 2009, sem falar na interoperabilidade com a plataforma de serviços do &lt;STRONG&gt;Windows Azure&lt;/STRONG&gt; (&lt;EM&gt;in the cloud&lt;/EM&gt;), como o SQL Services, .NET Services, Live Services, etc.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_11.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_11.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=262 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_thumb_4.png" width=366 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/.NETFrameworkeseusrecursos_13BCE/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Estive recentemente com uma empresa onde a área de usuários exigiu a migração de uma interface VB6 para &lt;STRONG&gt;WPF - Windows Presentation Foundation&lt;/STRONG&gt;, para uma aplicação cliente desktop. O desempenho era bom, a aplicação era madura, os problemas eram mínimos, não havia de fato problema que justificasse mudar a aplicação. Mas o que chamou a atenção dos usuários foi a possibilidade de construir uma experiência de usuário mais rica, ao estilo &lt;STRONG&gt;RIA - Rich Internet Application&lt;/STRONG&gt;, que esses mesmos usuários já utilizam na Web, no dia-a-dia. Customização de interface, gráficos dinâmicos, novas mídias, streamming, protocolos do Web 2.0, como POX, REST, sindicalização, etc, são inúmeros os recursos que podem ser adicionados na nova interface de hoje, suportando os conceitos de UX (Usabilidade). &lt;/P&gt;
&lt;P&gt;Podemos até adaptar uma expressão da área de marketing que anda muito em alta, a chamada "&lt;STRONG&gt;OPEN brand&lt;/STRONG&gt;". Falaríamos então de "&lt;STRONG&gt;OPEN interface"&lt;/STRONG&gt;, um acrônimo para On-demand (sob-demanda), Personal (pessoal), Engaging (Envolvente) e Networks (Redes). Uma interface que aproveita a essência da força do Web 2.0, com as novas tendências de adaptação e flexibilidade entre ambientes on-premise e in the cloud. &lt;/P&gt;
&lt;P&gt;Por isso, se sua empresa ainda trabalha com tecnologias anteriores ao .NET 3.0, recomendo começar um plano estratégico de evolução/atualização tecnológica. Veja que esse plano não deve relacionar todas as aplicações para recompilação apenas. Antes, vale identificar quais cenários são relevantes para a atualização, quais aplicações podem ser consolidadas, quais aplicações possuem um tempo de vida curto e ainda quais sistemas são estratégicos e merecem um cuidado especial ou prioritário.&lt;/P&gt;
&lt;P&gt;Veja se você concorda comigo: Nossos usuários estão mais exigentes, assim como o mercado, em busca do negócio ágil. Verdade? Planejar o futuro para uma evolução constante do ambiente de TI, assim como acompanhar as tendências no setor é nossa obrigação como arquitetos. Verdade? Aplicações de composição integrando serviços locais e serviços remotos, com experiência rica é uma tendência. Verdade? :)&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=9164937" 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/Frameworks/default.aspx">Frameworks</category></item><item><title>Evoluindo frameworks domésticos : por onde começar?</title><link>http://blogs.msdn.com/wcamb/archive/2008/11/06/evoluindo-frameworks-dom-sticos-por-onde-come-ar.aspx</link><pubDate>Fri, 07 Nov 2008 00:36:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9050619</guid><dc:creator>wcamb</dc:creator><slash:comments>8</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9050619.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9050619</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9050619</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Esta semana estive com alguns arquitetos, falando sobre como evoluir os frameworks domésticos que estão em produção nas empresas, mas que ainda utilizam recursos do .NET 2.0 ou algum namespace do .NET 3.0 apenas. Essa discussão é grande e veja que ainda existem empresas usando VB5, VB6, ASP, .NET 1.0, 1.1 ou .NET 2.0 em suas aplicações. Mas vamos focar os frameworks neste post.&lt;/P&gt;
&lt;P&gt;Realmente, desde o lançamento do .NET 2.0, tivemos uma série de novos pacotes e namespaces, que ajudam no desenvolvimento de aplicações cada vez mais sofisticadas. Parte dessa evolução foi demandada pelo mercado, como REST e AJAX. Outras, foram evoluções importantes para o modelo de programação na plataforma Microsoft, como o próprio &lt;STRONG&gt;WCF - Windows Communidation Foundation&lt;/STRONG&gt;. Vale lembrar também que a própria plataforma amadureceu, diante dos vários cenários presentes no mercado.&lt;/P&gt;
&lt;P&gt;Como já vimos em posts passados (&lt;A href="http://blogs.msdn.com/wcamb/archive/2007/12/17/desafios-na-constru-o-de-frameworks-parte-1.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2007/12/17/desafios-na-constru-o-de-frameworks-parte-1.aspx"&gt;esse&lt;/A&gt;, por exemplo), existem diversos desafios na construção e manutenção de bibliotecas, blocos de aplicações e frameworks de desenvolvimento, sejam horizontais ou verticais. Um dos grandes desafios é a manutenção de sua atualização diante de novos recursos do mercado, como por exemplo, novos frameworks associados ao .NET na plataforma Microsoft.&lt;/P&gt;
&lt;P&gt;Para contextualizar nossa discussão, veja o diagrama abaixo, onde destaco o .NET Framework e sua evolução:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=521 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image_thumb.png" width=480 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note que novos recursos foram sendo adicionados na pilha .NET ao longo de suas versões. Ainda, alguns novos pacotes estão faltando no desenho acima, como o &lt;STRONG&gt;SYNC Framework&lt;/STRONG&gt;, o &lt;STRONG&gt;Velocity&lt;/STRONG&gt;, o &lt;STRONG&gt;Geneva Framework&lt;/STRONG&gt;, etc. Para todas as versões acima, estamos trabalhando sobre a mesma &lt;STRONG&gt;CLR - Common Language Runtime,&lt;/STRONG&gt; o que significa que não existe quebra de compatibilidade para uma aplicação durante sua evolução de upgrade. O próprio Visual Studio 2008 já compila para .NET 2.0, 3.0 e 3.5 como framework alvo.&lt;/P&gt;
&lt;P&gt;Semana passada vimos uma nova enxurrada de frameworks, pacotes de desenvolvimento e serviços que estarão disponíveis em breve para nossas aplicações. Poderemos integrar o ambiente cliente, o ambiente enterprise e o ambiente na nuvem, utilizando recursos distintos e complementares, compondo soluções de acordo com nossas necessidades. Só para para lembrar, veja o que está chegando com a plataforma de serviços Azure... :)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image5.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image5.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=246 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image5_thumb.png" width=523 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Evoluindoframeworksporondecomear_11EB7/image5_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Bastante coisa, não é mesmo? Mas voltemos para nossa pergunta básica: &lt;STRONG&gt;Como evoluir nosso velho framework de desenvolvimento doméstico de todo dia?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Algumas recomendações que faço nesse momento são:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Se você ainda trabalha com Web Services na plataforma .NET 2.0 (extensões &lt;EM&gt;.asmx&lt;/EM&gt;), ou ainda possui soluções via .NET Remoting, comece com algumas provas de conceito sobre o &lt;STRONG&gt;WCF - Windows Communication Foundation&lt;/STRONG&gt;. Podemos resumir que WCF é hoje a infra-estrutura recomendada para a comunicação entre sistema, processos e aplicações na plataforma Microsoft. Uma evolução natural de seu framework em NET 2.0 para .NET 3.x é substituir .NET Remoting e Web Services por interfaces em WCF. Avalie os &lt;STRONG&gt;bindings&lt;/STRONG&gt; diferentes para cada &lt;STRONG&gt;serviço &lt;/STRONG&gt;e selecione o que melhor responde às necessidades de seu negócio. Veja as considerações sobre balanceamento de carga com o WCF também. O WCF é parte integrante do .NET desde a versão 3.0 e com certeza é uma primeira abordagem de evolução, pelo ganho de desempenho e modelo de programação unificado que oferece. Não deixe de conferir também, os vários cenários possíveis para serviços com WCF, &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_rios+de+servi_26002300_231_3B00_os+WCF/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_rios+de+servi_26002300_231_3B00_os+WCF/default.aspx"&gt;aqui&lt;/A&gt;; &lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Se você ainda trabalha com páginas ASP, avalie o &lt;STRONG&gt;ASP.NET&lt;/STRONG&gt; com &lt;STRONG&gt;AJAX&lt;/STRONG&gt;. Veja alguns exemplos disponíveis no link : &lt;A title=http://www.asp.net/community/projects/ href="http://www.asp.net/community/projects/" mce_href="http://www.asp.net/community/projects/"&gt;http://www.asp.net/community/projects/&lt;/A&gt;. Existem boas idéias que podem ser aproveitadas em seus projetos. Ainda, avalie exemplos com AJAX para ganhos de produtividade e performance, otimizando suas requisições junto ao servidor ou mesmo melhorando a usabilidade na navegação do usuário sobre suas páginas. Finalmente, navegar dados via &lt;STRONG&gt;ASP.NET Dynamic Data&lt;/STRONG&gt; ou exporta um banco de dados através da interface &lt;STRONG&gt;ADO.NET Data Services&lt;/STRONG&gt;, com consultas via &lt;STRONG&gt;REST&lt;/STRONG&gt; é uma outra boa recomendação para prova de conceito. Não deixe de testar essas soluções; &lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Se você possui um framework que prevê interfaces WinForms com .NET, ou formulários VB6 com Win32, por exemplo, avalie os recursos de usabilidade e navegação obtidos com o &lt;STRONG&gt;WPF - Windows Presentation Foundation&lt;/STRONG&gt;. Além de um conjunto muito mais rico de controles gráficos e interação com o usuário, o desenvolvimento sobre WPF permite maior integração entre os times de design e desenvolvimento, devido o uso de documentos em &lt;STRONG&gt;XAML - Extensible Application Markup Language&lt;/STRONG&gt;, que permitem a renderização gráfica baseada em parsers, integrados ao .NET Framework, na ferramenta de design ou no próprio Visual Studio; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Se você ainda utiliza o ADO.NET 2.0 para navegar seus dados e manipular suas estruturas de retorno a partir de consultas ao banco de dados, através de um camada &lt;STRONG&gt;DAL - Data Access Layer&lt;/STRONG&gt; - tradicional, avalie consultas utilizando &lt;STRONG&gt;LINQ - Language Integrated Query, &lt;/STRONG&gt;do .NET 3.5. Verifique o tipo de legibilidade de código que você pode obter com o LINQ, assim como consultas sobre coleções com o &lt;STRONG&gt;XLINQ&lt;/STRONG&gt; sobre XML, ou o uso integrado do &lt;STRONG&gt;ADO.NET Entity Framework (EF)&lt;/STRONG&gt;, permitindo a construção de soluções multi-banco. Sua prova de conceito com LINQ e Entity Framework também poderá avaliar performance, tempo de resposta e aderência ao SLA esperado pela aplicação, comparando com uma DAL simples. Vale citar que manutenção e independência de banco de dados são pontos de destaque nessa infra-estrutura LINQ + EF (veja sua necessidade de &lt;STRONG&gt;ORM - Object Relational Mapping&lt;/STRONG&gt; e camadas de persistência). LINQ é parte do .NET desde a versão 3.5 e o &lt;STRONG&gt;ADO.NET Entity Framework&lt;/STRONG&gt;, desde a versão 3.5 SP1. Veja mais &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/Entity+Framework/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/Entity+Framework/default.aspx"&gt;aqui&lt;/A&gt;; &lt;BR&gt;&lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Se você ainda possui regras de negócio no COM+ (1.0 e 1.5) ou algumas regras em Web Services publicados no IIS, avalie a exportação de suas regras como serviços WCF, hosteados no &lt;STRONG&gt;WAS - Windows Process Activation Services&lt;/STRONG&gt;. Muita calma nesse momento, devido questões de transação, interoperabilidade com componentes legados, etc. Mas entre os benefícios do host WAS para serviços WCF temos um melhor desempenho para o tratamento de requisições e instâncias, assim como maior flexibilidade na seleção de protocolos de transporte e adoção de um modelo orientado a mensagens, mais flexível quanto a integração com outras plataformas. Sobre o &lt;STRONG&gt;Windows Server 2008&lt;/STRONG&gt;, WAS torna-se é uma recomendação de fato. Veja mais &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/WinDNA/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/WinDNA/default.aspx"&gt;aqui&lt;/A&gt;; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Com certeza, esse é um post apenas para dar algumas idéias, iniciar uma discussão. Cada empresa encontrará sua melhor abordagem, de acordo com uma série de fatores próprios, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;maturidade do framework em produção na empresa;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;maturidade da equipe de desenvolvimento usuária do framework;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;maturidade da equipe de arquitetura responsável pelo framework;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;existência de templates e bons exemplos de código utilizando o framework;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;maturidade do processo de desenvolvimento de software e existência de disciplinas de ALM - Application Lifecycle Management;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;seleção de arquiteturas de referência e boas práticas de desenvolvimento, que sejam suportadas pelo framework, etc.&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;O mais importante é definir uma estratégia de evolução, procurando atender as principais necessidades do usuário, seja &lt;STRONG&gt;desempenho&lt;/STRONG&gt;, &lt;STRONG&gt;usabilidade&lt;/STRONG&gt;, &lt;STRONG&gt;velocidade&lt;/STRONG&gt; para adição de novas funcionalidades, &lt;STRONG&gt;riqueza&lt;/STRONG&gt; de interface, &lt;STRONG&gt;funcionalidades&lt;/STRONG&gt; de integração com a web ou simplesmente, a &lt;STRONG&gt;competição&lt;/STRONG&gt; com o mercado. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A discussão é boa! O desafio também é bom!&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=9050619" 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/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WinDNA/default.aspx">WinDNA</category></item><item><title>Leitura recomendada: Patterns, Frameworks e SOA.</title><link>http://blogs.msdn.com/wcamb/archive/2008/10/19/leitura-recomendada-patterns-frameworks-e-soa.aspx</link><pubDate>Sun, 19 Oct 2008 18:40:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9006341</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9006341.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9006341</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9006341</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;O Tech-Ed Brasil passou e deixou grandes lembranças para todos nós. Foram palestras, reuniões, mesas redondas e muito bate-papo pelos corredores. Também foi bem legal rever amigos de diversas empresas, que há tempos não via.&lt;/P&gt;
&lt;P&gt;Já em casa, retirei da estante alguns livros bacanas que já me ajudaram na organização de idéias, para relembrar alguns dos assuntos que discutimos durante o Tech-Ed, entre um café e outro.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 15px 0px 0px; BORDER-RIGHT-WIDTH: 0px" height=165 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_thumb.png" width=131 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_thumb.png"&gt;&lt;/A&gt; O primeiro deles é foi "&lt;STRONG&gt;Design Patterns - Elements of Reusable Object-Oriented Software&lt;/STRONG&gt;", da Addison-Wesley Series. Um dos pontos especiais desse livro é sua organização pelos 3 principais grupos de patterns de software, os &lt;STRONG&gt;Patterns de Criação&lt;/STRONG&gt;, os &lt;STRONG&gt;Patterns Estruturais&lt;/STRONG&gt; e os &lt;STRONG&gt;Patterns de Comportamento&lt;/STRONG&gt;. Para quem não conhece, uma leitura muito recomendada. (ISBN-10: 0201633612)&lt;/P&gt;
&lt;P&gt;O segundo livro foi o "&lt;STRONG&gt;Framework Design Guidelines - Conventions, Idioms, and Patterns for Reusable .NET Libraries&lt;/STRONG&gt;", da Microsoft .NET Series. Enquanto conversava com algumas pessoas na noite "Ask the Expert", esse livro me passou pela cabeça a&lt;A href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1224384336&amp;amp;sr=8-2" target=_blank mce_href="http://www.amazon.com/Framework-Design-Guidelines-Conventions-Development/dp/0321246756/ref=sr_1_2?ie=UTF8&amp;amp;s=books&amp;amp;qid=1224384336&amp;amp;sr=8-2"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 15px 0px 15px 15px; BORDER-RIGHT-WIDTH: 0px" height=160 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_5.png" width=123 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_5.png"&gt;&lt;/A&gt;lgumas vezes. Muitas empresas já desenvolveram seus frameworks domésticos, ou mesmo estão em franco processo de desenvolvimento ainda hoje. Alguns são enormes... :) &lt;/P&gt;
&lt;P&gt;Em meio ao cenário de multiplicação de recursos que vivemos hoje, os frameworks domésticos ganham cada vez mais aspectos verticais, oferecendo alguma modelagem adicional que atende o negócio ou a especialização da empresa. Mas os desafios continuam os mesmos, como já vimos nesse &lt;A href="http://blogs.msdn.com/wcamb/archive/2007/12/17/desafios-na-constru-o-de-frameworks-parte-1.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2007/12/17/desafios-na-constru-o-de-frameworks-parte-1.aspx"&gt;post&lt;/A&gt;. Seja para a construção de frameworks horizontais &lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_7.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 15px 15px 0px 0px; BORDER-RIGHT-WIDTH: 0px" height=149 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_thumb_2.png" width=115 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaPatternsFrameworkseSO_14D58/image_thumb_2.png"&gt;&lt;/A&gt;ou verticais, recomendo a leitura desse livro como um guia interessante na plataforma .NET. E a segunda edição já está com lançamento previsto para esse ano. (ISBN-10: 0321246756 )&lt;/P&gt;
&lt;P&gt;Finalmente, outro livro lembrado foi o "&lt;STRONG&gt;SOA - Principles of Service Design&lt;/STRONG&gt;", da Prentice Hall. Ele faz uma boa introdução sobre os principais aspectos da construção de uma arquitetura de serviços, passando por temas como federação, ROI, alinhamento de objetivos, reuso, levantamento de requisitos, etc., sendo bem amplo na discussão. Fica a dica para quem está procurando um livro-texto sobre o assunto. (ISBN-10: 0132344823)&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Boa leitura 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=9006341" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/SOA/default.aspx">SOA</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Web Service Software Factory : Modeling Edition - Nova versão já disponível.</title><link>http://blogs.msdn.com/wcamb/archive/2008/03/04/web-service-software-factory-modeling-edition-nova-vers-o-j-dispon-vel.aspx</link><pubDate>Wed, 05 Mar 2008 03:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8039268</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8039268.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8039268</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8039268</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Ainda sobre Fábricas de Software e Guias de Automação, vale acompanhar o que está chegando por ai. O link a seguir tem um &lt;STRONG&gt;roadmap&lt;/STRONG&gt; com os próximos lançamentos na plataforma Microsoft, veja aqui:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices: Upcoming Release Roadmap &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn2.microsoft.com/en-us/practices/bb232643.aspx" mce_href="http://msdn2.microsoft.com/en-us/practices/bb232643.aspx"&gt;http://msdn2.microsoft.com/en-us/practices/bb232643.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Um especial destaque para a &lt;EM&gt;WPF Composite Client&lt;/EM&gt;, que tem um apelo enorme para o tratamento de aplicações compostas e camadas de composição em interfaces WPF, muito interessante:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WPF Composite Client &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx" mce_href="http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx"&gt;http://blogs.msdn.com/gblock/archive/2007/10/26/wpf-composite-client-guidance-it-s-coming.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ainda, no link do patterns &amp;amp; practices DVD de Abril de 2007, você tem acesso a 2 posters em PDF muito bacanas:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices April 2007 DVD &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6724e09b-ca2e-425a-8d71-8febad3ba203&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=6724e09b-ca2e-425a-8d71-8febad3ba203&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=6724e09b-ca2e-425a-8d71-8febad3ba203&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Este primeiro poster, com a descrição dos tipos de guias disponíveis...&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=257 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb_1.png" width=429 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref..: &lt;A title=http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-1.pdf href="http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-1.pdf" mce_href="http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-1.pdf"&gt;http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-1.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E ainda um poster com um resumo de todas as fábricas de software disponíveis até 2007. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=320 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb.png" width=427 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title="&amp;#13;&amp;#10;http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-2.pdf" href="http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-2.pdf" mce_href="http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-2.pdf"&gt;http://download.microsoft.com/download/1/4/d/14d1a93d-3cce-4445-bd89-fa4f3aacab37/poster-2.pdf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Veja que algumas fábricas estão ausentes no poster acima, como a recém atualizada &lt;STRONG&gt;Web&lt;/STRONG&gt; &lt;STRONG&gt;Service Software Factory Modeling Edition&lt;/STRONG&gt;, que tem integrada uma &lt;STRONG&gt;DSL&lt;/STRONG&gt; para modelagem de serviços, veja aqui:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Service Software Factory: Modeling Edition - February 2008&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F7AA544D-AD73-4B65-88D5-63F751844540&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=F7AA544D-AD73-4B65-88D5-63F751844540&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=F7AA544D-AD73-4B65-88D5-63F751844540&amp;amp;displaylang=en&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;No post anterior, falamos dos novos pacotes do GAT/GAX para Visual Studio 2005/2008. Agora, citamos a Web Service Software Factory : Modeling Edition para Visual Studio 2005/2008. &lt;/P&gt;
&lt;P&gt;Uma nota importante sobre essa nova fábrica de software &lt;STRONG&gt;:&lt;/STRONG&gt; agora, ela tem uma&amp;nbsp; &lt;STRONG&gt;DSL - Domain-Specific Language&amp;nbsp; &lt;/STRONG&gt;integrada, permitindo que as várias receitas e ações disponíveis para a geração de serviços sejam modeladas de forma visual, aproveitando os recursos e benefícios de uma linguagem específica de domínio. &lt;/P&gt;
&lt;P&gt;Na versão anterior, esta fábrica de software permitia a execução dessas receitas e templates através de wizards acessados diretamente a partir do &lt;STRONG&gt;Guidance Navigator&lt;/STRONG&gt; do guia de automação. Veja a figura abaixo para um exemplo de Guidance Navigator, dentro do Visual Studio.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_6.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=210 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb_2.png" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Isso não dava muita flexibilidade para criação de novas combinações de serviços, entidades, contratos, operações, etc. Com o uso de uma DSL integrada, a versão Modeling Edition permite um escopo maior de soluções, além da possibilidade de modelagem visual de um problema. É de fato uma primeira fábrica de software oferecendo uma DSL para o desenvolvedor.&lt;/P&gt;
&lt;P&gt;O resultado é a possibilidade de uma modelagem de mais alto nível, mascarando detalhes de implementação, enquanto permite maior variabilidade de soluções e combinações de recursos disponíveis com a fábrica de software. Veja um exemplo abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_8.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=334 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb_3.png" width=404 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebServiceSoftwareFactoryModelingEditio_12D5D/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Para maiores detalhes sobre a modelagem de linguagens específicas de domínio, veja o livro:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Domain-Specific Development with Visual Studio DSL Tools (Microsoft .NET Development Series) &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203" mce_href="http://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203"&gt;http://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;E um site com algumas informações sobre o livro: 
&lt;P&gt;&lt;STRONG&gt;Domain-Specific Development with Visual Studio DSL Tools (Released June 2007)&lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.domainspecificdevelopment.com/"&gt;&lt;FONT color=#669966&gt;http://www.domainspecificdevelopment.com/&lt;/FONT&gt;&lt;/A&gt; 
&lt;P&gt;...enquanto novos posts sobre o assunto estão sendo preparados... ;)&lt;/P&gt;
&lt;P&gt;Guias de automação, fábricas de software, linguagens específicas de domínio, templates para Visual Studio, etc. são de fato recursos que precisam ser conhecidos pelo arquiteto, pois são ferramentas importantes para a maior qualidade no desenvolvimento de software. Seja para empresas fornecedoras de software (ISV) ou organizações no mundo corporativo, garantir produtividade, padronização e qualidade pode se tornar em breve uma questão de sobrevivência. Claro que em diferentes proporções para cada uma dessas empresas, mas de fato essa discussão tende a se tornar um diferencial crescente num mundo cada vez mais globalizado e competitivo.&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=8039268" 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/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx">GAT / GAX</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category></item><item><title>Software Factory e Domain Specific Language - Uma discussão sobre modelagem.</title><link>http://blogs.msdn.com/wcamb/archive/2008/01/30/software-factory-e-domain-specific-language-uma-discuss-o-sobre-modelagem.aspx</link><pubDate>Thu, 31 Jan 2008 01:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7335236</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/7335236.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=7335236</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=7335236</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;Já conversamos por aqui sobre vários aspectos envolvidos na reutilização de conhecimento, uso de templates e modos de padronização no desenvolvimento de software. Nos últimos posts, falamos de templates de projetos, guias de automação e outros mecanismos para a customização do ambiente de desenvolvimento, sempre visando a qualidade e a produtividade de software. &lt;/P&gt;
&lt;P&gt;Vamos voltar ao assunto, avançando nossa discussão sobre as &lt;STRONG&gt;Fábricas de Software (Software Factories)&lt;/STRONG&gt; e as &lt;STRONG&gt;Linguagens de Domínio Específico (Domain Specific Language). &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Sempre que pensamos em qualidade e produtividade de software, existem algumas perguntas que são recorrentes na cabeça do arquiteto, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Qual a real necessidade do meu negócio?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Quais tecnologias são relevantes (sobre comunicação, apresentação, workflow, transação, storage, monitoração, etc)?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Quais metodologias, patterns, templates, guias ou recomendações devo utilizar?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Como garantir o uso de boas práticas em meu time?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Como monitorar e controlar a qualidade de software?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Como estar preparado para mudanças?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Como ser ágil?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Entre outras tantas. &lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;E como temos visto, existem diversos mecanismos que ajudam o arquiteto nessas perguntas, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Guias de desenvolvimento;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Guias livres de contexto / com contexto;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Kits ou guias de automação, como nossos GAT/GAX; &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Implementações de referência e arquiteturas de referência;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Modelos de desenvolvimento e arquitetura;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Frameworks de desenvolvimento;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Linguagens de Domínio-Específico (DSL’s);&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Fábricas de Software (Software Factories);&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Da lista acima, os &lt;STRONG&gt;guias com contexto&lt;/STRONG&gt; conhecidos como "&lt;STRONG&gt;patterns&lt;/STRONG&gt;" são os mais comuns, por darem uma visão de solução/problema muito prática. Porém, temos visto uma crescente atenção sobre outras ferramentas, com destaque especial para as &lt;STRONG&gt;Fábricas de Software&lt;/STRONG&gt;. Existe uma razão para essa mudança. Hoje, existem mais de 26 guias do &lt;STRONG&gt;Patterns &amp;amp; Practices&lt;/STRONG&gt; (&lt;A href="http://msdn.microsoft.com/practices/)" mce_href="http://msdn.microsoft.com/practices/)"&gt;http://msdn.microsoft.com/practices/)&lt;/A&gt;, falando de aplicações e patterns aderentes para diversos cenários. &lt;/P&gt;
&lt;P&gt;Por isso, quando pensamos na quantidade de informação disponível nesses guias, enfrentamos alguns desafios:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;São mais de 25 mil páginas de informação, você vai lembrar de tudo depois de ler?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Será que você vai ler de novo a cada projeto?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Se você aconselhar seus desenvolvedores a lerem, será que eles irão ler de fato?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Será que eles vão ter tempo e vão entender tudo?&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Eles serão capazes de aplicar os conselhos no contexto correto?&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Desse modo, surge a real necessidade de se usar ferramentas mais rígidas e de aplicação mais eficaz no processo de desenvolvimento de software, garantindo a qualidade, o padrão e a produtividade durante o projeto. &lt;/P&gt;
&lt;P&gt;Em nossa discussão, vimos que os &lt;STRONG&gt;Guias de Automação&lt;/STRONG&gt; permitem a criação de processos automatizados de geração de código, permitindo a reutilização de templates e códigos aprovados pelo arquiteto, o que garante maior velocidade na construção de novas soluções. Nesse sentido, a partir da seleção de fontes otimizados e aderentes a nichos específicos de aplicação, o arquiteto pode criar guias de automação que orientem o desenvolvedor na construção de novas aplicações com código otimizado, de forma automática. &lt;/P&gt;
&lt;P&gt;Nesse sentido, as &lt;STRONG&gt;Fábricas de Software&lt;/STRONG&gt; ampliam essa discussão, com considerações importantes sobre os seguintes componentes:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;Patterns&lt;/STRONG&gt;: Fornecem soluções gerais para problemas comuns;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;Frameworks&lt;/STRONG&gt;: Fornecem componentes suportados e reuso de componentes;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;Modelos&lt;/STRONG&gt;: Fornecem um modo de descrição de um problema específico; &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;Metodologias&lt;/STRONG&gt;: Definem um conjunto codificado de práticas recomendáveis;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;Ferramentas&lt;/STRONG&gt;: Suportam a criação, manutenção e debugging;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Como já foi dito, alguns exemplos de &lt;STRONG&gt;Software Factories&lt;/STRONG&gt; disponíveis pela Microsoft são:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Mobile Client Software Factory&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Smart Client Software Factory&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Web Client Software Factory&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Web Service Software Factory&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Application Block Software Factory&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Para cada fábrica de software temos um conjunto de &lt;EM&gt;patterns, modelos, frameworks&lt;/EM&gt; e &lt;EM&gt;guias de automação&lt;/EM&gt; empacotados numa mesma ferramenta para o desenvolvedor. E como principal infra-estrutura utilizada na construção dessa ferramenta, a Microsoft utilizou a plataforma &lt;STRONG&gt;GAT/GAX&lt;/STRONG&gt; para construção dos guias e seus artefatos. &lt;/P&gt;
&lt;P&gt;Assim, podemos concluir que a modelagem de uma fábrica de software passa pela definição e otimização de seus &lt;STRONG&gt;artefatos&lt;/STRONG&gt; componentes. Sem eles, não faz sentido pensarmos na construção de uma fábrica de software. A partir da definição de artefatos, podemos cercar os modelos, processos e a orientação de automação que será atendida pela fábrica de software em desenvolvimento. &lt;/P&gt;
&lt;P&gt;Recentemente, a Microsoft publicou um novo &lt;STRONG&gt;extension&lt;/STRONG&gt; para Visual Studio 2005, que permite a modelagem e construção de Web Services. Essa fábrica é conhecida como &lt;STRONG&gt;Service Factory&lt;/STRONG&gt; e está disponível no seguinte link: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Service Software Factory: Modeling Edition (Novembro 2007) &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx" mce_href="http://msdn2.microsoft.com/en-us/library/bb931187.aspx"&gt;http://msdn2.microsoft.com/en-us/library/bb931187.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Um elemento interessante sobre essa fábrica de software é sua integração entre &lt;EM&gt;artefatos, guias e linguagens de domínio específico&lt;/EM&gt;. Ela apresenta de forma integrada &lt;STRONG&gt;3 DSL's&lt;/STRONG&gt; no Visual Studio 2005, permitindo a modelagem dos principais componentes de um serviço de uma forma visual: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Service Contract Model &lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Data Contract Model&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Host Model.&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A figura abaixo apresenta o uso da DSL para modelagem dos componentes de um Web Service na Service Factory:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SoftwareFactoryeDomainSpecificLanguageU_1170F/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SoftwareFactoryeDomainSpecificLanguageU_1170F/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=359 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SoftwareFactoryeDomainSpecificLanguageU_1170F/image_thumb.png" width=434 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SoftwareFactoryeDomainSpecificLanguageU_1170F/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note que para a construção dessa fábrica de software, seus autores precisaram modelar uma série de &lt;STRONG&gt;receitas&lt;/STRONG&gt;, para o completo mapeamento de tarefas para a construção de um Web Services. Algumas receitas foram: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Criar uma solução: ativada na criação de uma solução&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Gerar tipos de dados e mensagens: ativada para itens ".xsd"&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Criar um contrato de serviço: ativada para um item de projeto contrato de serviço&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Gerar interface de serviço: ativada para itens ".wsdl"&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Gerar adaptadores: ativada para itens ".wsdl"&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Criar um endpoint de Web Service: ativada para folders de solução nos endpoints&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#0000ff&gt;Expor uma interface de serviços: ativada para projetos de endpoints&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;E para a implementação dessas receitas, foram utilizados modelos em linguagens de domínio específico, o que gerou uma ferramenta visual e muito intuitiva para o desenvolvedor, facilitando o processo de construção de Web Services.&lt;/P&gt;
&lt;P&gt;Concluindo, para a construção de uma fábrica de software integrada a uma linguagem de domínio específico, precisamos entender o domínio da aplicação, suas principais ferramentas e artefatos, antes da geração do modelo de interação com a fábrica de software. &lt;/P&gt;
&lt;P&gt;Para maiores detalhes sobre essa fábrica de software e seus detalhes de implementação, veja: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Service Software Factory Community &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.codeplex.com/servicefactory/Release/ProjectReleases.aspx?ReleaseId=8130" mce_href="http://www.codeplex.com/servicefactory/Release/ProjectReleases.aspx?ReleaseId=8130"&gt;http://www.codeplex.com/servicefactory/Release/ProjectReleases.aspx?ReleaseId=8130&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Recomendo fortemente o uso dessa fábrica de software como fonte de inspiração para o entendimento e estudo de alternativas para a construção de fábricas de software customizadas e integradas a DSL's.&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=7335236" 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/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx">GAT / GAX</category></item><item><title>Guidance Automation Toolkit - Customizações no ambiente de desenvolvimento</title><link>http://blogs.msdn.com/wcamb/archive/2008/01/20/guidance-automation-toolkit-customiza-es-no-ambiente-de-desenvolvimento.aspx</link><pubDate>Sun, 20 Jan 2008 18:50:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7173384</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/7173384.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=7173384</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=7173384</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Finalmente, o terceiro mecanismo para as customizações no ambiente de desenvolvimento são os &lt;STRONG&gt;Guias de Automação&lt;/STRONG&gt;. Para o Visual Studio temos o &lt;STRONG&gt;GAT - Guidance Automation Toolkit&lt;/STRONG&gt;, como sua principal ferramenta. Ele trabalha sobre um framework específico de automação, chamado &lt;STRONG&gt;Microsoft.Practices.RecipeFramework.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Como já falamos aqui no blog, o pacote GAT adiciona ao ambiente do Visual Studio a infra-estrutura de linguagens e ferramentas para a construção de pacotes de automação para geração de código. O objetivo é automatizar a codificação, baseando-se em templates e modelos de software que o arquiteto ou desenvolvedor selecionou como melhores práticas para um tipo de solução. &lt;/P&gt;
&lt;P&gt;Vamos iniciar com a preparação do ambiente sobre o Visual Studio 2005, onde temos os seguintes extensions e pacotes de atualização indicados abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1) Microsoft .NET Framework 2.0 Service Pack 1&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=79bc3b77-e02c-4ad3-aacf-a7633f706ba5&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=79bc3b77-e02c-4ad3-aacf-a7633f706ba5&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=79bc3b77-e02c-4ad3-aacf-a7633f706ba5&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2) Microsoft .NET Framework 3.0 Redistributable Package&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F5-25634C3BF043&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3) Microsoft .NET Framework 3.0 Service Pack 1&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=ec2ca85d-b255-4425-9e65-1e88a0bdb72a&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=ec2ca85d-b255-4425-9e65-1e88a0bdb72a&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=ec2ca85d-b255-4425-9e65-1e88a0bdb72a&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4) Guidance Automation Extensions - July 2007 (GAT)&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;5) Guidance Automation Toolkit - July 2007 (GAX)&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6) Visual Studio 2005 SDK Version 4.0&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;7) Microsoft® Visual Studio® 2005 Team Suite Service Pack 1 - June 2007&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D-37BAF6B5B1DC&amp;amp;displaylang=en&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A partir desta instalação, nosso Visual Studio 2005 estará apto para trabalhar com o GAT/GAX, disponibilizando uma nova pasta de templates de projeto, como vemos a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=345 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb.png" width=498 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Assim, a pasta &lt;STRONG&gt;Guidance Packages&lt;/STRONG&gt; permite a criação de novos guias de automação, através do template de projeto &lt;STRONG&gt;"Guidance Package Development/Guidance Package".&lt;/STRONG&gt; Por exemplo, podemos pensar na automação de um cenário para construção de aplicações ASP.NET. Pense em templates de navegação otimizados e homologados pela equipe de arquitetura. O objetivo nesse cenário é garantir produtividade durante a construção de novas aplicações, através da geração dinâmica de arquivos e items de projeto. Essa geração dinâmica de código ocorre sobre uma linguagem de templates, a &lt;STRONG&gt;Text Templating Transformation Toolkit&lt;/STRONG&gt; ou simplesmente &lt;STRONG&gt;T4&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;Um &lt;STRONG&gt;Guidance Package&lt;/STRONG&gt; (ou Pacote de Automação) é criado para um propósito específico, visando atender algum tipo de solução que queremos automatizar. Assim, caracteriza-se também como uma unidade de versionamento e distribuição. Uma vez finalizado, o pacote pode ser &lt;STRONG&gt;registrado&lt;/STRONG&gt; e &lt;STRONG&gt;distribuído&lt;/STRONG&gt; para as várias estações de desenvolvimento. Os desenvolvedores finais serão os usuários desse pacote de automação. &lt;/P&gt;
&lt;P&gt;A figura a seguir descreve bem esses passos no processo de modelagem e construção de um guia de automação:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=321 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_1.png" width=485 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;BR&gt;De fato, um &lt;STRONG&gt;Guidance Package&lt;/STRONG&gt; consiste de templates do Visual Studio, como vimos anteriormente (templates de projeto e templates de itens de projeto) e receitas de automação (passos de automação). Entre os elementos que compõem um guia de automação temos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Recipes (Receitas) &lt;/LI&gt;
&lt;LI&gt;Wizards (Sequência de passos para entrada de dados, nos moldes dos Addin's Wizards que vimos no post anterior) &lt;/LI&gt;
&lt;LI&gt;Value Providers (Provedores de valores) &lt;/LI&gt;
&lt;LI&gt;Type Converters (Conversores de tipos) &lt;/LI&gt;
&lt;LI&gt;Actions (Ações) &lt;/LI&gt;
&lt;LI&gt;Code Generation (Geração de código, onde temos os templates em linguagem T4) &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A figua abaixo apresenta bem a hierarquia de componentes de um guia de automação, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=287 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_2.png" width=456 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Entendido os conceitos sobre o GAT/GAX, vejamos como utilizá-lo. Uma sequência de passos para a construção de um guia de automação é dada abaixo:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Definir as receitas desejadas para o guia, incluindo a definição de argumentos, wizards e ações; &lt;/LI&gt;
&lt;LI&gt;Definir os templates de Visual Studio envolvidos; &lt;/LI&gt;
&lt;LI&gt;Escrever as ações; &lt;/LI&gt;
&lt;LI&gt;Escrever os tipos de argumentos e conversores necessários; &lt;/LI&gt;
&lt;LI&gt;Definir templates T4, se uma ação utilizar templates T4 para geração de código; &lt;/LI&gt;
&lt;LI&gt;Testar o pacote de automação; &lt;/LI&gt;
&lt;LI&gt;Construir o pacote com os arquivos de setup, para distribuição; &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Ao final, um pacote de guia conterá os seguintes artefatos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;arquivo de configuração do guia de automação (necessário); &lt;/LI&gt;
&lt;LI&gt;templates de Visual Studio; &lt;/LI&gt;
&lt;LI&gt;templates T4; &lt;/LI&gt;
&lt;LI&gt;DLL implementando ações, editores de tipos, provedores de valores e conversores de tipos (note que uma única DLL é recomendada); &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Uma boa maneira de iniciar seus trabalhos sobre o guia de automação GAT é seguir os passos da solução exemplo, que vem com a instalação do GAT/GAX. Veja na tela principal da solução os principais passos recomentados, são 7 passos:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_12.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=456 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_5.png" width=466 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Finalmente, vamos exportar esse guia de automação para outras máquinas. A solução template do Guidance Package gera também um template de &lt;STRONG&gt;Setup&lt;/STRONG&gt;, que disponibiliza o pacote para instalação. Veja abaixo os projetos contidos na solução de um guia de automação, onde notamos o projeto de &lt;STRONG&gt;Setup &lt;/STRONG&gt;que deve ser instalado na estação do desenvolvedor:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_14.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=211 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_6.png" width=361 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/GuidanceAutomationToolkitCustomizaesnoam_B84F/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Desse modo, passamos pelos principais elementos sobre a modelagem e construção de um Guia de Automação. Recomendo fortemente a leitura dos arquivos de ajuda do GAT e GAX, para um maior detalhamento. O material tem bastante informações importante, que ajudará na evolução e construção de guias de automação sofisticados.&lt;/P&gt;
&lt;P&gt;A Microsoft também disponibiliza uma série de &lt;STRONG&gt;Fábricas de Software,&lt;/STRONG&gt; que nada mais são do que pacotes de automação prontos para assuntos específicos. Isso significa que a base das várias Fábricas de Software que a Microsoft disponibiliza é realmente o GAT/GAX que vimos aqui. Entre as fábricas mais conhecidas temos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Mobile Client Software Factory&lt;/LI&gt;
&lt;LI&gt;Smart Client Software Factory&lt;/LI&gt;
&lt;LI&gt;Web Client Software Factory&lt;/LI&gt;
&lt;LI&gt;Web Service Software Factory&lt;/LI&gt;
&lt;LI&gt;Application Block Software Factory&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Em posts futuros, vamos avançar em outros assuntos relacionados ao ganho de produtividade no ambiente de desenvolvimento. Entre eles teremos as &lt;STRONG&gt;Fábricas de Software&lt;/STRONG&gt; e as &lt;STRONG&gt;Linguagens de Domínio Específico, ou DSL's - Domain Specific Languages&lt;/STRONG&gt;. Fiquem ligados.&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=7173384" 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/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx">GAT / GAX</category></item><item><title>Project Template e Item Template - Customizações no ambiente de desenvolvimento.</title><link>http://blogs.msdn.com/wcamb/archive/2008/01/15/project-template-e-item-template-customiza-es-no-ambiente-de-desenvolvimento.aspx</link><pubDate>Wed, 16 Jan 2008 00:22:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7120800</guid><dc:creator>wcamb</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/7120800.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=7120800</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=7120800</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;Voltando ao assunto principal, retomamos nossa discussão sobre&amp;nbsp;templates e padrões para o ambiente de desenvolvimento. Lembrando sempre que uma das atividades do time de arquitetura é direcionar a equipe de desenvolvimento na adoção de boas práticas na produção de software, com qualidade e produtividade. &lt;/P&gt;
&lt;P&gt;Recentemente, tive uma discussão com um time de arquitetos de um cliente, que questionava exatamente as alternativas para a padronização e uso de templates na plataforma Microsoft. Assim, perguntavam sobre customizações do ambiente de desenvolvimento, ou seja, customizações sobre o próprio Visual Studio, afim de direcionar o desenvolvedor no momento da criação de código. Focando a versão 2005, citamos 3 mecanismos básicos: &lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Construção de templates de projeto e templates de itens de projeto;&lt;/LI&gt;
&lt;LI&gt;Customização de funcionalidades através do SDK v4.0 para o Visual Studio 2005;&lt;/LI&gt;
&lt;LI&gt;Construção de guias de automação para o desenvolvimento de soluções; &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Neste post, vamos falar iniciamente sobre o primeiro modo, a construção de templates no Visual Studio 2005. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1. Construção de templates de projeto e templates de itens de projeto&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A construção de templates é feita através da funcionalidade "&lt;STRONG&gt;Export Template"&lt;/STRONG&gt; do Visual Studio. Esse recurso permite a geração de um pacote .ZIP, que agrupa arquivos de recursos, fontes, imagens e links de referência de um projeto ou arquivo fonte, que poderá ser reutilizado pelos desenvolvedores de forma integrada ao Visual Studio. &lt;/P&gt;
&lt;P&gt;Você encontra esse recurso no menu &lt;STRONG&gt;File&lt;/STRONG&gt; do IDE do Visual Studio, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=338 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_thumb.png" width=278 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A partir de um projeto modelo selecionado, é possível criar um template de projeto ou de item, como mostrado na caixa de diálogo abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=337 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_thumb_1.png" width=496 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Para o exemplo de geração de um template de projeto, é gerado um arquivo .ZIP, contendo os arquivos de recursos e fontes componentes do projeto. Também é adicionado a esse pacote o arquivo com as referências e lista de componentes do template. Esse arquivo vem com extensão ".vstemplate". Veja o conteúdo de um pacote de template aqui:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_8.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=124 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_thumb_3.png" width=385 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/PojectTemplateseItemsTemplatesCustomiza_10C40/image_thumb_3.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Um exemplo desse arquivo ".vstemplate" é dado a abaixo: &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;&amp;lt;VSTemplate Version="2.0.0" xmlns="&lt;/STRONG&gt;&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/developer/vstemplate/2005" mce_href="http://schemas.microsoft.com/developer/vstemplate/2005" ?&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt;http://schemas.microsoft.com/developer/vstemplate/2005"&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#0000ff&gt;&lt;STRONG&gt; Type="Project"&amp;gt; &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&lt;STRONG&gt; &amp;lt;TemplateData&amp;gt; &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;ConsoleAppDemo - Lab&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;ConsoleAppDemo - Lab&amp;lt;/Description&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProjectType&amp;gt;CSharp&amp;lt;/ProjectType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProjectSubType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProjectSubType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;SortOrder&amp;gt;1000&amp;lt;/SortOrder&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CreateNewFolder&amp;gt;true&amp;lt;/CreateNewFolder&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DefaultName&amp;gt;ConsoleAppDemo - Lab&amp;lt;/DefaultName&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProvideDefaultName&amp;gt;true&amp;lt;/ProvideDefaultName&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;LocationField&amp;gt;Enabled&amp;lt;/LocationField&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;EnableLocationBrowseButton&amp;gt;true&amp;lt;/EnableLocationBrowseButton&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Icon&amp;gt;__TemplateIcon.ico&amp;lt;/Icon&amp;gt; &lt;BR&gt;&lt;STRONG&gt;&amp;nbsp; &amp;lt;/TemplateData&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;TemplateContent&amp;gt; &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Project TargetFileName="&lt;STRONG&gt;&lt;FONT color=#000000&gt;ConsoleAppDemo1.csproj&lt;/FONT&gt;&lt;/STRONG&gt;" File="&lt;STRONG&gt;&lt;FONT color=#000000&gt;ConsoleAppDemo1.csproj&lt;/FONT&gt;&lt;/STRONG&gt;" ReplaceParameters="true"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProjectItem ReplaceParameters="true" TargetFileName="Program.cs"&amp;gt;Program.cs&amp;lt;/ProjectItem&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Folder Name="Properties" TargetFolderName="Properties"&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs"&amp;gt;AssemblyInfo.cs&amp;lt;/ProjectItem&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Folder&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/Project&amp;gt; &lt;BR&gt;&amp;nbsp; &lt;STRONG&gt;&amp;lt;/TemplateContent&amp;gt;&lt;/STRONG&gt; &lt;BR&gt;&lt;STRONG&gt;&amp;lt;/VSTemplate&amp;gt;&lt;/STRONG&gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;No template acima, temos um padrão de projeto baseado no arquivo &lt;STRONG&gt;ConsoleAppDemo1.csproj&lt;/STRONG&gt;, que foi o projeto base a partir do qual geramos o template. Isso aparece no tag &lt;STRONG&gt;&amp;lt;TemplateContent&amp;gt;&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Outros exemplos de arquivos de template podem agrupar soluções com vários projetos, como vemos a seguir: &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;?xml version="1.0" encoding="utf-8" ?&amp;gt; &lt;BR&gt;&amp;lt;VSTemplate Version="2.0.0"&amp;nbsp;&amp;nbsp; xmlns="&lt;/FONT&gt;&lt;A href="http://schemas.microsoft.com/developer/vstemplate/2005" mce_href="http://schemas.microsoft.com/developer/vstemplate/2005" ?&gt;&lt;FONT color=#0000ff&gt;http://schemas.microsoft.com/developer/vstemplate/2005"&lt;/FONT&gt;&lt;/A&gt;&lt;FONT color=#0000ff&gt; Type="ProjectGroup"&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;TemplateData&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DefaultName&amp;gt;Template Solution Test - ClassLibraries 1 e 2&amp;lt;/DefaultName&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Name&amp;gt;Template Solution Test - ClassLibraries 1 e 2&amp;lt;/Name&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Description&amp;gt;Template Solution Test - ClassLibraries 1 e 2&amp;lt;/Description&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;Icon&amp;gt;Default.ico&amp;lt;/Icon&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProjectType&amp;gt;CSharp&amp;lt;/ProjectType&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;CreateNewFolder&amp;gt;false&amp;lt;/CreateNewFolder&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;DefaultName&amp;gt;&amp;lt;/DefaultName&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProvideDefaultName&amp;gt;false&amp;lt;/ProvideDefaultName&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/TemplateData&amp;gt; &lt;BR&gt;&lt;STRONG&gt;&amp;nbsp; &amp;lt;TemplateContent&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;ProjectCollection&amp;gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&amp;lt;ProjectTemplateLink ProjectName="ClassLibrary1"&amp;gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .\ClassLibrary1\ClassLibrary1.vstemplate &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProjectTemplateLink&amp;gt; &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &lt;STRONG&gt;&amp;lt;ProjectTemplateLink ProjectName="ClassLibrary2"&amp;gt; &lt;BR&gt;&lt;/STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; .\ClassLibrary2\ClassLibrary2.vstemplate &lt;BR&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProjectTemplateLink&amp;gt; &lt;BR&gt;&lt;STRONG&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;lt;/ProjectCollection&amp;gt; &lt;BR&gt;&amp;nbsp; &amp;lt;/TemplateContent&amp;gt;&lt;/STRONG&gt; &lt;BR&gt;&amp;lt;/VSTemplate&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;No exemplo acima, note que o tag &lt;STRONG&gt;&amp;lt;TemplateContent&amp;gt;&lt;/STRONG&gt; contém agora o tag &lt;STRONG&gt;&amp;lt;ProjectCollection&amp;gt;,&lt;/STRONG&gt; onde encontramos a referência para dois templates de projetos previamente gerados: &lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;ProjectTemplateLink ProjectName="ClassLibrary1"&amp;gt; &lt;BR&gt;&amp;nbsp; .\ClassLibrary1\ClassLibrary1.vstemplate &lt;BR&gt;&amp;lt;/ProjectTemplateLink&amp;gt; &lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#0000ff&gt;&amp;lt;ProjectTemplateLink ProjectName="ClassLibrary2"&amp;gt; &lt;BR&gt;&amp;nbsp; .\ClassLibrary2\ClassLibrary2.vstemplate &lt;BR&gt;&amp;lt;/ProjectTemplateLink&amp;gt;&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Assim, criando os templates de projetos individuais, podemos gerar um template de solução, que agrupa vários projetos, para customizações mais completas. O pacote .zip final com o template gerado é colocado na pasta: &lt;/P&gt;
&lt;P&gt;&lt;FONT face="Lucida Console" color=#0000ff&gt;"C:\Documents and Settings\user\My Documents\Visual Studio 2005\My Exported Templates"&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Mas ainda é possível criar novas pastas, agrupando templates por projetos, departamentos, funcionalidades, etc. No momento da criação de uma nova solução ou projeto, os templates previamente gerados são oferecidos ao desenvolvedor, que agora não inicia o desenvolvimento do zero.&amp;nbsp;Até aqui, falamos de templates de projetos, mas o mesmo mecanismo funciona para templates de arquivos ou recursos individuais de um projeto, chamados de &lt;STRONG&gt;Item Template.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Uma boa referência sobre a criação de templates você encontra aqui, com uma série de links sobre os tags e funcionalidades dos arquivos "&lt;STRONG&gt;.vstemplates&lt;/STRONG&gt;": &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Create Reusable Project And Item Templates For Your Development Team&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://msdn.microsoft.com/msdnmag/issues/06/01/codetemplates/default.aspx" mce_href="http://msdn.microsoft.com/msdnmag/issues/06/01/codetemplates/default.aspx"&gt;http://msdn.microsoft.com/msdnmag/issues/06/01/codetemplates/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;No próximo post, vamos falar das customizações sobre o SDK v4.0 do Visual Studio 2005.&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=7120800" 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/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx">GAT / GAX</category></item><item><title>Guidance Automation Toolkit, Software Factory, Domain-Specific Languages e outros assuntos.</title><link>http://blogs.msdn.com/wcamb/archive/2008/01/11/visual-studio-extensibility-guidance-automation-toolkit-software-factory-domain-specific-languages-e-outros-assuntos.aspx</link><pubDate>Fri, 11 Jan 2008 19:46:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7076394</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/7076394.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=7076394</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=7076394</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;Nos últimos posts temos falado sobre frameworks, templates e temas relacionados com a produtividade de software. Reusabilidade de serviços, otimização, qualidade na codificação e desafios no desenvolvimento são tópicos sempre recorrentes. Em linhas gerais, o mundo da arquitetura de software sempre envolve essas questões e cabe ao arquiteto direcionar suas equipes para a correta adoção das melhores práticas para uma codificação de qualidade e com produtividade. Existem diversas ferramentas que suportam o arquiteto nessa tarefa. Como exemplo, podemos citar as Fábricas de Software (Software Factories). &lt;/P&gt;
&lt;P&gt;Sobre esse tema, vale recomendar o livro "Software Factory" de Jack Greenfield, uma leitura obrigatória sobre o assunto.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.amazon.com/Software-Factories-Assembling-Applications-Frameworks/dp/0471202843/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200059711&amp;amp;sr=1-1" mce_href="http://www.amazon.com/Software-Factories-Assembling-Applications-Frameworks/dp/0471202843/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200059711&amp;amp;sr=1-1"&gt;http://www.amazon.com/Software-Factories-Assembling-Applications-Frameworks/dp/0471202843/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200059711&amp;amp;sr=1-1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Outro elemento importante nessa discussão são as DSL'S - Domaing-Specific Languages, que permitem a construção de ferramentas visuais para a composição de soluções, gerando código de forma automática e com grande controle sobre a qualidade do código gerado. O desenvolvimento de uma DSL passa pelo entendimento do negócio, assim como os artefatos de software que serão utilizados, como bibliotecas, templates, patterns de desenvolvimento, etc. &lt;/P&gt;
&lt;P&gt;Uma leitura recomendada sobre DSL's é o livro "Visual Studio DSL Tools", da série Microsoft .NET Development. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Domain-Specific Development with Visual Studio DSL Tools (Microsoft .NET Development Series)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203/ref=pd_bbs_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200059661&amp;amp;sr=8-1" mce_href="http://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203/ref=pd_bbs_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200059661&amp;amp;sr=8-1"&gt;http://www.amazon.com/Domain-Specific-Development-Visual-Studio-Microsoft/dp/0321398203/ref=pd_bbs_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1200059661&amp;amp;sr=8-1&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Mas antes de avançarmos sobre Fábricas de Software ou DSL's, vamos falar um pouco sobre ferramentas de extensibilidade e guias de automação. Nesse ponto, a Microsoft oferece já há algum tempo o pacote GAT - Guidance Automation Toolkit, de fato o fundamento para o trabalho com Fábricas de Software e Linguagens de Domínio Específico. &lt;/P&gt;
&lt;P&gt;Veja os links para download abaixo (GAT/GAX são ambos necessários): &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GAX - Guidance Automation Extensions - que fornece o núcleo de ferramentas, templates e assistentes para a criação de guias de automação; &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C4-9F7B-71E51866A7ED&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;GAT - Guidance Automation Toolkit - que permite a construção de guias e navegadores sobre os artefatos utilizados em sua solução de automação. &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E-97B27E49EAAE&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Os pacotes GAT/GAX adicionam ao ambiente do Visual Studio a infra-estrutura necessária de linguagens e ferramentas para a construção de pacotes de automação para geração de código. O objetivo é automatizar a codificação, baseando-se em templates e modelos de codificação que o arquiteto selecionou como melhores práticas para um nicho de solução específico. Por exemplo, podemos pensar na automação de um cenário para construção de aplicações ASP.NET, que faça uso de bibliotecas de um framework corporativo e que utilize templates de navegação otimizados e homologados pela equipe de arquitetura. O objetivo num cenário como esse é garantir que os desenvolvedores tenham produtividade durante a construção de novas aplicações, enquanto que as variações de soluções nesse mesmo domínio ficam sob controle. Essa geração dinâmica de código ocorre sobre uma linguagem de templates, a Text Templating Transformation Toolkit ou simplesmente T4. &lt;/P&gt;
&lt;P&gt;O exemplo abaixo em template T4 gera um código C# que implementa uma classe para escrever "Hello Iteration: n", onde n é o número de iterações que passamos como parâmetro para o template: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/VisualStudioExtensibilityGuidanceAutoma_CD5E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/VisualStudioExtensibilityGuidanceAutoma_CD5E/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=385 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/VisualStudioExtensibilityGuidanceAutoma_CD5E/image_thumb_1.png" width=592 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/VisualStudioExtensibilityGuidanceAutoma_CD5E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Finalmente, como parte dessa preparação para tabalharmos com GAT/GAX, devemos instalar 2 pacotes importantes: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Library 3.1 - May 2007 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=4C557C63-708F-4280-8F0C-637481C31718&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=4C557C63-708F-4280-8F0C-637481C31718&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=4C557C63-708F-4280-8F0C-637481C31718&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Visual Studio 2005 SDK Version 4.0 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=51A5C65B-C020-4E08-8AC0-3EB9C06996F4&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Nos próximos posts, vamos avançar no assunto, discutindo alguns aspectos importantes sobre GAT/GAX, enquanto evoluímos juntos rumo a DSL's de sucesso! :) &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=7076394" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx">Frameworks</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx">GAT / GAX</category></item><item><title>Sync Framework Runtime - Um framework para sincronização de aplicações.</title><link>http://blogs.msdn.com/wcamb/archive/2008/01/07/sync-framework-runtime-um-framework-para-sincroniza-o-de-aplica-es.aspx</link><pubDate>Mon, 07 Jan 2008 21:21:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7018309</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/7018309.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=7018309</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=7018309</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;De volta ao blog e já em 2008. &lt;/P&gt;
&lt;P&gt;E para retomar nossa discussão, aproveito o artigo sobre &lt;STRONG&gt;Sync Framework Runtime&lt;/STRONG&gt;, comentado pelo Otávio em seu post &lt;STRONG&gt;"Fechando 2007"&lt;/STRONG&gt; aqui no link &lt;A href="http://blogs.msdn.com/otavio/archive/2007/12/30/fechando-2007.aspx" mce_href="http://blogs.msdn.com/otavio/archive/2007/12/30/fechando-2007.aspx"&gt;http://blogs.msdn.com/otavio/archive/2007/12/30/fechando-2007.aspx&lt;/A&gt;. O artigo principal está aqui ( &lt;A title=http://msdn2.microsoft.com/en-us/sync/bb821992.aspx href="http://msdn2.microsoft.com/en-us/sync/bb821992.aspx" mce_href="http://msdn2.microsoft.com/en-us/sync/bb821992.aspx"&gt;http://msdn2.microsoft.com/en-us/sync/bb821992.aspx&lt;/A&gt; ) e sua versão em português já está disponível aqui ( &lt;A title=http://msdn2.microsoft.com/pt-br/sync/bb821992.aspx href="http://msdn2.microsoft.com/pt-br/sync/bb821992.aspx" mce_href="http://msdn2.microsoft.com/pt-br/sync/bb821992.aspx"&gt;http://msdn2.microsoft.com/pt-br/sync/bb821992.aspx&lt;/A&gt; ).&lt;/P&gt;
&lt;P&gt;O &lt;STRONG&gt;Sync Framework Runtime&lt;/STRONG&gt; permite a sincronização de aplicações. Pode ser baixado já para testes sobre o Visual Studio 2005 e é parte fundamental do &lt;STRONG&gt;Visual Studio "Orcas" Sync Designer&lt;/STRONG&gt;, que permite a rápida configuração para sincronização de aplicações offline e de colaboração. &lt;BR&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SyncFrameworkRuntimeUmframeworkparasinc_E4C5/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SyncFrameworkRuntimeUmframeworkparasinc_E4C5/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=317 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SyncFrameworkRuntimeUmframeworkparasinc_E4C5/image_thumb_1.png" width=481 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SyncFrameworkRuntimeUmframeworkparasinc_E4C5/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Em linhas gerais, imagine o problema de construir um ecosistema que integre qualquer aplicação, com qualquer dado de qualquer fonte, usando qualquer protocolo sobre qualquer rede, esse é o objetivo principal do &lt;STRONG&gt;Sync&lt;/STRONG&gt; &lt;STRONG&gt;Framework Runtime&lt;/STRONG&gt;, recentemente anunciado pela Microsoft. O cenário parece complexo, mas na verdade é a realização de um sonho de integração entre diferentes domínios de aplicação, que há muito tem sido perseguido pelo mercado para aplicações SmartClient. &lt;/P&gt;
&lt;P&gt;Para isso, o principal recurso do &lt;STRONG&gt;Sync Framework Runtime&lt;/STRONG&gt; é o uso de provedores de sincronização personalizados. Um &lt;STRONG&gt;provedor&lt;/STRONG&gt; é um componente de software que representa uma réplica da sincronização. Uma &lt;STRONG&gt;réplica&lt;/STRONG&gt; é um repositório específico das informações a serem sincronizadas, como um sistema de arquivos em um dispositivo portátil. Ao representar uma &lt;STRONG&gt;fonte de dados&lt;/STRONG&gt;, um provedor enumera as alterações de sua réplica. Ao representar um &lt;STRONG&gt;destino&lt;/STRONG&gt;, um provedor aplica as alterações à sua réplica. Se os dados na fonte e no destino forem diferentes em relação ao tipo ou esquema, cada provedor executará o mapeamento ou transformação necessária, de forma automática.&lt;/P&gt;
&lt;P&gt;O Sync Framework Runtime já vem com alguns provedores disponíveis, como: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Sync Services for ADO.NET: que permite a sincronização para ADO.NET e fontes de dados;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Sync Services for File Systems: que permite a sincronização através de arquivos e diretórios;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Sync Services for FeedSync: que permite a sincronização para feeds padrão RSS e ATOM.&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Como um exemplo de serviço de sincronização para arquivos, o artigo abaixo fornece uma boa discussão sobre o tema: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introducing Microsoft Sync Framework: Sync Services for File Systems&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn2.microsoft.com/en-us/sync/bb887623.aspx" mce_href="http://msdn2.microsoft.com/en-us/sync/bb887623.aspx"&gt;http://msdn2.microsoft.com/en-us/sync/bb887623.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E para a discussão de cenários sincronizando bases de dados, temos o artigo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Introduction to Occasionally Connected Applications using Sync Services for ADO.NET &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn2.microsoft.com/en-us/sync/bb887608.aspx" mce_href="http://msdn2.microsoft.com/en-us/sync/bb887608.aspx"&gt;http://msdn2.microsoft.com/en-us/sync/bb887608.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Também já está disponível o Preview do Books Online para o framework, confira aqui:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Sync Framework Community Technology Preview Books Online &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=A3EE7BC5-A823-4FB4-B152-9E8CE9D5546F&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=A3EE7BC5-A823-4FB4-B152-9E8CE9D5546F&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=A3EE7BC5-A823-4FB4-B152-9E8CE9D5546F&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Para baixar o Sync Framework v1.0 CTP1, veja o link: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Download Microsoft Sync Framework v1.0 CTP1 Refresh&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=C88BA2D1-CEF3-4149-B301-9B056E7FB1E6&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E já que o post agrupou uma série de links, porque não mais um ? :) A referência a seguir concentra uma série de discussões sobre sincronização e tecnologias de replicação de dados. &lt;STRONG&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SyncGuru&lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.syncguru.com/ href="http://www.syncguru.com/" mce_href="http://www.syncguru.com/"&gt;http://www.syncguru.com/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Por enquanto é só! Até o próximo post e Feliz 2008! &lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7018309" 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/Frameworks/default.aspx">Frameworks</category></item></channel></rss>