Вы находитесь на странице: 1из 22

Uma introduo ao Software + Servios, SaaS e SOA

Pgina 1 de 22

Uma introduo ao Software + Servios, SaaS e SOA


Waldemir Cambiucci Maio de 2009

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

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

2. A combinao do Software + Servio


Nesses ltimos anos, a Microsoft tem utilizado a expresso software+servio (S+S) para expressar sua estratgia sobre o uso de recursos locais e remotos, sobre uma mesma infraestrutura de TI. Essa viso tambm envolve os principais conceitos presentes hoje em dia no setor, como o SAAS Software as a Service, a Web 2.0 e uma arquitetura SOA. A figura 2 ilustra esses principais conceitos e servir de guia para nosso artigo, veja:

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

3. Entregando software como servio SaaS


Alguns especialistas afirmam que o mercado ao redor de SaaS envolve cifras em torno de US$ 5 bilhes. Ainda, de acordo com o Gartner Group, SaaS representou cerca de 5% do mercado total de software em 2005 e at 2011, dever representar 25% das vendas totais para o segmento corporativo. O uso de SaaS para a automao dos processos de negcio fim-a-fim, como ordens de pagamento para grandes empresas por exemplo, deve crescer ainda mais nos prximos anos. Porm, o que inicialmente era uma viso de negcio para a exposio de funcionalidades na forma de servios est se tornando uma opo real de publicao de funcionalidades tambm no ambiente corporativo, entre departamentos, atravs de infraestrutura local, remota ou na nuvem. Em poucas palavras, SaaS um software distribudo como um servio, implementado em plataforma web de forma nativa e acessado usando tecnologias e protocolos de internet. Do ponto de vista do usurio, um software que no instalado localmente na infra-estrutura do cliente (on-premise), mas utilizado atravs da web e pago pelo tempo de uso ou volume, por demanda. Desse modo, um software SaaS envolve mecanismos de tarifao e mtricas de uso ou billing. Ainda, um software que fornece uma API para acesso pela web, atravs de Web Services, interfaces REST, SOAP, entre outros protocolos. Um aspectos importante da arquitetura SaaS o envolvimento de uma infra-estrutura compartilhada entre diversos clientes, o que caracteriza um de seus grandes desafios de construo. Quando pensamos em SaaS, o conceito de multi-inquilino est presente. Ele referente ao uso do mesmo software e instncia por vrios clientes e empresas de forma simultnea. Em apresentaes sobre SaaS, o termo tenant utilizado para designar o inquilino, ou cliente que acessa o software pela web. O objetivo dessa abordagem disponibilizar os mesmos recursos de software para um nmero muito maior de clientes. E essa viso tem suas bases no conceito da "Cauda Longa".

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

Pgina 5 de 22

3.1 Cauda longa


Se voc ainda no leu o livro "The Long Tail : Why the Future of Business is Selling Less of More" (do autor Chris Anderson [1]), o primeiro passo para um entendimento do tema SaaS. Veja o desenho abaixo sobre a viso da Cauda Longa:

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.

3.2 O modelo de maturidade SaaS


A partir dos conceitos do SaaS, fica claro o impacto na construo de uma arquitetura baseada nesse modelo. Existem diversas necessidades de tecnologia e infra-estrutura que precisam ser atendidas para que essa viso seja suportada. Um modelo de maturidade SaaS apresentado a seguir, conforme discusso que encontramos no artigo "Architecture Strategies for Catching the Long Tail" de Frederick Chong e Gianpaolo Carraro [2]:

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

3.3 Uma plataforma como servio


