Академический Документы
Профессиональный Документы
Культура Документы
Pgina 1 de 22
Sumrio
Nesses ltimos anos, diversas empresas de diferentes reas de atuao tm implementado projetos em torno do tema SOA Service Oriented Architecture. Os projetos de SOA buscam um conjunto de benefcios que juntos prometem a organizao de uma TI mais gil, de fcil administrao e que atenda de forma mais rpida as necessidades de negcio da empresa, em torno do chamado negcio gil (ou Agile Business). Nesse mesmo perodo, vimos o nascimento do modelo de entrega de software como servio, o SaaS Software as a Service, com novas exigncias para uma soluo de software mais flexvel e reutilizvel, suportando diversos usurios sobre uma mesma infra-estrutura configurvel, oferecendo funcionalidades sob demanda. Finalmente, conceitos de Web 2.0, aplicaes de composio, barramento de servios corporativo, entregas de software como servio e o uso de infra-estrutura provisionvel e de alta escalabilidade conhecida como computao na nuvem (ou cloud computing) so tendncias que juntas criaram um novo contexto de infra-estrutura e solues que temos hoje a disposio das empresas. Sem dvida, existe uma convergncia de todas essas tecnologias e recursos em torno do conceito de servios. Assim, o objetivo desse artigo apresentar uma abordagem sobre o tema software+servios na plataforma Microsoft, uma estratgia da empresa que envolve as principais tendncias presentes hoje no setor de TI em torno de servios. Vamos apresentar algumas das tecnologias e conceitos envolvidos, que facilitam a construo de uma nova TI, tambm conhecida como TI dinmica.
Contedo
Introduo A combinao do Software + Servio Entregando software como servio SaaS A cauda longa O modelo de maturidade SaaS Uma plataforma como servio A computao na nuvem Construindo arquiteturas orientadas a servios SOA Arquitetura de Referncia SOA Capacidades de uma infra-estrutura de SOA Camada de servios com WCF Camada de processos com WF Construindo aplicaes compostas Web 2.0 Composite Application Guidance for WPF and Silverlight Consideraes finais Referncias Agradecimentos Sobre o Autor
1. Introduo
De forma simplificada, podemos definir SOA Service Oriented Architecture como um estilo de arquitetura onde funcionalidades especficas de sistemas existentes so oferecidas na forma de servios. Aqui, temos alguns conceitos normalmente associados ao tema como barramento de servios, nveis de operao de servios, granularidade de servios, etc. Da mesma forma, consumo de servios, governana, reuso e todas as capacidades associadas administrao de um ambiente de servios ganham importncia nesse tipo de arquitetura. Antes de tratarmos
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 2 de 22
todos esses conceitos, vamos apresentar um breve histrico sobre como o ambiente corporativo evoluiu nos ltimos anos, posicionando essa discusso nos dias de hoje. A figura abaixo apresenta uma viso em dcadas, onde vemos diferentes abordagens para o ambiente de TI Tecnologia da Informao:
Figura 1 Evoluo do ambiente de TI em dcadas. Iniciando com a dcada de 70, nessa poca as empresas dispunham de grandes centros de processamento com custos elevados de operao e manuteno. Prevaleciam os sistemas monolticos, que exigiam pessoal especializado, com grande conhecimento sobre detalhes tcnicos de operao e muito pouco era transparente para o desenvolvedor ou para o usurio que operava sobre esses centros. J na dcada de 80, observamos o nascimento da computao pessoal, oferecendo poder de processamento a baixo custo para o usurio final. O usurio domstico tinha mais poder para operar e manipular sua prpria mquina, com menor necessidade de especializao. Quem no se lembra de linguagens de programao como o Basic, que alimentavam computadores de 8 bits em atividades domsticas como sistemas de locadoras de filmes ou agendas pessoais J. No final dos anos 80 iniciava o modelo de computao cliente/servidor, com o uso intenso de redes interoperveis que integravam ambientes corporativos. Redes FDDI - Fiber Distributed Data Interface, Token Ring, Ethernet (IEEE 802.3) e uma srie de equipamentos de integrao como bridges, roteadores, switches e hubs iniciavam suas aparies, permitindo que empresas integrassem ambientes de computao e sistemas, ainda que com grande acoplamento de interfaces, protocolos e formatos de dados via rede. Nos anos 90, vimos a consolidao da arquitetura cliente/servidor. Vimos tambm o surgimento da Web como uma rede pblica de baixo custo disponvel para universidades, empresas e usurios domsticos. Enquanto que diferentes topologias de redes proliferavam, vimos mais e mais equipamentos de interconexo invadindo nossas empresas, ampliando as capacidades de comunicao e integrao entre sistemas. Sobre esses equipamentos, funcionalidades de aplicaes eram publicadas atravs de servios, que atendiam as diversas requisies atravs de protocolos TCP/IP ou dilogos proprietrios, customizados para cada cenrio de indstria. Servios eram implementados expondo funcionalidades de aplicaes ou sistemas fora das empresas. A virada do sculo veio com mudanas ainda mais importantes: padres como SOAP (Simple Object Access Protocol), HTTP (Hypertext Transfer Protocol), HTML (HyperText Markup Language) e XML (eXtensible Markup Language) permitiram que sistemas fossem integrados mais rapidamente, suportando um nmero crescente de usurios e aplicaes atravs da internet. Sobre esses padres, novas aplicaes ganharam visibilidade como wikis, blogs, redes sociais, buscadores, etc., e conceitos como Web Services e servios ganharam importncia. Atravs da combinao HTTP+SOAP, servios foram definitivamente expostos pela internet, cruzando as barreiras de firewalls pelas portas 80 (HTTP) e 443 (HTTPS) do TCP, ampliando as possibilidades de integrao. Hoje, estamos acompanhando o nascimento de uma nova onda no setor de TI, a chamada computao na nuvem (ou cloud computing). Gigantes como Microsoft, Amazon e Google ampliam suas ofertas de datacenters pelo mundo, oferecendo recursos de infra-estrutura
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 3 de 22
provisionvel alm das fronteiras de nossas empresas. Vivemos assim o surgimento de uma TI mais dinmica, flexvel e hbrida, combinando servios locais, hospedados em mquinas e servidores locais, com servios remotos, hospedados em datacenters diversos. Da mesma forma, o custo de operao dessa nova TI ser mais flexvel, entre custos prprios, de servios auto-hospedados e custos dinmicos, a partir de servios oferecidos pela internet e pagos por demanda, pelo volume de uso. Com esse breve histrico, voltamos ao tema central da introduo: os servios. Seja sobre uma infra-estrutura local ou atravs de datacenters espalhados pelo mundo, funcionalidades de aplicaes sero cada vez mais oferecidas como servios, permitindo a combinao e o consumo de uma forma flexvel e dinmica. Ao longo deste artigo, vamos conhecer as diferentes tecnologias que tornam esse cenrio possvel hoje sobre a plataforma Microsoft.
Figura 2 Principais elementos do Software+Servio: Web 2.0, SaaS e SOA. No centro, vemos as questes de entrega de nossa infra-estrutura: funcionalidades de software podem ser entregues na forma de servio, hospedados localmente em nossa empresa, em provedores parceiros ou mesmo em datacenters remotos com provisionamento dinmico, na direo da computao na nuvem. De fato, o modelo de entrega SaaS envolve uma mais TI flexvel, que pode compor diferentes nveis de operao (ou SLAs Service Level Agreement). Servios hospedados localmente em servidores de nossa prpria infra-estrutura tendem a responder de forma mais rpida do que servios remotos, parcialmente conectados pela internet, seja por questes de acesso e latncia de rede ou por condies de contrato ou interfaces customizadas para um cenrio especfico. Uma infra-estrutura local normalmente envolve maior especializao e customizao para o cenrio de negcio da empresa. Ao mesmo tempo, servios hospedados na nuvem podem aproveitar o alcance global, com provisionamento dinmico e o poder de computao elstico, que aumenta ou diminui conforme a necessidade da aplicao. Essa combinao entre local e remoto (on-premise e off-premise) ou maior controle e maior alcance ser avaliada de acordo com as necessidades de negcio de cada empresa no havendo certo ou errado, mas sim combinaes vantajosas ou mais aderentes s metas de custos de operao de cada indstria.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 4 de 22
Ainda na figura 2, a Web 2.0 (do lado esquerdo) agrupa questes focadas no usurio (consumidor), envolvendo a experincia de acesso e sua usabilidade, assim como as medidas de acesso e monetizao sobre o software. Hoje, as aplicaes so consumidas atravs de diferentes interfaces como desktops, notebooks, netbooks, smartphones, pdas, entre outros dispositivos. Essa variao de interfaces exige tambm um maior suporte a uma srie de protocolos e formatos de dados, alm de uma maior riqueza de recursos grficos e melhor usabilidade e navegao. Ainda como recurso da Web 2.0, o software como servio tarifado de diferentes maneiras, seja via licena, subscrio ou por transao efetuada, alm de aproveitar o volume de acesso para gerar renda atravs de propaganda e campanhas publicitrias sobre sua base de usurios. Todas essas formas de monetizao so clssicas do modelo SaaS e esto presentes em diferentes tipos de aplicao hoje em dia, principalmente em sistemas na Web, portais colaborativos, marketplaces na Web, entre outros. Finalmente, vemos as questes de SOA, contemplando a combinao de servios e a federao de infra-estruturas. No ambiente corporativo, a viso de SOA busca o reuso de servios e workflows, permitindo a coordenao de processos de negcio, assim como o reuso de recursos e funcionalidades da infra-estrutura disponvel. Essa combinao tambm deve estar disponvel para os usurios, atravs de interfaces dinmicas e aplicaes de composio. Diferentes empresas com arquiteturas SOA localmente implementadas tambm podem participar de federaes de empresas e servios, atravs do compartilhamento e integrao de barramentos corporativos, identidades unificadas e recursos de computao compartilhados pela nuvem. Enfim, os conceitos acima envolvem diferentes produtos e plataformas para sua realizao. A seguir, vamos percorrer algumas dessas tecnologias, a fim de realizar o modelo software + servios em nossas empresas.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 5 de 22
Figura 3 Grfico da Cauda Longa / The Long Tail. O grfico ilustra que conforme baixamos o custo de adoo, um nmero maior de clientes pode adotar nossa soluo. E esse nmero tende a crescer, aproveitando o alcance global do ambiente Web. No modelo SaaS de fornecimento de software, precisamos pensar em solues e infra-estruturas de baixo custo, com alto aproveitamento de recursos por um nmero muito grande de clientes, para atingirmos um pblico no suportado hoje em dia, devido os custos proibitivos de entrada. Outro conceito importante do modelo o "micro-pagamento". Na cauda longa, um nmero muito grande de usurios poder adotar nossa soluo pagando pelo uso, por demanda, o que deve gerar um valor muito baixo de pagamento ou ticket. Nesse cenrio, estamos realmente buscando o chamado "milhes de mercados de poucos" ao invs dos atuais "poucos mercados de milhes", sendo a essencial do modelo baseada na Cauda Longa.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 6 de 22
Figura 4 Modelo de maturidade SaaS, sobre a evoluo do suporte multi-inquilino. Note que no primeiro quadrante, a soluo possui uma instncia dedicada para cada inquilino (tenant) ou usurio do sistema. Isso garante um completo atendimento das demandas do cliente, mas com elevado custo de operao e manuteno devido a ausncia de compartilhamento de recursos e customizao elevada. Tambm no quadrante 1, cada cliente atendido por uma instncia dedicada da soluo, o que exige um bom planejamento de capacidade enquanto mais clientes so suportados pela infra-estrutura. No quadrante 2, a soluo ainda apresenta uma instncia dedicada para cada inquilino, porm, j possvel observar que a soluo a mesma, com nenhuma customizao presente. Isso garante um custo menor de manuteno, j que a mesma soluo atende a diversos clientes. No quadrante 3, a soluo multi-inquilino (multi-tenant) e apresenta total compatilhamento de recursos, havendo uma nica instncia para todos os clientes. Note que questes importantes para o tratamento de metadados, assim como manuteno e modelagem do banco de dados esto presentes aqui. Um dos grandes desafios desse estgio a modelagem de um banco de dados SaaS, multi-inquilino e com bom desempenho, porm, nesse cenrio apresentamos uma soluo que suporta de uma forma automtica a custormizao de diferentes inquilinos, com baixo custo de operao, permitindo a prtica de micro-pagamento e baixo custo de subscrio de funcionalidades. Finalmente, o quadrante 4 permite um atendimento diferenciado para inquilinos que exigem elevada demanda de recursos, havendo uma carga balanceada na infra-estrutura do provedor da soluo SaaS (o chamado tenant load balancer). Falamos rapidamente de um modelo de maturidade SaaS, onde notamos alguns pontos importantes como um servio de metadados e questes para se garantir uma base de dados com facilidades para o tratamento multi-inquilino. Dentro da plataforma Microsoft, a implementao de servios passa pelo uso do WFC Windows Communication Foundation, componente do .NET framework que oferece um modelo de programao para a construo de interfaces de servios, respeitando um modelo de comunicao baseado em mensagens.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 7 de 22
Considerando o modelo SaaS de funcionalidades como servios, podemos imaginar servios implementados localmente, assim como servios consumidos a partir de provedores externos ou datacenters remotos, com provisionamento dinmico. Como principal ambiente para suporte desse modelo, a Microsoft trabalha atualmente na plataforma Windows Azure, um plataforma como servio.
Figura 5 Proposta de taxonomia para a computao na nuvem, conforme proposto Lamia Youseff e outros [3]. Veja que a proposta acima classifica as aplicaes na nuvem (cloud applications), assim como os recursos disponveis pela infra-estrutura na nuvem, como a plataforma (PaaS - Platform as a
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 8 de 22
Service), a comunicao (CaaS - Communication as a Service), o armazenamento (DaaS Data as a Service), o processamento (IaaS Infrastructure as a Service), etc. Logo aps a publicao da taxonomia proposta acima por Lamia Yousef [3], vimos alguns frameworks de camadas sugeridos para a computao na nuvem, procurando organizar os vrios recursos disponveis no ambiente. Ao longo deste artigo, veremos mais detalhes sobre a plataforma Windows Azure, assim como suas caractersticas sobre o modelo PaaS.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 9 de 22
Figura 6 Arquitetura de Referncia SOA proposta pela Microsoft. Acompanhando o desenho de cima para baixo, vejamos uma descrio sobre as principais camadas da arquitetura de referncia SOA: Primeiro, notamos uma camada de aplicaes compostas ou consumidores, que destinada para as interfaces de composio de servios da soluo. Aqui, temos nossas interfaces e aplicaes combinam servios e chamadas de processos da infra-estrutura; Logo abaixo, temos a camada de composio de negcios ou processos, onde orquestraes e workflows podem consumir servios ou tratar regras de negcio, de acordo com as necessidades da soluo; Na seqncia, temos acamada de servios atmicos ou de composio, que implementam as interfaces de servios propriamente ditas. Baterias de Web Services ou servios hospedados em servidores IIS so exemplos para essa camada; Suportando os servios acima, encontramos os componentes de servios que podem ser componentes legados, exportando funcionalidades existentes de nossa infra-estrutura;
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 10 de 22
Por ltimo, a camada de integrao ou legado (LoB Line of Business Application), onde encontramos nossos sistemas nativos, bancos de dados e solues existentes que pretendemos exportar para outras reas da empresa, por exemplo; Atendendo todas as camadas encontramos as bibliotecas comuns, necessrias para a manuteno, administrao e operao da soluo. Assim, vemos as camadas verticais do desenho, que implementam monitorao, autorizao, segurana, controle de acesso, auditoria, etc. So bibliotecas bsicas, construdas ao longo do projeto ou fornecidas por alguma ferramenta de operao de servios. Em muitos casos, barramentos de servios oferecem essas funcionalidades de forma nativa, economizando algum tempo de desenvolvimento para o projeto. Um fator de sucesso em muitos projetos de SOA tem sido a adoo de uma arquitetura de referncia, que posiciona corretamente as camadas e componentes da soluo. Em muitos casos, essa estruturao garante o respeito de interfaces de forma padronizada, assim como a coeso e responsabilidades previstas para cada camada, fornecendo o mnimo de organizao e facilidade de manuteno futura. A seguir, veremos alguns aspectos importantes de uma infra-estrutura orientada a servios, a chamada SOI Service Oriented Infrastructure.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 11 de 22
Figura 7 Principais capacidades de uma infra-estrutura de servios SOI Service Oriented Infrastructure. A figura ilustra algumas das principais capacidades presentes em uma infra-estrutura de servios, que atendem as necessidades de uma arquitetura SOA. Vejamos uma breve descrio de cada uma dessas capacidades a seguir: Gerenciamento de servios: um dos aspectos importantes de uma infra-estrutura de servios so os recursos para gerir o ciclo de vida de servios, que prev o gerenciamento de diferentes nveis de operao e a definio de atributos descritivos para cada servios implementado. Outro aspecto importante o registro de servios, que permite o mapeamento dos servios disponveis, facilitando a monitorao da sade de servios presentes, assim como o gerenciamento centralizado de excees; Monitorao de infra-estrutura: alm da monitorao especfica sobre o comportamento dos servios disponveis, a monitorao da infra-estrutura e funcionalidades de hardware so igualmente importantes; Consumidores de servios: para o consumo e chamadas das funcionalidades implementadas como servios, as solues de hoje dispem de dashboards, aplicaes em dispositivos mveis, aplicaes de composio, portais web, etc; Processos de negcios e Business Intelligence: coordenando os servios e funcionalidades implementadas, componentes de BI permitem a inspeo das mensagens e informaes trafegadas no ambiente.Da mesma forma, o gerenciamento de regras de negcio, workflows de processos e automao de processos de negcio oferece importantes ferramentas de administrao e anlise de informaes tratadas pela soluo; Barrramento corporativo de servios: mediao de servios, transformao de mensagens e validao de mensagens, assim como resoluo dinmica de servios, tratamento de itinerrios e mensageria so patterns de administrao importantes de uma soluo. Um dos principais aspectos do barramento de servios a padronizao das interfaces de consumo atravs de um ponto nico de acesso, o barramento, que responsvel pela resoluo de itinerrios e endpoints de servios disponveis; Componentes de mensageria de servios: entre os principais aspectos de mensageria e suporte de servios citamos a virtualizao de servios, o suporte a padres WS-*, adaptadores e sistemas legados, bindings, conectores e endpoins de servios. Federao de dados e Federao de identidades: um trao importante de uma infraestrutura de servios a capacidade de federao com outros ambientes, permitindo o relacionamento integrado a partir de dados e identidades reconhecidas e comuns. Esse mecanismos de integrao importante para uma maior transparncia entre funcionalidades de uma mesma soluo. Ferramentas de desenvolvimento: existem diversos recursos disponveis para a construo de uma infra-estrutura de servios, seja para a camada de interfaces, servios, processos, workflows ou funcionalidades adjacentes. Pacotes como fbricas de software para construo de servios, ferramentas para testes e modelagem de servios, assim como templates e patterns aplicveis so crticos para o sucesso de uma soluo. Governana e ferramentas de governana: finalmente, todo o ambiente de uma infraestrutura de servios exige cuidados especiais ao longo de sua operao e mesmo inspeo de funcionalidades. Ferramentas de governana so peas to importantes quanto os prprios containers de servios ou mesmo barramentos de servios dinmicos. A partir dessa descrio, podemos rever o diagrama de SOI em mais detalhes, como ilustrado a seguir:
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 12 de 22
Figura 8 Capacidades de uma infra-estrutura de servios SOI Service Oriented Infrastructure. A partir desse mapa de infra-estrutura, executamos os componentes bsicos de nossa soluo SOA: servios e processos.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 13 de 22
Um servio pode oferecer flexibilidade na escolha do protocolo de entrega e mecanismo de transporte; Um servio pode oferecer flexibilidade na escolha do ambiente de execuo do servio (hosting); Um servio envolve a definio de contratos de operao e contratos de mensagens; Das habilidades acima, talvez as mais importantes sejam a orientao a mensagens, assim como a padronizao de uma interface de exportao descrevendo claramente os contratos de operao e funcionalidades expostas. Com esses requisitos respeitados, comeamos a visualizar um dos grandes benefcios prometidos pela arquitetura de SOA, que o reuso. Por reuso entende-se a capacidade de aproveitar cdigo ou recursos de infra-estrutura j implementados no ambiente de TI, por outros departamentos ou sistemas da organizao. Com o foco no ambiente corporativo, o reuso envolve a reaproveitamento de investimentos j feitos, seja na construo de mdulos de sistema ou na compra de produtos especficos para a construo de uma soluo. O reuso de servios uma das promessas mais desejadas em arquiteturas orientadas a servios. Assim como servio um elemento importante nessa arquitetura, a orquestrao de servios ou a combinao de chamadas de servios em processos e workflows de deciso outro elemento comum que aparece numa arquitetura SOA. Muitas vezes, um cenrio de SOA nasce a partir de um cenrio de integrao de aplicaes, ou seja, um EAI Enterprise Application Integration. Ainda nesse artigo falaremos mais sobre cenrios de integrao. Para a construo de interfaces de servios, o .NET Framework 3.0 introduziu ao mercado o WCF Windows Communication Foundation que oferece um modelo de programao unificado para a construo de servios na plataforma Microsoft. A figura a seguir apresenta a anatomia de um servio em WCF, com seus principais componentes:
Figura 9 Anatomia de um servio em WCF Windows Communication Foundation. A partir da figura acima, notamos diversos componentes presentes no modelo de programao do WCF, a saber: Servio: componente de software que ir publicar mtodos e funcionalidades para outros componentes da soluo. O servio est hospedado em algum servidor ou motor de execuo especfico, alm de apresentar comportamentos definidos de acordo com a necessidade da aplicao; Cliente: componente de software que far as chamadas aos mtodos publicados pela interface WCF;
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 14 de 22
Mensagem: servios so orientados a mensagens, ou seja, suportam estruturas de dados bem definidas que so utilizadas durante as trocas de dados entre cliente e servidor. Cada mensagem est associada a um mtodo especfico ou funcionalidade, assim como os resultados esperados; ServiceHost: todo servio est associado a um host especfico, responsvel pelo ambiente de execuo previsto. possvel utilizar como host um servio Windows, o IIS Internet Information Server, o WAS Windows Activation Services, um servio domstico construdo pelo desenvolvedor, entre outros; A+B+C do WCF: para a configurao da comunicao entre cliente e servio, o WCF oferece trs componentes bsicos: o endereo do servio (A=address), o mecanismo de entrega de mensagens (B=binding) e o contrato de operao (C=contract); Address: o endereo do servio o componente de configurao que define o endereo de atendimento do servio. O cliente necessita conhecer o endereo do servio, para que seja feito o envio de mensagens para o disparo de mtodos; Binding: o binding do WCF responsvel pela configurao de transporte da comunicao entre cliente e servio. O .NET framework 3.x oferece uma srie de bindings pr-definidos, cada um responsvel por uma configurao de transporte especfica. Assim, existem bindings para transporte sobre HTTP, TCP, MSMQ, PIPES, etc. De acordo com a necessidade de desempenho, caractersticas de conectividade, sincronismo ou tratamento de mensagens, o arquiteto deve escolher o binding que melhor atende sua soluo; Contract: dentro dos conceitos A+B+C do WCF, o contrato o mapeamento de mtodos e parmetros previstos para a comunicao entre cliente e servio. Dos trs conceitos, o contrato o nico que exige a recompilao do servio em caso de alterao. Os demais permitem a configurao de forma dinmica; Behavior: cada servio pode implementar comportamentos especficos para um melhor atendimento da soluo alvo, como suporte a transaes, mltiplas-instncias, segurana, etc.; Proxy: para que o cliente tenha acesso aos mtodos descritos pelo contrato de servio e realize o envio de mensagens, necessita de uma descrio dos componentes A+B+C. Essa descrio feita em XML e chamada proxy, fazendo parte do arquivo de configurao da aplicao. Entre os componentes descritos destacamos o EndPoint, que fornecem parmetros para a identificao e acesso a um servio. Um exemplo de EndPoint dado a seguir: XML <endpoint address=http://localhost:57953/Service1.svc binding="wsHttpBinding" contract="ServiceReference1.IService1" name="MyEndPointName"> </endpoint> Listagem 1 Exemplo cdigo de endpoint para um servio em WCF. Atravs do trecho de cdigo XML acima, podemos identificar corretamente um servio exportado em nossa soluo, onde notamos o address, o binding e o contract para operao do servio em WCF. Uma mensagem entre um cliente e um servio WCF tipicamente uma estrutura de dados que dispara uma operao do lado do servio, gerando uma resposta para o chamador. Imagine uma mensagem enviada para um servio WCF implementado como um Web Service. O cdigo a seguir apresenta o trecho em SOAP/XML que forma essa mensagem: XML <s:Envelopexmlns:a="http://www.w3.org/2005/08/addressing" xmlns:s="http://www.w3.org/2003/05/soap-envelope"> <s:Header> <a:Actions:mustUnderstand="1">http://tempuri.org/IWorkflow1/GetData </a:Action>
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 15 de 22
<a:MessageID>urn:uuid:eeadf2ee-95e5-469f-8381-da0559fe8222</a:MessageID> <a:ReplyTo> <a:Address>http://www.w3.org/2005/08/addressing/anonymous</a:Address> </a:ReplyTo> </s:Header> <s:Body> <GetDataxmlns="http://tempuri.org/"> <value>123</value> </GetData> </s:Body></s:Envelope> Listagem 2 Exemplo de mensagem SOAP/XML mostrando o envelope de mensagem e contedo de uma requisio de cliente para consumo de um servio. A requisio acima ilustra uma mensagem tpica em protocolo SOAP, onde vemos o envelope SOAP e seus dois componentes: HEADER e BODY. Atravs do HEADER SOAP, definimos a identificao da mensagem e os campos de controle da requisio. No campo BODY SOAP temos a mensagem destinada ao servio, indicando o mtodo destino GetData(int param)assim como os parmetros envolvidos. Em nosso exemplo, notamos o parmetro value com o valor 123 como parmetro de entrada. A partir da execuo do mtodo GetData(..), obtemos uma nova mensagem de resposta em SOAP/XML. Um trecho da resposta SOAP enviada pelo servio apresentada abaixo: XML <s:Envelopexmlns:s="http://www.w3.org/2003/05/soap-envelope" xmlns:a="http://www.w3.org/2005/08/addressing" xmlns:u="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecu rity-utility-1.0.xsd"> <s:Header> </s:Header> <s:Bodyu:Id="_0"> <GetDataResponsexmlns="http://tempuri.org/"> <GetDataResult>123</GetDataResult> </GetDataResponse> </s:Body></s:Envelope> Listagem 3 Exemplo de mensagem SOAP/XML mostrando a resposta do servio para a requisio do cliente. Veja no campo BODY SOAP destacado acima que a resposta do servio obtida pelo campo GetDataResponse, com o valor de retorno GetDataResult igual a 123. Com esse exemplo simples percebemos que as mensagens entre clientes e servios respeitam uma srie de padres, permitindo uma maior clareza na integrao entre os participantes, assim como facilidades para a subscrio de mensagens, auditoria, rastreamento, versionamento, publicao e subscrio, etc. Na listagem 3 vemos o trecho de cdigo com a configurao do endpoint de servio, a interface de servio, definindo o contrato de operao IMyInterface e a implementao do servio, na classe MyService. Um dos principais benefcios oferecidos pelo WCF sem dvida a simplicidade do modelo de programao oferecido, o que garante maior velocidade na implementao de cdigo, assim como maior legibilidade e facilidade de manuteno no ambiente de desenvolvimento. A seguir, veremos outro componente do .NET framework importante para uma soluo de SOA, o workflow.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 16 de 22
Figura 10 Anatomia de um processo em WF, apresentando os principais componentes de arquitetura. A partir dessas funcionalidades, a Microsoft tem adicionado novas capacidades e templates ao Visual Studio, assim como nas novas verso do .NET Framework. Mais recentemente, o .NET 3.5 SP1 trouxe novos templates de projeto, ampliando as solues possveis para a camada de processos.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 17 de 22
A figura a seguir ilustra um desses novos templates de projeto, o Sequential Workflow Services Library, que permite a construo de um servio WCF atravs de atividades do WF, fornecendo uma maior agilidade no desenvolvimento de servios sofisticados:
Figura 11 Um servio WCF implementado em WF com o template Sequential Workflow Services Library. Na figura acima, note que o mtodo GetData implementado atravs de um workflow com trs atividades: codeActivity1, codeActivity2 e codeActivity3. O WF permite a construo de diagramas sequenciais de atividades, onde implementamos regras de negcio ou a coordenao de chamadas para outros workflows ou servios de uma soluo. O WF oferece tambm um conjunto completo de templates e caixas de atividades, suportando aes como atividades em paralelo, condies declarativas, escopo de transao, recuperao e compensao, entre outros. Atravs de templates de integrao WCF+WF, possvel a construo de solues de maneira simples e rpida, realizando chamadas para servios a partir de workflows ou implementando workflows como servios em WCF. O desenho a seguir ilustra alguns desses cenrios:
Figura 12 Exemplos de integrao entre servios WCF e processos WF. Na figura 12, vemos um cliente enviando mensagens para um workflow implementado na forma de um servio. Usando uma interface WCF, o workflow disparado com requisies enviadas atravs de seu EndPoint.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 18 de 22
Esse tipo de implementao facilmente obtido com templates do .NET 3.5 SP1, como o Sequential Workflow Service Library. Ainda, possvel a combinao de atividades de envio e recebimento de mensagens para servios WCF atravs de atividades como SendActivity e ReceiveActivity, como vemos na figura a seguir.
Figura 13 Atividades SendActivity e ReceiveActivity do .NET 3.5, para a integrao entre workflows WF e servios WCF. A partir de frameworks como WCF e WF, a plataforma Microsoft oferece ferramentas importantes para a construo de servios e workflows de forma programtica, sendo elementos bsicos de uma arquitetura de SOA. At este ponto, falamos de servios, infra-estrutura, implementao e recursos de uma plataforma de execuo disponibilizando funcionalidades para aplicaes de negcio. Surge ento a necessidade de consumir toda essa infra-estrutura e recursos com um tipo de aplicao conhecida como aplicao composta ou composite application.
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 19 de 22
Uma interface de composio deve utilizar patterns de composio para seus diversos componentes de tela; Uma interface de composio deve permitir o desenvolvimento simultneo de seus componentes, a partir de equipes distintas e isoladas se for preciso; Uma interface de composio deve suportar as novas necessidades de usabilidade e flexibilidade em interfaces UX, oferecendo facilidades de operao para seus usurios; Uma interface de composio deve tratar layouts dinmicos, suportando composio de funcionalidades tambm dinmicas; Uma interface de composio deve tratar pattens como eventos e subscrio de eventos, injeo de dependncias, redirecionamento de funcionalidades, entre outros;
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 20 de 22
Figura 14 Tela principal da implementao de referncia StockTraderRI, do pacote PRISM 2.0. Cada regio da interface implementada atravs de um mdulo independente, o que oferece grande flexibilidade para o desenvolvimento simultneo, assim como o atendimento dos principais requisitos de uma aplicao de composio. Finalmente, aproveitando os recursos de renderizao e representao de controles grficos obtidos com o WPF Windows Presentation Foundation e o XAML eXtensible Application Markup Language, uma interface implementada com o PRISM tambm pode navegar entre um alvo desktop (em WPF) e um alvo de projeto Web, implementado sobre Silverlight 2.0. Essa flexibilidade de compilao entre WPF e Silverlight obtida atravs do desacoplamento dos mdulos que implementam as funcionalidades e comportamentos de tela de nossa interface de composio. Como cada funcionalidade um projeto de mdulo independente, podemos criar uma nova interface principal (chamada Shell), compondo os mesmo mdulos, seja para desktop ou para web. De fato, o PRISM 2.0 um grande recurso da plataforma Microsoft para a construo de interfaces de composio e consumo de servios.
5. Consideraes finais
Software + Servios uma viso que envolve diversos aspectos de uma arquitetura baseada em servios, assim como o poder de escolha entre software local e software remoto. Essa combinao entre nveis de operao diferenciados, assim como a integrao entre infraestruturas locais (on-premise) e remotas (off-premise) fornece um novo cenrio de composio de recursos de TI para as empresas. Sem dvida, alguns recursos de TI sero alvo de um processo de comoditizao, tornando-se componentes plugveis conforme as necessidades da empresa. Como vimos ao longo do artigo, uma arquitetura software+servio envolve aspectos de SOA, SAAS e CLOUD COMPUTING, temas que ganham crescente importncia na definio de solues hoje em dia. Para o consumo das funcionalidades de uma arquitetura S+S, aplicaes de composio e recursos nativos do ambiente WEB2.0, como personalizao, interfaces dinmicas, navegao com usabilidade e riqueza de recursos adicionam funcionalidades para as aplicaes S+S. Essa capacidade de compor de forma dinmica, consumindo servios de infra-estruturas tambm dinmicas e provisionveis, permite um cenrio de TI mais aderente s necessidades de negcio. Vivemos um perodo de desafios econmicos, que ampliam o impacto de uma TI mais eficiente para os negcios, com a busca por reduo de custos, uso eficiente de recursos, otimizao de infra-estrutura e criao de novos produtos sobre a mesma soluo. Por isso, cabe ao arquiteto de solues conhecer e acompanhar essas vrias tendncias, assim como ferramentas e pacotes que facilitam a implementao de cenrios tpicos de uma TI dinmica.
6. Referncias
[1] The Long Tail, por Chris Anderson, July 2006. Ref.: http://pt.wikipedia.org/wiki/A_Cauda_Longa
1
[2] Architecture Strategies for Catching the Long Tail, por Frederick Chong and Gianpaolo Carraro, April 2006. Ref.: http://msdn.microsoft.com/pt-br/library/aa479069.aspx2 [3] Toward a Unified Ontology of Cloud Computing, por Lamia Youseff, Maria Butrico, Dilma Da Silva. Ref.: http://www.cs.ucsb.edu/~lyouseff/CCOntology/CloudOntology.pdf3
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 21 de 22
[4] Multi-Tenant Data Architecture, por Frederick Chong, Gianpaolo Carraro, and Roger Wolter Ref.: http://msdn.microsoft.com/pt-br/library/aa479086.aspx
4
[5] Introducing The Azure Services Platform An Early Look At Windows Azure, .Net Services, Sql Services, And Live Services, por David Chappell October 2008. Ref.: http://www.davidchappell.com/writing/white_papers/Azure_Services_Platform_v1.0-5 Chappell.pdf [6] Introducing Windows Azure, David Chappell, March 2008 Ref.: http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/ApresentandoPlataformaAzure.pdf6 [7] Composite Application Guidance for WPF and Silverlight, patterns&practices, Feb 2009. Ref.: http://compositewpf.codeplex.com/
7
7. Agradecimentos
Obrigado aos arquitetos Otvio Coelho , Markus Christen e Luciano Cond , pelos comentrios que ajudaram na concluso desse artigo.
8 9 10
8. Sobre o Autor
Waldemir Cambiucci trabalha na Microsoft Brasil como arquiteto de solues, com foco na comunidade de arquitetos e clientes corporativos. graduado em Engenharia de Computao, mestre em Engenharia Eltrica e Ps-Graduado em Finanas e Administrao. Com mais de 14 anos de experincia em TI, atua na Microsoft h 7 anos, tendo participado de projetos importantes no Brasil e no exterior. Possui as certificaes MCP, MCDBA, MCSA, MCSD, MCAD, MCP BizTalk 2006 e MSF. Voc pode encontrar maiores informaes sobre os assuntos aqui 11 tratados em seu blog: http://blogs.msdn.com/wcamb/ .
Tabela de Ligaes
1 2 3 4 5
http://www.davidchappell.com/writing/white_papers/Azure_Services_Platform_v1.0-Chappell.pdf http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/ApresentandoPlataformaAzure.pdf
7 8 9 6
10 11
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011
Pgina 22 de 22
http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx
28/03/2011