<?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 : SOA</title><link>http://blogs.msdn.com/wcamb/archive/tags/SOA/default.aspx</link><description>Tags: SOA</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>SOA Manifesto</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/08/soa-manifesto.aspx</link><pubDate>Sun, 08 Nov 2009 19:11:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9919277</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9919277.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9919277</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9919277</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;O final de outubro marcou a publicação do &lt;STRONG&gt;SOA Manifesto&lt;/STRONG&gt;, assinado por diversas empresas e representantes do mercado. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SOA Manifesto &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title="SOA MANIFESTO" href="http://www.soa-manifesto.org/" rel=nofollow target=_blank mce_href="http://www.soa-manifesto.org/"&gt;http://www.soa-manifesto.org/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://www.youtube.com/watch?v=TCg16oTZSV0" mce_href="http://www.youtube.com/watch?v=TCg16oTZSV0"&gt;&lt;/A&gt;&lt;/P&gt;Você pode até pergunta: mais um Manifesto? Sim, mais um Manifesto! :) 
&lt;P&gt;Entre os signatários você encontra nomes como &lt;A href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Daps&amp;amp;field-keywords=Thomas+Erl" rel=nofollow target=_blank mce_href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Daps&amp;amp;field-keywords=Thomas+Erl"&gt;Thomas Erl&lt;/A&gt;, &lt;A href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Daps&amp;amp;field-keywords=Grady+Booch" rel=nofollow target=_blank mce_href="http://www.amazon.com/s/ref=nb_ss?url=search-alias%3Daps&amp;amp;field-keywords=Grady+Booch"&gt;Grady Booch&lt;/A&gt;, &lt;A href="http://www.brianloesgen.com/" rel=nofollow target=_blank mce_href="http://www.brianloesgen.com/"&gt;Brian Loesgen&lt;/A&gt; e &lt;A href="http://blogs.msdn.com/jdevados/" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/jdevados/"&gt;John deVadoss&lt;/A&gt; da &lt;STRONG&gt;Microsoft&lt;/STRONG&gt;, &lt;A href="http://channel9.msdn.com/tags/Aaron+Skonnard/" rel=nofollow target=_blank mce_href="http://channel9.msdn.com/tags/Aaron+Skonnard/"&gt;Aaron Skonnard&lt;/A&gt; da &lt;STRONG&gt;Pluralsight&lt;/STRONG&gt; entre &lt;A href="http://www.soa-manifesto.org/aboutauthors.html" rel=nofollow target=_blank mce_href="http://www.soa-manifesto.org/aboutauthors.html"&gt;outros&lt;/A&gt; nomes de peso! Também sou signatário por lá :)&lt;/P&gt;
&lt;P&gt;Alguns princípios do &lt;STRONG&gt;SOA&lt;/STRONG&gt; &lt;STRONG&gt;Manifesto &lt;/STRONG&gt;são bem interessantes e estão de acordo com muitos dos posts e discussões que tivemos aqui no blog com a comunidade, veja:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Identificar os serviços através da colaboração com stakeholders de tecnologia e de negócios;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Verificar que os serviços atendam necessidades de negócio e metas da empresa;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;SOA pode ser realizada através de uma variedade de tecnologias e padrões;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Reconhecer que SOA de fato demanda mudanças em vários níveis;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;entre outros...&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;&lt;STRONG&gt;Opinião: &lt;/STRONG&gt;de fato, temos visto diversas empresas falharem na adoção de projetos de SOA. Em alguns casos, as falhas estão relacionadas à escolhas equivocadas dos projetos-alvo; em outros, faltou um suporte maior de diferentes níveis da corporação, com o envolvimento integrado das áreas de soluções, desenvolvimento e infraestrutura. Um projeto de SOA é amplo e exige um envolvimento corporativo para seu sucesso.&lt;/P&gt;
&lt;P&gt;Devido a esses vários problemas, gosto muito da separação entre &lt;STRONG&gt;LITTLE SOA&lt;/STRONG&gt; e &lt;STRONG&gt;BIG SOA&lt;/STRONG&gt;. Sistemas orientados a serviços, com interfaces bem definidas e uma boa organização de processos, com foco no domínio da aplicação são os chamados &lt;STRONG&gt;LITTLE SOA&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;O grande desafio está nos projetos &lt;STRONG&gt;BIG SOA&lt;/STRONG&gt;, que envolvem diversos domínios de aplicação e departamentos da corporação, exigindo uma estratégia mais ampla e com um impacto direto no negócio. &lt;/P&gt;
&lt;P&gt;Confira também seu anúncio, realizado durante o 2nd International SOA Symposium, em Rotterdan:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SOAManifesto_17A1/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SOAManifesto_17A1/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/SOAManifesto_17A1/image_thumb.png" width=244 height=178 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/SOAManifesto_17A1/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;SOA Manifesto Announcement &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.youtube.com/watch?v=TCg16oTZSV0" mce_href="http://www.youtube.com/watch?v=TCg16oTZSV0"&gt;http://www.youtube.com/watch?v=TCg16oTZSV0&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Sem dúvida, &lt;STRONG&gt;Leitura Obrigatória&lt;/STRONG&gt;!!!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9919277" 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/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Arquitetura de Referência SOA e créditos devidos</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/03/arquitetura-de-refer-ncia-soa-e-cr-ditos-devidos.aspx</link><pubDate>Tue, 03 Nov 2009 10:38:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9916679</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9916679.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9916679</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9916679</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Esses dias, troquei alguns emails com o arquiteto &lt;STRONG&gt;Marcelo Sávio&lt;/STRONG&gt; da IBM. Ele fez alguns comentários bem legais sobre o blog (obrigado Marcelo) e também ajudou para uma errata sobre o diagrama abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/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/UmaErrataeUmaLeituraRecomendada_8D2/image_thumb.png" width=462 height=229 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vi essa &lt;STRONG&gt;Arquitetura de Referência &lt;/STRONG&gt;pela primeira vez em 2007, durante um evento sobre SOA nos Estados Unidos. Porém, a primeria aparição do diagrama foi de fato em 2006, no seguinte documento da IBM:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Patterns: SOA Foundation Service Connectivity Scenario (Publicação: Agosto, 2006 - pag. 5) &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.redbooks.ibm.com/abstracts/sg247228.html" mce_href="http://www.redbooks.ibm.com/abstracts/sg247228.html"&gt;http://www.redbooks.ibm.com/abstracts/sg247228.html&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Errata:&lt;/STRONG&gt; algumas vezes, coloquei equivocadamente o diagrama acima como apresentado apenas em 2007 pela Micrososft, ops! Faltava posicionar a data de nascimento correta (Agosto, 2006), assim como sua paternidade original (IBM). Confusão desfeita :)&lt;/P&gt;
&lt;P&gt;Mais recentemente, passei a utilizar aqui no blog os diagramas abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_thumb_1.png" width=480 height=262 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/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/UmaErrataeUmaLeituraRecomendada_8D2/image_thumb_2.png" width=480 height=264 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/UmaErrataeUmaLeituraRecomendada_8D2/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Esses foram apresentados originalmente pela Microsoft, com o mapeamento de produtos e capacidades de uma arquitetura SOA sobre a plataforma.&lt;/P&gt;
&lt;P&gt;Como sempre, fique a vontade para novos comentários, sugestões e correções por aqui. Numa área tão ágil e rica como a nossa, o importante é não confundir o pessoal, mantendo o conteúdo o mais exato possível!&lt;/P&gt;
&lt;P&gt;Por enquanto é só pessoal! 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=9916679" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/SOA/default.aspx">SOA</category></item><item><title>Architecture in a Box: Recomendações para serviços com WCF</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/19/architecture-in-a-box-recomenda-es-para-servi-os-com-wcf.aspx</link><pubDate>Mon, 19 Oct 2009 14:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9909100</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9909100.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9909100</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9909100</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBox_8A7A/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBox_8A7A/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBox_8A7A/image_thumb.png" width=240 height=119 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBox_8A7A/image_thumb.png"&gt;&lt;/A&gt; Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;A sessão de WCF e SOA gerou uma série de comentários offline, que justificaram mais uma sessão, que publico aqui neste post.&lt;/P&gt;
&lt;P&gt;Projetos de SOA, SOI e composição de serviços podem ser tão diversos quanto a própria complexidade existente na TI das empresas. Por isso, gosto da frase “&lt;EM&gt;SOA é como flocos de neve: não existem dois iguais&lt;/EM&gt;” :)&lt;/P&gt;
&lt;P&gt;A sessão de hoje coloca alguns pontos mais sobre serviços com WCF e recomendações gerias, confira!&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: left; WIDTH: 425px" id=__ss_2251560&gt;
&lt;OBJECT style="MARGIN: 0px" width=425 height=355&gt;&lt;PARAM NAME="movie" VALUE="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab306-wcfservicesbestpractices-wcamb-091016210617-phpapp01&amp;amp;stripped_title=aab306-wcf-services-best-practices-wcamb"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowScriptAccess" VALUE="always"&gt;
&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab306-wcfservicesbestpractices-wcamb-091016210617-phpapp01&amp;amp;stripped_title=aab306-wcf-services-best-practices-wcamb" mce_src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab306-wcfservicesbestpractices-wcamb-091016210617-phpapp01&amp;amp;stripped_title=aab306-wcf-services-best-practices-wcamb" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;DIV style="FONT-FAMILY: tahoma,arial; HEIGHT: 26px; FONT-SIZE: 11px; PADDING-TOP: 2px"&gt;View more &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/" mce_href="http://www.slideshare.net/"&gt;documents&lt;/A&gt; from &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/wcamb" mce_href="http://www.slideshare.net/wcamb"&gt;Waldemir Cambiucci&lt;/A&gt;.&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Em breve, novos temas aqui na série &lt;STRONG&gt;Architecture in a Box&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=9909100" 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/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arch+in+a+Box/default.aspx">Arch in a Box</category></item><item><title>Architecture in a Box: SOA – Service Oriented Architecture</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/15/architecture-in-a-box-soa-service-oriented-architecture.aspx</link><pubDate>Thu, 15 Oct 2009 12:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9907640</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9907640.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9907640</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9907640</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxSOAServiceOrientedArch_F5DA/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxSOAServiceOrientedArch_F5DA/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; BORDER-LEFT-WIDTH: 0px; MARGIN-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxSOAServiceOrientedArch_F5DA/image_thumb.png" width=240 height=119 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxSOAServiceOrientedArch_F5DA/image_thumb.png"&gt;&lt;/A&gt; Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Depois das sessões sobre serviços com WCF e workflows com WF, vamos conferir uma visão sobre &lt;STRONG&gt;SOA – Service Oriented Architecture&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;A sessão de hoje faz um panorama sobre alguns dos aspectos de desenvolvimento e soluções orientadas a serviços, destacando a anatomia de um serviço WCF, assim como uma arquitetura de referência para SOA. &lt;/P&gt;
&lt;P&gt;Aspectos de &lt;STRONG&gt;SOI – Service Oriented Infrastructure&lt;/STRONG&gt; ficaram de fora da apresentação, mas creio que o &lt;A title="Markus Christen" href="http://blogs.technet.com/markuschristen/" rel=nofollow target=_blank mce_href="http://blogs.technet.com/markuschristen/"&gt;Markus&lt;/A&gt; em breve deve tratar desse tema.&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: left; WIDTH: 425px" id=__ss_2201145&gt;
&lt;OBJECT style="MARGIN: 0px" width=425 height=355&gt;&lt;PARAM NAME="movie" VALUE="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab305-serviceorientedarchitecture-wcamb-091012151722-phpapp02&amp;amp;stripped_title=aab305-service-oriented-architecture-wcamb"&gt;&lt;PARAM NAME="allowFullScreen" VALUE="true"&gt;&lt;PARAM NAME="allowScriptAccess" VALUE="always"&gt;
&lt;embed src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab305-serviceorientedarchitecture-wcamb-091012151722-phpapp02&amp;amp;stripped_title=aab305-service-oriented-architecture-wcamb" mce_src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab305-serviceorientedarchitecture-wcamb-091012151722-phpapp02&amp;amp;stripped_title=aab305-service-oriented-architecture-wcamb" type="application/x-shockwave-flash" allowscriptaccess="always" allowfullscreen="true" width="425" height="355"&gt;&lt;/embed&gt;&lt;/OBJECT&gt;
&lt;DIV style="FONT-FAMILY: tahoma,arial; HEIGHT: 26px; FONT-SIZE: 11px; PADDING-TOP: 2px"&gt;View more &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/" mce_href="http://www.slideshare.net/"&gt;documents&lt;/A&gt; from &lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/wcamb" mce_href="http://www.slideshare.net/wcamb"&gt;Waldemir Cambiucci&lt;/A&gt;.&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Para saber mais sobre SOA, veja ainda os posts já publicados &lt;A title=SOA href="http://blogs.msdn.com/wcamb/archive/tags/SOA/default.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/SOA/default.aspx"&gt;aqui&lt;/A&gt; no blog.&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=9907640" 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/Arch+in+a+Box/default.aspx">Arch in a Box</category></item><item><title>Microsoft BizTalk ESB Toolkit 2.0</title><link>http://blogs.msdn.com/wcamb/archive/2009/06/09/microsoft-biztalk-esb-toolkit-2-0.aspx</link><pubDate>Tue, 09 Jun 2009 20:43:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9716697</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9716697.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9716697</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9716697</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Para quem tem acompanhado as discussões sobre serviços, SOA, SOI e ESB que eu e o Markus temos feito, temos uma boa novidade essa semana: acaba de ser anunciado o novo pacote &lt;STRONG&gt;Microsoft BizTalk ESB Toolkit 2.0&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;Anteriormente, esse pacote era conhecido como &lt;STRONG&gt;ESB Guidance 2.0&lt;/STRONG&gt;, sendo apresentado por aqui no blog em alguns posts, veja &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/ESB/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/ESB/default.aspx"&gt;aqui&lt;/A&gt;!&lt;/P&gt;
&lt;P&gt;Entre as novidades do novo pacote temos a aderência aos patterns da &lt;STRONG&gt;Enterprise Library 4.1&lt;/STRONG&gt;, assim como a consolidação dos principais patterns de integração, mensageria e roteamento de mensagens, como esperado para o atendimento de um barramento corporativo com composição de serviços.&lt;/P&gt;
&lt;P&gt;A figura a seguir ilustra os principais componentes do núcleo do &lt;STRONG&gt;ESB Toolkit 2.0&lt;/STRONG&gt;, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/MicrosoftBizTalkESBToolkit2.0_CE7E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/MicrosoftBizTalkESBToolkit2.0_CE7E/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=309 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/MicrosoftBizTalkESBToolkit2.0_CE7E/image_thumb_1.png" width=526 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/MicrosoftBizTalkESBToolkit2.0_CE7E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Não deixe de acompanhar o blog do &lt;A href="http://blogs.technet.com/markuschristen/" target=_blank rel=nofollow mce_href="http://blogs.technet.com/markuschristen/"&gt;Markus Christen&lt;/A&gt;, que tem preparado bons posts e guias com exemplos sobre a infra-estrutura ESB 2.0.&lt;/P&gt;
&lt;P&gt;Para saber mais sobre ESB e o novo lançamento, veja o link abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Microsoft BizTalk ESB Toolkit 2.0&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A title=http://msdn.microsoft.com/en-us/dd876606.aspx href="http://msdn.microsoft.com/en-us/dd876606.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/en-us/dd876606.aspx"&gt;http://msdn.microsoft.com/en-us/dd876606.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O pacote está disponível no link a seguir:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Download BizTalk ESB Toolkit 2.0 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=bc86cf1e-ef29-4b19-95f7-388f64555090 href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=bc86cf1e-ef29-4b19-95f7-388f64555090" target=_blank rel=nofollow mce_href="http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=bc86cf1e-ef29-4b19-95f7-388f64555090"&gt;http://www.microsoft.com/downloads/details.aspx?displaylang=en&amp;amp;FamilyID=bc86cf1e-ef29-4b19-95f7-388f64555090&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=9716697" 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/ESB/default.aspx">ESB</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>Capacidades de serviços e produtos da plataforma Microsoft</title><link>http://blogs.msdn.com/wcamb/archive/2009/05/19/capacidades-de-servi-os-e-produtos-da-plataforma-microsoft.aspx</link><pubDate>Tue, 19 May 2009 22:00:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9629142</guid><dc:creator>wcamb</dc:creator><slash:comments>6</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9629142.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9629142</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9629142</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Ao longo dessas semanas, tenho falado sobre orientação a serviços e alguns desafios reais que ocorrem nesse tipo de desenvolvimento e arquitetura. Quando pensamos em questões como autenticação, autorização, instrumentação, suporte a transação, tratamento de exceção, etc., vemos o quanto uma abordagem de serviços possui as mesmas necessidades de uma arquitetura de software baseada em componentes ou mesmo outros cenários de soluções. Ferramentas como a &lt;STRONG&gt;Enterprise Library 4.1&lt;/STRONG&gt; são tão importantes para SOA quanto para aplicações Web em ASP.NET tradicional, por exemplo.&lt;/P&gt;
&lt;P&gt;Semana passada, aproveitei um &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/05/16/links-e-recomenda-es-para-o-desenvolvimento-de-servi-os.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2009/05/16/links-e-recomenda-es-para-o-desenvolvimento-de-servi-os.aspx"&gt;post&lt;/A&gt; para citar algumas recomendações sobre o “&lt;EM&gt;chão-de-fábrica&lt;/EM&gt;”. Hoje, gostaria de chamar a atenção para o mapa de produtos da plataforma Microsoft.&lt;/P&gt;
&lt;P&gt;Pensando numa arquitetura de referência de serviços e algumas capacidades principais, temos o seguinte desenho:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=291 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_thumb.png" width=525 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vemos acima os grupos de capacidades de &lt;STRONG&gt;Consumo de serviços, Composição e Interação, Composição e Transação e Exposição de Funcionalidades&lt;/STRONG&gt;, onde destacamos as principais capacidades: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Apresentação&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Colaboração&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Interação&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Processos&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Dados&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Conectividade&lt;/FONT&gt;&amp;nbsp;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Veja ainda uma série de capacidades de administração (ao lado), como &lt;STRONG&gt;gerenciamento, segurança, governança, BI, análises de negócio&lt;/STRONG&gt;, etc. A partir do modelo acima, podemos posicionar nossos componentes de serviços de acordo com as necessidades de nosso negócio. Existem ainda outras questões associadas, como granularidade de serviços, análise de domínios envolvidos, templates para cada tipo de implementação, etc.&lt;/P&gt;
&lt;P&gt;Usando esse mesmo mapa de serviços, gostaria de propor um mapa de produtos atuais da plataforma Microsoft, para atender cada camada acima:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=293 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_thumb_1.png" width=525 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/fe7da0a58efa_D53E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Assim, teríamos (a grosso modo):&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;Camada de Apresentação:&lt;/STRONG&gt; SharePoint Server, Siverlight, Office System, ASP.NET, Windows Client, Composite Application Guidance for WPF and Silverlight.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Camada de Colaboração:&lt;/STRONG&gt; Office Communication Server, SharePoint Server.&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Camada de Interação: &lt;/STRONG&gt;SharePoint Server, WF&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Camada de Processos:&lt;/STRONG&gt; BizTalk Server, WF&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Camada de Dados:&lt;/STRONG&gt; BizTalk Server, SQL Server&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;Camada de Conectividade:&lt;/STRONG&gt; BizTalk Server, WCF&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Ao mesmo tempo, pacotes como &lt;STRONG&gt;System Center, MOF, Active Directory, ESB Guidance&lt;/STRONG&gt; e &lt;STRONG&gt;soluções de terceiros&lt;/STRONG&gt; oferecem recursos e ferramentas para as atividades de administração do ambiente.&lt;/P&gt;
&lt;P&gt;Vemos que cada produto MS pode atender mais de uma camada ou conjunto de capacidades presentes numa visão de serviços. Ao mesmo tempo, quando pensamos em frameworks como &lt;STRONG&gt;WCF&lt;/STRONG&gt; e &lt;STRONG&gt;WF&lt;/STRONG&gt;, a implementação é por nossa conta, isto é, construímos os componentes de serviços (WCF) e workflow (WF) a partir de templates disponíveis no Visual Studio, conforme nossa necessidade de customização e desenvolvimento.&lt;/P&gt;
&lt;P&gt;Usando pacotes completos como &lt;STRONG&gt;BizTalk Server&lt;/STRONG&gt; e &lt;STRONG&gt;SharePoint Server&lt;/STRONG&gt;, aproveitamos os recursos integrados oferecidos pelo ambiente, o que economiza dezenas de horas de desenvolvimento. Por exemplo, podemos implementar cenários de serviços customizados com WCF, que disponibilizam informações de notícias para uma certa empresa. Porém, se nossa solução exige a exportação dessas mensagens para uma série de ambientes diferentes, exigindo transformações de mensagens diversas, um motor baseado em BizTalk com seus recursos de mapeamento e transformação passa a ser interessante.&lt;/P&gt;
&lt;P&gt;Em resumo, é importante conhecer as capacidades de cada produto, tecnologias e frameworks disponíveis no momento de decisão de cada camada de uma arquitetura de serviços. Podemos dizer que &lt;STRONG&gt;não existe&lt;/STRONG&gt; &lt;STRONG&gt;um único produto&lt;/STRONG&gt; &lt;STRONG&gt;ou tecnologia que atenda todos os cenários possíveis&lt;/STRONG&gt;, de BPM a workflows, de serviços a web services. Cada cenário apresenta necessidades específicas que precisam ser identificadas e corretamente atendidas.&lt;/P&gt;
&lt;P&gt;Por último, vale notar que o desenho acima é baseado apenas nas principais capacidades de cada produto. Existem cenários que podem aproveitar os produtos de diversas maneiras, compondo seus recursos e funcionalidades conforme a realidade de cada empresa.&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9629142" 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></item><item><title>Links e recomendações para o desenvolvimento de serviços</title><link>http://blogs.msdn.com/wcamb/archive/2009/05/16/links-e-recomenda-es-para-o-desenvolvimento-de-servi-os.aspx</link><pubDate>Sat, 16 May 2009 20:37:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9623367</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9623367.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9623367</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9623367</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Essa semana tive algumas reuniões com empresas e arquitetos, falando sobre ferramentas importantes para projetos envolvendo serviços, web services e aplicações de composição. Vamos aproveitar o post para citar os principais pacotes disponíveis, que ajudam no processo de desenvolvimento de uma solução orientada a serviços.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;1)&amp;nbsp;&amp;nbsp;&amp;nbsp; Enterprise Library 4.1 - October 2008 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en" target=_blank rel=nofollow mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A Enterprise Library 4.1 oferece um conjunto de blocos de aplicação e bibliotecas que atendem questões básicas da infra-estrutura de software, como: &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Caching &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Criptografia &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Acesso a Dados &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Tratamento de Exceção &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Interceptação de chamadas &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Logging, auditoria &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Segurança &lt;BR&gt;•&amp;nbsp;&amp;nbsp;&amp;nbsp; Validação, entre outros. &lt;/P&gt;
&lt;P&gt;Sem dúvida, é um pacote muito importante para consulta e uso durante o projeto.&lt;/P&gt;
&lt;P&gt;Veja mais aqui: &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/04/17/enterprise-library-configuration-com-a-entlib-4-1.aspx" target=_blank rel=nofollow mce_href="http://blogs.msdn.com/wcamb/archive/2009/04/17/enterprise-library-configuration-com-a-entlib-4-1.aspx"&gt;http://blogs.msdn.com/wcamb/archive/2009/04/17/enterprise-library-configuration-com-a-entlib-4-1.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;2)&amp;nbsp;&amp;nbsp;&amp;nbsp; Hands-On Labs for Enterprise Library 4.1 – March 2009 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en" target=_blank rel=nofollow mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O Hands On Labs (HOL) da Enterprise Library 4.1 é um pacote obrigatório para quem está iniciando seus primeiros passos com a biblioteca. Os laboratórios são muito bons, permitindo um excelente estudo sobre cada pacote.&lt;/P&gt;
&lt;P&gt;Veja mais aqui: &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/04/13/hands-on-labs-for-enterprise-library-4-1-march-2009.aspx" target=_blank rel=nofollow mce_href="http://blogs.msdn.com/wcamb/archive/2009/04/13/hands-on-labs-for-enterprise-library-4-1-march-2009.aspx"&gt;http://blogs.msdn.com/wcamb/archive/2009/04/13/hands-on-labs-for-enterprise-library-4-1-march-2009.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;3)&amp;nbsp;&amp;nbsp;&amp;nbsp; patterns &amp;amp; practices Application Architecture Guide 2.0 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586" target=_blank rel=nofollow mce_href="http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586"&gt;http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse documento é o guia de arquitetura em plataforma .NET. Leitura obrigatória sobre aplicações Web e arquiteturas de referência Web. &lt;/P&gt;
&lt;P&gt;Veja mais aqui: &lt;A href="http://blogs.msdn.com/wcamb/archive/2008/12/19/patterns-practices-application-architecture-guide-2-0.aspx" target=_blank rel=nofollow mce_href="http://blogs.msdn.com/wcamb/archive/2008/12/19/patterns-practices-application-architecture-guide-2-0.aspx"&gt;http://blogs.msdn.com/wcamb/archive/2008/12/19/patterns-practices-application-architecture-guide-2-0.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4)&amp;nbsp;&amp;nbsp;&amp;nbsp; patterns &amp;amp; practices : Improving Web Services Secutiry &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.codeplex.com/WCFSecurityGuide/Release/ProjectReleases.aspx?ReleaseId=15892" target=_blank rel=nofollow mce_href="http://www.codeplex.com/WCFSecurityGuide/Release/ProjectReleases.aspx?ReleaseId=15892"&gt;http://www.codeplex.com/WCFSecurityGuide/Release/ProjectReleases.aspx?ReleaseId=15892&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse documento fala sobre os principais aspectos de segurança para Web Services e serviços em WCF. Questões sobre autenticação, autorização, impersonation, etc. são bem tratadas nesse documento. Leitura importante!&lt;/P&gt;
&lt;P&gt;Veja mais aqui: &lt;A href="http://blogs.msdn.com/wcamb/archive/2008/11/05/patterns-practices-improving-web-services-security.aspx" target=_blank rel=nofollow mce_href="http://blogs.msdn.com/wcamb/archive/2008/11/05/patterns-practices-improving-web-services-security.aspx"&gt;http://blogs.msdn.com/wcamb/archive/2008/11/05/patterns-practices-improving-web-services-security.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;4)&amp;nbsp;&amp;nbsp;&amp;nbsp; Composite Application Guidance for WPF and Silverlight – Prism 2.0 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://compositewpf.codeplex.com/ href="http://compositewpf.codeplex.com/" target=_blank rel=nofollow mce_href="http://compositewpf.codeplex.com/"&gt;http://compositewpf.codeplex.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse velho conhecido oferece uma biblioteca para a construção de aplicações de composição em WPF e Silverlight 2.0. Para isso, o Prism oferece uma biblioteca que permite que módulos independentes sejam construídos e integrados na mesma interface de aplicação, dinâmica e composta. Cada módulo pode consumir funcionalidades e serviços de fontes diferentes. A implementação de referência STOCK TRADER que vem com o Prism 2.0 já oferece um bom começo e exemplo de aplicação. Confira!&lt;/P&gt;
&lt;P&gt;E sobre pacotes de instalação para aplicações Web, o recente: &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;6)&amp;nbsp;&amp;nbsp;&amp;nbsp; Microsoft Web Platform Installer &lt;BR&gt;&lt;/STRONG&gt;Ref. &lt;A href="http://www.microsoft.com/web/downloads/platform.aspx" mce_href="http://www.microsoft.com/web/downloads/platform.aspx"&gt;http://www.microsoft.com/web/downloads/platform.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse pacote é muito interessante para aplicações Web, que farão parte da solução com serviços. Questões como deployment, configuração e empacotamento dos bits para exportação para a produção também estão presentes em projetos SOA. Por isso, o Web Platform Installer vale como dica.&lt;/P&gt;
&lt;P&gt;Veja mais aqui: &lt;A href="http://blogs.msdn.com/wcamb/archive/2009/04/30/microsoft-web-platform-installer-1-0-e-2-0-beta.aspx" mce_href="http://blogs.msdn.com/wcamb/archive/2009/04/30/microsoft-web-platform-installer-1-0-e-2-0-beta.aspx"&gt;http://blogs.msdn.com/wcamb/archive/2009/04/30/microsoft-web-platform-installer-1-0-e-2-0-beta.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;7)&amp;nbsp;&amp;nbsp;&amp;nbsp; Health Monitoring to Instrument a WCF Service for Security &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/cc949048.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/en-us/library/cc949048.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc949048.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;O objetivo desse pacote é suportar um serviço WCF com vários elementos de instrumentação, monitoração e segurança. Leitura complementar bem interessante.&lt;/P&gt;
&lt;P&gt;Esses foram alguns pacotes que tenho usado na orientação de projetos com serviços. Fique a vontade para comentar suas experiências ou ainda adicionar novas dicas para a comunidade. &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=9623367" 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/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category></item><item><title>Recomendações gerais para a construção de serviços</title><link>http://blogs.msdn.com/wcamb/archive/2009/04/21/recomenda-es-gerais-para-a-constru-o-de-servi-os.aspx</link><pubDate>Wed, 22 Apr 2009 03:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9560757</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9560757.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9560757</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9560757</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Conforme combinado, vamos falar hoje de algumas dicas e ferramentas para a construção de serviços. Preparei uma lista com algumas direções para as várias questões envolvidas com o chamado “&lt;EM&gt;chão-de-fábrica&lt;/EM&gt;” na construção de serviços de SOA.&lt;/P&gt;
&lt;P&gt;E quais são essas questões? Vejamos algumas:&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Qual será o modelo/template de serviço? &lt;BR&gt;Qual será a granularidade dos serviços? &lt;BR&gt;Qual será o modelo/template de workflow? &lt;BR&gt;Qual será o modelo/template de segurança? &lt;BR&gt;Qual será o modelo de instrumentação e monitoração? &lt;BR&gt;Qual será o modelo de tratamento de exceções? &lt;BR&gt;Qual será o modelo de consumo de serviços? &lt;BR&gt;Como será obtido o reuso de serviços?&lt;/FONT&gt; &lt;/P&gt;
&lt;P&gt;Entre outras. Claro, estou dando o foco em desenvolvimento e a lista acima é apenas parcial. Existem outros aspectos que focam a infra-estrutura, nos moldes das discussões conduzidas pelo &lt;A href="http://blogs.technet.com/markuschristen/" target=_blank rel=nofollow mce_href="http://blogs.technet.com/markuschristen/"&gt;Markus Christen&lt;/A&gt;. Aqui entram os barramentos corporativos, os containers de serviços e workflows, virtualização, consolidação de infra-estrutura, etc.&lt;/P&gt;
&lt;P&gt;Assim, vejamos as tabelas abaixos, com alguns aspectos e comentários importantes:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image5.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image5.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=306 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image5_thumb.png" width=500 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image5_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Links importantes:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;WCF – Windows Communication Foundation templates &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://msdn.microsoft.com/en-us/library/ms735119.aspx href="http://msdn.microsoft.com/en-us/library/ms735119.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/en-us/library/ms735119.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms735119.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WCF And WF Services In The .NET Framework 4.0 And “Dublin”&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/magazine/2009.01.net40.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/en-us/magazine/2009.01.net40.aspx"&gt;http://msdn.microsoft.com/en-us/magazine/2009.01.net40.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WCF Security Guidance &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://www.codeplex.com/WCFSecurity href="http://www.codeplex.com/WCFSecurity" target=_blank rel=nofollow mce_href="http://www.codeplex.com/WCFSecurity"&gt;http://www.codeplex.com/WCFSecurity&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image_5.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image_5.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=330 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image_thumb.png" width=498 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Ferramentasbibliotecaserecomendaesparaac_845C/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Links importantes:&lt;/P&gt;
&lt;BLOCKQUOTE&gt;
&lt;P&gt;&lt;STRONG&gt;How to: Use Health Monitoring to Instrument a WCF Service for Security&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;U&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc949048.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/en-us/library/cc949048.aspx"&gt;http://msdn.microsoft.com/en-us/library/cc949048.aspx&lt;/A&gt; &lt;/U&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Service Bus Guidance 2.0&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A title=http://www.codeplex.com/esb href="http://www.codeplex.com/esb" target=_blank rel=nofollow mce_href="http://www.codeplex.com/esb"&gt;http://www.codeplex.com/esb&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Composite Application Guidance for WPF and Silverlight 2.0 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://compositewpf.codeplex.com/ href="http://compositewpf.codeplex.com/" target=_blank rel=nofollow mce_href="http://compositewpf.codeplex.com"&gt;http://compositewpf.codeplex.com&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Library 4.1 – October 2008&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en" target=_blank rel=nofollow mce_href="http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B529-3E41584B6CE5&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Hands-On Labs for Enterprise Library 4.1 – March 2009 &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en" target=_blank rel=nofollow mce_href="http://www.microsoft.com/downloads/details.aspx?FamilyID=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en"&gt;http://www.microsoft.com/downloads/details.aspx?FamilyID=AB3F2168-FEA1-4FC2-B40C-7867D99D4B6A&amp;amp;displaylang=en&lt;/A&gt;&lt;/P&gt;&lt;/BLOCKQUOTE&gt;
&lt;P&gt;Esses são alguns dos guias que tenho usado em discussões e projetos de SOA sobre a plataforma Microsoft. Cada tópico merece uma atenção especial enquanto construímos nossos serviços, por isso, não deixem de conferir os links acima.&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=9560757" 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></item><item><title>Sequential Workflow Service Library : integrando serviços WCF com workflows WF no .NET 3.5</title><link>http://blogs.msdn.com/wcamb/archive/2009/03/17/sequential-workflow-service-library-integrando-servi-os-wcf-com-workflows-wf-no-net-3-5.aspx</link><pubDate>Wed, 18 Mar 2009 01:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9484965</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9484965.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9484965</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9484965</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Em breve teremos a chegada do &lt;STRONG&gt;.NET 4.0,&lt;/STRONG&gt; com uma série de inovações e melhorias em seus recursos. Entre os benefícios, a dupla &lt;STRONG&gt;WCF (Windows Communication Foundation)&lt;/STRONG&gt; e &lt;STRONG&gt;WF (Windows Workflow Foundation)&lt;/STRONG&gt; promete maior integração e aderência ao modelo híbrido de programação enterprise/cloud (local e nuvem).&lt;/P&gt;
&lt;P&gt;Um desenho conhecido aparece abaixo, onde nosso workflow encapsula chamadas para outros serviços externos, enquanto ele mesmo é exportado como um serviço, para outros participantes da solução. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=211 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb.png" width=422 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse tipo de cenário é bem interessante para arquiteturas de serviços, onde pequenas orquestrações podem coordenar chamadas diversas para serviços da infra-estrutura. Assim, desenhos como esse abaixo são comuns em muitas empresas:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_4.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=365 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_1.png" width=503 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Com o &lt;STRONG&gt;.NET 3.0&lt;/STRONG&gt; era possível o consumo de serviços a partir de workflows em WF somente através de interfaces &lt;STRONG&gt;Web Services&lt;/STRONG&gt;. Esse tipo de interação era obtida com os shapes de invocação e tratamento de Web Services, como o &lt;STRONG&gt;InvokeWebService, WebServiceInput, WebServiceOutput&lt;/STRONG&gt; e &lt;STRONG&gt;WebServiceFault&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_6.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; MARGIN: 0px 0px 10px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=148 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_2.png" width=165 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Com o .NET 3.5, a integração WCF + WF aumentou, com templates interessantes como o &lt;STRONG&gt;Sequential Workflow Service Library&lt;/STRONG&gt;, objeto deste post. &lt;/P&gt;
&lt;P&gt;Nesses últimos dias, tenhos conversado com muitas empresas que têm perguntado sobre essa integração entre interfaces de serviços e workflows em soluções para diversos cenários.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Como criar um SERVIÇO como um WORKFLOW?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Para a criação de um serviços como workflow, o .NET 3.5 oferece o template &lt;STRONG&gt;Sequential Workflow Service Library&lt;/STRONG&gt;, que oferece uma interface de publicação WCF para um workflow WF. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_8.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=349 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_3.png" width=505 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Através deste template, temos a disposição todos os shapes e recursos do WF para a coordenação de atividades e chamadas para outros serviços ou mesmo outros workflows da solução. Ao mesmo tempo, esse workflow implementa uma interface &lt;STRONG&gt;IWorkflow&lt;/STRONG&gt;, que exporta um contrato de serviço, permitindo que aplicações clientes disparem mensagens para consumo. No template, a interface IWorkflow implementa um método &lt;STRONG&gt;GetData(..)&lt;/STRONG&gt; exemplo, o mesmo implementado pelo template de &lt;STRONG&gt;WCF Service Library&lt;/STRONG&gt;. &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_10.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; MARGIN: 0px 10px 10px 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=196 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_4.png" width=173 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A figura ao lado ilustra o template &lt;STRONG&gt;Sequential Workflow Service Library&lt;/STRONG&gt; como oferecido pelo Visual Studio e o .NET 3.5. &lt;/P&gt;
&lt;P&gt;Podemos adicionar novas interfaces de serviços através da adição de novos contratos de operação ou mesmo contratos de dados na interface IWorkflow, conforme a necessidade.&lt;/P&gt;
&lt;P&gt;Ao mesmo tempo, podemos adicionar novos shapes de WF ao workflow, para o tratamento dos valores de entrada e execução da lógica de negócio desejada, preparando o valor de retorno do serviço. &lt;/P&gt;
&lt;P&gt;Um exemplo de serviço WCF implementado como um WF é dado a seguir, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_14.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=519 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_6.png" width=372 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_6.png"&gt;&lt;/A&gt;Arquivo: workflow1.cs&lt;/P&gt;
&lt;P&gt;No serviço acima, temos uma primeira atividade &lt;STRONG&gt;codeActivity1&lt;/STRONG&gt; que recebe o valor de entrada do serviço na variável &lt;STRONG&gt;InputValue&lt;/STRONG&gt;. Os argumentos de entrada (&lt;STRONG&gt;InputValue&lt;/STRONG&gt;) e saída (&lt;STRONG&gt;ReturnValue&lt;/STRONG&gt;) do serviço são de fato oferecidos pelo template, como vemos a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_20.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_20.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=242 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_9.png" width=326 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_9.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;No exemplo acima, o valor &lt;STRONG&gt;InputValue&lt;/STRONG&gt; é colocado na propriedade &lt;STRONG&gt;myCond&lt;/STRONG&gt;, que é testada na condição do shape &lt;STRONG&gt;ifElseActivity1&lt;/STRONG&gt;. Para teste, foi criada uma cláusula declarativa de condição &lt;STRONG&gt;myCond&lt;/STRONG&gt;, que verifica se o valor de &lt;STRONG&gt;myCond&lt;/STRONG&gt; é igual a 0. Se for, a atividade &lt;STRONG&gt;codeActivity2&lt;/STRONG&gt; é executada, caso contrário, a atividade &lt;STRONG&gt;codeActivity3&lt;/STRONG&gt; é executada. No final, &lt;STRONG&gt;codeActivity4&lt;/STRONG&gt; adiciona uma string na mensagem de retorno do serviço, que feito através da propriedade &lt;STRONG&gt;ReturnValue&lt;/STRONG&gt; do serviço. &lt;/P&gt;
&lt;P&gt;O código completo deste serviço é 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; &lt;SPAN style="COLOR: #0000ff"&gt;using&lt;/SPAN&gt; System;&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; System.Workflow.Activities;&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; myWorkflowService&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;sealed&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;partial&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;class&lt;/SPAN&gt; Workflow1 : SequentialWorkflowActivity&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: #008000"&gt;// Minha variável interna para teste de condição no workflow.&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;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;int&lt;/SPAN&gt; myCond = 0;&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; Workflow1()&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;             InitializeComponent();&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: #008000"&gt;// These variables are bound to the input and output parameters of the ReceiveActivity.&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;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; String returnValue;&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;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; Int32 inputValue;&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;&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;  20:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; Int32 InputValue&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;             get { &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; inputValue; }&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;             set { inputValue = &lt;SPAN style="COLOR: #0000ff"&gt;value&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;  24:&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;  25:&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;  26:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;public&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;string&lt;/SPAN&gt; ReturnValue&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;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;  28:&lt;/SPAN&gt;             get { &lt;SPAN style="COLOR: #0000ff"&gt;return&lt;/SPAN&gt; returnValue; }&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;  29:&lt;/SPAN&gt;             set { returnValue = &lt;SPAN style="COLOR: #0000ff"&gt;value&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;  30:&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;  31:&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;  32:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; codeActivity1_ExecuteCode(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, EventArgs e)&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;  33:&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;  34:&lt;/SPAN&gt;             &lt;SPAN style="COLOR: #0000ff"&gt;this&lt;/SPAN&gt;.myCond = InputValue;&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;  35:&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;  36:&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;  37:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; codeActivity2_ExecuteCode(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, EventArgs e)&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;  38:&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;  39:&lt;/SPAN&gt;             ReturnValue = &lt;SPAN style="COLOR: #006080"&gt;"passei pelo IF"&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;  40:&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;  41:&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;  42:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; codeActivity3_ExecuteCode(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, EventArgs e)&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;  43:&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;  44:&lt;/SPAN&gt;             ReturnValue = &lt;SPAN style="COLOR: #006080"&gt;"passei pelo ELSE"&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;  45:&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;  46:&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;  47:&lt;/SPAN&gt;         &lt;SPAN style="COLOR: #0000ff"&gt;private&lt;/SPAN&gt; &lt;SPAN style="COLOR: #0000ff"&gt;void&lt;/SPAN&gt; codeActivity4_ExecuteCode(&lt;SPAN style="COLOR: #0000ff"&gt;object&lt;/SPAN&gt; sender, EventArgs e)&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;  48:&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;  49:&lt;/SPAN&gt;             ReturnValue = ReturnValue + &lt;SPAN style="COLOR: #006080"&gt;" - Fim!"&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;  50:&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;  51:&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;  52:&lt;/SPAN&gt; }&lt;/PRE&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Para testes, podemos usar o&lt;STRONG&gt; WCF Test Client&lt;/STRONG&gt; do Visual Studio para exercitar chamadas ao serviço, alterando os valores de entrada do método &lt;STRONG&gt;GetData&lt;/STRONG&gt;, como vemos abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_16.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=346 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_7.png" width=532 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/9db10e8e5e7f_AEF1/image_thumb_7.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Desse modo, vimos um bom exemplo de template que pode ser usado em nossas aplicações e soluções envolvendo os conceitos de interfaces de serviços e workflows, integrando os recursos do WCF e do WF no .NET 3.5.&lt;/P&gt;
&lt;P&gt;Em posts futuros, vamos falar um pouco mais sobre a integração WCF+WF no&lt;STRONG&gt; .NET 4.0&lt;/STRONG&gt; e as novidades que estarão chegando, fiquem ligados!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9484965" 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/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category></item><item><title>Enterprise Service Bus (ESB) : barramento de serviços e seus desafios.</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/17/enterprise-service-bus-esb-barramento-de-servi-os-e-seus-desafios.aspx</link><pubDate>Wed, 18 Feb 2009 01:31:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9428819</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9428819.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9428819</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9428819</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Recentemente, acompanhei uma discussão de arquitetura onde me foi apresentado um desenho de infra-estrutura simplificado, como esse: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=386 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb.png" width=495 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Até aqui, nada de novo, tenho certeza que muitos de vocês já viram cenários como esse. O que chamou minha atenção foi o "barramento" no meio do desenho, o chamado&lt;STRONG&gt; Enterprise Service Bus (ESB).&lt;/STRONG&gt; Após notá-lo entre as várias caixas de servidores, perguntei sobre a real necessidade do ESB na arquitetura e quais seriam as funcionalidades do barramento que seriam aproveitadas na solução.&lt;/P&gt;
&lt;P&gt;Ouvi como resposta um sonoro : "&lt;EM&gt;é óbvio!!! precisamos publicar os serviços num barramento de serviços!!&lt;/EM&gt;" :) Certo! Um barramento de serviços é importante, mas quais funcionalidades você vai utilizar a partir do barramento de serviços? : "&lt;EM&gt;ora!!! um barramento de serviços é um barramento de&lt;/EM&gt; &lt;EM&gt;serviços!!!"&lt;/EM&gt; :(&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_14.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=109 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb_6.png" width=101 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb_6.png"&gt;&lt;/A&gt; Enfim, acabei descobrindo que o chamado barramento de serviços poderia até ser trocado por uma barra de &lt;EM&gt;Ethernet&lt;/EM&gt; no desenho acima, pois de fato, a solução não mapeava qualquer funcionalidade envolvida numa camada ESB tradicional, nada além da ideia do &lt;EM&gt;varal universal de serviços&lt;/EM&gt;....&lt;/P&gt;
&lt;P&gt;Esse é um erro comum em muitos cenários hoje em dia. Diversas empresas já colocaram um barramento de serviços sem um detalhamento prévio ou conhecimento dos reais desafios que um barramento pretende endereçar.&lt;/P&gt;
&lt;P&gt;Por exemplo, veja um artigo de Dezembro de 2007, que inicia o assunto de um modo bem interessante, posicionando a dificuldade em termos de integração e hub de aplicações, algo como :&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=393 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb_1.png" width=451 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Services Fabric: Fine Fabrics for New-Era Systems&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/architecture/cc168621.aspx" mce_href="http://msdn.microsoft.com/en-us/architecture/cc168621.aspx"&gt;http://msdn.microsoft.com/en-us/architecture/cc168621.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Muito bem, já deu para perceber que existe muito mais que apenas um "&lt;EM&gt;barramento&lt;/EM&gt;" nesse assunto. Como o autor bem coloca, precisamos responder quais &lt;EM&gt;issues&lt;/EM&gt; iremos atender com nosso ESB em nossa solução.&lt;/P&gt;
&lt;P&gt;A Microsoft disponibiliza um pacote de &lt;EM&gt;Enteprise Service Bus&lt;/EM&gt; chamado &lt;STRONG&gt;ESB Guidance&lt;/STRONG&gt;. É interessante ver que a Microsoft define um ESB como um "&lt;EM&gt;conjunto de patterns de mensageria, EAI, integração e barramento de serviços&lt;/EM&gt;", relacionando assim uma série de recursos. Entre os recursos mais importantes temos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Monitoração de Atividades de Negócio&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Motor de Regras de Negócio&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Integração de Aplicações&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Transformação&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Resolução (UDDI)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Itinerário&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Serviços de Exceções&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Repositório e Registro de Serviços&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Portal de Gerenciamento&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;O desenho a seguir apresenta o mapa de funcionalidades do &lt;STRONG&gt;ESB Guidance 2.0&lt;/STRONG&gt; da Microsoft, disponível de forma gratuíta através do CodePlex, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_16.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=307 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb_7.png" width=478 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/EnterpriseServiceBusESBumbarramentodese_1045F/image_thumb_7.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Enterprise Service Bus Guidance &lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/esb/" mce_href="http://www.codeplex.com/esb/"&gt;http://www.codeplex.com/esb/&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vale destacar que o ESB Guidance aproveita a infra-estrutura de mensageria e integração de aplicações (EAI) disponibilizada pelo produto &lt;STRONG&gt;BizTalk Server&lt;/STRONG&gt;. Assim, o pacote estende as funcionalidades do produto para a criação de uma infra-estrutura de barramento de serviços, como vemos acima. Enquanto o ESB Guidance 1.0 trabalha com o BizTalk Server 2006 R2 (atual), o ESB Guidance 2.0 trabalhará sobre o BizTalk Server 2009, previsto ainda para esse semestre.&lt;/P&gt;
&lt;P&gt;Para finalizar, o &lt;STRONG&gt;ESB Guidance 2.0 CTP2 - Janeiro 2009 &lt;/STRONG&gt;foi recentemente disponibilizado no CodePlex para download. Confira:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;ESB Guidance 2.0 CTP2 - January 2009 &lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/esb/Release/ProjectReleases.aspx?ReleaseId=21605" mce_href="http://www.codeplex.com/esb/Release/ProjectReleases.aspx?ReleaseId=21605"&gt;http://www.codeplex.com/esb/Release/ProjectReleases.aspx?ReleaseId=21605&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Sem dúvida, ESB é um componente crítico para soluções de serviços e integração de aplicações de forma padronizada no ambiente corporativo. Não deixem de acompanhar esse assunto em suas discussões.&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9428819" 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/ESB/default.aspx">ESB</category></item><item><title>Arquitetura de serviços e capacidades de SOA na plataforma Microsoft.</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/13/arquitetura-de-servi-os-e-capacidades-de-soa-na-plataforma-microsoft.aspx</link><pubDate>Fri, 13 Feb 2009 18:54:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9419104</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9419104.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9419104</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9419104</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/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0px 10px; BORDER-RIGHT-WIDTH: 0px" height=69 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_thumb_2.png" width=58 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_thumb_2.png"&gt;&lt;/A&gt; Esses dias estive em algumas discussões sobre os vários serviços de uma arquitetura de referência SOA e como podemos mapear os produtos e recursos da plataforma Microsoft. A importância dessa discussão é enorme: seja qual for o fornecedor de sua plataforma, é importante o mapeamento correto de recursos e funcionalidades disponíveis, que irão atender as necessidades de sua solução, respeitando o SLA esperado pelo negócio.&lt;/P&gt;
&lt;P&gt;Como o assunto é orientação a serviços, vamos fazer uma rápida revisão. Uma definição simples sobre SOA pode ser:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;"um estilo de arquitetura onde funcionalidades de aplicações de negócio existentes (LoB - Line of Business) são disponibilizadas e publicadas na forma de serviços".&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Muito bem! E o que seria serviço? Podemos citar uma rápida definição para ele também:&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;"são componentes de software que expõem funcionalidades de aplicações numa arquitetura SOA, respeitando algumas características importantes:&lt;/FONT&gt;&lt;/EM&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;serviços são autônomos;&lt;/FONT&gt;&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;serviços são orientados a mensagens;&lt;/FONT&gt;&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;serviços podem suportar diferentes protocolos e mecanismos de transporte;&lt;/FONT&gt;&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;serviços podem ser publicados ou hosteados em diferentes tipos de hosts;&lt;/FONT&gt;&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;&lt;FONT color=#000080&gt;serviços suportam contratos de operação, interfaces e tipos de mensagens;"&lt;/FONT&gt;&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Respeitando as características acima, nossa solução caminha para um modelo de arquitetura desacoplada entre cliente e serviço, criando um ambiente propício para o reuso de funcionalidades, assim como a composição de funcionalidades em uma dada aplicação. Esses são elementos essenciais de uma arquitetura de serviços ou SOA.&lt;/P&gt;
&lt;P&gt;Veja que não falei nada sobre granularidade de serviços, governança de serviços, versionamento de interface e mensagens, administração e deployment, controle de exceções, roteamento de mensagens, rastreabilidade, monitoração, controle de níveis de serviços, etc. Portanto, a discussão sobre SOA é muito maior e pode ter abordagens diversas, algumas mais técnicas, outras mais de negócio. Estou focando a visão técnica.&lt;/P&gt;
&lt;P&gt;A partir dos pontos acima, vejamos um mapa de serviços geral de uma arquitetura SOA:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px; BORDER-RIGHT-WIDTH: 0px" height=288 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_thumb.png" width=527 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;A figura acima destaca serviços comuns de uma arquitetura SOA, como serviços de apresentação, colaboração, integração entre sistemas, persistência de dados, serviços de orquestração de processos, entre outros. Podemos tratar esses vários serviços como capacidades de SOA. Na verdade, avaliando capacidades de serviços, podemos identificar quais são os aspectos que realmente precisamos para o sucesso de nossa solução. Existem cenários onde segurança e monitoração de serviços é crítico, assim como a orquestração de processo. Para outros cenários, a capacidade mais importante é integrar diferentes plataformas e ambientes de linhas de negócio, que estarão envolvidos na arquitetura SOA.&amp;nbsp; Avaliar quais são as principais capacidades que precisamos é fundamental para a condução de um projeto de SOA.&lt;/P&gt;
&lt;P&gt;Com base nesse desenho, vejamos quais produtos de uma infra-estrutura Microsoft atendem quais capacidades de serviços:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=285 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_thumb_1.png" width=518 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArquiteturadeserviosecapacidadesdeSOAna_1290B/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vemos então que alguns produtos podem atender capacidades específicas, assim como várias capacidades ao mesmo tempo. É o caso do &lt;STRONG&gt;WF - Windows Workflow Foundation&lt;/STRONG&gt;, que pode ser usado tanto para a construção de serviços de interação entre sistemas como para orquestração de processo. Da mesma forma o &lt;STRONG&gt;BizTalk Server&lt;/STRONG&gt; oferece capacidades de integração, assim como de processos e orquestração de serviços. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;A conclusão é que não teremos um único produto ou infra-estrutura de software que irá implementar toda a visão de SOA.&lt;/STRONG&gt; &lt;/P&gt;
&lt;P&gt;Uma orientação a serviços é formada por diferentes capacidades. Identificar quais capacidades são importantes para nosso cenário de negócio é tão crítico para o projeto quanto a própria escolha do fornecedor ou infra-estrutura de software que será adotada.&lt;/P&gt;
&lt;P&gt;Por enquannto é 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=9419104" 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/ESB/default.aspx">ESB</category></item><item><title>Interoperabilidade e Comunicação na plataforma Microsoft : o que e quando usar?</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/11/interoperabilidade-e-comunica-o-na-plataforma-microsoft-o-que-e-quando-usar.aspx</link><pubDate>Wed, 11 Feb 2009 20:59:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9413099</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9413099.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9413099</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9413099</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;No post anterior vimos que a interoperabilidade na plataforma Microsoft pode ser organizada em 3 níveis básicos de complexidade: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Interop in the Framework&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Interop in the Box&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Interop in the Cloud&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Os recursos assim agrupados permitem um melhor entendimento das necessidades de cada solução, seja através da customização com WCF, WF, seja via um motor de mensageria e transformação com o BizTalk Server ou um barramento de mensanges com o ESB Guidance, ou até mesmo um modelo de integração entre empresas através da nuvem, no chamado ISB - Internet Service Bus, como .NET Services do Azure.&lt;/P&gt;
&lt;P&gt;Falamos também de 4 componentes importantes para a interoperabilidade no ambiente enterprise (local). Vejamos:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;O que usar?&lt;/STRONG&gt;&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Microsoft® BizTalk® Server (BTS)&lt;/FONT&gt; :&lt;/STRONG&gt; BizTalk oferece uma pilha ampla de adaptadores, orquestração, mensageria e protocolos para a construção de soluções preparadas para EAI - Enterprise Application Integration. Através de ferramentas de mapeamento de mensagens, manipulação de schemas, transformação, monitoração e regras de negócio, o ambiente BTS permite a construção de soluções de mensageria em cenários de elevado volume de mensagens e vazão; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Microsoft Host Integration Server (HIS)&lt;/FONT&gt; :&lt;/STRONG&gt; HIS oferece uma plataforma para a conectar aplicações com sistemas da plataforma IBM zSeries e iSeries. Ainda, HIS suporta a conexão de dados entre Microsoft Message Queuing (MSMQ) e o IBM WebSphere MQ; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Microsoft Message Queuing (MSMQ)&lt;/FONT&gt; :&lt;/STRONG&gt; o MSMQ permite a conexão de entre aplicações usando um modelo de fila de mensagens. MSMQ oferece a garantia de entrega de mensagens, mensagens baseadas em prioridades e segurança. Ele suporta a integração com sistemas parcialmente conectados ou temporariamente offline. MSQM também suporta cenários de mensageria síncrona e assíncrona; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;STRONG&gt;&lt;FONT color=#000080&gt;Microsoft Enterprise Service Bus (ESB) Guidance&lt;/FONT&gt; :&lt;/STRONG&gt; o ESB Guidance é uma unidade lógica que oferece uma arquitetura desacoplada baseada em mensagens, usando para isso a infra-estrutura do BizTalk Server. O ESB Guidance é na verdade um conjunto de templates e patterns que extendem as funcionalidades do BTS, adicionando características como roteamento de mensagens, repositório de serviços, garantia de entrega, segurança de mensagens, registro de serviços e tratamento unificado de exceções;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Cada uma das tecnologias acima aplica patterns de arquitetura importantes para diversos cenários de integração em TI. Porém, cada cenário exige uma tecnologia mais adequada que a outra. Adotar um modelo síncrono de mensageria quando nossa solução permite cenários parcialmente conectado pode ser desastraso, por exemplo. Então, surge a pergunta:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Quando usar?&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Considere o uso de &lt;STRONG&gt;BizTalk Server&lt;/STRONG&gt; quando:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução interage com múltiplos web services via uma orquestração, como parte de uma arquitetura orientada a serviços (SOA), suportando as latências de I/O devido a transformação de mensagens, persistência de mensagens para tracing ou latência devido subscrição/distribuição de mensagens;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deseja suportar processos business-to-business (B2B), incluindo padrões de indústria como &lt;STRONG&gt;EDIFACT, ANSCI X12, HL7, HIPAA&lt;/STRONG&gt;, or &lt;STRONG&gt;SWIFT&lt;/STRONG&gt;.&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução exige a execução de serviços em paralelo, com mecanismos facilitadores para esse tipo de orquestração e sincronização entre processos;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução exige alta confiabilidade e infra-estrutura dedicada para escalabilidade, com garantia de entrega e recuperação de mensagens;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução necessita medir &lt;STRONG&gt;KPI's - Key Performance Indicators&lt;/STRONG&gt; de negócio, através de um motor de análise como &lt;STRONG&gt;BAM - Business Analysis Manager&lt;/STRONG&gt;, que deve fornecer uma visibilidade em tempo real sobre os dados processados pela solução;&lt;/FONT&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deseja abstrair a lógica de negócios e aplicações através de políticas, que podem ser alteradas de acordo com as necessidades de negócio da solução;&lt;/FONT&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Considere o uso de &lt;STRONG&gt;Host Integration&lt;/STRONG&gt; Server quando:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução precisa suportar interação com aplicações IBM zSeries ou iSeries;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deve integrar BizTalk com DB2, WebSphere MQ, Aplicações Host (em plataforma alta) ou servidores de arquivos;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deve integrar mensageria MSMQ com WebSphere MQ;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Considere o uso de &lt;STRONG&gt;Message Queuing&lt;/STRONG&gt; quando:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deve suportar interação entre aplicações baseada em mensagens;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução precisa integrar plataformas Microsoft e Não-Microsoft, suportando a conversação assíncrona;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução precisa suportar conversação SRMP - SOAP Reliable Messaging Protocol entre as aplicações envolvidas;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Considere o uso de &lt;STRONG&gt;Enterprise Service Bus Guidance&lt;/STRONG&gt; quando:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução necessita suportar a abordagem de mensageria com itinerário de mensagens ou roteamento entre sistemas envolvidos;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deve suportar a resolução dinâmica de roteamento de mensagens;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deve usar transformação de mensagens dinâmicamente;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução deve suportar um gerenciamento de exceções de forma unificada e robusta, para a integração de sistemas EAI;&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;quando a solução necessita de uma abordagem de repositóio de serviços, para publicação de funcionalidades envolvidas;&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;O mapa acima é uma relação parcial de benefícios ou aspectos de arquitetura que justificam cada tecnologia para uma dada solução. Claro, para alguns cenários, podemos abrir mão dos pacotes acima e simplesmente implementar nossos próprios componentes de integração, interoperabilidade ou orquestração usando frameworks como o &lt;STRONG&gt;WCF - Windows Communication Foundation &lt;/STRONG&gt;e o &lt;STRONG&gt;WF - Windows Workflow Foundation&lt;/STRONG&gt;, sempre considerando o esforço de nosso próprio desenvolvimento.&lt;/P&gt;
&lt;P&gt;No final, podemos construir uma &lt;STRONG&gt;matriz de decisão&lt;/STRONG&gt;, que pode nos ajudar no momento de análilse de uma solução e as tecnologias mais indicadas. Fica a dica para ampliar esse estudo e detalhamento destacando os aspectos mais importantes para sua própria soluçã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=9413099" 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/ESB/default.aspx">ESB</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/Azure+Services+Platform/default.aspx">Azure Services Platform</category></item><item><title>Interoperabilidade e Comunicação na plataforma Microsoft.</title><link>http://blogs.msdn.com/wcamb/archive/2009/02/09/interoperabilidade-e-comunica-o-na-plataforma-microsoft.aspx</link><pubDate>Mon, 09 Feb 2009 15:55:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9408607</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9408607.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9408607</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9408607</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;A semana passada foi bem corrida, com uma série de reuniões de projetos em diferentes empresas. Um dos tópicos interessantes que vi foi um mapa sobre os diferentes níveis de interoperabilidade na plataforma Microsoft.&lt;/P&gt;
&lt;P&gt;Podemos pensar em 3 níveis básicos de complexidade: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Interop in the Framework&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Interop in the Box&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Interop in the Cloud&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A figura abaixo faz um resumo desse mapa de interoperabilidades:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=341 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_thumb.png" width=549 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O chamado "&lt;STRONG&gt;Interop in the Framework&lt;/STRONG&gt;" envolve a integração customizada, através de sua principal ferramenta, o &lt;STRONG&gt;WCF - Windows Communication Foundation&lt;/STRONG&gt;. Através do WCF podemos construir arquiteturas de serviços com interfaces específicas para cada necessidade de negócio envolvida. Veja que a customização possível do WCF envolve a escolha dos melhores bindings, protocolos de entrega, formatação de dados, etc. Assim, suportamos de forma especializada padrões como ASMX, WSE, .NET Remoting, MSMQ, formatos como POX, REST, JSON, ATOM, além de mecanismos de roteamento, transação, coordenação, entre outros padrões do WS-I. Veja sobre cenários de WCF &lt;A href="http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_rios+de+servi_26002300_231_3B00_os+WCF/default.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_rios+de+servi_26002300_231_3B00_os+WCF/default.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Porém, existem cenários onde podemos aproveitar recursos de &lt;STRONG&gt;EAI - Enterprise Application Intergation&lt;/STRONG&gt; ou mensageria, que envolvem tipicamente a transformação de mensagens, roteamento e principalmente atividades de tradução entre diferentes ambientes e tecnologias. Nesse caso, o chamado "&lt;STRONG&gt;Interop in the Box&lt;/STRONG&gt;" apresenta uma caixa pronta, através do &lt;STRONG&gt;BizTalk Server&lt;/STRONG&gt; na plataforma Microsoft. Na verdade, o BizTalk Server oferece um conjunto de recursos que podem ser configurados ou extendidos, permitindo a integração direta entre diferentes sistemas através de adaptadores, para SAP, Siebel, JD Edwards, etc, além do atendimento de protocolos de troca de dados como XML, EDI, EDIFACT, AS2, SWIFT, etc. Finalmente, é muito comum a integração de cenários "&lt;STRONG&gt;in the Framework&lt;/STRONG&gt;" com cenários "&lt;STRONG&gt;in the Box&lt;/STRONG&gt;", pois nossa TI sempre possui características mistas de composição de negócios e serviços.&lt;/P&gt;
&lt;P&gt;Por último e mais recentemente, podemos pensar na composição de cenários entre múltiplas empresas, que implementam internamente suas integrações nos níveis "in the Box" e "in the Framework" através da nuvem. Usando elementos de escalabilidade e processamento massivo de um datacenter externo, fazemos a integração de diferentes cenários de negócio e suas necessidades, usando um ambiente de hardware provisionável por demandad. Temos assim o chamado "&lt;STRONG&gt;Interop in the Cloud&lt;/STRONG&gt;". Nesse tipo de ambiente, identidade, conectividade e workflow ou orquestração de negócios na nuvem são elementos básicos para o projeto. Seu maior representando no Windows Azure é o &lt;STRONG&gt;.NET Services&lt;/STRONG&gt;, sendo o principal mecanismo para a construção de uma integração "in the cloud". Como exemplo, a Microsoft está desenvolvendo um projeto conhecido como MEBA - Multi-Enterprise Business Application, usando a nuvem como ponto de integração entre empresas. Veja um pouco mais sobre MEBA &lt;A href="http://blogs.msdn.com/wcamb/archive/2008/11/28/meba-multi-enterprise-business-application.aspx" target=_blank mce_href="http://blogs.msdn.com/wcamb/archive/2008/11/28/meba-multi-enterprise-business-application.aspx"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;MEBA - Multi-Enterprise Business Application&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=285 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_thumb_1.png" width=534 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ServioseInteroperabilidadenaplataformaMi_95A4/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Interoperabilidade&lt;/STRONG&gt; é um dos temas principais de arquitetura, assim como a &lt;STRONG&gt;Comunicação&lt;/STRONG&gt; entre diferentes ambientes. Na plataforma Microsoft, quando pensamos em comunicação citamos 4 caixas específicas:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Microsoft® BizTalk® Server (BTS)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Microsoft Host Integration Server (HIS)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Microsoft Message Queuing (MSMQ)&lt;/FONT&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;FONT color=#000080&gt;Microsoft Enterprise Service Bus (ESB) Guidance&lt;/FONT&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Vamos falar um pouco mais dessas soluções em posts futuros.&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=9408607" 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/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_rios+de+servi_26002300_231_3B00_os+WCF/default.aspx">Cen&amp;#225;rios de servi&amp;#231;os WCF</category></item><item><title>MEBA - Multi-Enterprise Business Application.</title><link>http://blogs.msdn.com/wcamb/archive/2008/11/28/meba-multi-enterprise-business-application.aspx</link><pubDate>Fri, 28 Nov 2008 21:15:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9152632</guid><dc:creator>wcamb</dc:creator><slash:comments>5</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9152632.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9152632</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9152632</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/Umavisosobreofuturo_23C3/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 5px 5px 0px; BORDER-RIGHT-WIDTH: 0px" height=119 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_thumb.png" width=145 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_thumb.png"&gt;&lt;/A&gt; Um assunto muito interessante que foi apresentado durante o PDC 2008 e o SAF 2008 é o &lt;STRONG&gt;MEBA - Multi-Enterprise Business Application&lt;/STRONG&gt;. Ele é parte dos trabalhos do time de Jach Greenfield, nosso grande conhecido do mundo das &lt;STRONG&gt;Software Factories&lt;/STRONG&gt;. Vamos falar um pouco sobre MEBA hoje.&lt;/P&gt;
&lt;P&gt;Quando pensamos no mundo enterprise, com software &lt;STRONG&gt;on-premise&lt;/STRONG&gt; e hardware local, uma discussão frequente tem sido como aplicar uma abordagem SOA de sucesso. Entende-se por sucesso a correta seleção de funcionalidades das aplicações de linhas de negócios (LOB) como serviços, obtenção de SLA's aderentes às necessidades de negócio, facilidades de administração, uso de protocolos abertos, reuso, boa governança de serviços, etc.&lt;/P&gt;
&lt;P&gt;A partir do sucesso de cada empresa na implementação de SOA, surge o desafio da integração entre empresas, por exemplo, participantes de um mesmo processo de Supply Chain. Como coordenar os vários processos de SOA locais com uma visibilidade maior, num processo maior com diversos participantes? &lt;/P&gt;
&lt;P&gt;Esse desafio é grandioso e muitas empresas de diferentes verticais e ramos de atividades o enfretam todos os dias. No papel de arquitetos de soluções, de infra-estrutura ou de enterprise, como podemos tratar esses problemas e aspectos de integração?&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 0px 10px; BORDER-RIGHT-WIDTH: 0px" height=107 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_thumb_1.png" width=131 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_thumb_1.png"&gt;&lt;/A&gt; Uma das abordagens é o reconhecimento de patterns de integração e manipulação de dados. De fato, existem diversos tipos de patterns publicados, seja para cenários específicos de &lt;STRONG&gt;SOA - Service Oriented Architecture&lt;/STRONG&gt;, &lt;STRONG&gt;BPM - Business Process Management&lt;/STRONG&gt; ou &lt;STRONG&gt;EAI - Enterprise Application Integration&lt;/STRONG&gt;. Note que relacionei as três tecnologias (SOA/BPM/EAI) por estarem geralmente associadas em diversos projetos hoje em dia. Tenho conversado com várias empresas que questionam sobre soluções ou abordagens para as três frentes, adicionando ainda um quarto participante que seria o &lt;STRONG&gt;ESB - Enterprise Service Bus&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;Nesse ponto, o ESB serve como modelo de integração central para essas múltiplas empresas de um cenário SOA global. Surge então o conceito de &lt;STRONG&gt;Multi-Enterprise Business Application&lt;/STRONG&gt;. O MEBA trata um conjunto de patterns e cenários de integração de SOA's distribuídos, geograficamente dispersos entre várias empresas. E o que poderia ser usado para integrar esses vários cenários? Uma plataforma de serviços na nuvem. :)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_10.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=278 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_thumb_4.png" width=521 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/Umavisosobreofuturo_23C3/image_thumb_4.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Os patterns do MEBA devem consolidar cenários de integração de diferentes ambientes de SOA através de serviços e aplicações persistidos na plataforma Azure, que funcionará como um ponto central de conectividade e integração entre diferentes aplicações e linhas de negócio. Note que para essa integração, serviços como &lt;STRONG&gt;Service Bus Services&lt;/STRONG&gt;, &lt;STRONG&gt;Workflow Services&lt;/STRONG&gt; e &lt;STRONG&gt;Access Control&lt;/STRONG&gt; do .NET Services, assim como o próprio &lt;STRONG&gt;SQL Services&lt;/STRONG&gt; serão blocos construtivos desse ambiente de conectividade. Surge assim uma nova utilidade para os blocos construtivos da plataforma de serviços do Azure.&lt;/P&gt;
&lt;P&gt;Os trabalhos estão em desenvolvimento, mas já é possível imaginar o mundo de oportunidades e alternativas de integração para cenários corporativos complexos e hoje proibitivos, com a utilização de soluções baseadas na nuvem. Nas palavras de Jack Greenfield, podemos estar diante de um renascimento de soluções B2B e de integração global entre empresas de diversas indústrias e ramos de atuação. &lt;/P&gt;
&lt;P&gt;Esse foi só um primeiro post sobre o assunto. Em conversas futuras, vamos continuar discutindo esse tema, fiquem ligados.&lt;/P&gt;
&lt;P&gt;Para saber mais sobre o assunto, veja a sessão apresentada durante o último PDC 2008 pelo próprio Jack Greenfield.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Behind The Scenes: How We Built a Multi-Enterprise Supply Chain Application &lt;BR&gt;&lt;/STRONG&gt;&lt;A title=http://channel9.msdn.com/pdc2008/BB59/ href="http://channel9.msdn.com/pdc2008/BB59/" mce_href="http://channel9.msdn.com/pdc2008/BB59/"&gt;http://channel9.msdn.com/pdc2008/BB59/&lt;/A&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9152632" 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/Windows+Azure/default.aspx">Windows Azure</category></item></channel></rss>