De forma simplificada, podemos definir o cloud computing ou computao na nuvem como um ambiente de processamento e armazenamento de dados massivo, de alta escalabilidade e alta disponibilidade, acessvel via interfaces web como HTTP, REST e SOAP, instalado em datacenters de ltima gerao espalhados pelo mundo. Uma grande caracterstica desse modelo de computao o provisionamento elstico de computao: imagine um cenrio tpico de uma aplicao ASP.NET. Podemos iniciar a operao do sistema com 10 mquinas previstas para o front-end e back-end. Com o crescente volume de requisies devido uma campanha de marketing sobre o sistema, podemos contratar novas mquinas, passando para um cenrio de 20 mquinas para o front-end e back-end de forma dinmica, atravs da configurao do ambiente via um portal de administrao, por exemplo. Terminado o pico de utilizao e retornado o volume original de acesso, podemos simplesmente voltar para a configurao original de 10 mquinas, apenas atualizando o arquivo de configurao do ambiente na nuvem. Esse poder de configurao conhecido por computao elstica (ou elastic computing), onde o provisionamento feito de modo dinmico atravs de um modelo de descrio de infraestrutura que ser provisionada, conforme a demanda da aplicao. Ao mesmo tempo, novos modelos de contrao, subscrio de servios e licenciamento esto associados, onde a empresa pode pagar apenas pela infra-estrutura que realmente utiliza. Fazendo algumas contas, voc ver que o cenrio de computao na nuvem pode oferecer uma grande reduo nos custos de administrao e operao da TI nas empresas, o que tem explicado o interesse crescente de clientes e fornecedores de software, como a Microsoft. A computao na nuvem oferece o poder da alta escalabilidade e alcance global com os conceitos de software como servios oferecidos pelo SaaS. Recentemente, alguns trabalhos acadmicos j sugerem uma taxonomia para as aplicaes e recursos de uma plataforma na nuvem, como vemos na figura a seguir:

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

3.4 A computao na nuvem


Embora o termo Cloud Computing ou computao na nuvem seja baseado numa coleo de velhos e novos conceitos como SOA Service Oriented Architecture, computao distribuda (Grid Computing), virtualizao e modelos de entrega de software como servio, nesses ltimos anos temos visto um crescente interesse sobre o tema. Esse foco tem sido resultado pelo grande potencial de reuso de recursos e tecnologias atualmente colocadas em datacenters sub-utilizados. Em linhas gerais, podemos considerar que a computao na nuvem entrega um novo paradigma de computao, onde usurios e empresas utilizam de forma temporria um maior ou menor poder de processamento e armazenamento de uma infra-estrutura disponvel atravs da web, suprindo suas necessidades de infra-estrutura local, conforme a necessidade do negcio. Essa combinao entre poder de processamento escalvel e ilimitado com a potencial reduo de custo da operao local explicam o grande interesse de empresas e usurios no modelo de computao na nuvem. Esse o contexto de lanamento do Windows Azure, um sistema operacional para a nuvem, anunciado pela Microsoft no ltimo PDC 2008 Professional Developers Conference, em Los Angeles. O Windows Azure um sistema operacional que deve rodar sobre os vrios datacenters da Microsoft em construo pelo mundo. A partir de suas funcionalidades e servios, podemos mesmo classificar o Windows Azure como uma plataforma como servios, ou PaaS Platform as a Service. Entre as caractersticas presentes no Windows Azure destacamos sua natureza para o utility computing, onde diversos servios so oferecidos pelo sistema operacional para administrar e abstrair os recursos presentes no datacenter, como: Facilidade para expandir para novas localidades (geo-distribuio); Atualizao viva de novas funcionalidades de software; Aplicao de patches e correes de sistema operacional; Diagnstico e recuperao de falhas de hardware no prprio datacenter; Grande capacidade de armazenamento com alta disponibilidade; Lidar com o aumento de trfego; Diagnosticar e responder a falhas de servios; Alguns cenrios de aplicaes so especialmente aderentes ao modelo de computao na nuvem, como: SaaS LOB Applications, ou aplicaes linhas de negcio no modelo SaaS Software as a Services, oferecendo funcionalidades como servios. Alguns exemplos so CRM SaaS, HR SaaS, ERP SaaS, etc; Aplicaes Web Colaborativas, envolvendo diversos dispositivos e usurios com a manipulao de formatos de dados diversos; Aplicaes com Hub de dados compartilhados, envolvendo um volume crescente de dados compartilhados entre diversas empresas, como cenrios de cadeias de suprimentos, integrao entre empresas, etc; Aplicaes Web com Business Intelligence e Data Mining, com volumes crescentes de dados e armazenamento de informaes; Entre outras...

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

Pgina 9 de 22

4. Construindo arquiteturas orientadas a servios SOA


Quando falamos em SOA, destacamos aqui duas palavras-chave: composio e federao. A composio compreende a agregao de servios e workflows participantes de uma arquitetura SOA, permitindo a combinao de chamadas chamadas para servios diversos, assim como a coordenao de processos participantes de uma aplicao. A federao compreende a integrao de diferentes arquiteturas de servios, atravs de recursos como federao de identidades, compartilhamento de recursos e reas de armazenamento comuns ou por colaborao entre os participantes. Para posicionar os vrios elementos de uma viso de SOA que colaboram para o consumo, agregao e coordenao de servios, vejamos uma arquitetura de referncia proposta pela Microsoft.

