<?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 : Composite Applications</title><link>http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx</link><description>Tags: Composite Applications</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Aplicações Ricas e Aplicações de Composição</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/27/aplica-es-ricas-e-aplica-es-de-composi-o.aspx</link><pubDate>Fri, 27 Nov 2009 14:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9929402</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9929402.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9929402</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9929402</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Essa semana estive falando com várias empresas em Brasília, sobre tipos de interfaces, aplicações ricas e de composição para o setor bancário. &lt;/P&gt;
&lt;P&gt;Na verdade, &lt;STRONG&gt;Composite Applications&lt;/STRONG&gt; e &lt;STRONG&gt;Rich Internet Applications&lt;/STRONG&gt; são tendências para todas as verticais, não só em finanças. Permitir a combinação de recursos e serviços oferecidos pela empresa ou por fornecedores externos, de forma transparente para o usuário, é quase uma obrigação em muitos cenários.&lt;/P&gt;
&lt;P&gt;Assim, gostaria de indicar alguns exemplos interessantes de aplicações, utilizando abordagens de composição, interfaces ricas pela web, hospedagem em cloud computing e mesmo tecnologia Silverlight, veja: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb.png" width=244 height=156 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;Ref.: &lt;A title=http://vf4demo.idvsolutions.com/ href="http://vf4demo.idvsolutions.com/" rel=nofollow target=_blank mce_href="http://vf4demo.idvsolutions.com/"&gt;http://vf4demo.idvsolutions.com/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_1.png" width=244 height=154 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_1.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;Ref.: &lt;A title=http://wwwns.akamai.com/hdnetwork/demo/silverlight/ href="http://wwwns.akamai.com/hdnetwork/demo/silverlight/" rel=nofollow target=_blank mce_href="http://wwwns.akamai.com/hdnetwork/demo/silverlight/"&gt;http://wwwns.akamai.com/hdnetwork/demo/silverlight/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_2.png" width=244 height=154 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_2.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;Ref.: &lt;A title=http://eyeonearth.cloudapp.net/ href="http://eyeonearth.cloudapp.net/" rel=nofollow target=_blank mce_href="http://eyeonearth.cloudapp.net/"&gt;http://eyeonearth.cloudapp.net/&lt;/A&gt;&amp;nbsp; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_8.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_3.png" width=244 height=144 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_3.png"&gt;&lt;/A&gt; &lt;BR&gt;Ref.: &lt;A title=http://www.mscui.net/PatientJourneyDemonstrator/ href="http://www.mscui.net/PatientJourneyDemonstrator/" rel=nofollow target=_blank mce_href="http://www.mscui.net/PatientJourneyDemonstrator/"&gt;http://www.mscui.net/PatientJourneyDemonstrator/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Além desses exemplos, vale olhar pacotes como o &lt;STRONG&gt;Composite Application Guidance for WPF &amp;amp;&lt;/STRONG&gt; Silverlight, como falamos essa semana:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_10.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_4.png" width=244 height=165 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AplicaesRicaseAplicaesdeComposio_A822/image_thumb_4.png"&gt;&lt;/A&gt; &lt;BR&gt;Ref.: &lt;A title=http://www.codeplex.com/CompositeWPF href="http://www.codeplex.com/CompositeWPF" rel=nofollow target=_blank mce_href="http://www.codeplex.com/CompositeWPF"&gt;http://www.codeplex.com/CompositeWPF&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E não deixe de conferir as sessões sobre Silverlight 4.0, apresentadas durante o pdc09. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Silverlight 4 Overview &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://microsoftpdc.com/Sessions/P09-11" rel=nofollow target=_blank mce_href="http://microsoftpdc.com/Sessions/P09-11"&gt;http://microsoftpdc.com/Sessions/P09-11&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Improving and Extending the Sandbox with Silverlight 4 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://microsoftpdc.com/Sessions/CL20" rel=nofollow target=_blank mce_href="http://microsoftpdc.com/Sessions/CL20"&gt;http://microsoftpdc.com/Sessions/CL20&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Building Line of Business Applications with Microsoft Silverlight 4 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://microsoftpdc.com/Sessions/CL19" rel=nofollow target=_blank mce_href="http://microsoftpdc.com/Sessions/CL19"&gt;http://microsoftpdc.com/Sessions/CL19&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9929402" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Composite Application Guidance for WPF and Silverlight – agora com Silverlight 3.0</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/25/composite-application-guidance-for-wpf-and-silverlight-agora-suportando-silverlight-3-0.aspx</link><pubDate>Wed, 25 Nov 2009 22:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9928834</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9928834.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9928834</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9928834</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Faltou mesmo!!! O mês de outubro passou e nem falei da nova versão do Composite Application Guidance for WPF and Silverlight, rodando em Silverlight 3.0, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFandSil_11A30/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFandSil_11A30/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFandSil_11A30/image_thumb_1.png" width=244 height=142 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFandSil_11A30/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices: Composite WPF and Silverlight &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://compositewpf.codeplex.com/" rel=nofollow target=_blank mce_href="http://compositewpf.codeplex.com/"&gt;http://compositewpf.codeplex.com/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF and Silverlight - October 2009 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40&amp;amp;displaylang=en" rel=nofollow target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=387c7a59-b217-4318-ad1b-cbc2ea453f40&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A página do projeto avisa que a versão de outubro atualiza o CompositeApp para Silverlight 3, prevendo também novas versões para o futuro!&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=9928834" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Artigo: Uma introdução ao Software + Serviços, SaaS e SOA</title><link>http://blogs.msdn.com/wcamb/archive/2009/06/02/artigo-uma-introdu-o-ao-software-servi-os-saas-e-soa.aspx</link><pubDate>Tue, 02 Jun 2009 22:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9686654</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9686654.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9686654</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9686654</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Boas Novas: já está no ar meu novo artigo sobre &lt;EM&gt;SOA, SAAS &lt;/EM&gt;e&lt;EM&gt; Software + Services&lt;/EM&gt; no MSDN Brasil. Ele acabou de ser publicado e está disponível na URL abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Uma introdução ao Software + Serviços, SaaS e SOA &lt;BR&gt;&lt;/STRONG&gt;por Waldemir Cambiucci &lt;BR&gt;Maio de 2009 &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/library/dd875466.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/library/dd875466.aspx"&gt;http://msdn.microsoft.com/pt-br/library/dd875466.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Entre outros assuntos, o artigo trata os principais aspectos envolvidos na visão &lt;STRONG&gt;Software + Serviços&lt;/STRONG&gt;, usando como base os pilares abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArtigoMSDNUmaintroduoaoSoftwareServiosSa_E994/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArtigoMSDNUmaintroduoaoSoftwareServiosSa_E994/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=297 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArtigoMSDNUmaintroduoaoSoftwareServiosSa_E994/image_thumb.png" width=502 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArtigoMSDNUmaintroduoaoSoftwareServiosSa_E994/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Não deixe de conferir e fazer seus comentários! &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=9686654" 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/SOA/default.aspx">SOA</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/SaaS/default.aspx">SaaS</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Do PIC ao PRISM, do DOS ao Azure… o tempo não para! :)</title><link>http://blogs.msdn.com/wcamb/archive/2009/03/07/do-pic-ao-prism-do-dos-ao-azure-o-tempo-n-o-para.aspx</link><pubDate>Sat, 07 Mar 2009 20:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9464347</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9464347.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9464347</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9464347</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Essa semana, num papo de corredor, estive conversando com o &lt;A href="http://blogs.technet.com/lpalma/" target=_blank mce_href="http://blogs.technet.com/lpalma/"&gt;Palma&lt;/A&gt; sobre &lt;STRONG&gt;micro-programação&lt;/STRONG&gt;, arquiteturas de &lt;STRONG&gt;micro-kernel&lt;/STRONG&gt; e como a tecnologia evoluiu nesses últimos anos. Se você se lembra de desenhos como esse, vai entender:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/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/teste_102FC/image_thumb.png" width=522 height=496 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O desenho acima é um diagrama de blocos do micro-controlador &lt;STRONG&gt;PIC16F62X&lt;/STRONG&gt;, um &lt;STRONG&gt;FLASH-Based 8-Bit CMOS&lt;/STRONG&gt; que foi uma febre um tempo atrás, para quem gostava de eletrônica digital (como eu :) ). Estudando o &lt;STRONG&gt;data sheet &lt;/STRONG&gt;do PIC, era possível implementar uma infinidade de sistemas, de pequenos controladores até programas sofisticados de conversão e controle de dados em digitais. NOR, AND, OR, flip-flop, família 74 CMOS, eram os artefatos de programação digital nos anos 90.&lt;/P&gt;
&lt;P&gt;Na mesma época, o mercado era repleto de gigas de teste, onde também era possível aplicar instruções e projetos simplificados, como essas abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image6.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image6_thumb.png" width=279 height=214 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image6_thumb.png"&gt;&lt;/A&gt; &lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_7.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_thumb_1.png" width=209 height=204 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Talvez alguns dos leitores tenham visto mesas como essas em suas aulas na faculdade, enquanto aprendia os fundamentos de digitais e engenharia de computação. &lt;/P&gt;
&lt;P&gt;Hoje, passamos grande parte do tempo no mundo do software, compondo &lt;STRONG&gt;patterns&lt;/STRONG&gt; como &lt;STRONG&gt;Pub/Sub, Facade, State, Observer, Proxy&lt;/STRONG&gt;, etc, combinando funcionalidades em aplicações de composição, que lembram um pouco essas mesas de testes. Você escolhe seus componentes, serviços e fontes de dados, conecta esses elementos entre si e tem uma aplicação. Passado algum tempo, podemos desligar algumas conexões feitas, reorganizá-las e temos uma nova aplicação.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/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/teste_102FC/image_thumb_2.png" width=486 height=365 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nesse mesma onda, o mundo dos sistemas operacionais também evoluiu. Em 1981 começava a saga do &lt;STRONG&gt;Microsoft DOS (MS-DOS)&lt;/STRONG&gt;, que assim como o PC-DOS da IBM, oferecia um ambiente quase obrigatório para quem iniciava no mundo dos PCXT’s. A computação pessoal começava, com um sistema operacional que oferecia uma série de recursos como DIR, RENAME, FORMAT, FDISK, CHDIR, ANSY.SYS, EMM386, COMMAND, entre outros, que faziam a interface entre o usuário e os recursos de uma máquina desafiadora com 640 KB de memória, 10 MB de HD e incríveis 4 MHz de CPU. &lt;BR&gt;Era um admirável mundo novo!!! :)&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_12.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 5px 0px 5px 5px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_thumb_5.png" width=166 height=171 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/teste_102FC/image_thumb_5.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Hoje, falamos de sistemas operacionais na nuvem, fazendo uma nova interface entre o usuário e um ambiente massivo de processamento e armazenamento ilimitado. Falamos em transparência de autenticação e integração entre infra-estruturas corporativas locais e aplicações distribuídas em datacenters de última geração, com milhares de máquinas e alta escalabilidade. Parece mesmo o nascimento de um admirável mundo novo!!! :)&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Do PIC ao PRISM&lt;/STRONG&gt;, passamos de componentes discretos de eletrônica digital aos componentes e patterns de composição para a construção de aplicações compostas. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Do DOS ao AZURE&lt;/STRONG&gt;, passamos de recursos de um sistema operacional local, com aplicações de 16 bits em máquinas que viviam a maior parte do tempo isoladas, para um sistema operacional na nuvem, suportando os conceitos da computação elástica.&lt;/P&gt;
&lt;P&gt;Realmente, esses últimos 30 anos foram impressionantes. Como serão os próximos 30 anos de evolução em TI ? Talvez não precisemos esperar tanto para nos surpreender com as inovações que estão adiante.&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=9464347" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</category></item><item><title>Aplicações Compostas com o Prism v2.0 : Um "Hello World" para começar.</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/26/aplica-es-compostas-com-o-prism-v2-0-um-hello-world-para-come-ar.aspx</link><pubDate>Thu, 26 Feb 2009 18:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9446784</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9446784.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9446784</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9446784</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Atualmente, estou envolvido num projeto que avalia uma interface de composição e seus desafios. Existem diversos aspectos de arquitetura envolvidos nesse tipo de interface, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Suportar diferentes fontes de dados e serviços;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Utilizar patterns de composição para seus diversos componentes de tela;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Permitir o desenvolvimento simultâneo de seus componentes;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Suportar as novas necessidades de usabilidade e flexibilidade em interfaces UX;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Tratar layouts dinâmicos;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Tratar eventos e subscrição de eventos;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Para atender esses requisitos, existem diversos patterns aplicáveis, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Composite User Interface patterns:&lt;/STRONG&gt; Composite and Composite View, Comando e Adaptadores; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Modularity patterns: &lt;/STRONG&gt;Separated Interface and Plug In, Service Locator, Event Aggregator e Façades; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Testability patterns:&lt;/STRONG&gt; Inversion of Control, Separated Presentation, etc. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Como alternativa na plataforma Microsoft estou usando o &lt;STRONG&gt;PRISM v2.0 - Composite Application Guidance for WPF and Silverlight 2.0&lt;/STRONG&gt;, anunciado recentemente, veja &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/02/19/composite-application-guidance-for-wpf-and-silverlight-2-0-final-fev-2009.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/02/19/composite-application-guidance-for-wpf-and-silverlight-2-0-final-fev-2009.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 10px 10px 0px; BORDER-RIGHT-WIDTH: 0px" height=304 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_1.png" width=179 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Assim, os próximos posts serão dedicados ao PRISM v2.0 e seus recursos.&lt;/P&gt;
&lt;P&gt;Para começar, a figura ao lado apresenta a pilha de componentes do PRISM, que executa sobre o .NET 3.5 e os recursos do WPF - Windows Presentation Foundation.&lt;/P&gt;
&lt;P&gt;Entre os componentes principais citamos: &lt;BR&gt;o &lt;STRONG&gt;Unity Application Block&lt;/STRONG&gt;, responsável pela infra-estrutura para inversão de controle e tratamento de containers; o &lt;STRONG&gt;Unity Extensions Composite Application Library&lt;/STRONG&gt;, que disponibiliza os recursos da Unity no ambiente de programação do PRISM; e a própria &lt;STRONG&gt;Composite Application Library (CAL)&lt;/STRONG&gt;, que encapsula esses recursos para o desenvolvedor PRISM.&lt;/P&gt;
&lt;P&gt;Sobre a CAL, criamos nossos módulos e shell interface para a aplicação de composição.&lt;/P&gt;
&lt;P&gt;Já no desenvolvimento de nossos módulos e elementos de tela, a &lt;STRONG&gt;CAL&lt;/STRONG&gt; oferece o seguinte conjunto de recursos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Bootstrapper&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Module&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Services &amp;amp; Containers&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Regions&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Views&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Events&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Commands&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Seu primeio projeto com o PRISM v2.0&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Vejamos um primeiro projeto com o PRISM. O pacote possui diversos projetos prontos que são boas dicas de estudo, entre eles, vários Quick Starts sobre cada um dos componentes da CAL. Vamos olhar hoje o Quick Start &lt;STRONG&gt;"Hello World". &lt;/STRONG&gt;Ele se encontra instalado na pasta abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;C:\[PRISM V2.0]\Quickstarts\Hello World\HelloWorld.Desktop&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Abrindo o QuickStart "&lt;STRONG&gt;Hello World&lt;/STRONG&gt;", você terá a seguinte solução no Visual Studio:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 10px 10px 0px; BORDER-RIGHT-WIDTH: 0px" height=292 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_2.png" width=228 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Na figura ao lado, vemos 1 pasta para os componentes da CAL (Composite&lt;EM&gt;.Desktop, Composite.Presentation.Desktop&lt;/EM&gt; e &lt;EM&gt;Composite.UnityExtensions.Desktop&lt;/EM&gt;), assim como 2 projetos na solução:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;HelloWorld.Desktop&lt;/STRONG&gt; - Projeto que implementa a interface principal, sendo também o ponto de entrada da aplicação; &lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;HelloWorldModule&lt;/STRONG&gt; - Projeto do módulo de visualização, que fará parte da interface principal. Em soluções maiores, teremos vários projetos de módulos, cada um implementando uma View ou Views de composição. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Portanto, uma solução com o PRISM terá no mínimo 2 projetos: a interface principal (sendo o ponto de entrada) e um módulo de visualização. &lt;/P&gt;
&lt;P&gt;Quando olhamos o projeto do &lt;STRONG&gt;HelloWorldModule&lt;/STRONG&gt;, notamos que nenhuma referência é feita para o projeto Desktop. Ao mesmo tempo, temos uma pasta de View(s) presente no projeto, implementando os componentes de tela do módulo. Uma View é na verdade um &lt;STRONG&gt;User Control&lt;/STRONG&gt; em WPF que será apresentado na interface shell, como vemos abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_10.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=62 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_4.png" width=369 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Em &lt;STRONG&gt;XAML&lt;/STRONG&gt;, esse User Control aparece assim:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &amp;lt;UserControl x:Class=&lt;SPAN style="COLOR: #006080"&gt;"HelloWorldModule.Views.HelloWorldView"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt;     xmlns=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;     xmlns:x=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;     &amp;lt;Grid&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;         &amp;lt;TextBlock Text=&lt;SPAN style="COLOR: #006080"&gt;"Hello World - Arquitetura de Soluções"&lt;/SPAN&gt; Foreground=&lt;SPAN style="COLOR: #006080"&gt;"Green"&lt;/SPAN&gt; HorizontalAlignment=&lt;SPAN style="COLOR: #006080"&gt;"Center"&lt;/SPAN&gt; VerticalAlignment=&lt;SPAN style="COLOR: #006080"&gt;"Center"&lt;/SPAN&gt; FontFamily=&lt;SPAN style="COLOR: #006080"&gt;"Calibri"&lt;/SPAN&gt; FontSize=&lt;SPAN style="COLOR: #006080"&gt;"24"&lt;/SPAN&gt; FontWeight=&lt;SPAN style="COLOR: #006080"&gt;"Bold"&lt;/SPAN&gt;&amp;gt;&amp;lt;/TextBlock&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &amp;lt;/Grid&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt; &amp;lt;/UserControl&amp;gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Encapsulando essa View no Módulo &lt;STRONG&gt;HelloWorld&lt;/STRONG&gt;, vemos a classe &lt;STRONG&gt;HelloWorldModule&lt;/STRONG&gt;, apresentada a seguir a partir do arquivo "&lt;STRONG&gt;HelloWorldModule.cs&lt;/STRONG&gt;". Note que através dessa classe, relacionamos as views presentes no módulo, assim como a região que usaremos na interface principal para apresentação da view:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Practices.Composite.Modularity;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Practices.Composite.Regions;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt; HelloWorldModule&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; HelloWorldModule : IModule&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;readonly&lt;/SPAN&gt; IRegionViewRegistry regionViewRegistry;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; HelloWorldModule(IRegionViewRegistry registry)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.regionViewRegistry = registry;   &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  14:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  15:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; Initialize()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  16:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  17:&lt;/SPAN&gt;             regionViewRegistry.RegisterViewWithRegion(&lt;SPAN style="COLOR: #006080"&gt;"MainRegion"&lt;/SPAN&gt;, &lt;SPAN style="COLOR: #0000ff"&gt;typeof&lt;/SPAN&gt;(Views.HelloWorldView));&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  18:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  19:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  20:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Esse projeto compilado deverá gerar a biblioteca &lt;STRONG&gt;"HelloWorldModule.dll".&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;Olhando o projeto &lt;STRONG&gt;HelloWorld.Desktop&lt;/STRONG&gt; presente na solução, vemos uma interface principal chamada Shell, que define a MainRegion, container para os vários módulos da solução.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image34.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image34.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=183 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image34_thumb.png" width=280 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image34_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O código XAML da Shell principal é dado a seguir: &lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &amp;lt;Window x:Class=&lt;SPAN style="COLOR: #006080"&gt;"HelloWorld.Shell"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt;     xmlns=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;     xmlns:x=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;     xmlns:cal=&lt;SPAN style="COLOR: #006080"&gt;"http://www.codeplex.com/CompositeWPF"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;     Title=&lt;SPAN style="COLOR: #006080"&gt;"Hello World"&lt;/SPAN&gt; Height=&lt;SPAN style="COLOR: #006080"&gt;"195"&lt;/SPAN&gt; Width=&lt;SPAN style="COLOR: #006080"&gt;"316"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &amp;lt;ItemsControl Name=&lt;SPAN style="COLOR: #006080"&gt;"MainRegion"&lt;/SPAN&gt; cal:RegionManager.RegionName=&lt;SPAN style="COLOR: #006080"&gt;"MainRegion"&lt;/SPAN&gt; /&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt; &amp;lt;/Window&amp;gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;No XAML acima vemos a definição do MainRegion, através da chamada &lt;STRONG&gt;cal:RegionManager.RegionName = "MainRegion".&lt;/STRONG&gt; Nesse ponto, fazemos a associação da região para visualização do módulo criado.&lt;/P&gt;
&lt;P&gt;Finalmente, o projeto &lt;STRONG&gt;HelloWorld.Desktop&lt;/STRONG&gt; implementa uma classe importante chamada "&lt;STRONG&gt;Bootstrapper&lt;/STRONG&gt;". Ela é o ponto de entrada da CAL na aplicação, sendo responsável pela enumeração e carga dos módulos participantes da solução. &lt;/P&gt;
&lt;P&gt;No código abaixo, vemos o método &lt;STRONG&gt;GetModuleCatalog(),&lt;/STRONG&gt; onde o módulo &lt;STRONG&gt;HelloWorldModule&lt;/STRONG&gt; é chamado:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt; HelloWorld&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; Bootstrapper : UnityBootstrapper&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;override&lt;/SPAN&gt; DependencyObject CreateShell()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;             Shell shell = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; Shell();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt;             shell.Show();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; shell;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;override&lt;/SPAN&gt; IModuleCatalog GetModuleCatalog()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  14:&lt;/SPAN&gt;             ModuleCatalog catalog = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; ModuleCatalog()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  15:&lt;/SPAN&gt;                 .AddModule(&lt;SPAN style="COLOR: #0000ff"&gt;typeof&lt;/SPAN&gt;(HelloWorldModule.HelloWorldModule));&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  16:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; catalog;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  17:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  18:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  19:&lt;/SPAN&gt;         &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  20:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  21:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Uma vez compilado, o projeto &lt;STRONG&gt;HelloWorld.Desktop&lt;/STRONG&gt; deverá gerar o executável &lt;STRONG&gt;"HelloWorld.exe"&lt;/STRONG&gt;, que consome o módulo &lt;STRONG&gt;HelloWorldModule.dll.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Ao final, a aplicação executada apresenta a seguinte interface:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_12.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=132 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_5.png" width=438 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/6c6f2eca8f89_AA2B/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Como exercício sobre esse projeto, execute passo-a-passo a solução e verifique a ordem de disparo de cada um dos componentes da CAL. Você verá a primeira chamada para a class &lt;STRONG&gt;App : Application&lt;/STRONG&gt;, seguida pela &lt;STRONG&gt;class Bootstrapper : UnityBootstrapper&lt;/STRONG&gt;, etc. Vale conferir.&lt;/P&gt;
&lt;P&gt;Nos próximos posts, vamos falar de cada um desses componentes, enquanto percorremos os HOW TO'S, Quick Starts e demais artigos presentes no Prism v2.0. &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=9446784" 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/Composite+Applications/default.aspx">Composite Applications</category></item><item><title>Composite Application Guidance for WPF and Silverlight 2.0 Final – Fev.2009</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/19/composite-application-guidance-for-wpf-and-silverlight-2-0-final-fev-2009.aspx</link><pubDate>Thu, 19 Feb 2009 15:44:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9433954</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9433954.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9433954</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9433954</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Excelente notícia para todos que acompanham o &lt;STRONG&gt;PRISM - Composite Application for WPF and Silverlight&lt;/STRONG&gt;: esta semana tivemos o anúncio de sua&lt;STRONG&gt; versão 2.0 - Final&lt;/STRONG&gt;! :)&lt;/P&gt;
&lt;P&gt;O pacote completo vem com a &lt;STRONG&gt;Composite Application Library&lt;/STRONG&gt;, uma implementação de referência melhorada (a &lt;EM&gt;Stock Traders application in WPF and Silverlight&lt;/EM&gt;), 9 &lt;EM&gt;Quick Starts&lt;/EM&gt; para estudo, 26 &lt;EM&gt;HOW TO'S&lt;/EM&gt; e vários documentos sobre patterns de UI e arquiteturas clientes.&lt;/P&gt;
&lt;P&gt;Para quem se lembra da versão 1.0, a tela principal da implementação de referência era assim:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image7.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image7.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=327 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image7_thumb.png" width=528 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image7_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Agora na versão 2.0 melhorou bastante e ainda conta com exemplos de animação em diversos controles de tela, confira :)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image11.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image11.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=306 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image11_thumb.png" width=525 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image11_thumb.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Internamente, a arquitetura também evoluiu, suportando uma série de patterns de aplicações compostas e recursos como IoC, subscrição de eventos, containers, views, entre outros. De fato, os módulos participantes da aplicação permanecem &lt;STRONG&gt;desacoplados&lt;/STRONG&gt;, permitindo a construção de um projeto independente no Visual Studio para cada recurso da interface de composição.&lt;/P&gt;
&lt;P&gt;Outro recurso &lt;STRONG&gt;muito importante&lt;/STRONG&gt; (eu diria até &lt;STRONG&gt;SENSACIONAL&lt;/STRONG&gt;!) é o compartilhamento do mesmo projeto desktop na web, ou seja, a mesma aplicação acima pode ser encapsulada num projeto Silverlight, como vemos abaixo: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_10.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=382 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_thumb.png" width=528 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;No fundo, a aplicação como um todo é encapsulada como um arquivo .XAP, sendo executada com o plug-in do Siverlight 2.0. Veja como fica a chamada da aplicação na página web acima:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &amp;lt;div id=&lt;SPAN style="COLOR: #006080"&gt;"silverlightControlHost"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt;     &amp;lt;&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; data=&lt;SPAN style="COLOR: #006080"&gt;"data:application/x-silverlight,"&lt;/SPAN&gt; type=&lt;SPAN style="COLOR: #006080"&gt;"application/x-silverlight-2"&lt;/SPAN&gt; width=&lt;SPAN style="COLOR: #006080"&gt;"100%"&lt;/SPAN&gt; height=&lt;SPAN style="COLOR: #006080"&gt;"100%"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;         &amp;lt;param name=&lt;SPAN style="COLOR: #006080"&gt;"source"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;value&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"StockTraderRI.xap"&lt;/SPAN&gt;/&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;         &amp;lt;param name=&lt;SPAN style="COLOR: #006080"&gt;"onerror"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;value&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"onSilverlightError"&lt;/SPAN&gt; /&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;         &amp;lt;param name=&lt;SPAN style="COLOR: #006080"&gt;"background"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;value&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"white"&lt;/SPAN&gt; /&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;         &amp;lt;param name=&lt;SPAN style="COLOR: #006080"&gt;"minRuntimeVersion"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;value&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"2.0.31005.0"&lt;/SPAN&gt; /&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;         &amp;lt;param name=&lt;SPAN style="COLOR: #006080"&gt;"autoUpgrade"&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;value&lt;/SPAN&gt;=&lt;SPAN style="COLOR: #006080"&gt;"true"&lt;/SPAN&gt; /&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt;         &amp;lt;a href=&lt;SPAN style="COLOR: #006080"&gt;"http://go.microsoft.com/fwlink/?LinkID=124807"&lt;/SPAN&gt; style=&lt;SPAN style="COLOR: #006080"&gt;"text-decoration: none;"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt;              &amp;lt;img src=&lt;SPAN style="COLOR: #006080"&gt;"http://go.microsoft.com/fwlink/?LinkId=108181"&lt;/SPAN&gt; alt=&lt;SPAN style="COLOR: #006080"&gt;"Get Microsoft Silverlight"&lt;/SPAN&gt; style=&lt;SPAN style="COLOR: #006080"&gt;"border-style: none"&lt;/SPAN&gt;/&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;         &amp;lt;/a&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;     &amp;lt;/&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;     &amp;lt;iframe style=&lt;SPAN style="COLOR: #006080"&gt;'visibility:hidden;height:0;width:0;border:0px'&lt;/SPAN&gt;&amp;gt;&amp;lt;/iframe&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt; &amp;lt;/div&amp;gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Recomendo fortemente baixar o pacote e começar suas &lt;STRONG&gt;aplicações compostas&lt;/STRONG&gt; e interfaces em Desktop e Silverlight! Veja mais aqui:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF and Silverlight - February 2009&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&amp;amp;DisplayLang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&amp;amp;DisplayLang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21b-e3fa10d013dd&amp;amp;DisplayLang=en&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Finalmente, para a preparação do seu ambiente de desenvolvimento, confira a instalação dos seguintes pacotes:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Visual Studio 2008 SP1&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A7-9649-6D9F6D58056E&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft .NET Framework 3.5 SP1&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D-8319-81DA479AB0D7&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Silverlight (para aplicações Silverlight)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/silverlight/" target=_blank mce_href="http://www.microsoft.com/silverlight/"&gt;http://www.microsoft.com/silverlight/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft Silverlight Tools for Visual Studio 2008 SP1 (para aplicações Silverlight)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6-d60c8ee221ed&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Confira também dois vídeos interessantes do &lt;STRONG&gt;Channel9&lt;/STRONG&gt; sobre o &lt;STRONG&gt;Prism v2.0&lt;/STRONG&gt;, a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/shows/Continuum/Prismv2/" target=_blank mce_href="http://channel9.msdn.com/shows/Continuum/Prismv2/"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=123 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_11.png" width=173 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_11.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A href="http://channel9.msdn.com/shows/Continuum/Prismv2/" target=_blank mce_href="http://channel9.msdn.com/shows/Continuum/Prismv2/"&gt;http://channel9.msdn.com/shows/Continuum/Prismv2/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/" target=_blank mce_href="http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=112 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_12.png" width=181 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFa.2009_CE00/image_12.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A href="http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/" target=_blank mce_href="http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/"&gt;http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Com certeza, esse assunto merece um &lt;STRONG&gt;ArqCast Brasil&lt;/STRONG&gt; especial, não acham? :)&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=9433954" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</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>patterns &amp; practices: Composite WPF and Silverlight - Prism V2 - Drop 10</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/02/patterns-practices-composite-wpf-and-silverlight-prism-v2-drop-10.aspx</link><pubDate>Mon, 02 Feb 2009 20:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9390948</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9390948.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9390948</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9390948</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeWPFandSilverli_DB33/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeWPFandSilverli_DB33/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=74 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeWPFandSilverli_DB33/image_thumb.png" width=290 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeWPFandSilverli_DB33/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Para quem está acompanhando, na última sexta-feira (30/jan) foi publicado do &lt;STRONG&gt;Drop 10 &lt;/STRONG&gt;da &lt;STRONG&gt;Versão 2&lt;/STRONG&gt; do &lt;STRONG&gt;Composite WPF and Silverlight&lt;/STRONG&gt;. Outros posts sobre o assunto você encontra &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Novas atualizações na &lt;STRONG&gt;Composite Application Library&lt;/STRONG&gt; para Silverlight foram implementadas nesse pacotes, além de várias melhorias como um arquivos de help, comentários nos arquivos de XML da CAL e algumas mudanças de nomes de classes.&lt;/P&gt;
&lt;P&gt;Confiras os links principais abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices: Composite WPF and Silverlight - Prism V2 - Drop 10 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=22566 href="http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=22566" mce_href="http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=22566"&gt;http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=22566&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Prism: patterns &amp;amp; practices Composite Application Guidance for WPF and Silverlight site. &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.codeplex.com/CompositeWPF" mce_href="http://www.codeplex.com/CompositeWPF"&gt;http://www.codeplex.com/CompositeWPF&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9390948" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Silverlight/default.aspx">Silverlight</category></item><item><title>Composite Application Guidance for WPF v2.0 Drop 6</title><link>http://blogs.msdn.com/wcamb/archive/2008/11/26/composite-application-guidance-for-wpf-v2-0-drop-6.aspx</link><pubDate>Thu, 27 Nov 2008 02:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9145431</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9145431.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9145431</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9145431</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Temos acompanhado a evolução do &lt;STRONG&gt;Composite Application Guidance for WPF (Prism) &lt;/STRONG&gt;e suas bibliotecas, a &lt;STRONG&gt;CAL - Composite Application Library&lt;/STRONG&gt; - aqui no blog. Veja &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Esta semana tivemos uma atualização na versão 2.0 ainda em desenvolvimento. Entre os objetivos da nova versão citamos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Extensão do Prism 1.0, suportando a construção de aplicações WPF e Silverlight;&lt;/LI&gt;
&lt;LI&gt;Suporte para aplicações multi-headed, tanto para ambiente desktop como para navegação web;&lt;/LI&gt;
&lt;LI&gt;além de uma série de novos templates, quickstarts,&amp;nbsp; suporte ao Silverlight Toolkit Controls e o deploy da versão Stock Trader em Silverlight sobre a CAL;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;O diagrama abaixo apresenta a arquitetura prevista para o &lt;STRONG&gt;Prism 2.0&lt;/STRONG&gt;, onde notamos as caixas de suporte a estilos e temas, assim como o host Silverlight previsto:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWP.0Drop6_12C2B/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWP.0Drop6_12C2B/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=351 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWP.0Drop6_12C2B/image_thumb.png" width=436 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWP.0Drop6_12C2B/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vale conferir a evolução desses patterns, através dos links abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF - Prism V2 - Drop 6&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A title="http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=19731 " href="http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=19731"&gt;http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=19731 &lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9145431" 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/Composite+Applications/default.aspx">Composite Applications</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>patterns &amp; practices : Composite Application Guidance for WPF (New Release)</title><link>http://blogs.msdn.com/wcamb/archive/2008/11/10/patterns-practices-composite-application-guidance-for-wpf-new-release.aspx</link><pubDate>Mon, 10 Nov 2008 19:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9058189</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9058189.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9058189</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9058189</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeApplicationGui_8D15/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeApplicationGui_8D15/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; MARGIN: 0px 6px 6px 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image align=left src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeApplicationGui_8D15/image_thumb.png" width=153 height=198 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeApplicationGui_8D15/image_thumb.png"&gt;&lt;/A&gt; O &lt;STRONG&gt;patterns &amp;amp; practices&lt;/STRONG&gt; continua com bons lançamentos e mais um merece destaque aqui no blog. &lt;/P&gt;
&lt;P&gt;A documentação do &lt;STRONG&gt;Composite Application Guidance for WPF&lt;/STRONG&gt; já está disponível, fornecendo um bom material de estudo para os interessados. Já tivemos uma introdução sobre o assunto aqui no blog. &lt;/P&gt;
&lt;P&gt;Recomendo mais esse documento do patterns &amp;amp; practices como leitura obrigatória pelo time de arquitetura. &lt;/P&gt;
&lt;P&gt;Maiores informações, veja: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/cc707819.aspx" mce_href="http://msdn.microsoft.com/en-us/library/cc707819.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc707819.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF-June 2008&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Documentation for Composite Application Guidance for WPF (PDF)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E3E87BDC-FEC1-4489-91FA-E1CF69721563&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=E3E87BDC-FEC1-4489-91FA-E1CF69721563&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=E3E87BDC-FEC1-4489-91FA-E1CF69721563&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Por enquanto é só! Até o próximo post :) &lt;/P&gt;
&lt;P mce_keep="true"&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9058189" 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/Composite+Applications/default.aspx">Composite Applications</category></item><item><title>Composite Application Guidance for WPF - Parte 2</title><link>http://blogs.msdn.com/wcamb/archive/2008/10/23/composite-application-guidance-for-wpf-parte-2.aspx</link><pubDate>Thu, 23 Oct 2008 21:07:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9013438</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9013438.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9013438</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9013438</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Continuando nosso estudo sobre Composite Application Guidance for WPF, vamos olhar um pouco mais sobre sua estrutura e principais recursos da &lt;STRONG&gt;CAL - Composite Application Library&lt;/STRONG&gt;. Existe um conjunto básico de componentes que estão envolvidos na construção de uma aplicação de composição com essa biblioteca. Esses componentes são baseados nos conceitos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Bootstrapper&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Containers&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Módulos e Serviços&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Regiões&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Visualizações&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Eventos e Comandos&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Cada conceito envolve uma etapa do processo de construção de uma interface de composição. Vejamos:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=517 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=131&gt;&lt;STRONG&gt;Bootstrapper&lt;/STRONG&gt; &lt;/TD&gt;
&lt;TD class="" vAlign=top width=382&gt;É a classe principal de uma aplicação composta, onde podemos inserir as ações de inicialização de componentes como containers, regiões, views, etc. É o ponto de entrada da aplicação. De fato, existe uma classe maior App da aplicação, que usamos para instanciar a classe Bootstrapper.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=131&gt;&lt;STRONG&gt;Containers&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=382&gt;Para que módulos de funcionalidades possam ser relacionados numa interface de forma desacoplada, ou seja, sem relações de dependências diretas entre si, a biblioteca CAL utiliza o conceito de containers. Containers encapsulam módulos e oferecem serviços, que permitem a injeção de funcionalidades na interface Shell.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=131&gt;&lt;STRONG&gt;Módulos e Serviços&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=382&gt;Numa aplicação composta, grande parte da lógica do aplicativo reside nos módulos e serviços, visíveis pela classe bootstrapper através de containers de injeção.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=131&gt;&lt;STRONG&gt;Regions&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=382&gt;São as áreas especificas de mapeamento e renderização de funcionalidades na interface. No projeto, uma region é definida em XAML, através do controle RegionManager, que relaciona as regiões do layout presente em cada formulário de composição.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=131&gt;&lt;STRONG&gt;Views&lt;/STRONG&gt; &lt;/TD&gt;
&lt;TD class="" vAlign=top width=382&gt;Dentro da interface da aplicação, usamos o controle ViewBox para inserir uma View numa região. Cada módulo define sua View, relacionando a região alvo para renderização.&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=131&gt;&lt;STRONG&gt;Events/Commands&lt;/STRONG&gt; &lt;/TD&gt;
&lt;TD class="" vAlign=top width=382&gt;Comandos são as atividades mais simples que definem o comportamento da interface, enquanto que eventos capturam os disparos realizados pelo usuário na interface. Uma aplicação de composição permite que os módulos assinem os eventos desejados, através do pattern de subscrição de eventos.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Vejamos um exemplo. Um projeto básico de aplicação com o Composite Application Guidance for WPF contém os seguinte componentes:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_12.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=454 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_thumb_5.png" width=295 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_thumb_5.png"&gt;&lt;/A&gt; Exemplo "HelloWorld Solution".&lt;/P&gt;
&lt;P&gt;A solução acima é composta por 5 projetos: 3 projetos da Composite Application Library (&lt;STRONG&gt;Composite, &lt;STRONG&gt;Composite&lt;/STRONG&gt;.WPF&lt;/STRONG&gt; e &lt;STRONG&gt;Composite&lt;/STRONG&gt;.&lt;STRONG&gt;UnityExtensions&lt;/STRONG&gt;), 1 projeto de módulo de funcionalidades (&lt;STRONG&gt;HelloWorld&lt;/STRONG&gt;) e 1 projeto principal da interface Shell da aplicação (&lt;STRONG&gt;HelloWorldSample&lt;/STRONG&gt;).&lt;/P&gt;
&lt;P&gt;Portanto, podemos iniciar a construção da aplicação em 2 frentes: o projeto principal da Shell e o projeto de cada módulo independente.&lt;/P&gt;
&lt;P&gt;Para o projeto principal da Shell, notamos o arquivo &lt;STRONG&gt;Shell.xaml&lt;/STRONG&gt;, que contém a chamada para a classe &lt;STRONG&gt;BootStrapper&lt;/STRONG&gt;, responsável pela inicialização dos demais serviços da biblioteca CAL. Uma classe bootstrapper para nosso exemplo seria:&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System.Windows;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Practices.Composite.Modularity;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Practices.Composite.UnityExtensions;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #008000"&gt;// Módulo de funcionalidades para a interface de composição.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; HelloWorld;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt; HelloWorldSample&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;internal&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; Bootstrapper : UnityBootstrapper&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;override&lt;/SPAN&gt; IModuleEnumerator GetModuleEnumerator()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  14:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #008000"&gt;// Adicionando o módulo a interface.&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  15:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; StaticModuleEnumerator()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  16:&lt;/SPAN&gt;                 .AddModule(&lt;SPAN style="COLOR: #0000ff"&gt;typeof&lt;/SPAN&gt;(HelloWorldModule));&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  17:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  18:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  19:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;protected&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;override&lt;/SPAN&gt; DependencyObject CreateShell()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  20:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  21:&lt;/SPAN&gt;             Shell shell = &lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; Shell();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  22:&lt;/SPAN&gt;             shell.Show();&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  23:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  24:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; shell;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  25:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  26:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  27:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;No método &lt;STRONG&gt;GetModuleEnumerator() &lt;/STRONG&gt;acima, vemos a adição do módulo &lt;STRONG&gt;"HelloWorldModule"&lt;/STRONG&gt; como funcionalidade cadastrada na Shell. Isso é feito através da chamada .AddModule. Para aplicações com vários módulos de funcionalidades, podemos adicionar várias chamadas AddModule, determinando ainda uma hierarquia entre os módulos, para sua apresentação e navegação do usuário.&lt;/P&gt;
&lt;P&gt;No projeto do módulo, adicionamos um &lt;STRONG&gt;UserControl&lt;/STRONG&gt; que conterá o controle &lt;STRONG&gt;ViewBox &lt;/STRONG&gt;para renderização de funcionalidades implementadas pelo módulo. Veja o exemplo de User Control e View "&lt;STRONG&gt;HelloWorldView&lt;/STRONG&gt;" a seguir (arquivo "HelloWorldView.xaml":&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &amp;lt;UserControl x:Class=&lt;SPAN style="COLOR: #006080"&gt;"HelloWorld.Views.HelloWorldView"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt;     xmlns=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;     xmlns:x=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;     &amp;lt;Grid&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;         &amp;lt;TextBlock Text=&lt;SPAN style="COLOR: #006080"&gt;"Hello World"&lt;/SPAN&gt; Foreground=&lt;SPAN style="COLOR: #006080"&gt;"Green"&lt;/SPAN&gt; HorizontalAlignment=&lt;SPAN style="COLOR: #006080"&gt;"Center"&lt;/SPAN&gt; VerticalAlignment=&lt;SPAN style="COLOR: #006080"&gt;"Center"&lt;/SPAN&gt; FontFamily=&lt;SPAN style="COLOR: #006080"&gt;"Calibri"&lt;/SPAN&gt; FontSize=&lt;SPAN style="COLOR: #006080"&gt;"24"&lt;/SPAN&gt; FontWeight=&lt;SPAN style="COLOR: #006080"&gt;"Bold"&lt;/SPAN&gt;&amp;gt;&amp;lt;/TextBlock&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &amp;lt;/Grid&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt; &amp;lt;/UserControl&amp;gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Na sequência, definimos um controle &lt;STRONG&gt;RegionManager&lt;/STRONG&gt; no arquivo "Shell.xaml" do projeto da Shell. O controle &lt;STRONG&gt;RegionManager&lt;/STRONG&gt; será responsável pela coleção de &lt;STRONG&gt;regiões&lt;/STRONG&gt; que poderemos ter em nossa interface. &lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &amp;lt;Window x:Class=&lt;SPAN style="COLOR: #006080"&gt;"HelloWorldSample.Shell"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt;     xmlns=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml/presentation"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt;     xmlns:x=&lt;SPAN style="COLOR: #006080"&gt;"http://schemas.microsoft.com/winfx/2006/xaml"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;     xmlns:cal=&lt;SPAN style="COLOR: #006080"&gt;"http://www.codeplex.com/CompositeWPF"&lt;/SPAN&gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt;     Title=&lt;SPAN style="COLOR: #006080"&gt;"Composite Application Library Sample"&lt;/SPAN&gt; Width=&lt;SPAN style="COLOR: #006080"&gt;"400"&lt;/SPAN&gt; Height=&lt;SPAN style="COLOR: #006080"&gt;"300"&lt;/SPAN&gt;&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt;     &amp;lt;ItemsControl cal:RegionManager.RegionName=&lt;SPAN style="COLOR: #006080"&gt;"MainRegion"&lt;/SPAN&gt;/&amp;gt;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt; &amp;lt;/Window&amp;gt;&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;A seguir, vemos a classe principal de módulo "&lt;STRONG&gt;HelloWorldModule&lt;/STRONG&gt;", relacionando a região alvo para renderização de sua funcionalidade, em nosso exemplo, a região &lt;STRONG&gt;"MainRegion":&lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV style="BORDER-RIGHT: gray 1px solid; PADDING-RIGHT: 4px; BORDER-TOP: gray 1px solid; PADDING-LEFT: 4px; FONT-SIZE: 8pt; PADDING-BOTTOM: 4px; MARGIN: 20px 0px 10px; OVERFLOW: auto; BORDER-LEFT: gray 1px solid; WIDTH: 97.5%; CURSOR: text; MAX-HEIGHT: 200px; LINE-HEIGHT: 12pt; PADDING-TOP: 4px; BORDER-BOTTOM: gray 1px solid; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BACKGROUND-COLOR: #f4f4f4"&gt;
&lt;DIV style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   1:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; HelloWorld.Views;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   2:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Practices.Composite.Modularity;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   3:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; Microsoft.Practices.Composite.Regions;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   4:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   5:&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;namespace&lt;/SPAN&gt; HelloWorld&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   6:&lt;/SPAN&gt; {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   7:&lt;/SPAN&gt;     &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; HelloWorldModule : IModule&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   8:&lt;/SPAN&gt;     {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;   9:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;readonly&lt;/SPAN&gt; IRegionManager regionManager;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  10:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  11:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; HelloWorldModule(IRegionManager regionManager)&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  12:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  13:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.regionManager = regionManager;&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  14:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  15:&lt;/SPAN&gt;&amp;nbsp; &lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  16:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; Initialize()&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  17:&lt;/SPAN&gt;         {&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  18:&lt;/SPAN&gt;             IRegion mainRegion = &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.regionManager.Regions[&lt;SPAN style="COLOR: #006080"&gt;"MainRegion"&lt;/SPAN&gt;];&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  19:&lt;/SPAN&gt;             mainRegion.Add(&lt;SPAN style="COLOR: #0000ff"&gt;new&lt;/SPAN&gt; HelloWorldView());&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  20:&lt;/SPAN&gt;         }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: white; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  21:&lt;/SPAN&gt;     }&lt;/PRE&gt;&lt;PRE style="PADDING-RIGHT: 0px; PADDING-LEFT: 0px; FONT-SIZE: 8pt; PADDING-BOTTOM: 0px; MARGIN: 0em; OVERFLOW: visible; WIDTH: 100%; COLOR: black; BORDER-TOP-STYLE: none; LINE-HEIGHT: 12pt; PADDING-TOP: 0px; FONT-FAMILY: consolas, 'Courier New', courier, monospace; BORDER-RIGHT-STYLE: none; BORDER-LEFT-STYLE: none; BACKGROUND-COLOR: #f4f4f4; BORDER-BOTTOM-STYLE: none"&gt;&lt;SPAN style="COLOR: #606060"&gt;  22:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Assim, cercamos alguns dos principais conceitos envolvidos na CAL. Esses componentes são representados de forma organizada na figura a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_14.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=360 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_thumb_6.png" width=453 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFParte2_9EFB/image_thumb_6.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Então é isso: quando usamos a CAL para construir uma aplicação composta, pensamos na interface principal chamada Shell e nos vários módulos componentes. Assim, precisamos definir quais são as regiões existentes na interface principal Shell. Cada módulo contém funcionalidades que serão apresentadas em regiões da interface Shell. Essa apresentação é feita através do componente View, que adicionamos em cada módulo. Todo o módulo é contido num container, que encapsula e oferece recursos para a cola com a interface Shell. Essa cola é feita através do injection do módulo junto a aplicação Shell. Por fim, podemos realizar o desenvolvimento de módulos e Shell de forma desacoplada e em paralelo, uma necessidade que é características de interfaces compostas. &lt;/P&gt;
&lt;P&gt;Esse post fez apenas uma introdução sobre os principais aspectos da CAL, estudando uma aplicação composta muito básica. Claro que o objetivo do pacote é construir interfaces mais complexas, com um grande número de módulos, funcionalidades e eventos associados. Outro assunto importante no estudo da CAL é o pattern de subscrição de eventos. Cada módulo também pode assinar os eventos desejados para o disparo de funcionalidades específicas.&lt;/P&gt;
&lt;P&gt;Em posts futuros, vamos continuar discutindo alguns exemplos, enquanto aumentamos a complexidade de nossas composições sobra a Composite Application Library.&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=9013438" 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/Composite+Applications/default.aspx">Composite Applications</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>Composite Application Guidance for WPF - Parte 1</title><link>http://blogs.msdn.com/wcamb/archive/2008/10/22/composite-application-guidance-for-wpf-parte-1.aspx</link><pubDate>Wed, 22 Oct 2008 16:58:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9011103</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9011103.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9011103</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9011103</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Já falamos aqui sobre o &lt;STRONG&gt;Composite Application Guidance for WPF&lt;/STRONG&gt;, o projeto codenome &lt;STRONG&gt;PRISM&lt;/STRONG&gt;, para a construção de aplicações de composição. Veja o primeiro post &lt;A href="http://blogs.msdn.com/wcamb/archive/2008/10/09/composite-application-guidance-for-wpf-prism.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2008/10/09/composite-application-guidance-for-wpf-prism.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Esse pacote está dentro da família de recursos para a construção de interfaces de aplicações, onde vimos o &lt;STRONG&gt;Smart Client - Composite UI Application Block - CAB&lt;/STRONG&gt; (Dez/2005-2006) e depois o &lt;STRONG&gt;Smart Client Software Factory - SCFS &lt;/STRONG&gt;(Abr/2008). Um documento que descreve essa evolução é este &lt;A href="http://download.microsoft.com/download/1/0/3/103adb7f-1e45-42f8-8696-63e513875258/CAB%20SCSF%20-%20Architecture%20Guidance%20-%20Raiffeisen.pdf" target=_blank mce_href="http://download.microsoft.com/download/1/0/3/103adb7f-1e45-42f8-8696-63e513875258/CAB%20SCSF%20-%20Architecture%20Guidance%20-%20Raiffeisen.pdf"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;A discussão em 2006 já posicionava um modelo de Shell para uma interface composta como vemos a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=230 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_thumb.png" width=506 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;De fato, enquanto o pacote CAB oferecia uma série de bibliotecas para a construção de smart clients, a SCSF fornecia uma fábrica de software completa para a geração automática de código, automatizando os passos de construção para o desenvolvedor. &lt;/P&gt;
&lt;P&gt;A versão &lt;STRONG&gt;Composite Application Guidance for WPF&lt;/STRONG&gt; (Release 1) compôe uma biblioteca de componentes (a &lt;STRONG&gt;CAL - Composite Application Library),&lt;/STRONG&gt; não uma fábrica de software. Ao invés de templates, o pacote disponibiliza uma série de &lt;STRONG&gt;HOW TO's.&lt;/STRONG&gt; Eles estão disponíveis no arquivo &lt;EM&gt;"Composite Application Guidance for WPF - June 2008.chm&lt;/EM&gt;".&lt;/P&gt;
&lt;P&gt;A instalação do pacote trás uma série de arquivos ".bat", que disparam alguns exercícios com o Composite WPF, veja:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open Composite Application Library Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open Hello World Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open QS-Commanding Quickstart Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open QS-ConfigurationModularity Quickstart Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open QS-DirectoryLookupModularity Quickstart Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open QS-EventAggregation Quickstart Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open QS-UI Composition Quickstart Solution.bat&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT face=Calibri color=#000080 size=3&gt;Open RI-StockTrader Reference Implementation Solution.bat&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Entre os exemplos encontramos a aplicação &lt;STRONG&gt;StockTrader&lt;/STRONG&gt; (projeto &lt;EM&gt;RI-StockTrader Reference Implementation Solution&lt;/EM&gt;), que apresenta uma interface composta por 4 módulos implementados como projetos independentes dentro da solução. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image7.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image7.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=344 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image7_thumb.png" width=516 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image7_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A figura acima destaca os arquivos da solução (a esquerda), onde vemos os 4 projetos de módulos da interface. Do lado direito, a página principal da aplicação apresenta em destaque os quatro componentes do layout, &lt;STRONG&gt;Watch&lt;/STRONG&gt;, &lt;STRONG&gt;New&lt;/STRONG&gt;, &lt;STRONG&gt;Market&lt;/STRONG&gt; e &lt;STRONG&gt;Position&lt;/STRONG&gt;. Cada módulo é apresentado em uma caixa específica.&lt;/P&gt;
&lt;P&gt;Esse é um dos principais benefícios que o modelo implementa, ou seja, a capacidade de registro de novos módulos funcionais de interfaces na mesma aplicação, permitindo que estes desenvolvimentos sejam independentes. No exemplo acima, cada módulo (Watch, New, Market e Position) poderia ter sido desenvolvido por um desenvolvedor de forma independente, em paralelo. Com essa abordagem, evitamos o conflito de desenvolvimento de funcionalidades sobre uma mesma interface, um mesmo formulário, típico de projetos de interfaces compostas.&lt;/P&gt;
&lt;P&gt;O pacote &lt;STRONG&gt;PRISM&lt;/STRONG&gt; também trabalha com o pattern &lt;STRONG&gt;MVP - Model View Presenter&lt;/STRONG&gt;, para o controle da interface e comportamento da aplicação. O desenho a seguir apresenta um dos aspectos do modelo, o registro dos módulos de funcionalidades junto a interface Shell, que controla a apresentação para o usuário:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=289 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_thumb_1.png" width=517 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFUmadi_114D0/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;De fato, recomendo a leitura desse pacote. A próxima versão (Relase 2.0) deve trazer ainda novas funcionalidades, como por exemplo a total interoperabilidade entre mundo Web e mundo Windows. Isso significa que o mesmo desenvolvimento (código) deve gerar uma interface compatível com Web e Windows, um sonho de longa data. :)&lt;/P&gt;
&lt;P&gt;Algumas referências mais veja aqui:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Smart Client - Composite UI Application Block (Dez/2005)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/aa480450.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/aa480450.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa480450.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices - Smart Client Guidance (Jun/2006)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/smartclient/Release/ProjectReleases.aspx?ReleaseId=4940" target=_blank mce_href="http://www.codeplex.com/smartclient/Release/ProjectReleases.aspx?ReleaseId=4940"&gt;http://www.codeplex.com/smartclient/Release/ProjectReleases.aspx?ReleaseId=4940&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Smart Client Software Factory (Abr/2008)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/aa480482.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/aa480482.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa480482.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF - Release version 1.0 (Jun/2008)&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/cc707819.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc707819.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc707819.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Em posts futuros, vamos continuar vendo alguns exemplos com o Composite for WPF e seus recursos. Um outro assunto importante é a estrutura da &lt;STRONG&gt;CAL - Composite Application Library&lt;/STRONG&gt;, fique ligado.&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=9011103" 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/Composite+Applications/default.aspx">Composite Applications</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>Composite Application Guidance for WPF (PRISM).</title><link>http://blogs.msdn.com/wcamb/archive/2008/10/09/composite-application-guidance-for-wpf-prism.aspx</link><pubDate>Thu, 09 Oct 2008 15:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8992786</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8992786.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8992786</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8992786</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Quando falamos sobre &lt;STRONG&gt;Aplicações Compostas&lt;/STRONG&gt;, uma série de questões aparecem de forma prática para a construção de interfaces com esse tipo de abordagem.&lt;/P&gt;
&lt;P&gt;Pense na divisão de tarefas entre equipes distintas, que atuam em funcionalidades diferentes acopladas ao mesmo formulário ou seção de tela, por exemplo. Como coordenar e integrar essas peças de software que farão as chamadas para os serviços das camadas inferiores? Outros aspectos envolvidos são padronização de chamadas, controle de acesso, segurança, evolução e adição de novos recursos dinâmicos na interface, etc.&lt;/P&gt;
&lt;P&gt;Procurando tratar essas questões, o time do patterns&amp;amp;practices publicou recentemente o Composite Application Guidance for WPF, codenome Prism, já disponível para download:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en" target=_blank mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=249 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFPrism_8729/image_6.png" width=542 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFPrism_8729/image_6.png"&gt;&lt;/A&gt; &lt;/P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF (codenome PRISM) - June 2008&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en" mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B827-98E162E1BD8D&amp;amp;displaylang=en&lt;/A&gt; 
&lt;P&gt;Entre os recursos do PRISM temos a estruturação de um pattern para &lt;STRONG&gt;Aplicações Compostas&lt;/STRONG&gt;, onde verificamos um modelo de shell de integração que funciona como um ponto central para as chamadas das funcionalidades de composição da aplicação. O pattern ainda usa a abordagem &lt;STRONG&gt;Model-View-Presenter&lt;/STRONG&gt;, para coordenar as peças de funcionalidades, permitindo uma melhor separação entre recursos de tela em tempo de design. Finalmente, através de &lt;STRONG&gt;IoC - Inversion of Control&lt;/STRONG&gt; e &lt;STRONG&gt;Injection&lt;/STRONG&gt;, o pattern resolve alguns problemas de adição de funcionalidades de forma dinâmica, uma característica do modelo de composição de interfaces.&lt;/P&gt;
&lt;P&gt;Fica como dica para quem já está iniciando seus primeiros passos para o mundo das interfaces de composição sobre uma arquitetura SOA. Em posts futuros, vamos falar um pouco mais sobre esse pattern e seus componentes principais.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://msdn.microsoft.com/pt-br/magazine/cc785479.aspx" target=_blank&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; BORDER-RIGHT-WIDTH: 0px" height=169 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFPrism_8729/image_5.png" width=129 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CompositeApplicationGuidanceforWPFPrism_8729/image_5.png"&gt;&lt;/A&gt;Enquanto isso, vale a leitura do artigo da MSDN Magazine, veja:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Padrões para criação de aplicativos compostos com WPF (PRISM)&lt;/STRONG&gt; &lt;BR&gt;Glenn Block &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/magazine/cc785479.aspx" mce_href="http://msdn.microsoft.com/pt-br/magazine/cc785479.aspx"&gt;http://msdn.microsoft.com/pt-br/magazine/cc785479.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8992786" 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/Composite+Applications/default.aspx">Composite Applications</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>Roadmap Oslo : foco na arquitetura SOA e nas aplicações compostas - Parte 1.</title><link>http://blogs.msdn.com/wcamb/archive/2008/09/24/roadmap-oslo-foco-na-arquitetura-soa-e-nas-aplica-es-compostas-parte-1.aspx</link><pubDate>Wed, 24 Sep 2008 06:42:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8963075</guid><dc:creator>wcamb</dc:creator><slash:comments>3</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8963075.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8963075</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8963075</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Em nosso último post sobre &lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/wcamb/archive/2008/09/17/arquitetura-de-refer-ncia-para-orienta-o-a-servi-os.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2008/09/17/arquitetura-de-refer-ncia-para-orienta-o-a-servi-os.aspx"&gt;Arquitetura de Referência para SOA&lt;/A&gt;&lt;/STRONG&gt;, apresentamos um diagrama com as camadas de um ambiente de serviços, onde vimos as aplicações compostas como consumidoras, as interfaces de serviços, os componentes de processos e workflows e a camada de integração com o legado. &lt;/P&gt;
&lt;P&gt;De fato, o mercado tem apontado para 2 tecnologias como promissoras para a nova onda de soluções no futuro: &lt;STRONG&gt;aplicações compostas&lt;/STRONG&gt; e &lt;STRONG&gt;arquiteturas orientadas a serviços&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;Sabemos que consumindo uma estruturas de serviços temos uma camada de aplicações de composição (&lt;EM&gt;Composite Applications&lt;/EM&gt;), que fornece grande agilidade para o ambiente de TI na criação de novas funcionalidades de negócio. A partir da composição de workflows, processos, mensagens e do consumo de serviços oferecidos pela arquitetura SOA, novos requisitos de negócio podem ser rapidamente implementados/compostos e colocados em produção. &lt;/P&gt;
&lt;P&gt;Sabemos também que para implementar uma boa arquitetura SOA, diversas questões são importantes e devem ser tratadas no devido tempo. Questões como tempo de resposta de cada serviço, SLA's, recuperação, tratamento de erros, monitoração, entre outras, devem ser muito bem estudadas. A governança como um todo nunca deve ser subestimada.&lt;/P&gt;
&lt;P&gt;Dentro desse contexto, surge um projeto na Microsoft chamado &lt;STRONG&gt;Oslo&lt;/STRONG&gt;. Oslo não é um produto específico, mas sim um conjunto de tecnologias e roadmap de produtos que permitirão um novo salto na plataforma Microsoft para o atendimento de cenários de &lt;STRONG&gt;aplicações compostas&lt;/STRONG&gt; e &lt;STRONG&gt;arquiteturas SOA&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;A visão de Oslo não chegará antes de 2009, como vemos no roadmap abaixo já anunciado: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/RoadmapOslofoconaarquiteturaSOAenasapli_A1/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/RoadmapOslofoconaarquiteturaSOAenasapli_A1/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=447 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/RoadmapOslofoconaarquiteturaSOAenasapli_A1/image_thumb.png" width=514 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/RoadmapOslofoconaarquiteturaSOAenasapli_A1/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Porém, é importante que o ambiente de enterprise conheça bem essa discussão, entendendo a evolução de cada produto na direção do chamado negócio ágil. Em posts futuros, vamos falar um pouco mais de Oslo e sua evolução.&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=8963075" 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/Composite+Applications/default.aspx">Composite Applications</category></item><item><title>patterns &amp; practices: Composite Application Guidance for WPF</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/23/patterns-practices-composite-application-guidance-for-wpf.aspx</link><pubDate>Wed, 23 Jul 2008 21:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8767552</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8767552.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8767552</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8767552</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;Um dos tópicos importantes para o consumo de funcionalidades de uma infra-estrutura organizada a serviços é a &lt;STRONG&gt;composição&lt;/STRONG&gt;. As novas aplicações desenvolvidas com essa habilidade são conhecidas como aplicações compostas ou &lt;STRONG&gt;Composite Applications&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.codeplex.com/CompositeWPF" target=_blank mce_href="http://www.codeplex.com/CompositeWPF"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; MARGIN: 0px 10px 0px 0px; BORDER-LEFT: 0px; WIDTH: 180px; BORDER-BOTTOM: 0px; HEIGHT: 226px" height=244 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeApplicationGui_DF55/image_5.png" width=189 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesCompositeApplicationGui_DF55/image_5.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P mce_keep="true"&gt;Recentemente, o time do patterns &amp;amp; practices publicou o &lt;STRONG&gt;Composite Application Guidance for WPF&lt;/STRONG&gt;, que oferece esse poder de composição sobre a infra-estrutura do Windows Presentation Foundation (WPF). &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices Composite Application Guidance for WPF&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/CompositeWPF" target=_blank mce_href="http://www.codeplex.com/CompositeWPF"&gt;http://www.codeplex.com/CompositeWPF&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Assim, fica a dica para conhecer esse material enquanto evoluímos nossas aplicações no ambiente corporativo.&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=8767552" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</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>OBA Composition Reference Toolkit - No caminho das aplicações compostas.</title><link>http://blogs.msdn.com/wcamb/archive/2008/02/27/oba-composition-reference-toolkit-no-caminho-das-aplica-es-compostas.aspx</link><pubDate>Wed, 27 Feb 2008 14:30:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:7917183</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/7917183.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=7917183</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=7917183</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;E no path da construção de serviços, consumo de suas funcionalidades e composição de processos, encontramos as aplicações compostas. Esse assunto já foi bastante tratado aqui no blog e agora retorna com uma novidade: o &lt;STRONG&gt;OBA Composition Reference Toolkit&lt;/STRONG&gt;. Ele foi anunciado publicamente no último &lt;STRONG&gt;ODC 2008 - Microsoft Office System Developer Conference | 2008.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title=https://microsoft.crgevents.com/ODC2008/Content/default.aspx?p=UC3HYF href="https://microsoft.crgevents.com/ODC2008/Content/default.aspx?p=UC3HYF" mce_href="https://microsoft.crgevents.com/ODC2008/Content/default.aspx?p=UC3HYF"&gt;https://microsoft.crgevents.com/ODC2008/Content/default.aspx?p=UC3HYF&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Esse pacote de ferramentas da Microsoft permite a construção de soluções sobre a plataforma Office System 2007, coordenando artefatos como Workflows, bibliotecas e documentos do SharePoint, listas, páginas do SharePoint, Web Parts, addin's do VSTO Office Client, relatórios de BI, Dashboards etc. Desse modo, representa uma maior integração e unificação dos vários recursos já conhecidos para a construção de aplicações de composição ou componentes do &lt;STRONG&gt;OBA - Office Business Application.&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;A descrição original do pacote é muito interessante, veja:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;"It integrates seamlessly with the Microsoft Office 2007 System to enable a prescriptive application composition experience for Information Workers to build and deploy Office Business Applications (OBAs) using semantically related OBA Components like Workflows, SharePoint document libraries and lists, SharePoint Pages, Web Parts, VSTO Office Client Add-ins, BI Reports, BI Dashboards etc. The&amp;nbsp; toolkit comprises an OBA Composition Server and an OBA Composer. The OBA Composition Server implements metadata and provisioning services to enable cataloging OBA components, defining semantic relationships between components, defining the bindings between components and LOB systems, and to support deploying OBAs composed by users. The OBA Composer is a WPF application that consumes and uses the services of the OBA Composition Server to enable a rich client and prescriptive user experience for composing and deploying OBAs."&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Composição de componentes, metadados, provisionamento, integração semântica, distribuição, etc. são alguns dos objetivos perseguidos pelo OBA Composition Reference Toolkit, como vimos na descrição acima. &lt;/P&gt;
&lt;P&gt;Para relembrar, &lt;STRONG&gt;Aplicações Compostas&lt;/STRONG&gt; são aplicações construídas através da combinação de apresentação, lógica e dados de múltiplos sistemas e/ou múltiplos componentes. Uma solução OBA - Office Business Application - representa um modelo de aplicação composta que aproveita os recursos e serviços disponíveis na suíte 2007 Office System da Microsoft. Entre os recursos mais conhecidos citamos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Clientes do 2007 Office System, como Word, Excel, PowerPoint e InfoPath;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços do Microsoft Office SharePoint Server 2007 (MOSS2007) como Excel Services, Forms Services, Security Services, Storage Services, Enterprise Search, Live Communication Server, entre outros;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Componentes de extensão escritos em .Net Framework 3.0, implementados sobre WF - Workflow Foundationou e WCF - Windows Communication Foundation;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Porém, utilizar todos esses elementos de forma integrada é um grande desafio. Por isso, quando pensamos numa solução de composição, algumas perguntas são muito comuns, por exemplo: como realizar a composição de todos os componentes disponíveis, seja de serviços, funcionalidades, interfaces, controles e dados? Sei que tenho disponível uma série de serviços em minha infra-estrutura, mas como integrar ou publilcar esses recursos? Ou ainda, quais mecanismos de integração devo utilizar, entre adaptadores, web services, serviços, assemblies, etc?&lt;/P&gt;
&lt;P&gt;Parte destes questionamentos direciona a necessidade de um catálogo de componentes e metadados, para que os vários elementos de composição sejam disponibilizados para uma solução. Ainda, surge a necessidade de uma plataforma de desenvolvimento para a construção das interfaces de composição, que traga maior agilidade na escolha e consumo dos componentes desejados. Para uma solução Web, a imagem que vem é a de WebParts, por exemplo.&lt;/P&gt;
&lt;P&gt;Sabemos que a arquitetura de uma solução &lt;STRONG&gt;OBA - Office Business Application&lt;/STRONG&gt; é baseada nos serviços do &lt;STRONG&gt;Microsoft Office Sharepoint Server 2007&lt;/STRONG&gt; e nas funcionalidades dos clientes do 2007 Office System, como vemos a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_3.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_3.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/OBACompositionReferenceToolkitNocaminho_4AE/image_thumb.png" width=533 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note que os serviços disponíveis suportam funcionalidades importantes como search de informações, mapeamento de identidades, metadados, catálogo de entidades, segurança, entre outros, podendo ainda haver customizações para uma solução específica. Exemplos de extensões de componentes são controles e funcionalidades integradas aos clientes do Office, que realizam o consumo de serviços ou aplicações LOB - Line Of Business - da empresa, como ERP's, CRM's, etc.&lt;/P&gt;
&lt;P&gt;Nessa linha, a arquitetura do &lt;STRONG&gt;OBA Composition Reference Toolkit&lt;/STRONG&gt; é apresentada a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=350 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_thumb_1.png" width=535 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/OBACompositionReferenceToolkitNocaminho_4AE/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note que a visão é fornecer um &lt;STRONG&gt;metadado de serviços e componentes&lt;/STRONG&gt; que serão registrados para posterior provisionamento, durante a construção de soluções de composição sobre o Sharepoint. Nesse cenário, o &lt;EM&gt;Microsoft Office Sharepoint Server 2007 Business Data Catalog&lt;/EM&gt; (o conhecido BDC do Sharepoint) tem papel fundamental como infra-estrutura de metadado.&lt;/P&gt;
&lt;P&gt;Entre os tipos de componentes OBA que o Toolkit suporta encontramos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;SharePoint Lists&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;SharePoint Document Libraries&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Workflows&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Site Pages&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Web Parts&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Content Types&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;InfoPath Forms e Form Libraries&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Excel Services Reports&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;BDC Application Definitions&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;SSRS Reports&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;VSTO Application Add-ins&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;VSTO Documents&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Com esse suporte de componentes, a construção de diversos &lt;EM&gt;patterns&lt;/EM&gt; de aplicação OBA torna-se mais fácil e flexível, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Pattern de Aplicação Office como Interface Rica&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Pattern de Integração de Documentos OpenXML&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Pattern de Interface de Composição Web, Windows ou Híbrida&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Pattern de Workflow de Documentos&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Pattern de Colaboração Web&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Pattern de Notificações/Tasks integrados com aplicações LOB&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;E numa visão sobre oportunidades de negócio, o OBA Composition Reference Toolkit pode ser uma infra-estrutura interessante como catálogo de componentes de composição para comunidades de &lt;STRONG&gt;ISV - Independent Software Vendors&lt;/STRONG&gt;, enquanto seus componentes agrupados por indústrias ou soluções são disponibilizados para clientes. Esse é um outro assunto interessante que vamos tratar em posts futuros.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Um pouco de infra-estrutura ...&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Como pré-requisitos para o OBA Composition Reference Toolkit, temos a seguinte infra-estrutura abaixo (&lt;EM&gt;&lt;FONT color=#000080&gt;retirado do Setup Guide&lt;/FONT&gt;&lt;/EM&gt;):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Operating System: Windows Server 2003 SP2 &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;IIS 6.0 &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;SQL Server 2005 Developer or Enterprise Edition with SP2. &lt;/EM&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;The SQL Server 2005 Express edition is not supported &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;A default instance accessible as localhost is required &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;SQL Server Reporting Services (SSRS) must be installed to deploy/test SSRS Report components &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;SQL Server Analysis Services (SSAS) must be installed to deploy/test SSAS OLAP Databases and components like SSRS Reports and Excel Services Reports that use an SSAS OLAP Database &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;.NET 3.5 Framework &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Microsoft Office SharePoint Server 2007 Enterprise Edition &lt;/EM&gt;&lt;/FONT&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Enterprise features like the Business Data Catalog, Excel Services, and InfoPath Forms Services must be installed and activated to deploy/test related components. &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;SQL Server Reporting Services (SSRS) must be configured in the SharePoint integrated mode to deploy/test SSRS Report Components &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Office 2007 Professional Edition &lt;/EM&gt;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;&lt;EM&gt;Visual Studio Tools for Office system 3.0 Runtime&lt;/EM&gt;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Portanto, recomendo fortemente seguir os passos descritos no &lt;STRONG&gt;Guia de Instalação, &lt;/STRONG&gt;antes de começar seus primeiros testes com a tecnologia. Veja abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OBA Composition Reference Toolkit Setup Guide&lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://files.skyscrapr.net/users/javeds/OBA%20Composition%20Reference%20Toolkit%20Installation%20and%20Setup%20Guide.pdf href="http://files.skyscrapr.net/users/javeds/OBA%20Composition%20Reference%20Toolkit%20Installation%20and%20Setup%20Guide.pdf" mce_href="http://files.skyscrapr.net/users/javeds/OBA%20Composition%20Reference%20Toolkit%20Installation%20and%20Setup%20Guide.pdf"&gt;http://files.skyscrapr.net/users/javeds/OBA%20Composition%20Reference%20Toolkit%20Installation%20and%20Setup%20Guide.pdf&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Esta primeira conversa foi só um aperitivo...&lt;/P&gt;
&lt;P&gt;Em posts futuros, vamos detalhar um pouco mais a arquitetura do pacote, enquanto consideramos novas alternativas sobre a construção de aplicações de composição. Nesse contexto, o &lt;STRONG&gt;OBA Composer&lt;/STRONG&gt; será uma ferramenta importante em nossas próximas discussões. O &lt;STRONG&gt;Mashup Corporativo&lt;/STRONG&gt; ou &lt;STRONG&gt;Enterprise Mashup&lt;/STRONG&gt; está caminhando para se tornar uma realidade. Nesse sentido, a computação orientada a serviço e o negócio orientado a serviço agradecem!!! :)&lt;/P&gt;
&lt;P&gt;Alguns links mais...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OBA Composition Reference Toolkit&lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://msdn2.microsoft.com/en-us/architecture/cc196391.aspx href="http://msdn2.microsoft.com/en-us/architecture/cc196391.aspx" mce_href="http://msdn2.microsoft.com/en-us/architecture/cc196391.aspx"&gt;http://msdn2.microsoft.com/en-us/architecture/cc196391.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;OBA Office Business Application&lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://msdn2.microsoft.com/en-us/architecture/aa699381.aspx href="http://msdn2.microsoft.com/en-us/architecture/aa699381.aspx" mce_href="http://msdn2.microsoft.com/en-us/architecture/aa699381.aspx"&gt;http://msdn2.microsoft.com/en-us/architecture/aa699381.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=7917183" 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/OBA/default.aspx">OBA</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Composite+Applications/default.aspx">Composite Applications</category></item></channel></rss>