<?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 : WCF</title><link>http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx</link><description>Tags: WCF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><item><title>Algumas palavras sobre Projetos de Missão Crítica</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/06/algumas-palavras-sobre-projetos-de-miss-o-cr-tica.aspx</link><pubDate>Fri, 06 Nov 2009 22:01:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9918852</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9918852.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9918852</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9918852</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;Essa semana acompanhei algumas discussões no forum do Grupo .NET Architects. Entre vários assuntos, um em especial chamou minha atenção: projetos de Missão Crítica. &lt;/P&gt;
&lt;P&gt;O que você entende por um &lt;STRONG&gt;Projeto de Missão Crítica&lt;/STRONG&gt;? &lt;/P&gt;
&lt;P&gt;Do &lt;A href="http://en.wikipedia.org/wiki/Mission_critical" rel=nofollow target=_blank mce_href="http://en.wikipedia.org/wiki/Mission_critical"&gt;wikipedia&lt;/A&gt; temos que o termo &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; refere-se a qualquer fator (&lt;EM&gt;equipamento, processo, procedimento, software&lt;/EM&gt;, etc.) que seja crucial para o sucesso ou completude de uma atividade ou projeto. Também pode se referir a um projeto cujo o sucesso é vital para a missão da organização ou negócio da empresa.&lt;/P&gt;
&lt;P&gt;Falando em projetos, vejamos alguns exemplos que considero de Missão Crítica:&lt;/P&gt;
&lt;P&gt;- Um sistema de controle e coleta de dados de um projeto em Física Experimental para criação de estado de plasma, rodando sobre sistema operacional Debian/Linux, com processos em C, usando pilha TCP, pode ser considerado de missão crítica para o laboratório, devido as restrições e riscos envolvidos na monitoração e controle de equipamentos;&lt;/P&gt;
&lt;P&gt;- Um núcleo de negociação para o mercado financeiro, tratando milhões de operações/dia, envolvendo mensageria em banco de dados, cache distribuído, gerenciamento de recursos em memória, etc., com requisitos rígidos de baixa latência, também é um exemplo de missão crítica;&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_2.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 0px 0px 5px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb.png" width=240 height=204 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb.png"&gt;&lt;/A&gt;- Um SDCD – Sistema Digital de Controle Distribuído – para monitoração e atuação de bicos de óleo em caldeiras para a geração de vapor num planta industrial, também é um belo exemplo. Vapor é um elemento chave em diversos processos industriais, de petroquímicas a processamento de atum em lata :) &lt;/P&gt;
&lt;P&gt;- Um monitor transacional de alto desempenho, aplicando conceitos como ACID, MUTEX, CRITICAL SESSIONS, SEMÁFOROS, árvores de falhas, etc, é outro exemplo. Uma leitura obrigatória sobre o assunto é o livro Transaction Processing, confira &lt;A href="http://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1257343655&amp;amp;sr=8-1" rel=nofollow target=_blank mce_href="http://www.amazon.com/Transaction-Processing-Concepts-Techniques-Management/dp/1558601902/ref=sr_1_1?ie=UTF8&amp;amp;s=books&amp;amp;qid=1257343655&amp;amp;sr=8-1"&gt;aqui&lt;/A&gt;! &lt;/P&gt;
&lt;P&gt;- Um sistema SaaS – Software as a Service – sobre algum provedor em nuvem, para uma solução multi-inquilino com interfaces Web, responsável pelo núcleo de faturamento da empresa, é de missão crítica, com requisitos de disponibilidade, responsividade e desempenho. Imagine um sistema SaaS para a venda de ingressos do show de Eric Clapton ou B.B. King! :)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_4.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; MARGIN: 0px 0px 0px 10px; DISPLAY: inline; BORDER-TOP: 0px; BORDER-RIGHT: 0px" title=image border=0 alt=image align=right src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb_1.png" width=244 height=184 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/AlgumaspalavrassobreProjetosdeMissoCrtic_126B3/image_thumb_1.png"&gt;&lt;/A&gt; - Um sistema de automação para controle de caixas margem de via, por exemplo, para determinação de presença de trens de metrô e vagões em trechos da via, abertura de portas, desvios de ramais, movimento, etc. O próprio controle do carrossel de composições na via também é crítico. Qual é o trem mais seguro? Um trem parado ou um trem na oficinal, fora da via? :)&lt;/P&gt;
&lt;P&gt;- Um sistema para contabilidade e bilhetagem de chamadas em telefonia celular, também é crítico;&lt;/P&gt;
&lt;P&gt;- Em muitos cenários, até mesmo um sistema de emails é um sistema de missão crítica para a empresa. Algumas corporações simplesmente param ou perdem negócios em casos de falha em suas caixas postais, por mais commodities que possam parecer. Impacto financeiro a vista!;&lt;/P&gt;
&lt;P&gt;- Um sistema de controle de equipamentos médicos, como scanners, tomógrafos, dispositivos de ultra-som, leitores dopplers em tempo real (opa!), entre outros mais sofisticados em medicina, são extremamente críticos em seus resultados. &lt;/P&gt;
&lt;P&gt;Considero todos os exemplos acima como sistemas de &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; em diferentes níveis, pois envolvem riscos para o negócio da empresa. &lt;/P&gt;
&lt;P&gt;Assim, podemos destacar três tipos de riscos envolvidos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Riscos Materiais;&lt;/LI&gt;
&lt;LI&gt;Riscos Financeiros; &lt;/LI&gt;
&lt;LI&gt;Riscos envolvendo Vidas Humanas; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Alguns sistemas de Missão Crítica podem envolver requisitos de &lt;STRONG&gt;Tempo Real (Real Time)&lt;/STRONG&gt;, isto é, janelas de atuação e tempos resposta bem definidos, que devem ser respeitados. Nesses casos, o número de processos envolvidos, o volume ou o número de chamadas disparadas não deve interferir no tempo de resposta do sistema. &lt;/P&gt;
&lt;P&gt;Qual é o tempo de resposta envolvido no tempo real (em milisegundos, por exemplo)? Dependerá do cenário que estamos tratando, seja um canal de &lt;EM&gt;feeders&lt;/EM&gt; de notícias com filtros sobre política ou mensagens para a abertura de cofres em sistemas de segurança bancário.&lt;/P&gt;
&lt;P&gt;Normalmente, condições de &lt;STRONG&gt;tempo real&lt;/STRONG&gt; estão envolvidas em cenários de missão crítica, mas não são obrigatórias.&lt;/P&gt;
&lt;P&gt;Meu ponto aqui é que não podemos considerar como &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; apenas o aspecto de desempenho e tempo de resposta envolvidos. Para algumas indústrias, outros atributos são tão importantes quanto, como o impacto financeiro, disponibilidade e riscos diversos.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Quão crítico é o sistema em que você está trabalhando hoje? Ele envolve riscos financeiros, riscos humanos ou riscos materiais? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Em resumo, qual é o impacto de uma falha em seu sistema para a execução do negócio de sua empresa? Aspectos como recuperação de falhas, tratamento de exceções, árvore de falhas, etc., tornam-se importantes em muitos casos. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Uma vez identificado o cenário de missão crítica, como conduzir o projeto? &lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Algumas perguntas são recorrentes neste momento, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Qual é o melhor sistema operacional para cada cenário? &lt;/LI&gt;
&lt;LI&gt;Qual é a melhor linguagem de programação para cada cenário? &lt;/LI&gt;
&lt;LI&gt;Qual é a melhor abordagem de patterns para cada cenário? &lt;/LI&gt;
&lt;LI&gt;Quais são as restrições de memória e disco para o SO? Poucos recursos? Desktops? Servidores? &lt;/LI&gt;
&lt;LI&gt;Quais são as necessidades de comunicação com dispositivos e periféricos diversos nesse ambiente de missão crítica? &lt;/LI&gt;
&lt;LI&gt;Quais são os drivers disponíveis para o SO escolhido? Teremos que implementar esses drivers? Existem fornecedores no mercado? &lt;/LI&gt;
&lt;LI&gt;Quais são as latências de rede e pilhas de transporte suportados? O TCP é suficiente? IPv6? Vamos precisar adotar protocolos de Tempo Real (RTP – Real Time Transport Protocol)? Vamos implementar bindings customizados para a entrega de mensagens com baixa latência? Transporte customizado?&lt;/LI&gt;
&lt;LI&gt;Qual a necessidade por tempo real, paralelismos de processos, high performance computing, cluster computing ou grid computing? &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Sem falar ainda em questões adjacentes, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Qual será o suporte necessário para a solução? &lt;/LI&gt;
&lt;LI&gt;Como será evolução da pilha de software ao longo do tempo? &lt;/LI&gt;
&lt;LI&gt;Qual é o perfil de profissionais capacitados, exigidos para o projeto? &lt;/LI&gt;
&lt;LI&gt;Quais são os guias de desenvolvimento e patterns disponíveis? &lt;/LI&gt;
&lt;LI&gt;Quais são as ferramentas para a construção de software, metodologias, documentação, etc.&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Através aqui do blog, temos acompanhado a plataforma Microsoft e seu suporte para aplicações de missão crítica em diferentes níveis. &lt;/P&gt;
&lt;P&gt;Existem diversos recursos que atendem esses cenários, seja sobre a plataforma .NET ou mesmo sobre código não gerenciado, com processos em C++ sobre Windows Server. No ambiente gerenciado, recursos como interfaces de serviços em WCF – Windows Communication Foundation, mensageria com MSMQ, paralelismo, sincronização e sistemas de integração com baixa latência são alguns exemplos. Em todos os casos, o impacto para o negócio da empresa está presente. &lt;/P&gt;
&lt;P&gt;Em breve, teremos ainda novos recursos disponíveis na plataforma Microsoft, como o &lt;STRONG&gt;&lt;A href="http://www.microsoft.com/NET/Dublin.aspx" rel=nofollow target=_blank mce_href="http://www.microsoft.com/NET/Dublin.aspx"&gt;Dublin&lt;/A&gt;&lt;/STRONG&gt; (para hospedagem de serviços e processos sobre o Windows Server), o &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/data/cc655792.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/data/cc655792.aspx"&gt;Velocity&lt;/A&gt;&lt;/STRONG&gt; (para cache distribuído e aplicações de alto desempenho), novos recursos sobre &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WCF 4&lt;/A&gt;&lt;/STRONG&gt; e &lt;STRONG&gt;&lt;A href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/en-us/netframework/aa663324.aspx"&gt;WF 4&lt;/A&gt;&lt;/STRONG&gt;, além da integração com a plataforma de alta escalabilidade e disponibilidade do &lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/windowsazure/" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/windowsazure/"&gt;Windows Azure&lt;/A&gt;&lt;/STRONG&gt;, que já está em contagem regressiva para seu lançamento, durante o PDC 2009.&lt;/P&gt;
&lt;P&gt;Finalizando, procure identificar em quais cenários de &lt;STRONG&gt;Missão Crítica&lt;/STRONG&gt; você está pessoalmente envolvido e como será a evolução destes nos próximos meses. Você vai perceber que sua TI tem um impacto direto para o sucesso de sua empresa!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir. &lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9918852" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Opini_26002300_227_3B00_o/default.aspx">Opini&amp;#227;o</category></item><item><title>Exemplo de arquitetura em camadas para o .NET 3.5 SP1</title><link>http://blogs.msdn.com/wcamb/archive/2009/11/04/exemplo-de-arquitetura-em-camadas-para-o-net-3-5-sp1.aspx</link><pubDate>Wed, 04 Nov 2009 16:28:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9917384</guid><dc:creator>wcamb</dc:creator><slash:comments>1</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9917384.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9917384</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9917384</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Semana passada, o especialista &lt;A href="http://blogs.msdn.com/rafaelgodinho/default.aspx" rel=nofollow target=_blank mce_href="http://blogs.msdn.com/rafaelgodinho/default.aspx"&gt;Rafael Godinho&lt;/A&gt; comentou com o pessoal sobre um belo exemplo de projeto em .NET 3.5 SP1, que está disponível no codeplex para estudo. &lt;/P&gt;
&lt;P&gt;O projeto é um exemplo de arquitetura em camadas usando o .NET 3.5 SP1, com interface de serviços WCF e camadas de negócios bem definidas. Com frequência recebo pedidos de exemplos de projeto e organização de arquiteturas em camadas para aplicações sobre o .NET 3.5. &lt;/P&gt;
&lt;P&gt;Assim, aqui vai uma dica interessante de estudo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; DISPLAY: inline; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" title=image border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_thumb.png" width=536 height=380 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LayeredArchitectureSamplefor.NET3.5SP1_13234/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Layered Architecture Sample for .NET&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://layersample.codeplex.com/" rel=nofollow target=_blank mce_href="http://layersample.codeplex.com/"&gt;http://layersample.codeplex.com/&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Os fontes estão disponíveis para donwload, falta um guia ou passo-a-passo para estudos, mas o projeto é um bom exemplo de organização, que vale o estudo. Confira!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9917384" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>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: WCF – Windows Communication Foundation</title><link>http://blogs.msdn.com/wcamb/archive/2009/10/09/architecture-in-a-box-wcf-windows-communication-foundation.aspx</link><pubDate>Fri, 09 Oct 2009 22:04:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9905576</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9905576.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9905576</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9905576</wfw:comment><description>&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxWCFWindowsCommunicatio_94BB/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxWCFWindowsCommunicatio_94BB/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/ArchitectureinaBoxWCFWindowsCommunicatio_94BB/image_thumb.png" width=240 height=119 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/ArchitectureinaBoxWCFWindowsCommunicatio_94BB/image_thumb.png"&gt;&lt;/A&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Mais uma sessão do Architecture in a Box, hoje falando sobre&lt;STRONG&gt; WCF – Windows Communication Foundation&lt;/STRONG&gt;. Existem muitas questões envolvidas na construção de interfaces de serviços e o WCF é a base para isso sobre a plataforma Microsoft.&lt;/P&gt;
&lt;P&gt;A sessão de hoje apresenta uma visão geral sobre os fundamentos do WCF, seus bindings e cenários comuns no mercado, preparando o caminho para uma sessão futura sobre &lt;STRONG&gt;SOA – Service Oriented Architecture. &lt;/STRONG&gt;&lt;/P&gt;
&lt;DIV style="TEXT-ALIGN: left; WIDTH: 425px" id=__ss_2153421&gt;
&lt;OBJECT style="MARGIN: 0px" width=425 height=355&gt;&lt;PARAM NAME="movie" VALUE="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab303-windowscommunicationfoundation-wcamb-091007081711-phpapp02&amp;amp;stripped_title=aab303-windows-communication-foundation-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=aab303-windowscommunicationfoundation-wcamb-091007081711-phpapp02&amp;amp;stripped_title=aab303-windows-communication-foundation-wcamb" mce_src="http://static.slidesharecdn.com/swf/ssplayer2.swf?doc=aab303-windowscommunicationfoundation-wcamb-091007081711-phpapp02&amp;amp;stripped_title=aab303-windows-communication-foundation-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;&lt;STRONG&gt;View more &lt;/STRONG&gt;&lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/" mce_href="http://www.slideshare.net/"&gt;&lt;STRONG&gt;documents&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt; from &lt;/STRONG&gt;&lt;A style="TEXT-DECORATION: underline" href="http://www.slideshare.net/wcamb" mce_href="http://www.slideshare.net/wcamb"&gt;&lt;STRONG&gt;Waldemir Cambiucci&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;.&lt;/STRONG&gt;&lt;/DIV&gt;&lt;/DIV&gt;
&lt;P&gt;Continue acompanhando o &lt;STRONG&gt;Architecture in a Box&lt;/STRONG&gt; e aproveite o material. Em breve, teremos mais novidades, aguarde!&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;…e aprovete bem o feriado!!!&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=9905576" width="1" height="1"&gt;</description><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>Leitura Recomendada: REST com WCF e Capacidades do ESB</title><link>http://blogs.msdn.com/wcamb/archive/2009/06/18/leitura-recomendada-rest-com-wcf-e-capacidades-do-esb.aspx</link><pubDate>Fri, 19 Jun 2009 00:51:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9777624</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9777624.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9777624</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9777624</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Novo artigo no ar: o Rafael Godinho, especialista em desenvolvimento aqui da Microsoft acabou de publicar um artigo muito interessante sobre serviços REST com WCF, confiram!&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Criando serviços REST com WCF&lt;/STRONG&gt; &lt;BR&gt;por Rafael Godinho &lt;BR&gt;Junho 2009 &lt;BR&gt;Ref.: &lt;A title=http://msdn.microsoft.com/pt-br/library/dd941696.aspx href="http://msdn.microsoft.com/pt-br/library/dd941696.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/library/dd941696.aspx"&gt;http://msdn.microsoft.com/pt-br/library/dd941696.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Já havia recebido aqui algumas perguntas sobre o tema, por isso a indicação. Aproveitem também o blog do&amp;nbsp;Godinho, que tem&amp;nbsp;falado bastante&amp;nbsp;sobre WCF, &lt;A href="http://blogs.msdn.com/rafaelgodinho/" target=_blank mce_href="http://blogs.msdn.com/rafaelgodinho/"&gt;aqui&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;Outro artigo do time que merece destaque é sobre &lt;EM&gt;ESB – Enterprise Service Bus&lt;/EM&gt;, do arquiteto de infra-estrutura Markus Christen.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Conhecendo melhor as Capacidades do Enterprise Service Bus&lt;/STRONG&gt; &lt;BR&gt;por Markus Christen &lt;BR&gt;Junho 2009 &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/library/dd920288.aspx" rel=nofollow target=_blank mce_href="http://msdn.microsoft.com/pt-br/library/dd920288.aspx"&gt;http://msdn.microsoft.com/pt-br/library/dd920288.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Confira também o blog do Markus, que tem falado bastante sobre ESB e os vários patterns de infra-estrutura para SOI/SOA, &lt;A href="http://blogs.technet.com/markuschristen/" rel=nofollow target=_blank mce_href="http://blogs.technet.com/markuschristen/"&gt;aqui&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=9777624" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/ESB/default.aspx">ESB</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>Um universo de material para estudo...</title><link>http://blogs.msdn.com/wcamb/archive/2009/06/04/no-princ-pio-era-s-o-msdn.aspx</link><pubDate>Thu, 04 Jun 2009 19:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9699975</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9699975.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9699975</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9699975</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo? &lt;/P&gt;
&lt;P&gt;No princípio era só o &lt;STRONG&gt;MSDN&lt;/STRONG&gt;&amp;nbsp;e todos os &lt;STRONG&gt;DevCenters&lt;/STRONG&gt; de tecnologias estavam disponíveis a partir dele: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_2.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=171 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;STRONG&gt;MSDN Brasil&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A title=http://msdn.microsoft.com/pt-br/default.aspx href="http://msdn.microsoft.com/pt-br/default.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/default.aspx"&gt;http://msdn.microsoft.com/pt-br/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Com o passar do tempo, mais e mais tecnologias foram sendo lançadas e um Universo de material ficou disponível (em português):&lt;/P&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;&lt;STRONG&gt;Microsoft na Nuvem&lt;/STRONG&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/azure/default.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/azure/default.aspx"&gt;Plataforma Azure&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Ferramentas e Linguagens &lt;BR&gt;&lt;/STRONG&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/vstudio/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/vstudio/default.aspx"&gt;Visual Studio&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/express/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/express/default.aspx"&gt;Visual Studio Express&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/teamsystem/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/teamsystem/default.aspx"&gt;Visual Studio Team System&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/vbasic/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/vbasic/default.aspx"&gt;Visual Basic&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/vcsharp/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/vcsharp/default.aspx"&gt;Visual C#&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/visualc/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/visualc/default.aspx"&gt;Visual C++&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Desenvolvimento Web &lt;BR&gt;&lt;/STRONG&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/asp.net/default.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/asp.net/default.aspx"&gt;ASP.NET&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/silverlight/default.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/silverlight/default.aspx"&gt;Silverlight&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/ie/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/ie/default.aspx"&gt;Internet Explorer&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Desenvolvimento .NET&lt;/STRONG&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/netframework/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/netframework/default.aspx"&gt;.NET Framework&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/netframework/aa497273.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/netframework/aa497273.aspx"&gt;.NET Compact Framework&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Desenvolvimento Windows&lt;/STRONG&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/windows/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/windows/default.aspx"&gt;Windows Cliente&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/windowsmobile/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/windowsmobile/default.aspx"&gt;Windows Mobile&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://www.microsoft.com/brasil/msdn/WindowsEmbedded/default.mspx" target=_blank mce_href="http://www.microsoft.com/brasil/msdn/WindowsEmbedded/default.mspx"&gt;Windows Embedded&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Melhores Práticas&lt;/STRONG&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/architecture/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/architecture/default.aspx"&gt;Arquitetura&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/practices/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/practices/default.aspx"&gt;Patterns &amp;amp; Practices&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Desenvolvimento Enterprise &lt;BR&gt;&lt;/STRONG&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/sqlserver/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/sqlserver/default.aspx"&gt;SQL Server&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/security/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/security/default.aspx"&gt;Segurança&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/vsts2008/aa718795.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/vsts2008/aa718795.aspx"&gt;Microsoft Solutions Framework&lt;/A&gt; &lt;BR&gt;&lt;STRONG&gt;Desenvolvimento Office &lt;BR&gt;&lt;/STRONG&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/office/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/office/default.aspx"&gt;Office&lt;/A&gt; &lt;BR&gt;- &lt;A href="http://msdn.microsoft.com/pt-br/sharepoint/default.aspx" target=_blank mce_href="http://msdn.microsoft.com/pt-br/sharepoint/default.aspx"&gt;SharePoint&lt;/A&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Ao longo do tempo, o &lt;STRONG&gt;.NET Framework&lt;/STRONG&gt; também evoluiu…&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_10.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=320 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_4.png" width=483 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;E diversos arquitetos se perguntaram onde encontrar mais informações sobre toda essa evolução. A resposta foi dada abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_4.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=180 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_1.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_1.png"&gt;&lt;/A&gt; &lt;STRONG&gt;.NET Framework&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/netframework/default.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/netframework/default.aspx"&gt;http://msdn.microsoft.com/pt-br/netframework/default.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Alguns tiveram um interesse maior sobre serviços e interfaces e como o &lt;STRONG&gt;WCF - Windows Communication Foundation &lt;/STRONG&gt;poderia ajudá-los… &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_6.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=70 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_2.png" width=59 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_2.png"&gt;&lt;/A&gt;&lt;STRONG&gt; WCF – Windows Communication Foundation – Media Center&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.aspx" target=_blank rel=nofollow mce_href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.aspx"&gt;http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Outros se perguntaram sobre processos, workflows e máquinas de estado, lugares comuns para o &lt;STRONG&gt;WF - Windows Workflow Foundation&lt;/STRONG&gt;.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_8.png"&gt;&lt;IMG title=image style="BORDER-TOP-WIDTH: 0px; DISPLAY: inline; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN-LEFT: 0px; MARGIN-RIGHT: 0px; BORDER-RIGHT-WIDTH: 0px" height=67 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_3.png" width=114 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_3.png"&gt;&lt;/A&gt;&lt;STRONG&gt;WF – Windows Workflow Foundation&lt;/STRONG&gt; &lt;BR&gt;&lt;A href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windows%20Workflow%20Foundation.aspx" target=_blank rel=nofollow mce_href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windows%20Workflow%20Foundation.aspx"&gt;http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windows%20Workflow%20Foundation.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Tudo em português!!! Artigos, webcasts, treinamentos, centros de estudo, um mundo de leitura gratuíto e disponível para todos!!!&lt;/P&gt;
&lt;P&gt;E para as interfaces desktop ou web? O &lt;STRONG&gt;WPF – Windows Presentation Foundation&lt;/STRONG&gt; também ganhou seu lugar:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_12.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=101 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_5.png" width=79 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_5.png"&gt;&lt;/A&gt;&lt;STRONG&gt; WPF – Windows Presentation Foundation &lt;BR&gt;&lt;/STRONG&gt;&lt;A href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WPF.aspx" target=_blank rel=nofollow mce_href="http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WPF.aspx"&gt;http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WPF.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E para os mais exigentes, que buscam soluções sofisticadas, o &lt;STRONG&gt;WindowsClient.NET&lt;/STRONG&gt; também surgiu:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_14.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_14.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=58 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_6.png" width=432 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_6.png"&gt;&lt;/A&gt; &lt;BR&gt;Ref.: &lt;A href="http://windowsclient.net/default.aspx" target=_blank rel=nofollow mce_href="http://windowsclient.net/default.aspx"&gt;http://windowsclient.net/default.aspx&lt;/A&gt; (esse está em inglês!)&lt;/P&gt;
&lt;P&gt;Finalmente, arquitetos e equipes de desenvolvimento se perguntaram por onde começar. Como criar seu roadmap de capacitação e certificação e seguir os primeiros passos pelos vários caminhos da plataforma Microsoft? Eis que uma nova porta se abriu:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_16.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_16.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=180 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_7.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_7.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;STRONG&gt;Centro de Capacitação e Recursos para Certificação do MSDN &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/bb188199.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/bb188199.aspx"&gt;http://msdn.microsoft.com/pt-br/bb188199.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;E o universo de estudos em constante expansão gerou mais uma fronteira chamada rampup…&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_18.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_18.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=184 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_8.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_8.png"&gt;&lt;/A&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_20.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_20.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=78 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_9.png" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/5df2938ed034_1063B/image_thumb_9.png"&gt;&lt;/A&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/rampup/default(en-us).aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/rampup/default(en-us).aspx"&gt;http://msdn.microsoft.com/pt-br/rampup/default(en-us).aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Quem tem ouvidos para ouvir, ouça!!! ;)&lt;/P&gt;
&lt;P&gt;Feliz o &lt;STRONG&gt;arquiteto&lt;/STRONG&gt; e o &lt;STRONG&gt;desenvolvedor&lt;/STRONG&gt; que aproveitar cada material de estudo acima disponível, pois eis que o tempo chegou para a construção de soluções mais sofisticadas, compatíveis com o mundo de serviços, de interfaces RIA, de soluções compostas e aplicações na nuvem.&lt;/P&gt;
&lt;P&gt;Um abraço grande a todos e bom estudo!!!&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=9699975" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Arquitetura+de+Solu_26002300_231_3B0026002300_245_3B00_es/default.aspx">Arquitetura de Solu&amp;#231;&amp;#245;es</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WF/default.aspx">WF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</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>Webcast sobre WCF + WF : integrando serviços e workflows</title><link>http://blogs.msdn.com/wcamb/archive/2009/04/17/webcast-sobre-wcf-wf-integrando-servi-os-e-workflows.aspx</link><pubDate>Fri, 17 Apr 2009 19:56:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9554427</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9554427.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9554427</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9554427</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Já está no ar um webcast sobre &lt;STRONG&gt;WCF+WF&lt;/STRONG&gt;, que fiz recentemente para o pessoal do &lt;A href="http://msdn.microsoft.com/pt-br/netframework/default.aspx" target=_blank rel=nofollow mce_href="http://msdn.microsoft.com/pt-br/netframework/default.aspx"&gt;Dev Center de .NET Framework&lt;/A&gt;, no MSDN.&lt;/P&gt;
&lt;P&gt;Esse webcast fala sobre alguns templates de WCF e WF, destacando também os mecanismos de integração entre serviços e workflows, vale conferir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebcastsobreWCFWFintegrandoserviosework_C392/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebcastsobreWCFWFintegrandoserviosework_C392/image_2.png"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=184 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebcastsobreWCFWFintegrandoserviosework_C392/image_thumb.png" width=244 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebcastsobreWCFWFintegrandoserviosework_C392/image_thumb.png"&gt;&lt;/A&gt; &lt;A href="http://download.microsoft.com/download/B/6/7/B6790106-5A1F-452F-952C-616D604C67E2/WEBCAST_WCFWF_20090329.zip" target=_blank rel=nofollow mce_href="http://download.microsoft.com/download/B/6/7/B6790106-5A1F-452F-952C-616D604C67E2/WEBCAST_WCFWF_20090329.zip"&gt;&lt;IMG title=image style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; DISPLAY: inline; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=93 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebcastsobreWCFWFintegrandoserviosework_C392/image_5.png" width=240 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WebcastsobreWCFWFintegrandoserviosework_C392/image_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Ref.: &lt;A title=http://download.microsoft.com/download/B/6/7/B6790106-5A1F-452F-952C-616D604C67E2/WEBCAST_WCFWF_20090329.zip href="http://download.microsoft.com/download/B/6/7/B6790106-5A1F-452F-952C-616D604C67E2/WEBCAST_WCFWF_20090329.zip" target=_blank rel=nofollow mce_href="http://download.microsoft.com/download/B/6/7/B6790106-5A1F-452F-952C-616D604C67E2/WEBCAST_WCFWF_20090329.zip"&gt;http://download.microsoft.com/download/B/6/7/B6790106-5A1F-452F-952C-616D604C67E2/WEBCAST_WCFWF_20090329.zip&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=9554427" width="1" height="1"&gt;</description><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>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>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>patterns &amp; practices : Improving Web Services Security</title><link>http://blogs.msdn.com/wcamb/archive/2008/11/05/patterns-practices-improving-web-services-security.aspx</link><pubDate>Wed, 05 Nov 2008 22:32:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9045026</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9045026.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9045026</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9045026</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/patternspracticesImprovingWebServicesSec_F015/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 6px 6px 0px; BORDER-RIGHT-WIDTH: 0px" height=217 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_thumb.png" width=167 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_thumb.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;A nova versão do &lt;STRONG&gt;Improving&lt;/STRONG&gt; &lt;STRONG&gt;Web Services Secutiry Guidance&lt;/STRONG&gt; já está disponível e merece destaque. &lt;/P&gt;
&lt;P&gt;Falamos desse projeto do patterns &amp;amp; practices alguns meses atrás, quando conversávamos sobre questões de segurança em cenários de serviços com WCF.&lt;/P&gt;
&lt;P&gt;De fato, esse é o foco do documento, que apresenta uma série de questões para cada cenário de aplicação, tratando as várias fronteiras de segurança e mecanismos para garantia de autenticação, autorização, criptografia, certificados, credenciais e roles de usuários.&lt;/P&gt;
&lt;P&gt;A figura abaixo apresenta uma dessas discussões, onde vemos um cenário completo de utilização de Web Services com WCF e suas várias fronteiras de segurança:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=298 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_thumb_1.png" width=526 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/patternspracticesImprovingWebServicesSec_F015/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Recomendo mais esse documento do &lt;STRONG&gt;patterns &amp;amp; practices&lt;/STRONG&gt; como leitura obrigatória pelo time de arquitetura. &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices : Improving Web Services Secutiry&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/WCFSecurityGuide/Release/ProjectReleases.aspx?ReleaseId=15892" 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;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=9045026" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/Leitura+Recomendada/default.aspx">Leitura Recomendada</category></item><item><title>Leitura recomendada: WCF 3.5 e Oslo Modeling Language.</title><link>http://blogs.msdn.com/wcamb/archive/2008/11/03/leitura-recomendada-wcf-3-5-e-oslo-modeling-language.aspx</link><pubDate>Mon, 03 Nov 2008 13:13:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:9032426</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/9032426.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=9032426</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=9032426</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Aproveitando o ritmo de PDC 2008, alguns novos livros são leituras recomendadas para os próximos meses. Vejamos:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 6px 6px 0px; BORDER-RIGHT-WIDTH: 0px" height=161 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_thumb.png" width=126 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;O primeiro que recomendo é o &lt;STRONG&gt;Windows Communication Foundation 3.5 Unleashed &lt;/STRONG&gt;&lt;EM&gt;(SAMS)&lt;/EM&gt;. Encontrei esse livro durante o PDC e seu lançamento foi agora em outubro. &lt;/P&gt;
&lt;P&gt;O livro apresenta os novos bindings do WCF 3.5, assim como bons exemplos para a construção de serviços integrando WCF e WF. Outro ponto forte é a discussão sobre segurança, além das customizações em Behaviors. Finalmente, a parte sobre REST está bem legal. É o livro que estou lendo hoje e parece muito bom! &lt;BR&gt;(ISBN-10: 0672330245)&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 0px 5px 6px; BORDER-RIGHT-WIDTH: 0px" height=155 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_thumb_1.png" width=122 align=right border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturarecomendadaWCFOsloeAzure_C112/image_thumb_1.png"&gt;&lt;/A&gt; Outra dica é o &lt;STRONG&gt;The Oslo Modeling Language: Draft Specification - October 2008 &lt;/STRONG&gt;(&lt;EM&gt;Addison-Wesley Professional&lt;/EM&gt;). Também uma novidades do PDC 2008, o livro apresenta a especificação da linguagem &lt;STRONG&gt;"M"&lt;/STRONG&gt; sobre a plataforma "&lt;STRONG&gt;Oslo"&lt;/STRONG&gt;, que será a plataforma de modelagem da Microsoft. Ainda estou nas primeiras páginas :)&lt;/P&gt;
&lt;P&gt;O objetivo do "Oslo" será simplificar o processo de desenvolvimento, implantação e monitoração de software. Para isso, as funcionalidades de um software serão expressas por dados estruturados, os modelos, que serão lidos em runtime pela plataforma e executados pelos serviços associados. A plataforma "Oslo" também deve fornecer uma ferramenta gráfica, uma DSL textual na verdade, para permitir a construção dos modelos que serão manipulados na plataforma. Assim, "M" é uma linguagem para a definição de modelos e linguagens. Para saber mais sobre a iniciativa &lt;STRONG&gt;MDD - Model Driven Development&lt;/STRONG&gt; na Microsoft, o livro é um bom início. (ISBN-10: 0321606353).&amp;nbsp;Veja também o link: &lt;A href="http://www.modelsremixed.com/"&gt;http://www.modelsremixed.com/&lt;/A&gt;&amp;nbsp;para mais algumas informações sobre "Oslo"&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=9032426" width="1" height="1"&gt;</description><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><category domain="http://blogs.msdn.com/wcamb/archive/tags/PDC08/default.aspx">PDC08</category></item><item><title>Cenários de implementação de serviços com WCF : Fontes no Codeplex.</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/21/cen-rios-de-implementa-o-de-servi-os-com-wcf-fontes-no-codeplex.aspx</link><pubDate>Mon, 21 Jul 2008 14:35:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8761261</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8761261.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8761261</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8761261</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Depois de uma série intensa sobre os cenários para serviços WCF, temos uma novidade para vocês : publicamos no &lt;STRONG&gt;Codeplex&lt;/STRONG&gt; um projeto para soluções exemplos, implementando as diversas configurações e exemplos aqui estudados. O link é esse abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Codeplex - Cenários de Implementação de Serviços com WCF&lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A class="" href="http://www.codeplex.com/cenarioswcf" target=_blank mce_href="http://www.codeplex.com/cenarioswcf"&gt;http://www.codeplex.com/cenarioswcf&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;O objetivo será colocar uma solução em C# para cada cenário apresentado nos vários posts da série. Em breve, as primeiras soluções e projetos para Visual Studio 2008 serão publicados. Para lembrar, os cenários foram:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=505 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=144&gt;&lt;STRONG&gt;Cenários comuns de serviços WCF&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=358&gt;&lt;STRONG&gt;Descrição do cenário&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=144&gt;&lt;FONT color=#000080&gt;Web Services Corporativos&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=358&gt;&lt;FONT color=#000080&gt;Cenários com suporte para web services simples, baseados em protocolo SOAP ou implementações avançadas sobre os padrões WS-* (WS-I)&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=144&gt;&lt;FONT color=#000080&gt;Serviços para Web 2.0&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=358&gt;&lt;FONT color=#000080&gt;Cenários contemplando o modelo de programação web, que suporta protocolos POX, REST, JSON, RSS e ATOM.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=144&gt;&lt;FONT color=#000080&gt;Aplicações Intranet&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=358&gt;&lt;FONT color=#000080&gt;Aplicações cliente/servidor clássicas, distribuição de serviços através de firewall e aplicações web.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=144&gt;&lt;FONT color=#000080&gt;Serviços com suporte a mensageria&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=358&gt;&lt;FONT color=#000080&gt;Implementações com chamadas assíncronas, chamadas desconectadas e suporte a publicação e subscrição.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=144&gt;&lt;FONT color=#000080&gt;Serviços para workflow&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=358&gt;&lt;FONT color=#000080&gt;Cenários com coordenação de chamadas através de workflows, exposição de workflows como serviços e serviços duráveis.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Aproveite para dar suas sugestões e comentários. Essa é a idéia de um projeto no CodePlex. &lt;/P&gt;
&lt;P&gt;Acompanhe também o blog do &lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/rogerioc/" target=_blank mce_href="http://blogs.msdn.com/rogerioc/"&gt;Rogério Cordeiro&lt;/A&gt;&lt;/STRONG&gt;, que nos apoiou nessa iniciativa e também estará ajudando na evolução do código publicado, com o feedback de vocês.&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;
&lt;P&gt;&lt;IMG src="http://www.wboton.com/modules/technorati/technobubble.gif" mce_src="http://www.wboton.com/modules/technorati/technobubble.gif"&gt;&lt;STRONG&gt;Technorati Tags:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="http://technorati.com/tag/soa" mce_href="http://technorati.com/tag/soa"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;SOA&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;,&lt;/FONT&gt;&lt;/STRONG&gt;&lt;A href="http://technorati.com/tag/wcf" mce_href="http://technorati.com/tag/wcf"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;WCF&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;,&lt;/FONT&gt;&lt;/STRONG&gt;&lt;A href="http://technorati.com/tag/services" mce_href="http://technorati.com/tag/services"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;Services&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;,&lt;/FONT&gt;&lt;/STRONG&gt;&lt;A href="http://technorati.com/tag/codeplex" target=_blank mce_href="http://technorati.com/tag/codeplex"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;Codeplex&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8761261" width="1" height="1"&gt;</description><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>patterns &amp; practices: Improving Web Services Security (Beta Release).</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/18/patterns-practices-improving-web-services-security-beta-release.aspx</link><pubDate>Fri, 18 Jul 2008 20:39:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8750412</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8750412.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8750412</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8750412</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Recentemente, foram disponibilizados novos livros do pessoal do &lt;EM&gt;patterns &amp;amp; practices&lt;/EM&gt;. Gostaria de destacar um em especial...&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturasRecomendadasProjetosdoCodeplex_11877/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturasRecomendadasProjetosdoCodeplex_11877/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; MARGIN: 0px 10px 0px 0px; BORDER-RIGHT-WIDTH: 0px" height=240 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturasRecomendadasProjetosdoCodeplex_11877/image_thumb.png" width=185 align=left border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/LeiturasRecomendadasProjetosdoCodeplex_11877/image_thumb.png"&gt;&lt;/A&gt;patterns &amp;amp; practices Improving Web Services Security (Beta Release) &lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/WCFSecurityGuide" mce_href="http://www.codeplex.com/WCFSecurityGuide"&gt;http://www.codeplex.com/WCFSecurityGuide&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Esse material é parte do projeto &lt;EM&gt;WCF Security Guidance Project&lt;/EM&gt; do Codeplex, que alguns de vocês já conhecem.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;patterns &amp;amp; practices: WCF Security Guidance Project &lt;/STRONG&gt;&lt;BR&gt;Ref.: &lt;A href="http://www.codeplex.com/WCFSecurity" mce_href="http://www.codeplex.com/WCFSecurity"&gt;http://www.codeplex.com/WCFSecurity&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Muitas empresas estão em plena discussão sobre migração de Web Services para o novo modelo de programação WCF e questões como segurança e configuração de serviços têm sido frequentes. &lt;/P&gt;
&lt;P mce_keep="true"&gt;Entre os assuntos tratados pelo GUIA acima temos:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Fundamentos sobre segurança em WCF; &lt;/LI&gt;
&lt;LI&gt;Autenticação, Autorização e Identidades; &lt;/LI&gt;
&lt;LI&gt;Impersonation e Delegation com WCF; &lt;/LI&gt;
&lt;LI&gt;Segurança de mensagens e segurança de transportes; &lt;/LI&gt;
&lt;LI&gt;Fundamentos sobre bindings com WCF; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Ainda é uma versão beta, mas sem dúvida já é uma excelente leitura!!! &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;P&gt;&lt;IMG src="http://www.wboton.com/modules/technorati/technobubble.gif" mce_src="http://www.wboton.com/modules/technorati/technobubble.gif"&gt;&lt;STRONG&gt;Technorati Tags:&lt;/STRONG&gt;&amp;nbsp;&lt;A href="http://technorati.com/tag/wcf" mce_href="http://technorati.com/tag/wcf"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;WCF&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;,&lt;/FONT&gt;&lt;/STRONG&gt;&lt;A href="http://technorati.com/tag/services" mce_href="http://technorati.com/tag/services"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;Services&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;,&lt;/FONT&gt;&lt;/STRONG&gt;&lt;A href="http://technorati.com/tag/codeplex" target=_blank mce_href="http://technorati.com/tag/codeplex"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;Codeplex&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;FONT color=#ff8000&gt;,&lt;/FONT&gt;&lt;A href="http://technorati.com/tag/webservices" target=_blank mce_href="http://technorati.com/tag/webservices"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;Web Services&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8750412" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/WCF/default.aspx">WCF</category><category domain="http://blogs.msdn.com/wcamb/archive/tags/patterns+_2600_amp_3B00_+practices/default.aspx">patterns &amp;amp; practices</category></item></channel></rss>