4.1 Arquitetura de Referncia SOA


Uma arquitetura de referncia normalmente apresentada como um diagrama ou desenho que orienta o arquiteto de solues e desenvolvedores na construo das diversas camadas e componentes de uma soluo. Durante o evento SOA & Business Processes Conference 2007, realizado em Redmond, USA, a Microsoft apresentou para o mercado uma arquitetura de referncia para projetos de SOA, como uma proposta para a organizao de camadas e servios, como vemos na figura abaixo:

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

4.2 Capacidades de uma infra-estrutura de SOA


Considerando uma soluo baseada em servios, uma questo importante que aparece a hospedagem destes componentes, assim como sua administrao, segurana, controle, versionamento, governana, entre outros aspectos de infra-estrutura da soluo. Surge ento o conceito de SOI Service Oriented Infrastructure, que envolve os principais aspectos de administrao do ambiente de servios disponveis em nossa TI. Na plataforma Microsoft, existem diferentes tipos de hospedagem de servios, oferecendo benefcios e limitaes prprias. Da mesma forma, podemos organizar os diferentes recursos e camadas da arquitetura SOA, posicionando seus componentes fsicos de acordo com a arquitetura de referncia SOA apresentada anteriormente. A figura a seguir ilustra as principais capacidades de uma infra-estrutura orientada a servios, implementando a viso da arquitetura de referncia SOA.

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

4.3 Camada de servios com WCF


Quando pensamos sobre os fundamentos de uma arquitetura SOA passamos obrigatoriamente pelo conceito de servio. Porm, quando falamos em servio, uma srie de questes aparece, como: O que um servio? Quais so os patterns para criao e consumo de servios? Quais os mecanismos de conexo, transporte de mensagens e comunicao entre servios? Quais funcionalidades sero implementadas como servios? Como aproveitar os investimentos existentes em nossa infra-estrutura de TI? Como publicar os servios gerados para outros departamentos e sistemas? Como consumir os servios gerados de maneira padronizada? Como administrar os servios em produo? O que governana de servios mesmo? Esse conjunto de questes determinante para o sucesso ou o fracasso de um projeto de SOA. Ao longo deste artigo, vamos passar pelas respostas para algumas dessas questes. Para comear, vamos definir o que um servio. Podemos definir um servio como um componente de software que permite o consumo e a combinao de funcionalidades, respeitando algumas caractersticas importantes como: Um servio orientado a mensagem; Um servio pode ser autnomo ou composto por outros servios encadeados; Um servio garante o desacoplamento entre cliente e funcionalidades. Em alguns cenrios, esse desacoplamento envolve uma abordagem assncrona na integrao entre cliente e servios, ou o uso de mensageria atravs de filas e mecanismos de entrega de mensagens;

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

Pgina 16 de 22

4.4 Camada de processos com WF


Podemos definir um workflow como um conjunto de atividades que coordena pessoas e/ou software, organizadas em alguma forma de fluxo de trabalho. Um workflow pode ser representado como um diagrama de fluxo (tambm chamado de flowchart) ou como um diagrama de estado, implementando atividades baseadas em transies de estados. Introduzido com o .NET 3.0, o WF Windows Workflow Foundation oferece um ambiente para a construo e execuo de workflows de diferentes tipos, permitindo a criao de processos e orquestrao de chamadas, resolvendo problemas comuns na implantao de processos em sistemas .NET. Entre os principais elementos da arquitetura WF destacamos: Visual Designer: mdulo grfico responsvel pela construo e composio de atividades. O Visual Designer aparece como principal recurso para a construo de workflows dentro do Visual Studio 2008; Base Activity Library: atividades Out-of-box ou fora-da-caixa, que so base para a construo de workflows sofisticados. Ainda, o WF suporta a extenso da Base Activity Library, conforma a necessidade em cenrios mais complexos; Runtime Engine: Gerenciamento de Workflowe estados de execuo, coordenando a execuo das vrias atividades de um workflow; Runtime Services: Camada de comunicao e conectividade entre workflows e servios associados a um processo; A figura a seguir apresenta esses principais componentes da arquitetura do WF, como oferecido pelo .NET 3.0 e superior:

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

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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.

4.5 Construindo aplicaes compostas Web 2.0


