<?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 : Cen&amp;#225;rios de servi&amp;#231;os WCF</title><link>http://blogs.msdn.com/wcamb/archive/tags/Cen_26002300_225_3B00_rios+de+servi_26002300_231_3B00_os+WCF/default.aspx</link><description>Tags: Cen&amp;#225;rios de servi&amp;#231;os WCF</description><dc:language>en-US</dc:language><generator>CommunityServer 2.1 SP1 (Build: 61025.2)</generator><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>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>Cenários de implementação de serviços com WCF - Parte 6 : Serviços para Workflow</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/17/cen-rios-de-implementa-o-de-servi-os-com-wcf-parte-6-servi-os-para-workflow.aspx</link><pubDate>Thu, 17 Jul 2008 23:57:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8744942</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8744942.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8744942</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8744942</wfw:comment><description>&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;Serviços para Workflow&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Mais um cenário, importante na discussão sobre orquestração, coordenação de processos e fluxos de trabalho: serviços para workflows.&lt;/P&gt;
&lt;P&gt;Em arquiteturas orientadas a serviços, é comum o uso de serviços de negócios que encapsulam um série de funcionalidades, disponibilizando esses recursos através de um firewall (em intranets) ou diretamente para clientes na internet. Como benefícios dessa publicação temos um melhor reuso, manutenção, isolação, tolerância a falhas, distribuição e escalabilidade.&lt;/P&gt;
&lt;P&gt;Interfaces WCF tornam esse encapsulamento mais fácil, através da definição clara de contratos de mensagens e questões sobre o transporte e segurança. Porém, não temos uma definição sobre a ordem das chamadas ou execução desses serviços dentro da aplicação. Com o .NET 3.0 foi introduzido também o &lt;STRONG&gt;WF - Windows Workflow Foundation&lt;/STRONG&gt;, que oferece mecanismos para a construção de workflows e pode ser hosteado em aplicações Windows. Com o uso de workflows ou fluxos de trabalhos, é possível coordenadar as atividades de negócio e requisições de serviços, sendo o método ideal para organizar chamadas para serviços WCF em processos de longa duração.&lt;/P&gt;
&lt;P&gt;O .NET 3.5 trouxe novas funcionalidades e entre elas, uma maior facilidade para o consumo de serviços WCF a partir de fluxos de trabalho em WF. Isso tornou a integração &lt;STRONG&gt;WCF + WF&lt;/STRONG&gt; muito mais direta e de fácial programação. Também com o .NET 3.5 temos o recurso de &lt;STRONG&gt;serviços duráveis&lt;/STRONG&gt;, onde o estado de uma instância de serviço é automaticamente salvo entre chamadas. Isso torna possível a re-hidratação de uma mesma instância de serviço em diferentes máquinas.&lt;/P&gt;
&lt;P&gt;A figura a seguir ilustra uma integração WF / WCF, onde um fluxo de trabalho consome uma funcionalidade exportado por um serviços WCF:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPart_10068/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPart_10068/image_2.png"&gt;&lt;IMG style="BORDER-RIGHT: 0px; BORDER-TOP: 0px; BORDER-LEFT: 0px; BORDER-BOTTOM: 0px" height=292 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPart_10068/image_thumb.png" width=489 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPart_10068/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Podemos publicar um workflow em qualquer tipo de aplicações Windows. Alguns exemplos de implementação são: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Uma aplicações cliente Windows que oferece um workflow que coordena chamadas para serviços WCF remotos, publicados no IIS, WAS ou um Windows NT Service; &lt;BR&gt;&lt;/EM&gt;&lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Uma aplicação ASP.NET que inicia um workflow para coordenar chamadas para serviços WCF remotos publicados em Windows NT Services atrás do firewall de um intranet.&lt;/EM&gt;&lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Um video interessante sobre exportação de WF como services WCF é encontrado aqui:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Building WCF Services Using Workflow Foundation &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A href="http://www.microsoft.com/uk/msdn/nuggets/nugget/285/wf-v35-building-wcf-services-using-workflow-foundation.aspx" mce_href="http://www.microsoft.com/uk/msdn/nuggets/nugget/285/wf-v35-building-wcf-services-using-workflow-foundation.aspx"&gt;http://www.microsoft.com/uk/msdn/nuggets/nugget/285/wf-v35-building-wcf-services-using-workflow-foundation.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Para finalizar, outro cenário típico para a aplicação de workflows é a aprovação e geração de documentos. Um artigo que ilustra bem esse exemplo é dado a seguir:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Crie fluxos de trabalho para obter dados e criar documentos&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/pt-br/magazine/cc534981.aspx" mce_href="http://msdn.microsoft.com/pt-br/magazine/cc534981.aspx"&gt;http://msdn.microsoft.com/pt-br/magazine/cc534981.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Nesses últimos dias, passamos pelas principais características de cada cenário, comuns em ambientes corporativos e soluções de negócio.&lt;/P&gt;
&lt;P&gt;Aproveito para agradecer ao amigo &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;, pelas discussões e questões levantadas até aqui. Em breve, vamos ter algumas surpresas como resultado dessas discussões.&lt;/P&gt;
&lt;P&gt;Por enquanto é só! Até o próximo post :)&lt;/P&gt;
&lt;P&gt;Waldemir.&lt;/P&gt;
&lt;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;A href="http://technorati.com/tag/workflow" target=_blank mce_href="http://technorati.com/tag/workflow"&gt;&lt;STRONG&gt;&lt;FONT color=#ff8000&gt;Workflow&lt;/FONT&gt;&lt;/STRONG&gt;&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8744942" 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/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>Cenários de implementação de serviços com WCF - Parte 5 : Serviços com Filas de Mensagens (MSMQ)</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/14/cen-rios-de-implementa-o-de-servi-os-com-wcf-parte-5-servi-os-com-filas-de-mensagens-msmq.aspx</link><pubDate>Tue, 15 Jul 2008 03:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8732377</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8732377.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8732377</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8732377</wfw:comment><description>&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;Serviços com Filas de Mensagens (MSMQ)&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Um novo cenário para nosso estudo destaca os serviços com suporte a filas de mensagens. Comunicação assíncrona, que exige garantia de entrega de mensagens, recuperação ou simplesmente o tracking de mensagens são exemplos de recursos para esse tipo de serviço.&lt;/P&gt;
&lt;P&gt;Os &lt;EM&gt;patterns&lt;/EM&gt; de mensagens desconectadas garantem o baixo acoplamento para soluções orientadas a serviços. Como principal benefício, torna-se possível a construção de processos de longa duração, sem a necessidade de espera por respostas &lt;EM&gt;on-line&lt;/EM&gt;, além da garantia de entrega de mensagens, para momentos onde serviços, equipamentos e redes estão &lt;EM&gt;off-line &lt;/EM&gt;ou desconectados.&lt;/P&gt;
&lt;P&gt;O &lt;STRONG&gt;Microsoft Message Queuing (MSMQ)&lt;/STRONG&gt; é uma plataforma de mensageria que suporta este tipo de cenário, onde WCF amplia o conceito de componentes enfileirados (&lt;EM&gt;queued components&lt;/EM&gt;) suportado pelo &lt;EM&gt;Enterprise Services&lt;/EM&gt; do .NET 2.0. Desse modo, clientes WCF podem enviar mensagens para uma fila e serviços podem receber essas mensagens a partir da fila, usando um modelo de programação familiar aos outros recursos do WCF. &lt;/P&gt;
&lt;P&gt;A principal característica desse cenário é que clientes e serviços não interagem diretamente, mas sim, através de uma fila de mensagens. Outros benefícios são: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;&lt;EM&gt;Garantia de entrega de mensagens de forma assíncrona;&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Mensageria desconectada;&lt;/EM&gt; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Cenários de publicação e subscrição;&lt;/EM&gt; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A tabela a seguir apresenta as principais características para a configuração de serviços com suporte a mensageria:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=513 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;MSMQ (nativo, SRMP ou SRMPS)&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP + Binário &lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificados X.509 usados para autenticar o originador da mensagem (&lt;EM&gt;sender&lt;/EM&gt;).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificados X.509 usados para autorizar o originador da mensagem (&lt;EM&gt;sender&lt;/EM&gt;).&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificados X.509 usados para proteger as mensagens colocadas na fila.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação para a fila&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificados X.509 usados para autenticar o chamador da fila.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização para a fila&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificados X.509 usados para autorizar o chamador da fila.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança na fila&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;O certificado X.509 do chamador é usado para assinar a mensagem enviada para a fila. Criptografia é normalmente tratada no nível da mensagem.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Para a configuração de serviços e filas, temos 2 plataformas possíveis com WCF:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;MSMQ 3.0 on Windows Server 2003; &lt;/LI&gt;
&lt;LI&gt;MSMQ 4.0 on Windows Server 2008; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Para essas plataformas, o WCF oferece o binding de transporte &lt;STRONG&gt;NetMsmqBinding&lt;/STRONG&gt;, que garante os detalhes de configuração para o envio de mensagens de forma assíncrona no MSMQ.&lt;/P&gt;
&lt;P&gt;O &lt;STRONG&gt;NetMSMQBinding&lt;/STRONG&gt; oferece um transporte baseado em encoding binário, permitindo um bom desempenho para o tratamento de mensagens. Oferece também segurança no nível de transporte e de mensagens, além do suporte a transações. Esse &lt;EM&gt;binding&lt;/EM&gt; torna-se uma primeira escolha para cenários assíncronos de alta vazão e que precisem ser confiáveis, duráveis e com suporte ao modelo de mensageria unidirecional (&lt;EM&gt;queued One-Way Messaging)&lt;/EM&gt;. &lt;/P&gt;
&lt;P&gt;Para cenários onde o serviço deve interagir com soluções MSMQ existentes, o &lt;EM&gt;binding&lt;/EM&gt; indicado será o &lt;EM&gt;MsmqIntegrationBinding&lt;/EM&gt;. O &lt;STRONG&gt;MSMQIntegrationBinding&lt;/STRONG&gt; oferece um transporte para integração MSMQ com MSMQ encoding. Fornece a segurança do ambiente MSMQ, assim como o suporte a transação. É uma primeira escolha como &lt;EM&gt;binding&lt;/EM&gt; para cenários de integração com aplicações MSMQ já existentes, além de ser de simples integração com o &lt;EM&gt;Host Integration Server&lt;/EM&gt; e o &lt;EM&gt;Biztalk Server&lt;/EM&gt;, quando existentes na solução.&lt;/P&gt;
&lt;P&gt;A figura a seguir apresenta um exemplo de integração de mensagens com serviços WCF:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_10D97/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_10D97/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=223 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_10D97/image_thumb.png" width=500 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_10D97/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Um exemplo de aplicação de mensageria para o disparo de serviços é dado na demonstração &lt;STRONG&gt;Demux&lt;/STRONG&gt;, disponível para download no link a seguir:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Custom Demux&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/ms752265.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms752265.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms752265.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;O exemplo acima apresenta como é possível disparar serviços através do endereçamento do &lt;EM&gt;header&lt;/EM&gt; de mensagens enviadas para a fila MSMQ. Esse cenário é muito interessante para o tratamento de mensagens, criando um roteador de serviços muito comum em aplicações do mercado financeiro, por exemplo.&lt;/P&gt;
&lt;P&gt;Outro artigo interessante para esse tipo de cenário é dado a seguir:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Queuing in WCF&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/ms789048.aspx" mce_href="http://msdn.microsoft.com/en-us/library/ms789048.aspx"&gt;http://msdn.microsoft.com/en-us/library/ms789048.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;No próximo post, vamos falar de nosso último cenário, serviços de workflow... não percam!&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;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8732377" 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>Cenários de implementação de serviços com WCF - Parte 4 : Serviços para Intranet</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/11/cen-rios-de-implementa-o-de-servi-os-com-wcf-parte-4-servi-os-de-intranet.aspx</link><pubDate>Fri, 11 Jul 2008 06:03:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8719799</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8719799.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8719799</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8719799</wfw:comment><description>&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;Serviços para Intranet&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Vamos falar hoje sobre Serviços de Intranet, um cenário importante para aplicações corporativas. Esse tipo de serviço vive atrás do &lt;EM&gt;firewall&lt;/EM&gt; e por isso não utiliza protocolos de interoperabilidade, como SOAP, HTTP, etc. Cenários utilizando &lt;EM&gt;.NET Remoting &lt;/EM&gt;e &lt;EM&gt;Enterprise Services&lt;/EM&gt; são muito comuns na implementação de serviços para aplicações intranet e estão sendo gradativamente substituídos por serviços com WCF. Nesse contexto, podemos relacionar alguns tipos de implementação de serviços para intranet, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Aplicações &lt;EM&gt;cliente/servidor clássicas&lt;/EM&gt;, onde clientes Windows comunicam com serviços dentro do mesmo domínio Windows; &lt;/LI&gt;
&lt;LI&gt;Aplicações &lt;EM&gt;Web ASP.NET&lt;/EM&gt; que consomem serviços atrás do firewall, expondo funcionalidades de negócio para as aplicações; &lt;/LI&gt;
&lt;LI&gt;&lt;EM&gt;Serviços distribuídos&lt;/EM&gt; através de uma infra-estrutura orientada a serviços, consumidos por processos de negócios, camadas diversas, etc.; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A seguir, vamos olhar cada tipo de serviço e suas principais características.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Aplicações Cliente/Servidor&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Em um típico cenário cliente/servidor, aplicações cliente acessam serviços instalados em servidores remotos dentro do domínio. Um banco de dados é usualmente parte da configuração, acessado através de serviços, nunca diretamente a partir da aplicação ou da camada de apresentação. Nesse cenário, WCF oferece grande facilidade para a exposição de funcionalidades para clientes remotos dentro da intranet. &lt;/P&gt;
&lt;P&gt;A figura a seguir ilustra esse cenário, considerando a autenticação através de um AD ou lista de usuários válidos.&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_2.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_2.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=346 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb.png" width=327 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;EM&gt;by M. L. Bustamente&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;A proteção das mensagens durante a comunicação entre cliente e servidor pode ser obtida através de criptografia e assinatura via certificados, criando um transporte com segurança.&lt;/P&gt;
&lt;P&gt;A tabela a seguir apresenta as principais características e alternativas de configuração do cenário cliente/servidor:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=513 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;TCP&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP + Binário ou SOAP + XML&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Credenciais Windows autenticadas contra o domínio Windows.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Credenciais Windows autorizadas contra o domínio Windows.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;As credenciais Windows são utilizadas para a geração de chaves para a comunicação segura. Certificados X.509 podem ser utilizados.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Note que para alguns cenários, podemos utilizar protocolos de mensagens SOAP + XML, ao invés de SOAP + encoding binário. Devemos avaliar o impacto de performance nessa situação.&lt;/P&gt;
&lt;P&gt;Outro ponto importante nessa discussão é que utilizando o Windows Server 2008, podemos configurar nossos serviços como &lt;EM&gt;hosted&lt;/EM&gt; no &lt;STRONG&gt;WAS - Windows Activation Services&lt;/STRONG&gt;, permitindo protocolos como &lt;EM&gt;TCP&lt;/EM&gt;, &lt;EM&gt;Named Pipes&lt;/EM&gt; e &lt;EM&gt;MSMQ&lt;/EM&gt;, como vemos na figura a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=322 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_2.png" width=394 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_2.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Como alternativa ao WAS sobre Windows Server 2008, podemos publicar nossos serviços WCF em serviços NT (&lt;EM&gt;Windows NT Service&lt;/EM&gt;), o que fará nosso transporte ser baseado em protocolo TCP para a entrega de mensagens. Assim, estaremos usando &lt;STRONG&gt;sockets TCP&lt;/STRONG&gt; para a comunicação entre cliente e serviço.&lt;/P&gt;
&lt;P&gt;Publicar serviços WCF através de &lt;EM&gt;Windows NT Service&lt;/EM&gt; gera alguns contra-tempos, como:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;sempre que o serviço é atualizado, devemos reinicializar nosso &lt;EM&gt;Windows NT Service&lt;/EM&gt;, para que as alterações sejam refletidas na produção; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;durante o processo de reinicialização do serviço, requisições feitas para o WCF serão rejeitadas. É importante notar que nesse cenário não existirá um mecanismo de enfileiramento de requisições ou mensagens, como ocorre no hosting baseado no WAS - Windows Activation Services; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Finalmente, &lt;EM&gt;Windows NT Service&lt;/EM&gt; não suporta pooling, monitoração, recycling ou gerenciamento de idle-time (ociosidade) para otimização de recursos; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;De fato, para cenários de serviços no ambiente intranet, a utilização de WAS para hosting é a melhor opção por seus vários benefícios. Porém, para cenários de distribuição de serviços em ambientes não controlados, onde não garantimos a presença do WAS, &lt;EM&gt;Windows NT Service&lt;/EM&gt; é a alternativa mais adequada.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Aplicações Web ASP.NET&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Vejamos um segundo cenário de serviços na intranet. Em aplicações orientadas a serviços, uma camada de apresentação baseada em ASP.NET pode consumir serviços WCF através do &lt;EM&gt;firewall,&lt;/EM&gt; acesando funcionalidades encapsuladas por esses serviços. Embora seja possível uma aplicação ASP.NET realizar chamadas diretas para os componentes de negócio, o uso de uma camada WCF oferece uma série de benefícios, como: &lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Serviços podem encapsular necessidades de negócio recorrentes, permitindo que diversas aplicações reutilizem as mesmas funcionalidades, aumentando o reuso; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;A criação de uma fronteira de processos entre as páginas ASP.NET e os componentes de negócio pode aumentar a segurança do ambiente, reduzindo a superfície de ataque para códigos maliciosos ou acessos diretos aos dados da aplicação; &lt;BR&gt;&lt;/LI&gt;
&lt;LI&gt;Em muitos ambientes, uma DMZ é exigida entre a lógica de negócio e a camada de apresentação, significando um segundo firewall na infra-estrutura. Serviços WCF podem tornar mais fácil o consumo de funcionalidades através do segundo firewall. &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;A figura a seguir ilustra o cenário onde páginas ASP.NET e serviços WCF encontram-se na mesma máquina:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=434 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_1.png" width=465 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_1.png"&gt;&lt;/A&gt; &lt;BR&gt;&lt;EM&gt;by M. L. Bustamente&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;A tabela a seguir apresenta as principais características de configuração do cenário onde serviços e páginas ASP.NET estão na mesma máquina:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=513 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Named Pipes&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP + Binário&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Credenciais Windows usadas para autenticar a aplicação chamadora.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Credenciais Windows usadas para autorizar a aplicação chamadora.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Credenciais Windows são usadas para a geração de chaves para a comunicação segura.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Para cenários onde a camada de serviços encontra-se em outra máquina ou atrás de um firewall (como uma segunda DMZ), nosso protocolo de transporte torna-se o TCP e podemos utilizar certificados X.509 para a comunicação segura durante a troca de mensagens. &lt;/P&gt;
&lt;P&gt;A figura a seguir ilustra o cenário onde páginas ASP.NET e serviços WCF encontram-se em máquinas diferentes:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_10.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_10.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=470 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_4.png" width=435 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_4.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;EM&gt;by M. L. Bustamente&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Assim, vimos que existem diferentes alternativas de configuração de um ambiente ASP.NET com serviços WCF, variando de acordo com as considerações de segurança e infra-estrutura presentes na solução.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Serviços Distribuídos para Arquiteturas Orientadas a Serviços&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Um dos grandes benefícios na construção de arquiteturas orientadas a serviços é a composição de funcionalidades, obtida através do consumo de serviços distribuídos ao longo da organização. Um cenário típico de composição oferece uma camada de apresentação em ASP.NET, consumindo camadas de serviços WCF para processos, funcionalidades de negócio, acesso a dados, etc., permitindo uma escalabilidade crescente ao longo de sua utilização.&lt;/P&gt;
&lt;P&gt;A figura a seguir apresenta um exemplo desse tipo de cenário:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_12.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_12.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=450 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_5.png" width=480 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFParte_A32E/image_thumb_5.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Vejamos as opções de configuração indicadas para o cenário de serviços distribuídos na intranet.&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=513 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;TCP&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP + Binário&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificado X.509 usado para autenticar a aplicação ou serviço chamador.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificado X.509 usado para autorizar a aplicação ou serviço chamador.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Certificado X.509 usado para assinatura e criptografia na segurança de mensagens.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Foi um longo post, mas conseguimos passar pelos principais cenários presentes no ambiente de intranet, enquanto utilizamos serviços WCF para encapsular nossa lógica de negócios e funcionalidades de aplicações.&lt;/P&gt;
&lt;P&gt;No próximo post, vamos falar de um novo cenário, serviços de mensageria e chamadas assíncronas, 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;P&gt;Technorati Tags: &lt;A class="" href="http://technorati.com/tag/soa" target=_blank mce_href="http://technorati.com/tag/soa"&gt;SOA&lt;/A&gt;,&lt;A class="" href="http://technorati.com/tag/wcf" target=_blank mce_href="http://technorati.com/tag/wcf"&gt;WCF&lt;/A&gt;,&lt;A class="" href="http://technorati.com/tag/services" target=_blank mce_href="http://technorati.com/tag/services"&gt;Services&lt;/A&gt;,&lt;A class="" href="http://technorati.com/tag/webservices" target=_blank mce_href="http://technorati.com/tag/webservices"&gt;Web Services&lt;/A&gt;,&lt;A class="" href="http://technorati.com/tag/intranet" target=_blank mce_href="http://technorati.com/tag/intranet"&gt;Intranet Services&lt;/A&gt;&lt;/P&gt;&lt;img src="http://blogs.msdn.com/aggbug.aspx?PostID=8719799" 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>Cenários de implementação de serviços com WCF - Parte 3 : Serviços para Web 2.0</title><link>http://blogs.msdn.com/wcamb/archive/2008/07/03/cen-rios-de-implementa-o-de-servi-os-com-wcf-parte-3-servi-os-para-web-2-0.aspx</link><pubDate>Thu, 03 Jul 2008 13:12:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8683395</guid><dc:creator>wcamb</dc:creator><slash:comments>0</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8683395.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8683395</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8683395</wfw:comment><description>&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;Serviços para Web 2.0&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Vamos continuar nossa discussão sobre cenários de utilização de WCF. Hoje vamos falar sobre serviços para Web 2.0.&lt;/P&gt;
&lt;P&gt;O modelo Web 2.0 tornou-se popular devido uma série de recursos como &lt;EM&gt;wikis&lt;/EM&gt;, &lt;EM&gt;mashups&lt;/EM&gt;, a colaboração entre usuários e comunidades, &lt;EM&gt;folksonomias&lt;/EM&gt;, composições de funcionalidades, etc. Além desses recursos, as aplicações &lt;STRONG&gt;RIA - Rich Internet Application&lt;/STRONG&gt;, que envolvem &lt;EM&gt;mashups&lt;/EM&gt;, &lt;EM&gt;scripts AJAX&lt;/EM&gt;, &lt;EM&gt;Silverlight&lt;/EM&gt; e outras tecnologias recentes, trouxeram para a Web o poder de interfaces com mídia e conteúdo interativo. Como ponto principal nesse cenário, o cliente Web 2.0 precisa de uma abordagem que diminua o número de interações com o servidor, o que é obtido através de protocolos específicos para a troca de mensagens.&lt;/P&gt;
&lt;P&gt;Assim, entre os protocolos de mensagens para clientes Web 2.0 citamos:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=517 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=108&gt;&lt;STRONG&gt;Protocolo&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=407&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=112&gt;&amp;nbsp; &lt;FONT color=#000080&gt;&lt;STRONG&gt;POX&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=407&gt;&lt;FONT color=#000080&gt;Um protocolo de mensagens XML simplificado, sem o formalismo do protocolo SOAP.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=115&gt;&lt;FONT color=#000080&gt;&amp;nbsp; &lt;STRONG&gt;REST&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=407&gt;&lt;FONT color=#000080&gt;Uma alternativa ao protocolo SOAP, baseado em &lt;STRONG&gt;POX - Plain Old XML.&lt;/STRONG&gt; Fornece um estilo de arquitetua que permite o acesso de a recursos através da internet.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=117&gt;&lt;FONT color=#000080&gt;&amp;nbsp; &lt;STRONG&gt;JSON&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=407&gt;&lt;FONT color=#000080&gt;&lt;STRONG&gt;JavaScript Object Notation&lt;/STRONG&gt; é um formato de mensagens leve, que é uma alternativa ao XML. É muito útil em combinação com clientes JavaScript, para a troca de dados com serviços com um overhead de processamento e um custo de transferência menor quando comparado com o XML.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=118&gt;&lt;FONT color=#000080&gt;&amp;nbsp; &lt;STRONG&gt;RSS/ATOM&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=407&gt;&lt;FONT color=#000080&gt;&lt;STRONG&gt;Really Simple Syndication&lt;/STRONG&gt; e &lt;STRONG&gt;ATOM&lt;/STRONG&gt; são formatos de sindicalização baseados em XML. São especialmente interessantes para o compartilhamento de dados atualizados em &lt;EM&gt;feeds&lt;/EM&gt; ou &lt;EM&gt;blogs&lt;/EM&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;De fato, é possível construir serviços em &lt;STRONG&gt;WCF .NET 3.0&lt;/STRONG&gt; que suportam os protocolos acima, em serviços para Web 2.0. Usando o &lt;STRONG&gt;.NET 3.5&lt;/STRONG&gt;, o WCF suporta nativamente esses protocolos, o que fornece um ganho adicional de produtividade e configuração para o desenvolvimento de nossos serviços.&lt;/P&gt;
&lt;P&gt;A seguir, vamos olhar algumas características de cada combinação de serviços e protocolos de mensagens para a Web 2.0, considerando especificamente &lt;EM&gt;POX, REST, JSON, RSS&lt;/EM&gt; e &lt;EM&gt;ATOM&lt;/EM&gt;.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Características de serviços para Web 2.0 usando POX e REST:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;Uma boa discussão com exemplos usando POX e REST é dada no artigo a seguir, veja:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;POX and REST &lt;BR&gt;&lt;/STRONG&gt;Ref.: &lt;A title=http://msdn.microsoft.com/en-us/library/aa395208.aspx href="http://msdn.microsoft.com/en-us/library/aa395208.aspx" mce_href="http://msdn.microsoft.com/en-us/library/aa395208.aspx"&gt;http://msdn.microsoft.com/en-us/library/aa395208.aspx&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;No link acima, você encontra exempos de serviços com interfaces POX e REST, assim como detalhes da interface e comportamentos no WCF. Para esse tipo de implementação, a tabela a seguir apresenta algumas das principais características do cenário.&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=514 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;HTTP ou HTTPS (SSL)&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;XML&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Basic Authentication (com usuário e senha) é uma escolha típica. Porém, segurança sobre certificados e integração Windows são também suportados.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um armazenamento de credenciais é normalmente indicado, desde que credenciais Windows sejam necessárias.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Se necessário, SSL é suportado.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Assim, quando observamos as interações com serviços &lt;STRONG&gt;POX&lt;/STRONG&gt; temos: &lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_6.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_6.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=226 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_thumb_2.png" width=460 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_thumb_2.png"&gt;&lt;/A&gt;&lt;/P&gt;
&lt;P&gt;Do mesmo modo, quando observamos as interações com serviços &lt;STRONG&gt;REST&lt;/STRONG&gt; temos:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_8.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_8.png"&gt;&lt;IMG height=226 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_thumb_3.png" width=460 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_thumb_3.png"&gt;&lt;/A&gt; &lt;BR&gt;Note que para serviços &lt;STRONG&gt;REST&lt;/STRONG&gt;, os verbos HTTP (&lt;STRONG&gt;get, post, put&lt;/STRONG&gt; e &lt;STRONG&gt;delete&lt;/STRONG&gt;) são utilizados, permitindo a construção das chamadas arquiteturas &lt;STRONG&gt;RESTfull, &lt;/STRONG&gt;muito interessantes tanto para a exploração de dados via internet, como para a construção de clientes RIA simplificados e de grande flexibilidade no consumo de serviços diversos.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Características de serviços para Web 2.0 usando JSON:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=514 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;HTTP ou HTTPS (SSL)&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;JSON&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Basic Authentication (com usuário e senha) é uma escolha típica. Porém, segurança sobre certificados e integração Windows são também suportados.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um armazenamento de credenciais é normalmente indicado, desde que credenciais Windows sejam necessárias.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Se necessário, SSL é suportado.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Uma implementação comum para o consumo de serviços JSON, SOAP e XML é o uso do objeto &lt;STRONG&gt;XmlHttpRequest&lt;/STRONG&gt;. Ele permite um desenvolvimento flexível para esses vários formatos, facilitando o consumo na ponta cliente. A figura a seguir ilustra o cenário:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=275 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_thumb.png" width=402 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFPar.0_9F1B/image_thumb.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Uma boa referência de artigo com exemplos de serviços usando JSON você tem no link abaixo:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Weakly-typed JSON Serialization Sample&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/bb943471.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb943471.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb943471.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Características de serviços para Web 2.0 usando RSS e ATOM:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=514 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;HTTP ou HTTPS (SSL)&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;XML ou JSON&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Basic Authentication (com usuário e senha) é uma escolha típica. Porém, segurança sobre certificados e integração Windows são também suportados.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um armazenamento de credenciais é normalmente indicado, desde que credenciais Windows sejam necessárias.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Se necessário, SSL é suportado.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Uma pergunta frequente para cenários de serviços para Web 2.0 é se podemos usar contratos para &lt;STRONG&gt;POX/REST, JSON&lt;/STRONG&gt; e &lt;STRONG&gt;sindicalização&lt;/STRONG&gt; (&lt;STRONG&gt;RSS/ATOM&lt;/STRONG&gt;) no mesmo serviço WCF. Sim, é possível. Para cada contrato implementado, suportamos um conjunto de operações específicas, ainda que todas elas implementadas pelo mesmo serviço. Vale conferir mais sobre &lt;STRONG&gt;WebHTTPBinding&lt;/STRONG&gt; e &lt;STRONG&gt;WebHTTPBehavior&lt;/STRONG&gt;. Veja:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;WCF Web Programming Object Model&lt;/STRONG&gt; &lt;BR&gt;Ref.: &lt;A href="http://msdn.microsoft.com/en-us/library/bb412204.aspx" mce_href="http://msdn.microsoft.com/en-us/library/bb412204.aspx"&gt;http://msdn.microsoft.com/en-us/library/bb412204.aspx&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Assim, o objetivo deste post foi apresentar alguns protocolos de mensagens envolvidos com cenários Web 2.0, enquanto utilizamos o WCF para nossas implementações. &lt;/P&gt;
&lt;P&gt;No próximo post, vamos falar de um novo cenário: serviços para serviços para intranets. 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=8683395" width="1" height="1"&gt;</description><category domain="http://blogs.msdn.com/wcamb/archive/tags/Web+2.0/default.aspx">Web 2.0</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>Cenários de implementação de serviços com WCF - Parte 2 : Web Services Corporativos</title><link>http://blogs.msdn.com/wcamb/archive/2008/06/30/cen-rios-de-implementa-o-de-servi-os-com-wcf-parte-2-web-services-corporativos.aspx</link><pubDate>Mon, 30 Jun 2008 23:34:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8672953</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8672953.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8672953</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8672953</wfw:comment><description>&lt;P&gt;&lt;FONT size=4&gt;&lt;STRONG&gt;Web Services Corporativos&lt;/STRONG&gt;&lt;/FONT&gt;&lt;/P&gt;
&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Vamos falar hoje sobre um cenário muito comum em ambientes de produção nas empresas, que são os &lt;STRONG&gt;Web Services Corporativos&lt;/STRONG&gt;. Nesse cenário, encontramos suporte para web services simples baseados em protocolo SOAP ou implementações avançadas sobre os padrões WS-* (&lt;EM&gt;WS-I : &lt;A href="http://ws-i.org/" target=_blank mce_href="http://ws-i.org/"&gt;Web Services Interoperability Organization&lt;/A&gt;&lt;/EM&gt;).&lt;/P&gt;
&lt;P&gt;Desde o final dos anos 90 encontramos Web Services sendo usados em diversas soluções para a interoperabilidade entre sistemas, permitindo a troca de mensagens entre plataformas heterogêneas. Grande parte dessa produtividade é devido o uso dos documentos &lt;STRONG&gt;WSDL - Web Service Description Language&lt;/STRONG&gt;, que descrevem as políticas e o metadado do serviço envolvido. &lt;/P&gt;
&lt;P&gt;WCF suporta nativamente a tecnologia de Web Services, em diferentes alternativas de implementação, suportando versões consumidas por clientes JAVA ou outras plataformas não Microsoft, assim como clientes .NET 2.0. Também permite o consumo através de clientes Web Services Enhancements (WSE) 3.0 e clientes .NET 3.x. &lt;/P&gt;
&lt;P&gt;Em muitos cenários, é possível migrar ASP.NET Web Services (ASMX) e Web Services WSE 3.0 para serviços WCF sem impacto para os clientes envolvidos.&lt;/P&gt;
&lt;P&gt;A figura abaixo apresenta uma visão sobre os tipos de clientes envolvidos no cenário de Web Services Corporativos:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_4.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=231 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_1.png" width=503 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Note que é possível combinar diferentes protocolos de acordo com o tipo de cliente envolvido. Além disso, vale lembrar que para compatibilidade histórica, o SOAP 1.1 (ou Basic Profile 1.1) é o transporte indicado para o acesso aos serviços WCF. Assim, para clientes ASMX, usamos o protocolo SOAP 1.1; para clientes ASMX + WSE, usamos o protocolo SOAP 1.2 + WS-Addressing; e para clientes WCF, usamos SOAP 1.2 + WS-Addressing + WS-SecureConversation + WS-ReliableMessaging, para ilustrar.&lt;/P&gt;
&lt;P&gt;Sobre os protocolos suportados pelo WCF&amp;nbsp; temos:&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=427 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=106&gt;&lt;STRONG&gt;Categoria&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=319&gt;&lt;STRONG&gt;Protocolo Suportado&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=110&gt;&amp;nbsp; &lt;FONT color=#000080&gt;Messaging&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=319&gt;&lt;FONT color=#000080&gt;&amp;nbsp; SOAP, WS-Addressing, MTOM&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=113&gt;&lt;FONT color=#000080&gt;&amp;nbsp; Metadada&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=319&gt;&lt;FONT color=#000080&gt;&amp;nbsp; WSDL, WS-MetadataExchange, WS-Policy&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=115&gt;&lt;FONT color=#000080&gt;&amp;nbsp; Security&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=319&gt;&lt;FONT color=#000080&gt;&amp;nbsp; WS-Security, WS-SecureConversation, WS-Trust&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=116&gt;&lt;FONT color=#000080&gt;&amp;nbsp; Reliability&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=319&gt;&lt;FONT color=#000080&gt;&amp;nbsp; WS-ReliableMessaging&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=117&gt;&lt;FONT color=#000080&gt;&amp;nbsp; Transactions&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=319&gt;&lt;FONT color=#000080&gt;&amp;nbsp; WS-Coordination, WS-AtomicTransaction&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Considerando nossa proposta, vamos dar uma olhada nas principais características e configurações presentes para o cenário de Web Services em WCF. Pensando sobre a segurança aplicada aos Web Services, podemos identificar 3 configurações possíveis:&lt;/P&gt;
&lt;OL&gt;
&lt;LI&gt;Web Services com passagem de usuário e senha sobre SSL - Secure Sockets Layer &lt;/LI&gt;
&lt;LI&gt;Web Services com passagem de usuário e senha sobre segurança de mensagens &lt;/LI&gt;
&lt;LI&gt;Web Services com segurança de sessão e mecanismo de sessão confiável ativada &lt;/LI&gt;&lt;/OL&gt;
&lt;P&gt;Para cada opção acima, teremos configurações distintas, conforme vemos nas tabelas a seguir:&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Services com passagem de usuário e senha sobre SSL - Secure Sockets Layer:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=514 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;HTTPS (SSL)&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP + &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;WS-Addressing&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Usuário e Senha são fornecidos como parte da mensagem SOAP, baseada em &lt;FONT color=#ff0000&gt;WS-Security&lt;/FONT&gt; e &lt;FONT color=#ff0000&gt;UsernameToken&lt;/FONT&gt; Profile.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um armazenamento de credenciais é normalmente indicado, desde que os usuários não façam parte de um domínio Windows.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um certificado SSL é fornecido para segurança de mensagens.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;A figura abaixo ilustra o cenário acima, onde a segurança é obtida através do canal SSL, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_11.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_11.png"&gt;&lt;EM&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=331 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_4.png" width=415 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_4.png"&gt;&lt;/EM&gt;&lt;/A&gt;&lt;EM&gt;&amp;nbsp;&amp;nbsp; &lt;BR&gt;by M. L. Bustamente&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Services com passagem de usuário e senha sobre segurança de mensagens:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=513 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;HTTP&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP + &lt;/FONT&gt;&lt;FONT color=#ff0000&gt;WS-Addressing&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Usuário e Senha são fornecidos como parte da mensagem SOAP, baseada em &lt;FONT color=#ff0000&gt;WS-Security&lt;/FONT&gt; e &lt;FONT color=#ff0000&gt;UsernameToken&lt;/FONT&gt; Profile.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um armazenamento de credenciais é normalmente indicado, desde que os usuários não façam parte de um domínio Windows.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Uso de protocolo &lt;FONT color=#ff0000&gt;WS-Security&lt;/FONT&gt; sobre certificados X.509 para a segurança de mensagens.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Para ilustrar o cenário acima, onde temos a segurança de mensagens com o uso do WS-Security, veja a figura abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_9.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_9.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=323 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_3.png" width=415 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_3.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;EM&gt;by M. L. Bustamante&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Web Services com segurança de sessão e mecanismo de sessão confiável ativada:&lt;/STRONG&gt;&lt;/P&gt;
&lt;TABLE class="" cellSpacing=0 cellPadding=2 width=513 border=1&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;STRONG&gt;Característica&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;&lt;STRONG&gt;Descrição&lt;/STRONG&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Hosting&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Transporte&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;HTTP&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo de Mensagens&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;SOAP +&lt;/FONT&gt;&lt;FONT color=#ff0000&gt; WS-Addressing&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autenticação&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Usuário e Senha são fornecidos como parte da mensagem SOAP, baseada em &lt;FONT color=#ff0000&gt;WS-Security&lt;/FONT&gt; e &lt;FONT color=#ff0000&gt;UsernameToken&lt;/FONT&gt; Profile. &lt;FONT color=#ff0000&gt;WS-SecureConversation&lt;/FONT&gt; é ativado para otimizar a autenticação.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Autorização&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Um armazenamento de credenciais é normalmente indicado, desde que os usuários não façam parte de um domínio Windows.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Segurança&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Uso de protocolo &lt;FONT color=#ff0000&gt;WS-Security&lt;/FONT&gt; sobre certificados X.509 para a segurança de mensagens.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;
&lt;TR&gt;
&lt;TD class="" vAlign=top width=149&gt;&lt;FONT color=#000080&gt;Reliability (Confiabilidade)&lt;/FONT&gt;&lt;/TD&gt;
&lt;TD class="" vAlign=top width=362&gt;
&lt;P&gt;&lt;FONT color=#000080&gt;Protocolo &lt;FONT color=#ff0000&gt;WS-ReliableMessaging&lt;/FONT&gt; é utilizado.&lt;/FONT&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;
&lt;P&gt;Como ilustração, a figura abaixo apresenta o modelo de acesso ao serviço WCF, considerando um Web Services avançado, onde aplicamos uma sessão confiável, certificados e um repositório de credenciais externo, veja:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_7.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_7.png"&gt;&lt;IMG style="BORDER-TOP-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-RIGHT-WIDTH: 0px" height=299 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_2.png" width=415 border=0 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/CenriosdeimplementaodeservioscomWCFWebSe_9EC2/image_thumb_2.png"&gt;&lt;/A&gt;&amp;nbsp; &lt;BR&gt;&lt;EM&gt;by M. L. Bustamante&lt;/EM&gt;&lt;/P&gt;
&lt;P&gt;Fonte: Bustamente, M.L.,&lt;EM&gt;&lt;A href="http://msdn.microsoft.com/en-us/library/cc512374.aspx" target=_blank mce_href="http://msdn.microsoft.com/en-us/library/cc512374.aspx"&gt;Windows Communication Foundation: Application Deployment Scenarios&lt;/A&gt;&lt;/EM&gt;, May 2008.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Qual opção de configuração devemos adotar?&lt;/STRONG&gt; De fato, isso irá depender dos recursos disponíveis e aderência do projeto ao modelo de segurança implementado acima. &lt;/P&gt;
&lt;P&gt;Note que cada cenário adiciona aspectos de desempenho, complexidade e experiência do usuário em graus diferentes. Por exemplo, para o cenário mais avançado, temos um impacto no tamanho de mensagens, que deve adicionar os padrões &lt;STRONG&gt;WS-Security&lt;/STRONG&gt;, &lt;STRONG&gt;WS-SecureConversation&lt;/STRONG&gt; e &lt;STRONG&gt;WS-ReliableMessaging (WS-RM)&lt;/STRONG&gt;. Ao mesmo tempo, WS-RM adiciona um mecanismo de confiabilidade na troca de mensagens, com uma sequência de &lt;EM&gt;requests/reponses&lt;/EM&gt; que aumenta o grau de confiança entre cliente e servidor. Esse mesmo tipo de avaliação deve ser feito para as outras configurações, avaliando seus prós e contras.&lt;/P&gt;
&lt;P&gt;Desse modo, passamos por alguns aspectos importantes na definição de arquiteturas com &lt;STRONG&gt;Web Services Corporativos&lt;/STRONG&gt; e suas configurações.&lt;/P&gt;
&lt;P&gt;No próximo post, vamos olhar um cenário relativamente recente: serviços para Web 2.0. 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=8672953" 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>Cenários de implementação de serviços com WCF - Parte 1 : Aspectos de SOA</title><link>http://blogs.msdn.com/wcamb/archive/2008/06/25/cen-rios-de-implementa-o-de-servi-os-com-wcf-parte-1-aspectos-de-soa.aspx</link><pubDate>Wed, 25 Jun 2008 13:41:00 GMT</pubDate><guid isPermaLink="false">91d46819-8472-40ad-a661-2c78acb4018c:8652165</guid><dc:creator>wcamb</dc:creator><slash:comments>2</slash:comments><comments>http://blogs.msdn.com/wcamb/comments/8652165.aspx</comments><wfw:commentRss>http://blogs.msdn.com/wcamb/commentrss.aspx?PostID=8652165</wfw:commentRss><wfw:comment>http://blogs.msdn.com/wcamb/rsscomments.aspx?PostID=8652165</wfw:comment><description>&lt;P&gt;Olá pessoal, tudo certo?&lt;/P&gt;
&lt;P&gt;Vamos dar um tempinho no assunto ADO.NET Entity Framework e voltar para o mundo &lt;STRONG&gt;WCF - Windows Communication Foundation&lt;/STRONG&gt;, pode ser?&lt;/P&gt;
&lt;P&gt;Recentemente, em conversas com um time de arquitetos, voltamos a falar sobre os vários desafios na construção de &lt;STRONG&gt;arquiteturas orientadas para serviços&lt;/STRONG&gt;. E como era de se esperar, WCF apareceu com destaque na reunião, considerando a plataforma Microsoft :)&lt;/P&gt;
&lt;P&gt;De fato, o WCF foi construído com os aspectos de &lt;EM&gt;SOA (Service Oriented Architecture)&lt;/EM&gt; em mente. Vamos citar alguns:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;O design e a implementação de serviços são naturalmente desacoplados da lógica de negócios da aplicação. Essa característica é que permite a migração das aplicações atuais para um modelo de serviços; &lt;/LI&gt;
&lt;LI&gt;Serviços expõem funcionalidades para clientes remotos através de contratos explícitos de serviços e de dados; &lt;/LI&gt;
&lt;LI&gt;Serviços são executados de forma autônoma, não havendo impacto entre serviços quando da ocorrência de uma falha, ou seja, o isolamento é uma condição obrigatória entre serviços, assim como as fronteiras de segurança; &lt;/LI&gt;
&lt;LI&gt;Serviços podem ser distribuídos através de diferentes protocolos, o que atende uma série de cenários presentes no ambiente corporativo. A interoperabilidade é uma exigência; &lt;/LI&gt;
&lt;LI&gt;Serviços são agnósticos ao transporte, ou seja, podem ser expostos diretamente na web, via intranet, ou usado como um backend no enterprise; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Para exemplificar um serviço WCF e seus principais elementos, temos o desenho a seguir:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_9.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_9.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_thumb_3.png" width=506 height=297 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_thumb_3.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Resumindo, serviços são orientados a mensagens, possuem contratos de serviços e de dados, são multi-protocolos e multi-hosts, com aspectos de segurança, isolamento, políticas, monitoração, comportamentos, etc. Todos esses aspectos são atendidos pelo modelo de programação do WCF. &lt;/P&gt;
&lt;P&gt;Ainda, através do &lt;STRONG&gt;ABC&lt;/STRONG&gt; do WCF (onde &lt;EM&gt;&lt;STRONG&gt;Endpoint&lt;/STRONG&gt;&lt;/EM&gt; &lt;STRONG&gt;= &lt;EM&gt;Addess + Binding + Contract&lt;/EM&gt;&lt;/STRONG&gt;) é possível uma grande flexibilidade na implantação e configuração de serviços em diversos ambientes de TI. Por exemplo, a tabela abaixo mostra a série de &lt;EM&gt;&lt;STRONG&gt;Bindings&lt;/STRONG&gt;&lt;/EM&gt; disponíveis para a configuração de nosso &lt;EM&gt;&lt;STRONG&gt;Endpoint.&lt;/STRONG&gt;&lt;/EM&gt; Cada combinação com diferentes propriedades para a comunicação entre clientes e serviços:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_11.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_11.png"&gt;&lt;IMG style="BORDER-BOTTOM: 0px; BORDER-LEFT: 0px; BORDER-TOP: 0px; BORDER-RIGHT: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_thumb_4.png" width=505 height=299 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_thumb_4.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;De fato, nem só de serviços vive uma arquitetura SOA. Precisamos pensar em questões de consumo, composição, orquestração, workflows, interação com o legado, etc. Nesse ponto, surge a necessidade de uma arquitetura de referência, que oriente nossa visão e a posição de cada componente nessa organização de infra-estrutura.&lt;/P&gt;
&lt;P&gt;Porém, quando vamos para a implementação de projeto SOA de fato, descobrimos que para nosso mundo de serviços existem diversos cenários possíveis. Cada cenário possui aspectos de configuração e &lt;EM&gt;deployment&lt;/EM&gt; com impacto direto na performance, no versionamento, na administração e na governança do ambiente de produção.&lt;/P&gt;
&lt;P&gt;Uma primeira lista de cenários comuns para a implementação de serviços é dada abaixo:&lt;/P&gt;
&lt;P&gt;&lt;A href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_4.png" mce_href="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_4.png"&gt;&lt;IMG style="BORDER-RIGHT-WIDTH: 0px; BORDER-TOP-WIDTH: 0px; BORDER-BOTTOM-WIDTH: 0px; BORDER-LEFT-WIDTH: 0px" border=0 alt=image src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_thumb_1.png" width=501 height=303 mce_src="http://blogs.msdn.com/blogfiles/wcamb/WindowsLiveWriter/WindowsCommunicationFoundationDiscutind_14E06/image_thumb_1.png"&gt;&lt;/A&gt; &lt;/P&gt;
&lt;P&gt;Com certeza, pelo menos 1 dos cenários acima é uma realidade em sua empresa. &lt;/P&gt;
&lt;P&gt;Por isso, vamos começar uma nova série aqui no blog: o desafio para os próximos posts será detalhar cada cenário acima, discutindo as diversas configurações e características principais envolvidas. Nosso template de estudo será:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;Tipo de hosting utilizado &lt;/LI&gt;
&lt;LI&gt;Protocolo de transporte &lt;/LI&gt;
&lt;LI&gt;Protocolo de mensagens &lt;/LI&gt;
&lt;LI&gt;Mecanismo de Autenticação &lt;/LI&gt;
&lt;LI&gt;Mecanismo de Autorização &lt;/LI&gt;
&lt;LI&gt;Garantia de Confiabilidade &lt;/LI&gt;
&lt;LI&gt;Proteção no Transporte ou Segurança; &lt;/LI&gt;&lt;/UL&gt;
&lt;P&gt;Enquanto avançamos pelos cenários, teremos a oportunidade de entender um pouco mais do modelo de arquitetura WCF. Muito trabalho pela frente, mas será divertido. 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=8652165" 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/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></channel></rss>