Quando falamos em aplicaes de composio passamos por uma srie de patterns que garantem a construo de layouts dinmicos, combinando recursos de diferentes fontes de dados e servios numa mesma interface. Como resultado da Web 2.0, tecnologias como mashups e aplicaes RIA Rich Internet Application esto cada vez mais presentes em nosso dia-a-dia, oferecendo uma maior navegabilidade e usabilidade, no s em aplicaes Web mas tambm em interfaces desktop. A construo de interfaces tambm tem evoludo ao longo do tempo. Passamos de cenrios monolticos, para os modelos cliente/servidor com mltiplos documentos (MDI Multi-Document Interface) e formulrios at interfaces Web com recursos ricos, como streaming, apresentao de imagens, udios, vdeos, animaes, controles grficos sofisticados, etc. Entende-se por uma aplicao de composio um conjunto de patterns que permite a construo de uma interface dinmica, que possui componentes grficos ou de composio em tela, permitindo que cada parte do layout seja desenvolvida em separado, simultaneamente, sendo possvel sua substituio conforme a necessidade, sem impacto para os demais componentes da interface. Esse tipo de comportamento altamente desejado quando nossas aplicaes buscam capacidades de personalizao dinmica, suporte a constantes mudanas nas funcionalidades da aplicao ou ainda, rpida implementao de novos cenrios de negcio atendidos pela soluo. Alguns desafios encontrados em aplicaes compostas so apresentados a seguir: Uma interface de composio deve suportar diferentes fontes de dados e servios;

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

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;

4.6 Composite Application Guidance for WPF and Silverlight


Para facilitar a construo de aplicaes de composio, a Microsoft aproveitou o WPF Windows Presentation Foundation e lanou entre 2005 e 2006 uma srie de bibliotecas chamadas Smart Client Composite UI Application Block, ou CAB Composite Application Block. O pacote CAB permitia a construo de interfaces de composio atravs de uma biblioteca sobre o WPF, oferecendo uma srie de patterns implementados para contemplar os principais desafios e exigncias de uma interface de composio. A partir da experincia com as primeiras aplicaes CAB, a Microsoft lanou em abril de 2008 o pacote Smart Client Software Factory SCFS, uma fbrica de software (ou software factory) que permitia a gerao automtica de interfaces respeitando o modelo de composio. Relembrando, uma fbrica de software consiste de um guia de automao especfico, que realiza a gerao de cdigo automtico, a partir de templates previamento definidos (os chamados artefatos). Finalmente, como terceira gerao de recursos para a construo de aplicaes de composio, a Microsoft lanou em julho de 2008 o Composite Application Guidance for WPF and Silverlight verso 1.0, com uma atualizao para a verso 2.0 em fevereiro de 2009. O Composite Application Guidance for WPF and Silverlight (conhecida tambm pelo nome PRISM) uma biblioteca de templates e patterns criada pelo time do patterns&practices, oferecida gratuitamente pela Microsoft para a construo de aplicaes de composio. Assim como o pacote CAB, o Composite Application Guidance uma biblioteca, no uma fbrica de software, oferecendo assim uma organizao de templates e patterns que podemos utilizar para a construo de interfaces na camada de apresentao. O pacote PRISM 2.0 oferece uma srie de recursos para o desenvolvedor, alm da prpria Composite Application Library, como: Uma implementao de referncia (StockTraderRI); 9 Quick starts de exemplos, 26 guias e How-Tos para estudo de conceitos; Vrios documentos sobre patterns de interfaces e arquiteturas clientes. A figura a seguir apresenta a tela da implementao de referncia StockTraderRI, que oferecida com o pacote PRISM 2.0 (de fevereiro de 2009), veja:

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

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

Uma introduo ao Software + Servios, SaaS e SOA

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://pt.wikipedia.org/wiki/A_Cauda_Longa http://msdn.microsoft.com/pt-br/library/aa479069.aspx http://www.cs.ucsb.edu/~lyouseff/CCOntology/CloudOntology.pdf http://msdn.microsoft.com/pt-br/library/aa479086.aspx

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

http://compositewpf.codeplex.com/ http://blogs.msdn.com/otavio/ http://blogs.technet.com/markuschristen/ http://blogs.msdn.com/conde/ http://blogs.msdn.com/wcamb/

10 11

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Uma introduo ao Software + Servios, SaaS e SOA

Pgina 22 de 22

2011 Microsoft. Todos os direitos reservados.

http://msdn.microsoft.com/pt-br/library/dd875466(d=printer).aspx

28/03/2011

Вам также может понравиться