Você está na página 1de 384

2009

ebook Arquitetura de Solues


Uma coletnea dos principais assuntos tratados no blog http://blogs.msdn.com/wcamb/
Confira aqui os principais temas ligados arquitetura de solues e plataforma Microsoft, discutidos nesses ltimos anos com a comunidade de arquitetos atravs do blog Arquitetura de Solues

Waldemir Cambiucci
Arquiteto de Solues

ebook Arquitetura de Solues


por Waldemir Cambiucci. Copyright 2009

eBook Arquitetura de Solues v1.0.


Outubro, 2009. Todos os direitos reservados. Nenhuma parte deste ebook pode ser reproduzida ou transmitida em qualquer forma ou meio sem a permisso do autor. Outras edies e artigos online sobre o mesmo tema podem ser disponibilizadas. Para maiores informaes, por favor, visite o blog http://blogs.msdn.com/wcamb/. Aviso: as opinies colocadas neste ebook so minhas e pessoais e no expressam necessariamente as opinies de meus empregadores, parceiros e amigos.

Prefcio
Ol pessoal, tudo certo? A frase acima foi muito usada nesses ltimos dois anos de blog Arquitetura de Solues (HTTP://blogs.msdn.com/wcamb/), no verdade? Pois , em 1 de outubro de 2009 o blog completou dois anos, tendo servido de guia e quase um dirio de bordo para muitas reunies, mesas redondas com arquitetos, eventos e planejamentos com empresas do mercado dos quais participei. Ao longo desse tempo, diversos assuntos foram destaques no blog, como orientao a servios, SOA (Service Oriented Architecture), SaaS (Software as a Service), interoperabilidade, modelos de maturidade, recursos da plataforma Microsoft, frameworks de desenvolvimento, DSLs (Domain Specific Language), produtividade, entre outros. Conversando com alguns arquitetos e profissionais do mercado, surgiu a idia de consolidar os principais temas tratados no blog, para uma consulta off-line facilitada. E assim surgiu este ebook, reunindo os principais temas publicados. Foram mais de 250 posts e vrios artigos que agora apresento para vocs de forma organizada e agrupados em captulos, falando sobre assuntos que tiveram impacto na conduo de projetos ou discusses de arquitetura nesses ltimos anos. Sempre que possvel procurei seguir uma ordem cronolgica de publicao dos posts, reunidos por assunto. Espero que gostem! E como toda iniciativa online, esse ebook tambm est vivo, recebendo sugestes, correes e comentrios que os leitores acharem importante. Procurei aproveitar apenas os posts principais, que apresentaram tpicos conceituais importantes ou links mais recentes. Os prximos dois anos do blog Arquitetura de Solues j comearam! Por enquanto s! At o prximo post

Waldemir Cambiucci Arquiteto de Solues http://blogs.msdn.com/wcamb | http://twitter.com/wcamb

ndice
Prefcio ......................................................................................................................................................... 3 Captulo 1 .................................................................................................................................................... 10 Arquitetura Orientada a Servios (SOA Service Oriented Architecture).............................................. 10 Microsoft BizTalk ESB Toolkit 2.0 ........................................................................................................ 11 Capacidades de servios e produtos da plataforma Microsoft .......................................................... 12 Links e recomendaes para o desenvolvimento de servios ............................................................ 14 Recomendaes gerais para a construo de servios ....................................................................... 17 Enterprise Service Bus (ESB) : barramento de servios e seus desafios ............................................. 19 Arquitetura de servios e capacidades de SOA na plataforma Microsoft .......................................... 22 Service-Oriented Architecture e Modelos de Maturidade - Revisitando o assunto... ........................ 24 Interoperabilidade e Comunicao na plataforma Microsoft : o que e quando usar? ...................... 28 Interoperabilidade e Comunicao na plataforma Microsoft ............................................................ 30 Roadmap Oslo: foco na arquitetura SOA e nas aplicaes compostas - Parte 1 ................................ 33 Arquitetura de referncia para orientao a servios ........................................................................ 34 Integrando WCF e WF - Uma alternativa para a composio de servios numa arquitetura SOA..... 36 Captulo 2 .................................................................................................................................................... 40 Software como Servios SaaS (Software as a Service) ............................................................................ 40 SaaS - Software as a Service - Uma viso sobre o software como servio ......................................... 41 Azure Issue Tracker : um exemplo de aplicao SaaS na nuvem........................................................ 46 Captulo 3 .................................................................................................................................................... 48 WCF Windows Communication Foundation ........................................................................................ 48 Cenrios de implementao de servios com WCF - Parte 1: Aspectos de SOA ................................ 49 Cenrios de implementao de servios com WCF - Parte 2: Web Services Corporativos ................ 52 Cenrios de implementao de servios com WCF - Parte 3: Servios para Web 2.0........................ 57 Cenrios de implementao de servios com WCF - Parte 4: Servios para Intranet ........................ 61 Cenrios de implementao de servios com WCF - Parte 5: Servios com Filas de Mensagens ...... 67

5 Cenrios de implementao de servios com WCF - Parte 6 : Servios para Workflow .................... 70 Captulo 4 .................................................................................................................................................... 72 Windows Azure e seus recursos ............................................................................................................. 72 Azure Services Platform : Uma nova srie que comea ..................................................................... 73 Azure Services Platform : seu primeiro "Hello Cloud" para o Windows Azure. ................................. 73 Azure Services Platform : um pouco mais sobre o Windows Azure. .................................................. 79 Azure Services Platform : CTP de Janeiro j publicado. ...................................................................... 83 Azure Services Platform : falando sobre dados na nuvem. ................................................................ 84 Azure Services Platform : falando sobre servios e workflows na nuvem. ........................................ 88 Azure Services Platform : falando sobre Live Services, Live Framework e Live Mesh ........................ 92 Azure Services Platform : falando sobre "Geneva" e a integrao entre a nuvem e o enterprise. .... 99 Azure Services Platform : Uma srie que termina... ......................................................................... 104 Aplicaes na nuvem: um estudo de caso para Aplicaes Web Colaborativas. ............................. 105 Azure Services Platform: Novos CTPs anunciados. .......................................................................... 108 Windows Azure Internals: Uma reviso de conceitos. ..................................................................... 109 Azure Application Monitor e WFP Client for Windows Azure .......................................................... 113 Links e CTPs para o Windows Azure ................................................................................................ 115 Azure Issue Tracker: integrao entre o enterprise e a nuvem ........................................................ 116 Templates de aplicaes Live: usando os recursos do Live Services, Live Framework e Windows Live .......................................................................................................................................................... 119 Projetos do SQL Azure Database Labs .............................................................................................. 122 Windows Azure SDK & Tools : CTP de Julho j est no ar! ............................................................... 124 Novidades no CTP de Julho para o Windows Azure ......................................................................... 126 Windows Azure Platform Training Kit : Update de agosto no ar!..................................................... 132 SQL Azure CTP de Agosto no ar!!!..................................................................................................... 132 Artigos, training kits, samples e demos para o Windows Azure ....................................................... 133 Atualizao de projetos para o Windows Azure no CodePlex .......................................................... 135 SQL Azure Migration Wizard ............................................................................................................. 136 Windows Azure Service Management API Reference ...................................................................... 140 Captulo 5 .................................................................................................................................................. 142 Persistncia de dados, Entity Framework e LINQ ................................................................................. 142 Leitura Recomendada: artigos sobre Entity Framework .................................................................. 143

6 Construindo solues com Entity Framework e arquitetura em mltiplas camadas. ...................... 145 ADO.NET Entity Framework : novos providers esto chegando ....................................................... 147 Entity Framework FAQ : atualizado e com novas questes.............................................................. 150 Revisitando a Persistncia - ORM, ADO.NET Entity Framework, Data Services, Sync, LINQ e ainda outros comentrios. .......................................................................................................................... 151 Revisitando a Persistncia - LINQ, Entity Framework, Object-relational mapping, entre outros. ... 154 Captulo 6 .................................................................................................................................................. 160 Evoluindo o Windows DNA ................................................................................................................... 160 Do Windows DNA para o mundo orientado a servios : cada caso um caso? ............................... 161 Do Windows DNA para o mundo orientado a servios : uma proposta para estudo. ...................... 164 Do Windows DNA para o mundo orientado a servios : a viso Software + Servio e a Cloud Computing. ........................................................................................................................................ 168 Captulo 7 .................................................................................................................................................. 171 Posts de opinio .................................................................................................................................... 171 Sesses Back to Basics? Por que no? .............................................................................................. 172 Pensando na evoluo da TI de uma empresa. ................................................................................ 173 Qual a importncia de um arquiteto?............................................................................................... 175 O ritmo da inovao e o papel do arquiteto ..................................................................................... 177 Estudo de caso : um mapa para decises de projeto ....................................................................... 179 Leitura Recomendada: The Architecture Journal #20 e o papel do arquiteto ................................. 185 Captulo 8 .................................................................................................................................................. 187 Identidade e Segurana ........................................................................................................................ 187 Windows Identity Foundation (WIF) e o Claims based Authenticaion & Authorization (CBA) ........ 188 Captulo 9 .................................................................................................................................................. 193 Aplicaes Compostas .......................................................................................................................... 193 Do PIC ao PRISM, do DOS ao Azure o tempo no para! :) ............................................................. 194 Aplicaes Compostas com o Prism v2.0 : Um "Hello World" para comear. .................................. 196 Composite Application Guidance for WPF and Silverlight 2.0 Final Fev.2009 ............................... 201 patterns & practices: Composite WPF and Silverlight - Prism V2 - Drop 10 ..................................... 204 Composite Application Guidance for WPF v2.0 Drop 6 .................................................................... 205 patterns & practices : Composite Application Guidance for WPF (New Release) ............................ 206 patterns & practices: Composite Application Guidance for WPF ..................................................... 206

7 Composite Application Guidance for WPF (PRISM) .......................................................................... 207 Composite Application Guidance for WPF - Parte 1 ......................................................................... 209 Composite Application Guidance for WPF - Parte 2 ......................................................................... 212 Captulo 10 ................................................................................................................................................ 217 OBA Office Business Application ........................................................................................................ 217 OBA Composition Reference Toolkit - No caminho das aplicaes compostas. .............................. 218 OBA Central e consideraes sobre Aplicaes Compostas. ............................................................ 222 OBA Office Business Application : A ltima fronteira. ...................................................................... 224 Captulo 11 ................................................................................................................................................ 226 Windows 7 e seus recursos ................................................................................................................... 226 Windows 7 e Windows Server 2008 R2 : links e recursos interessantes .......................................... 227 Links para uma instalao sobre o Windows 7 Enterprise RC .......................................................... 231 ACT Application Compatibility Toolkit 5.5 Avaliao de aplicaes para o Windows 7 ............. 233 Captulo 12 ................................................................................................................................................ 236 .NET RIA Services................................................................................................................................... 236 Microsoft .NET RIA Services May 2009 Preview ............................................................................... 237 .NET RIA Services CTP Roadmap ....................................................................................................... 241 HelloWorld com o .NET RIA Services ................................................................................................ 242 Mais recursos do .NET RIA Services CTP Maio 2009 ......................................................................... 250 Microsoft .NET RIA Services July 2009 Preview ................................................................................ 255 Microsoft .NET RIA Services CTP July 2009 : Algumas mudanas com o Silverlight 3 final .............. 257 Captulo 13 ................................................................................................................................................ 262 Domain Specific Language (DSL) ........................................................................................................... 262 Algumas palavrinhas sobre Domain-Specific Language (DSL) .......................................................... 263 Captulo 14 ................................................................................................................................................ 266 Frameworks de Desenvolvimento ........................................................................................................ 266 Frameworks de desenvolvimento e blocos de aplicao ................................................................. 267 Desafios na Construo de Frameworks - Algumas idias................................................................ 269 Desafios no mercado brasileiro e algumas aes da Microsoft ....................................................... 272 .NET Framework e seus recursos : evoluir preciso... ..................................................................... 278 Software Factory e Domain Specific Language - Uma discusso sobre modelagem. ....................... 281 Evoluindo frameworks domsticos: por onde comear? ................................................................. 284

8 Captulo 15 ................................................................................................................................................ 288 Guia de Automao e produtividade com o GAT/GAX ......................................................................... 288 Guidance Automation Toolkit, Software Factory, Domain-Specific Languages e outros assuntos. . 289 Project Template e Item Template - Customizaes no ambiente de desenvolvimento ................. 291 Guidance Automation Toolkit - Customizaes no ambiente de desenvolvimento ........................ 295 Visual Studio 2005 SDK Version 4.0 - Customizaes no ambiente de desenvolvimento. ............... 300 Captulo 16 ................................................................................................................................................ 305 Arquitetura de Solues ....................................................................................................................... 305 Pervasive Computing - Uma realidade para os prximos anos. ....................................................... 306 Programao Paralela com DryadLINQ ............................................................................................. 308 Um universo de material para estudo.. ............................................................................................ 310 Sculpture 1.0 Final : uma ferramenta de automao sobre o GAT/GAX .......................................... 314 S+S Day : o SWOT Analysis e o trade-off entre controle e economia de escala ............................... 318 Arquitetura de solues e a organizao de componentes.............................................................. 320 Gramticas, Linguagens e Compiladores: um retorno s bases. ...................................................... 321 Algumas idias para discutir uma arquitetura. ................................................................................. 324 Um mal necessrio ou um elemento estratgico? Como voc considera sua TI? ........................... 326 Captulo 17 ................................................................................................................................................ 332 Patterns & Practices e a Enterprise Library .......................................................................................... 332 Hands-On Labs for Enterprise Library 4.1 March 2009 .................................................................. 333 Security Application Block com a EntLib 4.1 ..................................................................................... 337 Enterprise Library Configuration com a EntLib 4.1 ........................................................................... 341 patterns & practices : Application Architecture Guide 2.0 ............................................................... 343 patterns & practices : Improving Web Services Security .................................................................. 344 Leitura Recomendada: Performance Testing Guidance for Web Applications (e o Azure?) ............ 345 Captulo 18 ................................................................................................................................................ 346 Artigos publicados na revista Mundo .NET ........................................................................................... 346 Revista Mundo .Net : Construindo aplicaes para o Windows Azure ............................................ 347 Construindo aplicaes para o Windows Azure ............................................................................... 347 Revista Mundo .Net : Plataforma de Servios do Windows Azure ................................................... 362 Plataforma de Servios do Windows Azure ...................................................................................... 362 Revista Mundo .Net : Computao na Nuvem com Windows Azure ............................................... 374

9 Introduo ao Windows Azure ......................................................................................................... 374 Sobre o autor ............................................................................................................................................ 384

10

Captulo 1
Arquitetura Orientada a Servios (SOA Service Oriented Architecture)

Um dos grandes temas em arquitetura de solues atualmente a orientao a servios. Diversas empresas possuem iniciativas para a organizao de uma TI orientada a servios, oferecendo funcionalidades de suas aplicaes atravs de interfaces padronizadas e bem definidas, consumidas atravs de mensagens e contratos de servios. Neste captulo, voc confere alguns dos principais posts sobre Arquiteturas Orientadas a Servios (SOA), assim como seus principais aspectos e concluses.

11

Microsoft BizTalk ESB Toolkit 2.0


Ol pessoal, tudo certo? Para quem tem acompanhado as discusses sobre servios, SOA, SOI e ESB que eu e o Markus temos feito, temos uma boa novidade essa semana: acaba de ser anunciado o novo pacote Microsoft BizTalk ESB Toolkit 2.0. Anteriormente, esse pacote era conhecido como ESB Guidance 2.0, sendo apresentado por aqui no blog em alguns posts, veja aqui! Entre as novidades do novo pacote temos a aderncia aos patterns da Enterprise Library 4.1, assim como a consolidao dos principais patterns de integrao, mensageria e roteamento de mensagens, como esperado para o atendimento de um barramento corporativo com composio de servios. A figura a seguir ilustra os principais componentes do ncleo do ESB Toolkit 2.0, veja:

No deixe de acompanhar o blog do Markus Christen, que tem preparado bons posts e guias com exemplos sobre a infra-estrutura ESB 2.0. Para saber mais sobre ESB e o novo lanamento, veja o link abaixo: Microsoft BizTalk ESB Toolkit 2.0 Ref.: http://msdn.microsoft.com/en-us/dd876606.aspx O pacote est disponvel no link a seguir:

12

Download BizTalk ESB Toolkit 2.0 Ref.: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=bc86cf1eef29-4b19-95f7-388f64555090 Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, June 09, 2009

Capacidades de servios e produtos da plataforma Microsoft


Ol pessoal, tudo certo? Ao longo dessas semanas, tenho falado sobre orientao a servios e alguns desafios reais que ocorrem nesse tipo de desenvolvimento e arquitetura. Quando pensamos em questes como autenticao, autorizao, instrumentao, suporte a transao, tratamento de exceo, etc., vemos o quanto uma abordagem de servios possui as mesmas necessidades de uma arquitetura de software baseada em componentes ou mesmo outros cenrios de solues. Ferramentas como a Enterprise Library 4.1 so to importantes para SOA quanto para aplicaes Web em ASP.NET tradicional, por exemplo. Semana passada, aproveitei um post para citar algumas recomendaes sobre o cho-defbrica. Hoje, gostaria de chamar a ateno para o mapa de produtos da plataforma Microsoft. Pensando numa arquitetura de referncia de servios e algumas capacidades principais, temos o seguinte desenho:

13

Vemos acima os grupos de capacidades de Consumo de servios, Composio e Interao, Composio e Transao e Exposio de Funcionalidades, onde destacamos as principais capacidades:

Servios de Apresentao Servios de Colaborao Servios de Interao Servios de Processos Servios de Dados Servios de Conectividade

Veja ainda uma srie de capacidades de administrao (ao lado), como gerenciamento, segurana, governana, BI, anlises de negcio, etc. A partir do modelo acima, podemos posicionar nossos componentes de servios de acordo com as necessidades de nosso negcio. Existem ainda outras questes associadas, como granularidade de servios, anlise de domnios envolvidos, templates para cada tipo de implementao, etc. Usando esse mesmo mapa de servios, gostaria de propor um mapa de produtos atuais da plataforma Microsoft, para atender cada camada acima:

Assim, teramos (a grosso modo):


Camada de Apresentao: SharePoint Server, Siverlight, Office System, ASP.NET, Windows Client, Composite Application Guidance for WPF and Silverlight. Camada de Colaborao: Office Communication Server, SharePoint Server. Camada de Interao: SharePoint Server, WF Camada de Processos: BizTalk Server, WF Camada de Dados: BizTalk Server, SQL Server Camada de Conectividade: BizTalk Server, WCF

14

Ao mesmo tempo, pacotes como System Center, MOF, Active Directory, ESB Guidance e solues de terceiros oferecem recursos e ferramentas para as atividades de administrao do ambiente. Vemos que cada produto MS pode atender mais de uma camada ou conjunto de capacidades presentes numa viso de servios. Ao mesmo tempo, quando pensamos em frameworks como WCF e WF, a implementao por nossa conta, isto , construmos os componentes de servios (WCF) e workflow (WF) a partir de templates disponveis no Visual Studio, conforme nossa necessidade de customizao e desenvolvimento. Usando pacotes completos como BizTalk Server e SharePoint Server, aproveitamos os recursos integrados oferecidos pelo ambiente, o que economiza dezenas de horas de desenvolvimento. Por exemplo, podemos implementar cenrios de servios customizados com WCF, que disponibilizam informaes de notcias para uma certa empresa. Porm, se nossa soluo exige a exportao dessas mensagens para uma srie de ambientes diferentes, exigindo transformaes de mensagens diversas, um motor baseado em BizTalk com seus recursos de mapeamento e transformao passa a ser interessante. Em resumo, importante conhecer as capacidades de cada produto, tecnologias e frameworks disponveis no momento de deciso de cada camada de uma arquitetura de servios. Podemos dizer que no existe um nico produto ou tecnologia que atenda todos os cenrios possveis, de BPM a workflows, de servios a web services. Cada cenrio apresenta necessidades especficas que precisam ser identificadas e corretamente atendidas. Por ltimo, vale notar que o desenho acima baseado apenas nas principais capacidades de cada produto. Existem cenrios que podem aproveitar os produtos de diversas maneiras, compondo seus recursos e funcionalidades conforme a realidade de cada empresa. Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, May 19, 2009

Links e recomendaes para o desenvolvimento de servios


Ol pessoal, tudo certo? Essa semana tive algumas reunies com empresas e arquitetos, falando sobre ferramentas importantes para projetos envolvendo servios, web services e aplicaes de composio. Vamos aproveitar o post para citar os principais pacotes disponveis, que ajudam no processo de desenvolvimento de uma soluo orientada a servios.

15

1) Enterprise Library 4.1 - October 2008 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B5293E41584B6CE5&displaylang=en A Enterprise Library 4.1 oferece um conjunto de blocos de aplicao e bibliotecas que atendem questes bsicas da infra-estrutura de software, como: Caching Criptografia Acesso a Dados Tratamento de Exceo Interceptao de chamadas Logging, auditoria Segurana Validao, entre outros. Sem dvida, um pacote muito importante para consulta e uso durante o projeto. Veja mais aqui: http://blogs.msdn.com/wcamb/archive/2009/04/17/enterprise-libraryconfiguration-com-a-entlib-4-1.aspx 2) Hands-On Labs for Enterprise Library 4.1 March 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2B40C-7867D99D4B6A&displaylang=en O Hands On Labs (HOL) da Enterprise Library 4.1 um pacote obrigatrio para quem est iniciando seus primeiros passos com a biblioteca. Os laboratrios so muito bons, permitindo um excelente estudo sobre cada pacote. Veja mais aqui: http://blogs.msdn.com/wcamb/archive/2009/04/13/hands-on-labs-for-enterpriselibrary-4-1-march-2009.aspx 3) patterns & practices Application Architecture Guide 2.0 Ref.: http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586 Esse documento o guia de arquitetura em plataforma .NET. Leitura obrigatria sobre aplicaes Web e arquiteturas de referncia Web. Veja mais aqui: http://blogs.msdn.com/wcamb/archive/2008/12/19/patterns-practicesapplication-architecture-guide-2-0.aspx 4) patterns & practices : Improving Web Services Secutiry Ref.: http://www.codeplex.com/WCFSecurityGuide/Release/ProjectReleases.aspx?ReleaseId=15892

16

Esse documento fala sobre os principais aspectos de segurana para Web Services e servios em WCF. Questes sobre autenticao, autorizao, impersonation, etc. so bem tratadas nesse documento. Leitura importante! Veja mais aqui: http://blogs.msdn.com/wcamb/archive/2008/11/05/patterns-practices-improvingweb-services-security.aspx 4) Composite Application Guidance for WPF and Silverlight Prism 2.0 Ref.: http://compositewpf.codeplex.com/ Esse velho conhecido oferece uma biblioteca para a construo de aplicaes de composio em WPF e Silverlight 2.0. Para isso, o Prism oferece uma biblioteca que permite que mdulos independentes sejam construdos e integrados na mesma interface de aplicao, dinmica e composta. Cada mdulo pode consumir funcionalidades e servios de fontes diferentes. A implementao de referncia STOCK TRADER que vem com o Prism 2.0 j oferece um bom comeo e exemplo de aplicao. Confira! E sobre pacotes de instalao para aplicaes Web, o recente: 6) Microsoft Web Platform Installer Ref. http://www.microsoft.com/web/downloads/platform.aspx Esse pacote muito interessante para aplicaes Web, que faro parte da soluo com servios. Questes como deployment, configurao e empacotamento dos bits para exportao para a produo tambm esto presentes em projetos SOA. Por isso, o Web Platform Installer vale como dica. Veja mais aqui: http://blogs.msdn.com/wcamb/archive/2009/04/30/microsoft-web-platforminstaller-1-0-e-2-0-beta.aspx 7) Health Monitoring to Instrument a WCF Service for Security Ref.: http://msdn.microsoft.com/en-us/library/cc949048.aspx O objetivo desse pacote suportar um servio WCF com vrios elementos de instrumentao, monitorao e segurana. Leitura complementar bem interessante. Esses foram alguns pacotes que tenho usado na orientao de projetos com servios. Fique a vontade para comentar suas experincias ou ainda adicionar novas dicas para a comunidade. Por enquanto s! At o prximo post :) Waldemir.
Posted: Saturday, May 16, 2009

17

Recomendaes gerais para a construo de servios


Ol pessoal, tudo certo? Conforme combinado, vamos falar hoje de algumas dicas e ferramentas para a construo de servios. Preparei uma lista com algumas direes para as vrias questes envolvidas com o chamado cho-de-fbrica na construo de servios de SOA. E quais so essas questes? Vejamos algumas: Qual ser o modelo/template de servio? Qual ser a granularidade dos servios? Qual ser o modelo/template de workflow? Qual ser o modelo/template de segurana? Qual ser o modelo de instrumentao e monitorao? Qual ser o modelo de tratamento de excees? Qual ser o modelo de consumo de servios? Como ser obtido o reuso de servios? Entre outras. Claro, estou dando o foco em desenvolvimento e a lista acima apenas parcial. Existem outros aspectos que focam a infra-estrutura, nos moldes das discusses conduzidas pelo Markus Christen. Aqui entram os barramentos corporativos, os containers de servios e workflows, virtualizao, consolidao de infra-estrutura, etc. Assim, vejamos as tabelas abaixos, com alguns aspectos e comentrios importantes:

Links importantes:

18

WCF Windows Communication Foundation templates Ref.: http://msdn.microsoft.com/en-us/library/ms735119.aspx WCF And WF Services In The .NET Framework 4.0 And Dublin Ref.: http://msdn.microsoft.com/en-us/magazine/2009.01.net40.aspx WCF Security Guidance Ref.: http://www.codeplex.com/WCFSecurity

Links importantes: How to: Use Health Monitoring to Instrument a WCF Service for Security Ref.: http://msdn.microsoft.com/en-us/library/cc949048.aspx Enterprise Service Bus Guidance 2.0 Ref.: http://www.codeplex.com/esb Composite Application Guidance for WPF and Silverlight 2.0 Ref.: http://compositewpf.codeplex.com Enterprise Library 4.1 October 2008 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B5293E41584B6CE5&displaylang=en Hands-On Labs for Enterprise Library 4.1 March 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=AB3F2168-FEA1-4FC2B40C-7867D99D4B6A&displaylang=en

19

Esses so alguns dos guias que tenho usado em discusses e projetos de SOA sobre a plataforma Microsoft. Cada tpico merece uma ateno especial enquanto construmos nossos servios, por isso, no deixem de conferir os links acima. Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, April 21, 2009

Enterprise Service Bus (ESB) : barramento de servios e seus desafios


Ol pessoal, tudo certo? Recentemente, acompanhei uma discusso de arquitetura onde me foi apresentado um desenho de infra-estrutura simplificado, como esse:

At aqui, nada de novo, tenho certeza que muitos de vocs j viram cenrios como esse. O que chamou minha ateno foi o "barramento" no meio do desenho, o chamado Enterprise Service Bus (ESB). Aps not-lo entre as vrias caixas de servidores, perguntei sobre a real necessidade do ESB na arquitetura e quais seriam as funcionalidades do barramento que seriam aproveitadas na soluo. Ouvi como resposta um sonoro : " bvio!!! precisamos publicar os servios num barramento de servios!!" :) Certo! Um barramento de servios importante, mas quais funcionalidades voc vai utilizar a partir do barramento de servios? : "ora!!! um barramento de servios um barramento de servios!!!" :(

20

Enfim, acabei descobrindo que o chamado barramento de servios poderia at ser trocado por uma barra de Ethernet no desenho acima, pois de fato, a soluo no mapeava qualquer funcionalidade envolvida numa camada ESB tradicional, nada alm da ideia do varal universal de servios.... Esse um erro comum em muitos cenrios hoje em dia. Diversas empresas j colocaram um barramento de servios sem um detalhamento prvio ou conhecimento dos reais desafios que um barramento pretende enderear. Por exemplo, veja um artigo de Dezembro de 2007, que inicia o assunto de um modo bem interessante, posicionando a dificuldade em termos de integrao e hub de aplicaes, algo como:

Services Fabric: Fine Fabrics for New-Era Systems Ref.: http://msdn.microsoft.com/en-us/architecture/cc168621.aspx Muito bem, j deu para perceber que existe muito mais que apenas um "barramento" nesse assunto. Como o autor bem coloca, precisamos responder quais issues iremos atender com nosso ESB em nossa soluo. A Microsoft disponibiliza um pacote de Enteprise Service Bus chamado ESB Guidance. interessante ver que a Microsoft define um ESB como um "conjunto de patterns de mensageria, EAI, integrao e barramento de servios", relacionando assim uma srie de recursos. Entre os recursos mais importantes temos:

Monitorao de Atividades de Negcio Motor de Regras de Negcio Integrao de Aplicaes Servios de Transformao

21

Servios de Resoluo (UDDI) Servios de Itinerrio Servios de Excees Repositrio e Registro de Servios Portal de Gerenciamento

O desenho a seguir apresenta o mapa de funcionalidades do ESB Guidance 2.0 da Microsoft, disponvel de forma gratuta atravs do CodePlex, veja:

Enterprise Service Bus Guidance Ref.: http://www.codeplex.com/esb/ Vale destacar que o ESB Guidance aproveita a infra-estrutura de mensageria e integrao de aplicaes (EAI) disponibilizada pelo produto BizTalk Server. Assim, o pacote estende as funcionalidades do produto para a criao de uma infra-estrutura de barramento de servios, como vemos acima. Enquanto o ESB Guidance 1.0 trabalha com o BizTalk Server 2006 R2 (atual), o ESB Guidance 2.0 trabalhar sobre o BizTalk Server 2009, previsto ainda para esse semestre. Para finalizar, o ESB Guidance 2.0 CTP2 - Janeiro 2009 foi recentemente disponibilizado no CodePlex para download. Confira: ESB Guidance 2.0 CTP2 - January 2009 Ref.: http://www.codeplex.com/esb/Release/ProjectReleases.aspx?ReleaseId=21605 Sem dvida, ESB um componente crtico para solues de servios e integrao de aplicaes de forma padronizada no ambiente corporativo. No deixem de acompanhar esse assunto em suas discusses. Por enquanto s! At o prximo post :)

22

Waldemir.
Posted: Tuesday, February 17, 2009

Arquitetura de servios e capacidades de SOA na plataforma Microsoft


Ol pessoal, tudo certo? Esses dias estive em algumas discusses sobre os vrios servios de uma arquitetura de referncia SOA e como podemos mapear os produtos e recursos da plataforma Microsoft. A importncia dessa discusso enorme: seja qual for o fornecedor de sua plataforma, importante o mapeamento correto de recursos e funcionalidades disponveis, que iro atender as necessidades de sua soluo, respeitando o SLA esperado pelo negcio. Como o assunto orientao a servios, vamos fazer uma rpida reviso. Uma definio simples sobre SOA pode ser: "um estilo de arquitetura onde funcionalidades de aplicaes de negcio existentes (LoB - Line of Business) so disponibilizadas e publicadas na forma de servios". Muito bem! E o que seria servio? Podemos citar uma rpida definio para ele tambm: "so componentes de software que expem funcionalidades de aplicaes numa arquitetura SOA, respeitando algumas caractersticas importantes:

servios so autnomos; servios so orientados a mensagens; servios podem suportar diferentes protocolos e mecanismos de transporte; servios podem ser publicados ou hosteados em diferentes tipos de hosts; servios suportam contratos de operao, interfaces e tipos de mensagens;"

Respeitando as caractersticas acima, nossa soluo caminha para um modelo de arquitetura desacoplada entre cliente e servio, criando um ambiente propcio para o reuso de funcionalidades, assim como a composio de funcionalidades em uma dada aplicao. Esses so elementos essenciais de uma arquitetura de servios ou SOA. Veja que no falei nada sobre granularidade de servios, governana de servios, versionamento de interface e mensagens, administrao e deployment, controle de excees, roteamento de mensagens, rastreabilidade, monitorao, controle de nveis de servios, etc. Portanto, a discusso sobre SOA muito maior e pode ter abordagens diversas, algumas mais tcnicas, outras mais de negcio. Estou focando a viso tcnica. A partir dos pontos acima, vejamos um mapa de servios geral de uma arquitetura SOA:

23

A figura acima destaca servios comuns de uma arquitetura SOA, como servios de apresentao, colaborao, integrao entre sistemas, persistncia de dados, servios de orquestrao de processos, entre outros. Podemos tratar esses vrios servios como capacidades de SOA. Na verdade, avaliando capacidades de servios, podemos identificar quais so os aspectos que realmente precisamos para o sucesso de nossa soluo. Existem cenrios onde segurana e monitorao de servios crtico, assim como a orquestrao de processo. Para outros cenrios, a capacidade mais importante integrar diferentes plataformas e ambientes de linhas de negcio, que estaro envolvidos na arquitetura SOA. Avaliar quais so as principais capacidades que precisamos fundamental para a conduo de um projeto de SOA. Com base nesse desenho, vejamos quais produtos de uma infra-estrutura Microsoft atendem quais capacidades de servios:

24

Vemos ento que alguns produtos podem atender capacidades especficas, assim como vrias capacidades ao mesmo tempo. o caso do WF - Windows Workflow Foundation, que pode ser usado tanto para a construo de servios de interao entre sistemas como para orquestrao de processo. Da mesma forma o BizTalk Server oferece capacidades de integrao, assim como de processos e orquestrao de servios. A concluso que no teremos um nico produto ou infra-estrutura de software que ir implementar toda a viso de SOA. Uma orientao a servios formada por diferentes capacidades. Identificar quais capacidades so importantes para nosso cenrio de negcio to crtico para o projeto quanto a prpria escolha do fornecedor ou infra-estrutura de software que ser adotada. Por enquannto s! At o prximo post :) Waldemir.
Posted: Friday, February 13, 2009

Service-Oriented Architecture e Modelos de Maturidade - Revisitando o assunto...


Ol pessoal, tudo certo? Mais um post sobre SOA. Recentemente, tive algumas discusses com arquitetos de diversas empresas de SP e RJ, sobre computao orientada a servios e economia oientada a servios. J falamos algo sobre o assunto em posts passados, como: The Dark Side of SOA... e ainda sobre modelos de maturidade. Ref.: http://blogs.msdn.com/wcamb/archive/2007/12/06/the-dark-side-of-soa-e-ainda-sobremodelos-de-maturidade.aspx Mas gostaria de ampliar a discusso com alguns tpicos adicionais. Vamos focar a computao orientada a servios. :) Apenas para relembrar, usamos uma definio para SOA: estilo de arquitetura onde funcionalidades selecionadas de aplicaes so disponibilizadas na forma de servios. E esses servios podem ser publicados em barramentos, como Enterprise Service Bus ou Internet Service Bus, este ltimo mais recente. Mas de fato, a prpria definio desperta uma srie de perguntas, recorrentes em discusses sobre o tema:

O que um servio?

25

Quais so os patterns para criao de servios? Quais os mecanismos de conexo e comunicao? Quais funcionalidades sero implementadas? Como organizar os sistemas e investimentos j existentes na organizao? Como publicar os servios gerados? Como consumir os servios gerados? Como administrar os servios gerados? O que governana de servios? Entre outras...

Responder cada uma das perguntas acima no fcil. E fazer o mapeamento das necessidades reais de sua empresa com as promessas e desafios de uma arquitetura SOA ainda mais difcil. De fato, o impacto de uma arquitetura SOA grande na organizao, seja no ambiente de desenvolvimento, no consumo de servios, no tipo de aplicao front-end ou ainda na administrao dessa nova infra-estrutura de componentes, interfaces e camadas. Considerando a dificuldade da tarefa, o arquiteto deve avaliar ferramentas que o ajudem no momento da definio de uma arquitetura SOA. Entre as ferramentas disponveis, vamos citar as arquiteturas de referncia e os modelos de maturidade. A figura abaixo apresenta uma arquitetura de referncia SOA publicada pela Microsoft.

Note que fica explcito a presena de uma camada de servios, assim como de uma camada de processos, que pode compor orquestraes, fluxos de atividades ou ainda mquinas de estado a partir dos servios publicados. Nesse modelo, tambm observarmos uma srie de servios de utilidades ou suporte, como governana, qualidade de servio, monitorao, auditoria, etc. Essa separao permite identificar quais servios implementam funcionalidades de negcio e quais so servios comuns para toda a infra-estrutura. Seguir uma arquitetura de referncia sempre uma boa prtica, pois facilita a defesa e o posicionamento de seus componentes, a partir de uma estrutura bem definida.

26

Voc j deve ter ouvido falar das promessas de SOA, como:


Diminuio de custos de implantao de produtos e servios; Menor TCO para a infra-estrutura e aplicaes; Maior lucro, devido gerao de novos produtos; Menor risco, pelo reuso de servios maduros e composio de funcionalidades; Menor time-to-market, trazendo maior agilidade ao negcio, etc.

Porm, como visto no relatrio do "The Dark Side of SOA", a realidade tem sido outra. De fato, muitos erros na definio de uma arquitetura SOA tm provocado falhas em projetos, gerando maior complexidade final, maior custo de projeto, baixa performance na soluo implantada, dificuldade na administrao de uma infra-estrutura de servios, para citar alguns. Existe tambm maior tendncia na terceirizao do gerenciamento de todo o sistema corporativo. Entretanto, um modelo de terceirizao efetivo exige cuidados na definio dos diversos SLA's presentes na arquitetura. Esse outro fator de impacto na implantao de uma arquitetura de servios. Atualmente, no existe uma metodologia unificada para gerenciar medies e monitorao de servios em sistemas corporativos distribudos, ainda mais para uma arquitetura SOA. Um dos grandes problemas observados tem sido o roadmap de evoluo da arquitetura SOA dentro da organizao. Ou seja, quais caractersticas ou aspectos de SOA precisamos implementar na empresa afim de obter quais benefcios de negcio. Essa pergunta chave para o sucesso. Para apoiar essa definio estratgica, a empresa pode utilizar um modelo de maturidade. Existem diversos modelos de maturidade hoje em dia. O objetivo principal de um modelo de maturidade traar uma viso de esforos, durante a evoluo da empresa entre os vrios estados de adoo de uma tecnologia. Como passos unitrios nessa evoluo temos as capacidades, que representam aspectos de tecnologia ou de processo que queremos evoluir. O modelo de maturidade da Microsoft para o mundo SOA tem 4 grandes nveis: bsico, padronizado, avanado e dinmico. No significa que toda empresa deve alcanar o nvel dinmico ou ainda se lanar num projeto de 3 anos para atingir essa maturidade. Ao contrrio, cada empresa deve identificar suas reais necessidades de negcio e mapear que aspectos de SOA iro melhor atender suas necessidades. Tambm, acredite: sua empresa no est no nvel anterior ao bsico se ela tem uma TI minimamente estruturada :) A partir desse mapeamento, utilizar um roadmap de evoluo como um modelo de maturidade pode ser muito til pela taxonomia padronizada, assim como pela facilidade e simplificao do processo. A figura abaixo apresenta os grupos de capacidades do modelo de maturidade SOA da Microsoft, o chamado SOAMM:

27

Enfim, falamos acima de vrios tpicos sobre uma definio de arquitetura SOA e ainda temos assuntos pendentes, como patterns de servios, ferramentas de monitorao e administrao de servios, ESB, ISB, latncia, aplicaes compostas, etc. Para ns arquitetos, creio que o mais importante continuar a discusso, sempre tendo em mente o papel da TI em sua empresa. Conhecer a natureza do negcio, a demanda de TI presente e futura e como tornar o negcio mais gil a partir de uma TI flexvel questo chave. Cada vez mais, nossos sistemas e solues devero conviver com a mudana constante, com a necessidade de composio de funcionalidades, assim como o suporte para diferentes mundos (web, mobile, desktop, enterprise). A viso Software + Servios ser uma realidade. Falaremos mais sobre S+S em posts futuros. Por isso, revisitar o assunto importante, alm de um exerccio saudvel de estudo. Para maiores informaes sobre alguns dos temas acima, veja: SOA in the Real World Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=cb2a8e49-bb3b-49b6-b296a2dfbbe042d8&displaylang=en#filelist How to get started with SOA Ref.: http://www.microsoft.com/soa How to get started with ESB Guidance Ref.: http://www.codeplex.com/esb

28

Patterns and Prescriptive Architecture Guidance for Healthcare (um exemplo de soluo com aspectos de SOA) Ref.: http://www.codeplex.com/HCE BizTalk Services and Internet Service Bus Technologies Ref.: http://labs.biztalk.net/Overview.aspx Roadmap Oslo (videos e artigos) Ref.: http://www.microsoft.com/soa/products/oslo.aspx The Architecture Journal Ref.: http://msdn2.microsoft.com/en-gb/arcjournal/default.aspx Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, February 21, 2008

Interoperabilidade e Comunicao na plataforma Microsoft : o que e quando usar?


Ol pessoal, tudo certo? No post anterior vimos que a interoperabilidade na plataforma Microsoft pode ser organizada em 3 nveis bsicos de complexidade:

Interop in the Framework Interop in the Box Interop in the Cloud

Os recursos assim agrupados permitem um melhor entendimento das necessidades de cada soluo, seja atravs da customizao com WCF, WF, seja via um motor de mensageria e transformao com o BizTalk Server ou um barramento de mensanges com o ESB Guidance, ou at mesmo um modelo de integrao entre empresas atravs da nuvem, no chamado ISB Internet Service Bus, como .NET Services do Azure. Falamos tambm de 4 componentes importantes para a interoperabilidade no ambiente enterprise (local). Vejamos: O que usar?

Microsoft BizTalk Server (BTS) : BizTalk oferece uma pilha ampla de adaptadores, orquestrao, mensageria e protocolos para a construo de solues preparadas para EAI -

29 Enterprise Application Integration. Atravs de ferramentas de mapeamento de mensagens, manipulao de schemas, transformao, monitorao e regras de negcio, o ambiente BTS permite a construo de solues de mensageria em cenrios de elevado volume de mensagens e vazo; Microsoft Host Integration Server (HIS) : HIS oferece uma plataforma para a conectar aplicaes com sistemas da plataforma IBM zSeries e iSeries. Ainda, HIS suporta a conexo de dados entre Microsoft Message Queuing (MSMQ) e o IBM WebSphere MQ; Microsoft Message Queuing (MSMQ) : o MSMQ permite a conexo de entre aplicaes usando um modelo de fila de mensagens. MSMQ oferece a garantia de entrega de mensagens, mensagens baseadas em prioridades e segurana. Ele suporta a integrao com sistemas parcialmente conectados ou temporariamente offline. MSQM tambm suporta cenrios de mensageria sncrona e assncrona; Microsoft Enterprise Service Bus (ESB) Guidance : o ESB Guidance uma unidade lgica que oferece uma arquitetura desacoplada baseada em mensagens, usando para isso a infraestrutura do BizTalk Server. O ESB Guidance na verdade um conjunto de templates e patterns que extendem as funcionalidades do BTS, adicionando caractersticas como roteamento de mensagens, repositrio de servios, garantia de entrega, segurana de mensagens, registro de servios e tratamento unificado de excees;

Cada uma das tecnologias acima aplica patterns de arquitetura importantes para diversos cenrios de integrao em TI. Porm, cada cenrio exige uma tecnologia mais adequada que a outra. Adotar um modelo sncrono de mensageria quando nossa soluo permite cenrios parcialmente conectado pode ser desastraso, por exemplo. Ento, surge a pergunta: Quando usar? Considere o uso de BizTalk Server quando:

quando a soluo interage com mltiplos web services via uma orquestrao, como parte de uma arquitetura orientada a servios (SOA), suportando as latncias de I/O devido a transformao de mensagens, persistncia de mensagens para tracing ou latncia devido subscrio/distribuio de mensagens; quando a soluo deseja suportar processos business-to-business (B2B), incluindo padres de indstria como EDIFACT, ANSCI X12, HL7, HIPAA, or SWIFT. quando a soluo exige a execuo de servios em paralelo, com mecanismos facilitadores para esse tipo de orquestrao e sincronizao entre processos; quando a soluo exige alta confiabilidade e infra-estrutura dedicada para escalabilidade, com garantia de entrega e recuperao de mensagens; quando a soluo necessita medir KPI's - Key Performance Indicators de negcio, atravs de um motor de anlise como BAM - Business Analysis Manager, que deve fornecer uma visibilidade em tempo real sobre os dados processados pela soluo; quando a soluo deseja abstrair a lgica de negcios e aplicaes atravs de polticas, que podem ser alteradas de acordo com as necessidades de negcio da soluo;

Considere o uso de Host Integration Server quando:

quando a soluo precisa suportar interao com aplicaes IBM zSeries ou iSeries;

30

quando a soluo deve integrar BizTalk com DB2, WebSphere MQ, Aplicaes Host (em plataforma alta) ou servidores de arquivos; quando a soluo deve integrar mensageria MSMQ com WebSphere MQ;

Considere o uso de Message Queuing quando:


quando a soluo deve suportar interao entre aplicaes baseada em mensagens; quando a soluo precisa integrar plataformas Microsoft e No-Microsoft, suportando a conversao assncrona; quando a soluo precisa suportar conversao SRMP - SOAP Reliable Messaging Protocol entre as aplicaes envolvidas;

Considere o uso de Enterprise Service Bus Guidance quando:


quando a soluo necessita suportar a abordagem de mensageria com itinerrio de mensagens ou roteamento entre sistemas envolvidos; quando a soluo deve suportar a resoluo dinmica de roteamento de mensagens; quando a soluo deve usar transformao de mensagens dinmicamente; quando a soluo deve suportar um gerenciamento de excees de forma unificada e robusta, para a integrao de sistemas EAI; quando a soluo necessita de uma abordagem de repositio de servios, para publicao de funcionalidades envolvidas;

O mapa acima uma relao parcial de benefcios ou aspectos de arquitetura que justificam cada tecnologia para uma dada soluo. Claro, para alguns cenrios, podemos abrir mo dos pacotes acima e simplesmente implementar nossos prprios componentes de integrao, interoperabilidade ou orquestrao usando frameworks como o WCF - Windows Communication Foundation e o WF - Windows Workflow Foundation, sempre considerando o esforo de nosso prprio desenvolvimento. No final, podemos construir uma matriz de deciso, que pode nos ajudar no momento de anlilse de uma soluo e as tecnologias mais indicadas. Fica a dica para ampliar esse estudo e detalhamento destacando os aspectos mais importantes para sua prpria soluo. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, February 11, 2009

Interoperabilidade e Comunicao na plataforma Microsoft


Ol pessoal, tudo certo?

31

A semana passada foi bem corrida, com uma srie de reunies de projetos em diferentes empresas. Um dos tpicos interessantes que vi foi um mapa sobre os diferentes nveis de interoperabilidade na plataforma Microsoft. Podemos pensar em 3 nveis bsicos de complexidade:

Interop in the Framework Interop in the Box Interop in the Cloud

A figura abaixo faz um resumo desse mapa de interoperabilidades:

O chamado "Interop in the Framework" envolve a integrao customizada, atravs de sua principal ferramenta, o WCF - Windows Communication Foundation. Atravs do WCF podemos construir arquiteturas de servios com interfaces especficas para cada necessidade de negcio envolvida. Veja que a customizao possvel do WCF envolve a escolha dos melhores bindings, protocolos de entrega, formatao de dados, etc. Assim, suportamos de forma especializada padres como ASMX, WSE, .NET Remoting, MSMQ, formatos como POX, REST, JSON, ATOM, alm de mecanismos de roteamento, transao, coordenao, entre outros padres do WS-I. Veja sobre cenrios de WCF aqui. Porm, existem cenrios onde podemos aproveitar recursos de EAI - Enterprise Application Intergation ou mensageria, que envolvem tipicamente a transformao de mensagens, roteamento e principalmente atividades de traduo entre diferentes ambientes e tecnologias. Nesse caso, o chamado "Interop in the Box" apresenta uma caixa pronta, atravs do BizTalk Server na plataforma Microsoft. Na verdade, o BizTalk Server oferece um conjunto de recursos que podem ser configurados ou extendidos, permitindo a integrao direta entre diferentes

32

sistemas atravs de adaptadores, para SAP, Siebel, JD Edwards, etc, alm do atendimento de protocolos de troca de dados como XML, EDI, EDIFACT, AS2, SWIFT, etc. Finalmente, muito comum a integrao de cenrios "in the Framework" com cenrios "in the Box", pois nossa TI sempre possui caractersticas mistas de composio de negcios e servios. Por ltimo e mais recentemente, podemos pensar na composio de cenrios entre mltiplas empresas, que implementam internamente suas integraes nos nveis "in the Box" e "in the Framework" atravs da nuvem. Usando elementos de escalabilidade e processamento massivo de um datacenter externo, fazemos a integrao de diferentes cenrios de negcio e suas necessidades, usando um ambiente de hardware provisionvel por demandad. Temos assim o chamado "Interop in the Cloud". Nesse tipo de ambiente, identidade, conectividade e workflow ou orquestrao de negcios na nuvem so elementos bsicos para o projeto. Seu maior representando no Windows Azure o .NET Services, sendo o principal mecanismo para a construo de uma integrao "in the cloud". Como exemplo, a Microsoft est desenvolvendo um projeto conhecido como MEBA - Multi-Enterprise Business Application, usando a nuvem como ponto de integrao entre empresas. Veja um pouco mais sobre MEBA aqui. MEBA - Multi-Enterprise Business Application

Interoperabilidade um dos temas principais de arquitetura, assim como a Comunicao entre diferentes ambientes. Na plataforma Microsoft, quando pensamos em comunicao citamos 4 caixas especficas:

Microsoft BizTalk Server (BTS) Microsoft Host Integration Server (HIS) Microsoft Message Queuing (MSMQ) Microsoft Enterprise Service Bus (ESB) Guidance

Vamos falar um pouco mais dessas solues em posts futuros.

33

Por enquanto s! At o prximo post :) Waldemir.


Posted: Monday, February 09, 2009

Roadmap Oslo: foco na arquitetura SOA e nas aplicaes compostas Parte 1


Ol pessoal, tudo certo? Em nosso ltimo post sobre Arquitetura de Referncia para SOA, apresentamos um diagrama com as camadas de um ambiente de servios, onde vimos as aplicaes compostas como consumidoras, as interfaces de servios, os componentes de processos e workflows e a camada de integrao com o legado. De fato, o mercado tem apontado para 2 tecnologias como promissoras para a nova onda de solues no futuro: aplicaes compostas e arquiteturas orientadas a servios. Sabemos que consumindo uma estruturas de servios temos uma camada de aplicaes de composio (Composite Applications), que fornece grande agilidade para o ambiente de TI na criao de novas funcionalidades de negcio. A partir da composio de workflows, processos, mensagens e do consumo de servios oferecidos pela arquitetura SOA, novos requisitos de negcio podem ser rapidamente implementados/compostos e colocados em produo. Sabemos tambm que para implementar uma boa arquitetura SOA, diversas questes so importantes e devem ser tratadas no devido tempo. Questes como tempo de resposta de cada servio, SLA's, recuperao, tratamento de erros, monitorao, entre outras, devem ser muito bem estudadas. A governana como um todo nunca deve ser subestimada. Dentro desse contexto, surge um projeto na Microsoft chamado Oslo. Oslo no um produto especfico, mas sim um conjunto de tecnologias e roadmap de produtos que permitiro um novo salto na plataforma Microsoft para o atendimento de cenrios de aplicaes compostas e arquiteturas SOA. A viso de Oslo no chegar antes de 2009, como vemos no roadmap abaixo j anunciado:

34

Porm, importante que o ambiente de enterprise conhea bem essa discusso, entendendo a evoluo de cada produto na direo do chamado negcio gil. Em posts futuros, vamos falar um pouco mais de Oslo e sua evoluo. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, September 24, 2008

Arquitetura de referncia para orientao a servios


Ol pessoal, tudo certo? Nos ltimos posts, falamos de algumas arquiteturas de referncia e modelos que podemos aplicar para a organizao de componentes em nossas solues. Hoje, estive conversando sobre arquiteturas de referncia e o assunto SOA retornou. Mantendo a linha dos posts anteriores, temos o desenho abaixo, que representa um modelo de 4 camadas para a orientao a servios:

35

Vejamos os componentes dessa arquitetura:


Primeiro, notamos uma camada de aplicaes compostas, destinada para as interfaces de composio e consumidores de servios e processos da soluo; Abaixo, temos a camada de composio de negcios ou processos, onde orquestraes de negcio podem consumir servios ou tratar regras de negcio, de acordo com as necessidades da soluo; Na sequncia, a camada de servios atmicos ou de composio, que implementam as interfaces de servios propriamente ditas. Baterias de Web Services ou servios implementados com WCF e hosteados em 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; Por ltimo, a camada de integrao ou legado, onde encontamos nossos sistemas nativos, bancos de dados e soluo que sero exportadas pela infra-estrutura de servios.

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, logging, etc. So bibliotecas bsicas, construdas ao longo do projeto ou fornecidas por alguma ferramenta de operao de servios. Em muitos casos, barramentos de servios (ou ESB - Enterprise Service Bus) oferecem essas funcionalidades de forma nativa, economizando algum tempo de desenvolvimento para o projeto. Para relembrar, podemos definir uma arquitetura SOA como sendo um estilo de arquitetura onde funcionalidades implementadas pelas aplicaes existentes so disponibilizadas na forma de servios. Servios so componentes de software que suportam caractersticas multi-protocolo e multi-host, sendo orientados a mensagens e fornecendo um desacoplamento entre consumidores e funcionalidades da aplicao. Finalmente, vale sempre perguntar: sua soluo necessita de uma organizao de servios, com mltiplas camadas, orquestrao de processos e composio de funcionalidades? ou sua soluo

36

necessita mesmo de um middleware de alta performance? Fazer essa diferenciao muito importante! Recordar Viver! Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, September 17, 2008

Integrando WCF e WF - Uma alternativa para a composio de servios numa arquitetura SOA
Ol pessoal, tudo certo? Cada vez mais tenho recebido perguntas sobre o uso de servios baseados em WCF - Windows Communication Foundation. De fato, existem diversos aspectos de uma camada de servios que o framework WCF atende muito bem. Entre as principais caractersticas aderentes ao modelo temos:

Framework dedicado para a comunicao entre sistemas; Baseado em mensagens; Multi-protocolo; Multi-hosting; Compatvel com WS, WS-*, TCP, P2P, etc; Adaptvel e extensvel, atravs da construo de novos dutos de transporte (bindings), adapters, endpoints, mecanismos de entrega de mensagens, etc; Altamente configurvel, o que permite um grande desacoplamento entre servios e sua configurao, entre outros.

Existem ainda outros recursos importantes no WCF que adicionam ao modelo, como programao unificada para diversos mtodos de conexo, controle de comportamentos (behaviors), endpoints e seus componentes, etc. A figura a seguir j conhecida de todos e apresenta os atores de um servio no WCF:

37

Do mesmo modo, o WF - Windows Workflow Foundation trs uma srie de recursos para a composio de atividades, introduzindo os conceitos de fluxo de trabalho, permitindo aos desenvolvedores tratarem diversos cenrios, como fluxos de trabalho seqencial, fluxos simples, fluxos baseados em mquinas de estado, com interaes humanas, etc.

Portanto, inevitvel que a pergunta sobre o uso integrado de ambos os frameworks acontea. A pergunta que devemos fazer na sequncia : como isso pode ser feito? e ainda, quais so as armadilhas nessa implementao? Para a primeira pergunta, um bom artigo que descreve um cenrio de integrao este a seguir: Integrating Windows Workflow Foundation and Windows Communication Foundation (by Jeremy Boyd) Ref.: http://msdn2.microsoft.com/en-us/library/bb266709.aspx O artigo apresenta um passo-a-passo que pode ser usado como exemplo na integrao de servios WF em WCF em cenrios diversos. Vamos us-lo como guia para apresentar alguns novos pontos de discusso que envolvem os dois framework.

38 1. Criar o modelo de processos desejado no WF, identificando os pontos de deciso e interao entre servios; 2. Evitar o uso de muitos blocos de cdigo em sequncia (Code Shape). Sempre que possvel, consolidar os blocos por linha de execuco no workflow do WF. 3. Trabalhar com um checklist de verificaes para a integrao WCF/WF. De fato, manter um desenho da integrao desejada sempre atualizada um fator crtico; 4. Definir os contratos de servios de negcio envolvidos no projeto. Podemos identificar 3 grandes aspectos para um contrato de servio: o As operaes publicadas, que so os recursos que o servio publica para seus consumidores (so os mtodos da interface); o As mensagens que encapsulam os dados estruturados de cada solicitao e resposta, que so os argumentos e os tipos de retorno de cada mtodo (so os contratos de mensagem ou os contratos de dados); o As definies de dados das entidades de negcio (business entities) que podem ser trocadas pelo servio; 5. Quando necessrio, hospedar e manter o tempo de execuo do fluxo de trabalho. Isso feito atravs da adio de uma classes de extenso ao WF, atravs da interface IExtension<ServiceHostBase>. Veja mais aqui: http://msdn2.microsoft.com/enus/library/ms554840(VS.85).aspx; 6. Tambm, para fluxos de trabalho de longa durao, recomenda-se o uso de um modelo de persistncia por SqlWorkflowPersistenceService. Isso garante a recuperao e manuteno do estado do fluxo enquanto sua durao. Veja mais aqui: http://msdn2.microsoft.com/enus/library/system.workflow.runtime.hosting.sqlworkflowpersistenceservice.aspx; 7. Verificar os pontos de configurao da implantao, atravs da definio dos valores para o endpoint do servio WCF (Address, Binding e Contract); 8. Para o consumo do servio, podemos utilizar o padro de fbrica ChannelFactory. Veja mais aqui: http://msdn2.microsoft.com/en-us/library/ms576132.aspx; 9. Ainda, o WCF suporta alguns fluxos de mensagens alternativos, como comunicao unidirecional e duplex bidirecional. Os canais duplex podem ser bastante eficientes para sistemas com conexo mais forte, nos quais os dados possam ser enviados em qualquer direo. Importante estudar o cenrio para a definio do tipo de fluxo de mensagem mais indicado. Esse tipo de configurao feita atravs da chamada DuplexChannelFactory. Veja mais aqui: http://msdn2.microsoft.com/en-us/library/ms576164.aspx.

Bastante coisa, no mesmo? Relembrando, o Windows Workflow Foundation (WF) oferece uma estrutura geral para a definio de fluxos de trabalho e um mecanismo de controle que permite hospedar esses fluxos de trabalho em execuo, alm de interagir com eles. Ainda, o Windows Communication Foundation (WCF) fornece uma estrutura geral de criao de sistemas conectados, atravs de um modelo de programao unificada, completo e consistente, que oferece um conjunto amplo de recursos para a definio de servios, como vimos acima. Assim, realmente podemos aplicar esses dois frameworks de forma combinada, criando uma plataforma flexvel e adaptvel. O WF permite modelar e encapsular a lgica de negcio e os processos de negcio, enquanto o WCF fornece a infra-estrutura de mensagens para a comunicao entre sistemas.

39

Os passos acima no so o guia definitivo para a implementao de integraes WCF + WF. A idia do post foi apontar alguns temas envolvidos na construo de solues sofisticadas, utilizando os dois frameworks. E para relembrar uma outra discusso j feita aqui no blog, segue o link abaixo:
Windows Workflow Foundation - Uma alternativa para a camada de processos numa arquitetura SOA. Ref.: http://blogs.msdn.com/wcamb/archive/2008/02/01/windows-workflow-foundation-uma-alternativa-para-acamada-de-processos-numa-arquitetura-soa.aspx

Em posts futuros, ainda vamos dar uma olhada no impacto dessa integrao WCF + WF sobre o Windows Server 2008, especificamente com o uso do Windows Process Activation Service (WAS).

Por enquanto s! At o prximo post :) Waldemir.


Posted: Monday, April 07, 2008

40

Captulo 2
Software como Servios SaaS (Software as a Service)

Software como Servios um software distribudo como um servio, construdo em plataforma web 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, por demanda. A partir dessa definio simplificada, este captulo apresenta algumas das discusses sobre o tema realizadas no blog com a comunidade.

41

SaaS - Software as a Service - Uma viso sobre o software como servio


Ol pessoal, tudo certo? SOA, SaaS, S+S, ESB, WEB 2.0 e VIRTUALIZAO so de fato temas constantes em muitas mesas de discusso de arquitetos. Esto entre as mais quentes definies de arquitetura de hoje em dia. Assim, vamos atacar um desses temas hoje, o SaaS - Software as a Service (Software como Servio). 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. Do wikipedia, tiramos a seguinte definio: "Software as a service (SaaS) is a software application delivery model where a software vendor develops a web-native software application and hosts and operates (either independently or through a third-party) the application for use by its customers over the Internet. Customers do not pay for owning the software itself but rather for using it. They use it through an API accessible over the Web and often written using Web Services or REST. The term SaaS has become the industry preferred term, generally replacing the earlier terms Application Service Provider (ASP) and On-Deman." [6] Em poucas palavras teramos que 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 infraestrutura do cliente (on-premise), mas utilizado atravs da web e pago pelo tempo de uso, por demanda. Desse modo, um software SaaS envolve mecanismos de tarifao e mtricas de uso e billing. Ainda, um software que fornece uma API para acesso pela web, atravs de Web services, servios REST e outros. Do ponto de vista da arquitetura, podemos dizer que SaaS envolve uma infra-estrutura escalvel, altamente configurvel e multi-inquilino. Conceitos e Princpios Quando pensamos em SaaS, o conceito de multi-inquilino deve ser colocado. 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". Se voc ainda no leu um livro chamado "The Long Tail", o primeiro passo que indico para um entendimento completo do tema SaaS.

42

The Long Tail: Why the Future of Business is Selling Less of More por Chris Anderson Ref.: http://www.amazon.com/LONG-TAIL-FUTURE-BUSINESS-SELLING/dp/1401302378 Veja o desenho abaixo sobre a viso da Cauda Longa:

O grfico demonstra que, conforme baixamos o custo de adoo, um nmero maior de clientes pode adotar nossa soluo. E esse nmero tende ao infinito, uma vez que a curva no toca o eixo "x". Assim, 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 ticket. Porm, estamos realmente buscando o chamado "milhes de mercados de poucos" ao invs dos atuais "poucos mercados de milhes". Fica claro o impacto na construo de uma arquitetura SaaS. Existem diversas necessidades de tecnologia e infra-estrutura que precisam ser atendidas para que esse novo modelo seja suportado. Um modelo de maturidade SaaS apresentado a seguir, conforme discusso que encontramos no artigo "Architecture Strategies for Catching the Long Tail" de Frederick Chong and Gianpaolo Carraro [1]:

43

[1] Note que no primeiro quadrante, a soluo possui uma instncia dedicada para cada inquilino (tenant). Isso garante um completo atendimento das demandas do cliente, mas com elevado custo devido ausncia de compartilhamento de recursos e customizao elevada. Tambm no quadante 1, cada cliente atendido por uma instncia dedicada da soluo. 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. 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, assim como questes para se garantir um base de dados com facilidades para o tratamento multi-inquilino. A partir dos elementos descritos acima, uma arquitetura de alto nvel para um modelo SaaS proposta abaixo:

44

[1] Note que essa viso exige uma arquitetura diferenciada, assim como uma discusso seguinte sobre os modelos de multi-inquilino para o banco de dados. Algumas opes possveis so:

bases de dados separadas por inquilino; mesma base de dados, com inquilinos separados por schemas; mesma base de dados, com inquilinos com schemas compartilhados, etc.;

Finalmente, vamos falar um pouco sobre os principais atores do mundo SaaS e seus interesses:

Veja que cada ator possui perspectivas diferentes sobre os benefcios da viso SaaS:

45

Para os consumidores de soluo SaaS: maior controle, permitindo o teste da soluo antes da compra, pagamento pelo uso, tarifao por demanda, menor risco de implantao; Para agregadores de solues e ISV's: possibilidade de criao de novos mercados, oferecendo aplicaes compostas e plataformas de integrao; Para ISV's: possibilidade de novos modelos de negcio, fundamentados na Cauda Longa, o que deve exigir uma reengenhaira das solues atuais; Para Hosters e provedores SaaS: oferecer servios compartilhados, como billing, SLA, monitorao, provisionamento, etc, para ISV's SaaS clientes; Para Hosters clssicos: possibilidade de evoluo para servios com maior valor agregador, rumo ao modelo de hoster SaaS.

Nesse ponto, surge a necessidade de vermos algum cdigo. Como exemplo de soluo que implementa essa viso SaaS temos o LitwareHR, uma soluo multi-inquilino que est disponvel no Codeplex para o pblico: Litware HR - A Multitenant sample application Ref.: http://www.codeplex.com/LitwareHR Finalmente, o arquiteto Otvio Coelho publicou recentemente um post sobre o tema, onde ele toca num dos pontos nevrlgicos da discusso aqui no Brasil, o dilema do ovo e da galinha, veja aqui :) Hospedagem de aplicaes SaaS Ref.: http://blogs.msdn.com/otavio/archive/2008/03/04/hospedagem-de-aplica-es-saas.aspx De fato, no temos mais hosters (ou Application Service Providers) capacitados a operar solues SaaS porque no temos solues implementadas nesse modelo pelos ISV's ou o contrrio - no temos implementaes SaaS de fornecedores porque no temos hosters capacitados a suportar uma infra-estrutura diferenciada como o modelo exige em sua definio? A discusso boa...deixe tambm sua opinio aqui no blog... Como leitura adicional indico: [1] Architecture Strategies for Catching the Long Tail por Frederick Chong and Gianpaolo Carraro Ref.: http://msdn2.microsoft.com/en-us/library/aa479069.aspx [2] Multi-Tenant Data Architecture por Frederick Chong, Gianpaolo Carraro, and Roger Wolter Ref.: http://msdn2.microsoft.com/en-us/library/aa479086.aspx [3] O Barramento de Servios para a Internet por Donald F. Ferguson, Dennis Pilarinos, e John Shewchuk Ref.: http://www.microsoft.com/brasil/msdn/arquitetura/journal/Bar_int_Services.mspx

46 [4] Software + Services (S+S) Ref.: http://msdn2.microsoft.com/en-us/architecture/aa699384.aspx

[5] The Architects in Action Series presents...A SaaS Solution Ref.: http://msdn2.microsoft.com/en-us/skyscrapr/aa699403.aspx e ainda... [6] Software as a service no Wikipedia Ref.: http://en.wikipedia.org/wiki/Software_as_a_Service Por enquanto s! At o prximo post :) Waldemir.
Posted: Sunday, March 09, 2008

Azure Issue Tracker : um exemplo de aplicao SaaS na nuvem


Ol pessoal, tudo certo? Quase ia me esquecendo de comentar com vocs sobre o Azure Issue Tracker, que foi publicado no Codeplex algumas semanas atrs. Essa aplicao um exemplo de soluo para ISV, criada como um SaaS para consumidores. A figura abaixo ilustra como o sistema est organizado:

A soluo utiliza recursos do Windows Azure, como o controle de acesso (Access Control) usando LiveID, um modelo de autorizao baseado em declaraes (claims-based authorization), configurao e monitorao, oferecendo ainda vises no enterprise e na nuvem.

47

Alm do modelo de controle de acesso, a soluo utiliza os recursos do SQL Data Services para persistncia de dados na nuvem, aproveitando a alta escalabilidade do Azure. Para quem estava procurando exemplos reais de aplicaes na nuvem, recomendo conferir o Issue Tracker, no link abaixo: Azure Issue Tracker http://www.codeplex.com/azureissuetracker Em posts futuros, vamos explorar alguns detalhes desta soluo. Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, February 03, 2009

48

Captulo 3
WCF Windows Communication Foundation

WCF Windows Communication Foundation um dos principais recursos do .NET Framework na plataforma Microsoft. Atravs do WCF, possvel a construo de interfaces de servios, suportando praticamente todos os principais mecanismos de transporte presentes no mercado, como HTTP, TCP, Named Pipes, MSMQM, REST, entre outros. Nesse captulo voc confere vrios temas relacionados ao uso e aplicao de WCF em solues reais de mercado.

49

Cenrios de implementao de servios com WCF - Parte 1: Aspectos de SOA


Ol pessoal, tudo certo? Vamos dar um tempinho no assunto ADO.NET Entity Framework e voltar para o mundo WCF Windows Communication Foundation, pode ser? Recentemente, em conversas com um time de arquitetos, voltamos a falar sobre os vrios desafios na construo de arquiteturas orientadas para servios. E como era de se esperar, WCF apareceu com destaque na reunio, considerando a plataforma Microsoft :) De fato, o WCF foi construdo com os aspectos de SOA (Service Oriented Architecture) em mente. Vamos citar alguns:

O design e a implementao de servios so naturalmente desacoplados da lgica de negcios da aplicao. Essa caracterstica que permite a migrao das aplicaes atuais para um modelo de servios; Servios expem funcionalidades para clientes remotos atravs de contratos explcitos de servios e de dados; Servios so executados de forma autnoma, no havendo impacto entre servios quando da ocorrncia de uma falha, ou seja, o isolamento uma condio obrigatria entre servios, assim como as fronteiras de segurana; Servios podem ser distribudos atravs de diferentes protocolos, o que atende uma srie de cenrios presentes no ambiente corporativo. A interoperabilidade uma exigncia; Servios so agnsticos ao transporte, ou seja, podem ser expostos diretamente na web, via intranet, ou usado como um backend no enterprise;

Para exemplificar um servio WCF e seus principais elementos, temos o desenho a seguir:

Resumindo, servios so orientados a mensagens, possuem contratos de servios e de dados, so multi-protocolos e multi-hosts, com aspectos de segurana, isolamento, polticas, monitorao, comportamentos, etc. Todos esses aspectos so atendidos pelo modelo de programao do WCF.

50

Ainda, atravs do ABC do WCF (onde Endpoint = Addess + Binding + Contract) possvel uma grande flexibilidade na implantao e configurao de servios em diversos ambientes de TI. Por exemplo, a tabela abaixo mostra a srie de Bindings disponveis para a configurao de nosso Endpoint. Cada combinao com diferentes propriedades para a comunicao entre clientes e servios:

De fato, nem s de servios vive uma arquitetura SOA. Precisamos pensar em questes de consumo, composio, orquestrao, workflows, interao com o legado, etc. Nesse ponto, surge a necessidade de uma arquitetura de referncia, que oriente nossa viso e a posio de cada componente nessa organizao de infra-estrutura. Como j visto aqui no blog, uma arquitetura de referncia para SOA bem representada pelo desenho a seguir, publicado pela Microsoft em outubro de 2007, durante o SOA & BP Conference (confira mais aqui):

51

Mas quando vamos para a implementao de fato, descobrimos que para nosso mundo de servios existem diversos cenrios possveis. Cada cenrio possui aspectos de configurao e deployment com impacto direto na performance, no versionamento, na administrao e na governana do ambiente de produo. Uma primeira lista de cenrios comuns para a implementao de servios dada abaixo:

Com certeza, pelo menos 1 dos cenrios acima uma realidade em sua empresa. Por isso, vamos comear uma nova srie aqui no blog: o desafio para os prximos posts ser detalhar cada cenrio acima, discutindo as diversas configuraes e caractersticas principais envolvidas. Nosso template de estudo ser:

Tipo de hosting utilizado Protocolo de transporte Protocolo de mensagens Mecanismo de Autenticao Mecanismo de Autorizao Garantia de Confiabilidade Proteo no Transporte ou Segurana;

Enquanto avanamos pelos cenrios, teremos a oportunidade de entender um pouco mais do modelo de arquitetura WCF. Muito trabalho pela frente, mas ser divertido. Fiquem ligados! Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, June 25, 2008

52

Cenrios de implementao de servios com WCF - Parte 2: Web Services Corporativos


Web Services Corporativos
Ol pessoal, tudo certo? Vamos falar hoje sobre um cenrio muito comum em ambientes de produo nas empresas, que so os Web Services Corporativos. Nesse cenrio, encontramos suporte para web services simples baseados em protocolo SOAP ou implementaes avanadas sobre os padres WS-* (WS-I : Web Services Interoperability Organization). Desde o final dos anos 90 encontramos Web Services sendo usados em diversas solues para a interoperabilidade entre sistemas, permitindo a troca de mensagens entre plataformas heterogneas. Grande parte dessa produtividade devido o uso dos documentos WSDL - Web Service Description Language, que descrevem as polticas e o metadado do servio envolvido. WCF suporta nativamente a tecnologia de Web Services, em diferentes alternativas de implementao, suportando verses consumidas por clientes JAVA ou outras plataformas no Microsoft, assim como clientes .NET 2.0. Tambm permite o consumo atravs de clientes Web Services Enhancements (WSE) 3.0 e clientes .NET 3.x. Em muitos cenrios, possvel migrar ASP.NET Web Services (ASMX) e Web Services WSE 3.0 para servios WCF sem impacto para os clientes envolvidos. A figura abaixo apresenta uma viso sobre os tipos de clientes envolvidos no cenrio de Web Services Corporativos:

Note que possvel combinar diferentes protocolos de acordo com o tipo de cliente envolvido. Alm disso, vale lembrar que para compatibilidade histrica, o SOAP 1.1 (ou Basic Profile 1.1) o transporte indicado para o acesso aos servios WCF. Assim, para clientes ASMX, usamos o protocolo SOAP 1.1; para clientes ASMX + WSE, usamos o protocolo SOAP 1.2 + WS-

53

Addressing; e para clientes WCF, usamos SOAP 1.2 + WS-Addressing + WSSecureConversation + WS-ReliableMessaging, para ilustrar. Sobre os protocolos suportados pelo WCF temos:
Categoria Messaging Metadada Security Reliability Transactions Protocolo Suportado SOAP, WS-Addressing, MTOM WSDL, WS-MetadataExchange, WS-Policy WS-Security, WS-SecureConversation, WS-Trust WS-ReliableMessaging WS-Coordination, WS-AtomicTransaction

Considerando nossa proposta, vamos dar uma olhada nas principais caractersticas e configuraes presentes para o cenrio de Web Services em WCF. Pensando sobre a segurana aplicada aos Web Services, podemos identificar 3 configuraes possveis:
1. Web Services com passagem de usurio e senha sobre SSL - Secure Sockets Layer 2. Web Services com passagem de usurio e senha sobre segurana de mensagens 3. Web Services com segurana de sesso e mecanismo de sesso confivel ativada

Para cada opo acima, teremos configuraes distintas, conforme vemos nas tabelas a seguir: Web Services com passagem de usurio e senha sobre SSL - Secure Sockets Layer:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao Autorizao Segurana

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 HTTPS (SSL) SOAP + WS-Addressing Usurio e Senha so fornecidos como parte da mensagem SOAP, baseada em WS-Security e UsernameToken Profile. Um armazenamento de credenciais normalmente indicado, desde que os usurios no faam parte de um domnio Windows. Um certificado SSL fornecido para segurana de mensagens.

A figura abaixo ilustra o cenrio acima, onde a segurana obtida atravs do canal SSL, veja:

54

by M. L. Bustamente Web Services com passagem de usurio e senha sobre segurana de mensagens:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao Autorizao Segurana

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 HTTP SOAP + WS-Addressing Usurio e Senha so fornecidos como parte da mensagem SOAP, baseada em WS-Security e UsernameToken Profile. Um armazenamento de credenciais normalmente indicado, desde que os usurios no faam parte de um domnio Windows. Uso de protocolo WS-Security sobre certificados X.509 para a segurana de mensagens.

Para ilustrar o cenrio acima, onde temos a segurana de mensagens com o uso do WS-Security, veja a figura abaixo:

55

by M. L. Bustamante Web Services com segurana de sesso e mecanismo de sesso confivel ativada:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 HTTP SOAP + WS-Addressing Usurio e Senha so fornecidos como parte da mensagem SOAP, baseada em WS-Security e UsernameToken Profile. WSSecureConversation ativado para otimizar a autenticao. Um armazenamento de credenciais normalmente indicado, desde que os usurios no faam parte de um domnio Windows. Uso de protocolo WS-Security sobre certificados X.509 para a segurana de mensagens. Protocolo WS-ReliableMessaging utilizado.

Autorizao Segurana
Reliability (Confiabilidade)

Como ilustrao, a figura abaixo apresenta o modelo de acesso ao servio WCF, considerando um Web Services avanado, onde aplicamos uma sesso confivel, certificados e um repositrio de credenciais externo, veja:

56

by M. L. Bustamante Fonte: Bustamente, M.L.,Windows Communication Foundation: Application Deployment Scenarios, May 2008. Qual opo de configurao devemos adotar? De fato, isso ir depender dos recursos disponveis e aderncia do projeto ao modelo de segurana implementado acima. Note que cada cenrio adiciona aspectos de desempenho, complexidade e experincia do usurio em graus diferentes. Por exemplo, para o cenrio mais avanado, temos um impacto no tamanho de mensagens, que deve adicionar os padres WS-Security, WS-SecureConversation e WSReliableMessaging (WS-RM). Ao mesmo tempo, WS-RM adiciona um mecanismo de confiabilidade na troca de mensagens, com uma sequncia de requests/reponses que aumenta o grau de confiana entre cliente e servidor. Esse mesmo tipo de avaliao deve ser feito para as outras configuraes, avaliando seus prs e contras. Desse modo, passamos por alguns aspectos importantes na definio de arquiteturas com Web Services Corporativos e suas configuraes. No prximo post, vamos olhar um cenrio relativamente recente: servios para Web 2.0. Fiquem ligados. Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, June 30, 2008

57

Cenrios de implementao de servios com WCF - Parte 3: Servios para Web 2.0
Servios para Web 2.0
Ol pessoal, tudo certo? Vamos continuar nossa discusso sobre cenrios de utilizao de WCF. Hoje vamos falar sobre servios para Web 2.0. O modelo Web 2.0 tornou-se popular devido uma srie de recursos como wikis, mashups, a colaborao entre usurios e comunidades, folksonomias, composies de funcionalidades, etc. Alm desses recursos, as aplicaes RIA - Rich Internet Application, que envolvem mashups, scripts AJAX, Silverlight e outras tecnologias recentes, trouxeram para a Web o poder de interfaces com mdia e contedo interativo. Como ponto principal nesse cenrio, o cliente Web 2.0 precisa de uma abordagem que diminua o nmero de interaes com o servidor, o que obtido atravs de protocolos especficos para a troca de mensagens. Assim, entre os protocolos de mensagens para clientes Web 2.0 citamos:
Protocolo POX Descrio Um protocolo de mensagens XML simplificado, sem o formalismo do protocolo SOAP. Uma alternativa ao protocolo SOAP, baseado em POX - Plain Old XML. Fornece um estilo de arquitetua que permite o acesso de a recursos atravs da internet. JavaScript Object Notation um formato de mensagens leve, que uma alternativa ao XML. muito til em combinao com clientes JavaScript, para a troca de dados com servios com um overhead de processamento e um custo de transferncia menor quando comparado com o XML. Really Simple Syndication e ATOM so formatos de sindicalizao baseados em XML. So especialmente interessantes para o compartilhamento de dados atualizados em feeds ou blogs.

REST

JSON

RSS/ATOM

De fato, possvel construir servios em WCF .NET 3.0 que suportam os protocolos acima, em servios para Web 2.0. Usando o .NET 3.5, o WCF suporta nativamente esses protocolos, o que fornece um ganho adicional de produtividade e configurao para o desenvolvimento de nossos servios.

58

A seguir, vamos olhar algumas caractersticas de cada combinao de servios e protocolos de mensagens para a Web 2.0, considerando especificamente POX, REST, JSON, RSS e ATOM. Caractersticas de servios para Web 2.0 usando POX e REST: Uma boa discusso com exemplos usando POX e REST dada no artigo a seguir, veja: POX and REST Ref.: http://msdn.microsoft.com/en-us/library/aa395208.aspx No link acima, voc encontra exempos de servios com interfaces POX e REST, assim como detalhes da interface e comportamentos no WCF. Para esse tipo de implementao, a tabela a seguir apresenta algumas das principais caractersticas do cenrio.
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 HTTP ou HTTPS (SSL) XML Basic Authentication (com usurio e senha) uma escolha tpica. Porm, segurana sobre certificados e integrao Windows so tambm suportados. Um armazenamento de credenciais normalmente indicado, desde que credenciais Windows sejam necessrias. Se necessrio, SSL suportado.

Autorizao Segurana

Assim, quando observamos as interaes com servios POX temos:

Do mesmo modo, quando observamos as interaes com servios REST temos:

59

Note que para servios REST, os verbos HTTP (get, post, put e delete) so utilizados, permitindo a construo das chamadas arquiteturas RESTfull, muito interessantes tanto para a explorao de dados via internet, como para a construo de clientes RIA simplificados e de grande flexibilidade no consumo de servios diversos. Caractersticas de servios para Web 2.0 usando JSON:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 HTTP ou HTTPS (SSL) JSON Basic Authentication (com usurio e senha) uma escolha tpica. Porm, segurana sobre certificados e integrao Windows so tambm suportados. Um armazenamento de credenciais normalmente indicado, desde que credenciais Windows sejam necessrias. Se necessrio, SSL suportado.

Autorizao Segurana

Uma implementao comum para o consumo de servios JSON, SOAP e XML o uso do objeto XmlHttpRequest. Ele permite um desenvolvimento flexvel para esses vrios formatos, facilitando o consumo na ponta cliente. A figura a seguir ilustra o cenrio:

60

Uma boa referncia de artigo com exemplos de servios usando JSON voc tem no link abaixo: Weakly-typed JSON Serialization Sample Ref.: http://msdn.microsoft.com/en-us/library/bb943471.aspx Caractersticas de servios para Web 2.0 usando RSS e ATOM:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 HTTP ou HTTPS (SSL) XML ou JSON Basic Authentication (com usurio e senha) uma escolha tpica. Porm, segurana sobre certificados e integrao Windows so tambm suportados. Um armazenamento de credenciais normalmente indicado, desde que credenciais Windows sejam necessrias. Se necessrio, SSL suportado.

Autorizao Segurana

Uma pergunta frequente para cenrios de servios para Web 2.0 se podemos usar contratos para POX/REST, JSON e sindicalizao (RSS/ATOM) no mesmo servio WCF. Sim, possvel. Para cada contrato implementado, suportamos um conjunto de operaes especficas, ainda que todas elas implementadas pelo mesmo servio. Vale conferir mais sobre WebHTTPBinding e WebHTTPBehavior. Veja: WCF Web Programming Object Model Ref.: http://msdn.microsoft.com/en-us/library/bb412204.aspx Assim, o objetivo deste post foi apresentar alguns protocolos de mensagens envolvidos com cenrios Web 2.0, enquanto utilizamos o WCF para nossas implementaes. No prximo post, vamos falar de um novo cenrio: servios para servios para intranets. Fiquem ligados! Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, July 03, 2008

61

Cenrios de implementao de servios com WCF - Parte 4: Servios para Intranet


Servios para Intranet
Ol pessoal, tudo certo? Vamos falar hoje sobre Servios de Intranet, um cenrio importante para aplicaes corporativas. Esse tipo de servio vive atrs do firewall e por isso no utiliza protocolos de interoperabilidade, como SOAP, HTTP, etc. Cenrios utilizando .NET Remoting e Enterprise Services so muito comuns na implementao de servios para aplicaes intranet e esto sendo gradativamente substitudos por servios com WCF. Nesse contexto, podemos relacionar alguns tipos de implementao de servios para intranet, como:

Aplicaes cliente/servidor clssicas, onde clientes Windows comunicam com servios dentro do mesmo domnio Windows; Aplicaes Web ASP.NET que consomem servios atrs do firewall, expondo funcionalidades de negcio para as aplicaes; Servios distribudos atravs de uma infra-estrutura orientada a servios, consumidos por processos de negcios, camadas diversas, etc.;

A seguir, vamos olhar cada tipo de servio e suas principais caractersticas. Aplicaes Cliente/Servidor Em um tpico cenrio cliente/servidor, aplicaes cliente acessam servios instalados em servidores remotos dentro do domnio. Um banco de dados usualmente parte da configurao, acessado atravs de servios, nunca diretamente a partir da aplicao ou da camada de apresentao. Nesse cenrio, WCF oferece grande facilidade para a exposio de funcionalidades para clientes remotos dentro da intranet. A figura a seguir ilustra esse cenrio, considerando a autenticao atravs de um AD ou lista de usurios vlidos.

62

by M. L. Bustamente A proteo das mensagens durante a comunicao entre cliente e servidor pode ser obtida atravs de criptografia e assinatura via certificados, criando um transporte com segurana. A tabela a seguir apresenta as principais caractersticas e alternativas de configurao do cenrio cliente/servidor:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao Autorizao Segurana

Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008 TCP SOAP + Binrio ou SOAP + XML Credenciais Windows autenticadas contra o domnio Windows. Credenciais Windows autorizadas contra o domnio Windows. As credenciais Windows so utilizadas para a gerao de chaves para a comunicao segura. Certificados X.509 podem ser utilizados.

Note que para alguns cenrios, podemos utilizar protocolos de mensagens SOAP + XML, ao invs de SOAP + encoding binrio. Devemos avaliar o impacto de performance nessa situao. Outro ponto importante nessa discusso que utilizando o Windows Server 2008, podemos configurar nossos servios como hosted no WAS - Windows Activation Services, permitindo protocolos como TCP, Named Pipes e MSMQ, como vemos na figura a seguir:

63

Como alternativa ao WAS sobre Windows Server 2008, podemos publicar nossos servios WCF em servios NT (Windows NT Service), o que far nosso transporte ser baseado em protocolo TCP para a entrega de mensagens. Assim, estaremos usando sockets TCP para a comunicao entre cliente e servio. Publicar servios WCF atravs de Windows NT Service gera alguns contra-tempos, como:

sempre que o servio atualizado, devemos reinicializar nosso Windows NT Service, para que as alteraes sejam refletidas na produo; durante o processo de reinicializao do servio, requisies feitas para o WCF sero rejeitadas. importante notar que nesse cenrio no existir um mecanismo de enfileiramento de requisies ou mensagens, como ocorre no hosting baseado no WAS - Windows Activation Services; Finalmente, Windows NT Service no suporta pooling, monitorao, recycling ou gerenciamento de idle-time (ociosidade) para otimizao de recursos;

De fato, para cenrios de servios no ambiente intranet, a utilizao de WAS para hosting a melhor opo por seus vrios benefcios. Porm, para cenrios de distribuio de servios em ambientes no controlados, onde no garantimos a presena do WAS, Windows NT Service a alternativa mais adequada. Aplicaes Web ASP.NET Vejamos um segundo cenrio de servios na intranet. Em aplicaes orientadas a servios, uma camada de apresentao baseada em ASP.NET pode consumir servios WCF atravs do firewall, acesando funcionalidades encapsuladas por esses servios. Embora seja possvel uma aplicao ASP.NET realizar chamadas diretas para os componentes de negcio, o uso de uma camada WCF oferece uma srie de benefcios, como:

64

Servios podem encapsular necessidades de negcio recorrentes, permitindo que diversas aplicaes reutilizem as mesmas funcionalidades, aumentando o reuso; A criao de uma fronteira de processos entre as pginas ASP.NET e os componentes de negcio pode aumentar a segurana do ambiente, reduzindo a superfcie de ataque para cdigos maliciosos ou acessos diretos aos dados da aplicao; Em muitos ambientes, uma DMZ exigida entre a lgica de negcio e a camada de apresentao, significando um segundo firewall na infra-estrutura. Servios WCF podem tornar mais fcil o consumo de funcionalidades atravs do segundo firewall.

A figura a seguir ilustra o cenrio onde pginas ASP.NET e servios WCF encontram-se na mesma mquina:

by M. L. Bustamente A tabela a seguir apresenta as principais caractersticas de configurao do cenrio onde servios e pginas ASP.NET esto na mesma mquina:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de

Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008 Named Pipes SOAP + Binrio

65

Mensagens Autenticao Autorizao Segurana

Credenciais Windows usadas para autenticar a aplicao chamadora. Credenciais Windows usadas para autorizar a aplicao chamadora. Credenciais Windows so usadas para a gerao de chaves para a comunicao segura.

Para cenrios onde a camada de servios encontra-se em outra mquina ou atrs de um firewall (como uma segunda DMZ), nosso protocolo de transporte torna-se o TCP e podemos utilizar certificados X.509 para a comunicao segura durante a troca de mensagens. A figura a seguir ilustra o cenrio onde pginas ASP.NET e servios WCF encontram-se em mquinas diferentes:

by M. L. Bustamente Assim, vimos que existem diferentes alternativas de configurao de um ambiente ASP.NET com servios WCF, variando de acordo com as consideraes de segurana e infra-estrutura presentes na soluo. Servios Distribudos para Arquiteturas Orientadas a Servios

66

Um dos grandes benefcios na construo de arquiteturas orientadas a servios a composio de funcionalidades, obtida atravs do consumo de servios distribudos ao longo da organizao. Um cenrio tpico de composio oferece uma camada de apresentao em ASP.NET, consumindo camadas de servios WCF para processos, funcionalidades de negcio, acesso a dados, etc., permitindo uma escalabilidade crescente ao longo de sua utilizao. A figura a seguir apresenta um exemplo desse tipo de cenrio:

Vejamos as opes de configurao indicadas para o cenrio de servios distribudos na intranet.


Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao Autorizao Segurana

IIS 6 sobre Windows Server 2003, IIS 7 sobre Windows Server 2008 TCP SOAP + Binrio Certificado X.509 usado para autenticar a aplicao ou servio chamador. Certificado X.509 usado para autorizar a aplicao ou servio chamador. Certificado X.509 usado para assinatura e criptografia na segurana de mensagens.

67

Foi um longo post, mas conseguimos passar pelos principais cenrios presentes no ambiente de intranet, enquanto utilizamos servios WCF para encapsular nossa lgica de negcios e funcionalidades de aplicaes. No prximo post, vamos falar de um novo cenrio, servios de mensageria e chamadas assncronas, fiquem ligados! Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, July 11, 2008

Cenrios de implementao de servios com WCF - Parte 5: Servios com Filas de Mensagens
Servios com Filas de Mensagens (MSMQ)
Ol pessoal, tudo certo? Um novo cenrio para nosso estudo destaca os servios com suporte a filas de mensagens. Comunicao assncrona, que exige garantia de entrega de mensagens, recuperao ou simplesmente o tracking de mensagens so exemplos de recursos para esse tipo de servio. Os patterns de mensagens desconectadas garantem o baixo acoplamento para solues orientadas a servios. Como principal benefcio, torna-se possvel a construo de processos de longa durao, sem a necessidade de espera por respostas on-line, alm da garantia de entrega de mensagens, para momentos onde servios, equipamentos e redes esto off-line ou desconectados. O Microsoft Message Queuing (MSMQ) uma plataforma de mensageria que suporta este tipo de cenrio, onde WCF amplia o conceito de componentes enfileirados (queued components) suportado pelo Enterprise Services do .NET 2.0. Desse modo, clientes WCF podem enviar mensagens para uma fila e servios podem receber essas mensagens a partir da fila, usando um modelo de programao familiar aos outros recursos do WCF. A principal caracterstica desse cenrio que clientes e servios no interagem diretamente, mas sim, atravs de uma fila de mensagens. Outros benefcios so:

Garantia de entrega de mensagens de forma assncrona; Mensageria desconectada; Cenrios de publicao e subscrio;

68

A tabela a seguir apresenta as principais caractersticas para a configurao de servios com suporte a mensageria:
Caracterstica Descrio

Hosting Protocolo de Transporte Protocolo de Mensagens Autenticao Autorizao Segurana

Windows NT Services sobre Windows Server 2003 ou Windows Activation Service (WAS) sobre Windows Server 2008 MSMQ (nativo, SRMP ou SRMPS) SOAP + Binrio Certificados X.509 usados para autenticar o originador da mensagem (sender). Certificados X.509 usados para autorizar o originador da mensagem (sender). Certificados X.509 usados para proteger as mensagens colocadas na fila. Certificados X.509 usados para autenticar o chamador da fila.

Autenticao para a fila Autorizao para Certificados X.509 usados para autorizar o chamador da fila. a fila Segurana na fila O certificado X.509 do chamador usado para assinar a mensagem enviada para a fila. Criptografia normalmente tratada no nvel da mensagem. Para a configurao de servios e filas, temos 2 plataformas possveis com WCF:

MSMQ 3.0 on Windows Server 2003; MSMQ 4.0 on Windows Server 2008;

Para essas plataformas, o WCF oferece o binding de transporte NetMsmqBinding, que garante os detalhes de configurao para o envio de mensagens de forma assncrona no MSMQ. O NetMSMQBinding oferece um transporte baseado em encoding binrio, permitindo um bom desempenho para o tratamento de mensagens. Oferece tambm segurana no nvel de transporte e de mensagens, alm do suporte a transaes. Esse binding torna-se uma primeira escolha para cenrios assncronos de alta vazo e que precisem ser confiveis, durveis e com suporte ao modelo de mensageria unidirecional (queued One-Way Messaging). Para cenrios onde o servio deve interagir com solues MSMQ existentes, o binding indicado ser o MsmqIntegrationBinding. O MSMQIntegrationBinding oferece um transporte para integrao MSMQ com MSMQ encoding. Fornece a segurana do ambiente MSMQ, assim como o suporte a transao. uma primeira escolha como binding para cenrios de integrao

69

com aplicaes MSMQ j existentes, alm de ser de simples integrao com o Host Integration Server e o Biztalk Server, quando existentes na soluo. A figura a seguir apresenta um exemplo de integrao de mensagens com servios WCF:

Um exemplo de aplicao de mensageria para o disparo de servios dado na demonstrao Demux, disponvel para download no link a seguir: Custom Demux Ref.: http://msdn.microsoft.com/en-us/library/ms752265.aspx O exemplo acima apresenta como possvel disparar servios atravs do endereamento do header de mensagens enviadas para a fila MSMQ. Esse cenrio muito interessante para o tratamento de mensagens, criando um roteador de servios muito comum em aplicaes do mercado financeiro, por exemplo. Outro artigo interessante para esse tipo de cenrio dado a seguir: Queuing in WCF Ref.: http://msdn.microsoft.com/en-us/library/ms789048.aspx No prximo post, vamos falar de nosso ltimo cenrio, servios de workflow... no percam! Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, July 14, 2008

70

Cenrios de implementao de servios com WCF - Parte 6 : Servios para Workflow


Servios para Workflow
Ol pessoal, tudo certo? Mais um cenrio, importante na discusso sobre orquestrao, coordenao de processos e fluxos de trabalho: servios para workflows. Em arquiteturas orientadas a servios, comum o uso de servios de negcios que encapsulam um srie de funcionalidades, disponibilizando esses recursos atravs de um firewall (em intranets) ou diretamente para clientes na internet. Como benefcios dessa publicao temos um melhor reuso, manuteno, isolao, tolerncia a falhas, distribuio e escalabilidade. Interfaces WCF tornam esse encapsulamento mais fcil, atravs da definio clara de contratos de mensagens e questes sobre o transporte e segurana. Porm, no temos uma definio sobre a ordem das chamadas ou execuo desses servios dentro da aplicao. Com o .NET 3.0 foi introduzido tambm o WF - Windows Workflow Foundation, que oferece mecanismos para a construo de workflows e pode ser hosteado em aplicaes Windows. Com o uso de workflows ou fluxos de trabalhos, possvel coordenadar as atividades de negcio e requisies de servios, sendo o mtodo ideal para organizar chamadas para servios WCF em processos de longa durao. O .NET 3.5 trouxe novas funcionalidades e entre elas, uma maior facilidade para o consumo de servios WCF a partir de fluxos de trabalho em WF. Isso tornou a integrao WCF + WF muito mais direta e de fcial programao. Tambm com o .NET 3.5 temos o recurso de servios durveis, onde o estado de uma instncia de servio automaticamente salvo entre chamadas. Isso torna possvel a re-hidratao de uma mesma instncia de servio em diferentes mquinas. A figura a seguir ilustra uma integrao WF / WCF, onde um fluxo de trabalho consome uma funcionalidade exportado por um servios WCF:

71

Podemos publicar um workflow em qualquer tipo de aplicaes Windows. Alguns exemplos de implementao so:

Uma aplicaes cliente Windows que oferece um workflow que coordena chamadas para servios WCF remotos, publicados no IIS, WAS ou um Windows NT Service; Uma aplicao ASP.NET que inicia um workflow para coordenar chamadas para servios WCF remotos publicados em Windows NT Services atrs do firewall de um intranet.

Um video interessante sobre exportao de WF como services WCF encontrado aqui: Building WCF Services Using Workflow Foundation Ref.: http://www.microsoft.com/uk/msdn/nuggets/nugget/285/wf-v35-building-wcf-servicesusing-workflow-foundation.aspx Para finalizar, outro cenrio tpico para a aplicao de workflows a aprovao e gerao de documentos. Um artigo que ilustra bem esse exemplo dado a seguir: Crie fluxos de trabalho para obter dados e criar documentos Ref.: http://msdn.microsoft.com/pt-br/magazine/cc534981.aspx Nesses ltimos dias, passamos pelas principais caractersticas de cada cenrio, comuns em ambientes corporativos e solues de negcio. Aproveito para agradecer ao amigo Rogrio Cordeiro, pelas discusses e questes levantadas at aqui. Em breve, vamos ter algumas surpresas como resultado dessas discusses. Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, July 17, 2008

72

Captulo 4
Windows Azure e seus recursos

O Windows Azure o novo sistema operacional da Microsoft voltado para cenrios de cloud computing (computao na nuvem). Ele executado sobre datacenters de ltima gerao sendo construdos pela Microsoft pelo mundo, oferecendo espao de armazenamento e poder de computao como servios, que podem ser contratados pelas empresas e usurios conforme a necessidade. Alm de recursos nativos de um ambiente de computao de alta escalabilidade, o Windows Azure tambm oferece uma plataforma completa de servios. O Windows Azure tem lanamento previsto para novembro de 2009. Neste captulo, voc encontra um pouco da evoluo do Windows Azure, seus principais pacotes CTP Community Technology Preview e exemplos.

73

Azure Services Platform : Uma nova srie que comea

Ol pessoal, tudo certo? Feliz 2009!!! Terminado o perodo de festas hora de retomar as atividades e continuar nossas discusses sobre Arquitetura de Solues. Por isso, nada melhor do que uma nova srie para comear o ano com o p direito, no mesmo? :) Atendendo a pedidos, iniciamos hoje a srie sobre Azure Services Platform e suas funcionalidades. Vamos falar sobre aplicaes na nuvem, dados na nuvem, servios e workflows na nuvem, assim como o ciclo de vida de aplicaes sobre o Azure, metodologias de desenvolvimento com a plataforma, recursos do sistema operacional e finalmente, quando colocar uma aplicao na nuvem. Conto com vocs para grandes discusses sobre o tema, pois vocs sabem... "A mente que se abre para uma nova idia jamais retorna ao seu tamanho original." Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, January 06, 2009

Azure Services Platform : seu primeiro "Hello Cloud" para o Windows Azure.

Ol pessoal, tudo certo? No post anterior fizemos uma rpida introduo sobre alguns aspectos do sistema operacional Windows Azure. Note que o assunto sistema operacional muito mais complexo, contendo diversas consideraes sobre gerenciamento de recursos, memria, processos, arquitetura em camadas, controle de execuo, recuperao, etc. A idia foi apenas dar uma viso sobre o assunto e no esgot-lo. Mas serviu bem para algumas analogias com a plataforma na nuvem.

74

Preparando seu espao no Windows Azure No post de hoje vamos escrever nossa primeira aplicao para a plataforma Azure. Para poder usar os recursos da plataforma, voc precisa se registrar no portal, atravs do link abaixo: Ref.: http://www.microsoft.com/azure/register.mspx A partir do registro, voc deve receber um email com o Invitation Code, que dever ser registrado para acesso aos servios e recursos da plataforma, no link abaixo: Ref.: http://portal.ex.azure.microsoft.com/ Vale notar que devido a procura, seu Invitation Code pode demorar um pouco para ser recebido. Por isso, faa o registro assim que possvel. A partir do registro do seu Invitation Code, voc poder acessar aos diversos recursos disponveis, assim como servios como .NET Services, SQL Services, Live Services, etc. alm de criar seus prprios projetos de aplicaes e servios no Azure.

Para a construo de aplicaes para o Windows Azure, voc tambm dever instalar o SDK do Windows Azure, assim como as ferramentas e templates necessrios para o Visual Studio 2008. Esses pacotes esto disponveis nos links a seguir: Windows Azure Software Development Kit (October 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=BB893FB0-AD04-4FE8BB04-0C5E4278D3E9&displaylang=en

75

Windows Azure Tools for Microsoft Visual Studio (October 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=63D0D248-1B08-4F7DABDE-62EB75CB1E69&displaylang=en Nota: se voc estiver usando uma estao com Windows Vista, vai precisar configurar o IIS 7.0 com suporte para ASP.NET. Para isso, siga o menu Control Panel - Programs - Turn Windows features on or off, selecionando a rvore "Internet Information Services / World Wide Web Services / Application Development Features ". Checar as opes: .NET Extensibility ASP.NET, ISAPI Extensions e ISAP Filters. Sua primeira aplicao "Hello Cloud" para o Windows Azure Com essa instalao, seu Visual Studio 2008 ganha novos templates para o desenvolvimento integrado com a nuvem. Veja a figura abaixo, onde destaco a pasta Cloud Services, com os templates de aplicaes e servios Web para a nuvem:

Selecionando o template Web Cloud Service, temos um exemplo de projeto que pode ser usado em nosso primeiro teste. Adicione um novo ttulo simples para a pgina e algum contedo e execute localmente no Visual Studio nossa "Hello Cloud". Ao executar sua primeira aplicao Cloud Service, voc ver o Development Fabric, uma ferramenta do CTP 1 que permite simular o ambiente do Windows Azure, veja:

76

Com a aplicao "Hello Cloud" terminada, vamos public-la no ambiente do Windows Azure. Na janela do Sollution Explorer, selecione o projeto CloudService1 e d um right-click, selecionando a opo "Publish". Voc ser direcionado para o login do LiveID, para acessar seu portal de desenvolvimento no Windows Azure, como vemos a seguir:

Criando um novo projeto para sua aplicao, voc receber uma URL para acess-la, como no exemplo abaixo:

77

Com a criao do projeto, podemos fazer o deploy da soluo, como vemos a seguir:

O deploy feito atravs do upload de dois arquivos:


App Package : CloudService1.cspkg Configuration Settings : ServiceConfiguration.cscfg

Esses arquivos so gerados pela compilao da aplicao no Visual Studio, disponibilizados no diretrio Publish da aplicao, veja:

C:\CloudService1\CloudService1\bin\Debug\Publish\

A partir do upload da aplicao, voc pode dispar-la em ambiente de Staging, como vemos a seguir:

78

Finalmente, colocando a aplicao em produo, teremos o link definitivo que poder ser divulgado para seus usurios, com sua aplicao j pronta:

Nota: como tenho feito diversos testes com o ambiente, possvel que voc acesse o link acima e ele esteja indisponvel, pois a aplicao estar suspensa. Mas em breve, vou publicar uma aplicao final, mas rica, para que vocs a avaliem. Aguardem... :) Em tempo, fiquem a vontade para publicar aqui no blog, atravs de comentrios, as aplicaes que vocs esto desenvolvendo para o Windows Azure. Vamos divulgar esses testes para a comunidade de arquitetos, pensando em cenrios de aplicaes que podem aproveitar o modelo de computao na nuvem em aplicaes corporativas. Veja que o Otvio j publicou a dele, no link a seguir:

79

Ref.: http://opc.cloudapp.net/Default.aspx No post de hoje, vimos os passos para a criao de uma aplicao "Hello Cloud" na plataforma Windows Azure. Tem bastante coisa interessante que pode ser explorada ainda, como o contedo do arquivo de configurao, o provisionamento dinmico, a administrao de estatsticas de projetos publicados, a administrao de workers, etc. So assuntos que vamos tratar no futuro... fiquem ligados!!! Nos prximos posts, vamos ver os demais recursos que permitem o tratamento de dados, servios, workflows e interoperabilidade na nuvem. Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, January 09, 2009

Azure Services Platform : um pouco mais sobre o Windows Azure.

Ol pessoal, tudo certo? Seguindo nossa discusso sobre Windows Azure, vamos focar alguns aspectos da plataforma e da infra-estrutura por de trs da nuvem. Uma nota: o pessoal andou perguntando qual a relao entre solues corporativas na nuvem e a escolha entre Palmeiras e Corinthians, proposta pelo Otvio em sua primeira aplicao na nuvem. Ehehe!! :) Confira aqui! Um dos pontos interessantes dessa aplicao que ela trabalha o conceito de filas (queues) e processos (workers) em cenrios de alta escalabilidade, muito importante para nossas futuras aplicaes al "Stratus Cirrus". O desenho a seguir representa o conceito implementado pela aplicao, onde temos duas threads que consomem um mesmo contador de votos.

80

Veja que usando a fila (Queue), garantimos que nosso contator (Worker) nunca perca nenhum voto durante a contagem, mesmo em cenrios de alta demanda. Novas requisies de contagem apenas aguardam na fila o momento de serem consumidas. Ou seja, o uso de filas torna-se muito interessante para solues com alto volume de mensagens, como o caso em cloud computing. Relembrando, o Windows Azure baseado na tecnologia de virtualizao Hyper-V da Microsoft, com diversas melhorias adicionadas especificamente para os cenrios da nuvem. De fato, pense num conjunto de servidores de alta performance presentes em dezenas de datacenters da Microsoft pelo mundo. So muitos servidores, muito poder de processamento e muito espao em disco para armazenamento de dados e software. Alguns datacenters de ltima gerao j trabalham com containers contendo algumas centenas de servidores disponveis na mesma caixa. Para coordenar esses recursos e criar mecanismos dinmicos de provisionamento das capacidades de computao, a infra-estrutura do Azure implementa alguns servios bsicos que tornam a mgica possvel. Um desses conceitos o Fabric Controller.

81

Podemos definir o Fabric Controller como um gerenciador de recursos fundamental do Windows Azure. Se o Windows Azure um sistema operacional para o cloud computing, podemos dizer que o Fabric seu HAL - Hardware Abstraction Layer. A partir de requisies disparadas para as aplicaes no Azure, o Fabric Controller responsvel pela seleo de mquinas virtuais e poder de processamento necessrio para o atendimento dessas requisies. Essa seleo feita de acordo com as especificaes presentes na configurao do ambiente contratado no Azure, isto , cada aplicao possui um arquivo de configurao que determina os recursos para front-end e back-end, previstos para o atendimento da demanda na aplicao. Vimos isso no ltimo post, quando subimos a configurao da aplicao "Hello Cloud", durante o deploy.

82

Essa configurao de ambiente feita atravs de arquivos como o ServiceConfiguration.cscfg, presente em uma aplicao do tipo Web Cloud Service, por exemplo, veja:
1: <?xml version="1.0"?> 2: <ServiceConfiguration serviceName="HelloCloud" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"> 3: <Role name="WebRole"> 4: <Instances count="1" /> 5: <ConfigurationSettings> 6: <Setting name="GreetingString" value="Hello Windows Azure" /> 7: </ConfigurationSettings> 8: </Role> 9: <Role name="Worker"> 10: <Instances count="1" /> 11: <ConfigurationSettings /> 12: </Role> 13: </ServiceConfiguration>

Como caraterstica da computao elstica, essa configurao pode ser alterada de forma dinmica, conforme as necessidades da aplicao. Assim, maior ou menor provisionamento de capacidades de computao pode ser contratado e pago de acordo com o uso, fornecendo uma maior economia de escala. Outro assunto importante o Windows Azure Storage. O Azure Storage implementa uma rea de persistncia de dados que durvel, escalvel (com alta capacidade e grandes taxas de transfncias), de alta disponibilidade, seguro e projetado para o cenrio de cloud computing de alto desempenho. O Azure Storage oferece um conjunto rico de abstraes de dados para a nuvem. Ele j apresenta 3 grandes tipos de dados no CTP 1 do Windows Azure:

83

- Para a comunicao entre servios: queues, locks, ... - Para grandes itens de dados: blobs, blocks, ... - Para o controle de estados de servios: tables, caches, ... Para o tratamento desses tipos, o desenvolvedor utiliza uma interface de programao conhecida, baseada no ADO.NET Data Services e REST. Vamos falar mais desses assuntos no futuro. De fato, pensando sobre o Windows Azure e o modelo de programao sobre a nuvem, podemos levantar algumas questes importantes:

Qual a arquitetura desse sistema operacional, para o gerenciamento de recursos de hardware disponveis em sua infra-estrutura? Qual o modelo de programao disponvel pela plataforma, assim como seu modelo de capacidades? Qual o modelo de segurana, isolamento, recuperao, depurao e deployment previsto para a plataforma? Como integro o ambiente de desenvolvimento local com o ambiente de desenvolvimento sobre o Azure? possvel trabalhar de forma mista? Quais so os tipos de dados e mtodos de acesso disponveis na plataforma de desenvolvimento? Quais os servios nativos presentes na plataforma e como podemos extender ou consumir esses recursos?

Essas so as questes que ns arquitetos precisamos revisar para todo novo cenrio de plataforma de desenvolvimento, seja no enterprise ou na cloud. Um dos objetivos dessa srie enderear as questes acima. Se vocs tiverem outras perguntas para adionar, por favor, fiquem a vontade para comentar aqui no blog. A idia discutir essas vrias questes, enquanto acompanhamos as novas verses de CTP do Azure. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, January 14, 2009

Azure Services Platform : CTP de Janeiro j publicado.

Ol pessoal, tudo certo?

84

Esta semana, tivemos a publicao dos novos CTP's da plataforma Azure. Assim, aproveito o post para consolidar os ltimos links para recursos j disponveis. Confira a seguir: Windows Azure Tools for Microsoft Visual Studio January 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=8e90b639-1ef0-4e21-bb73fc22662911bc&displaylang=en Windows Azure Software Development Kit (January 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=80e3eabf-0507-4560-aeb6d31e9a70a0a6&displaylang=en Microsoft .NET Services SDK (Dec 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=83e1e30f-bd9a-4284-80a6388ba2e768fd&displaylang=en Windows Azure Software Development Kit (October 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=BB893FB0-AD04-4FE8BB04-0C5E4278D3E9&displaylang=en Windows Azure Tools for Microsoft Visual Studio October 2008 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=63D0D248-1B08-4F7DABDE-62EB75CB1E69&displaylang=en SQL Data Services (SDS) SDK (CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=0B1FA5C6-EC9D-440B939E-481DD05F2627&displaylang=en Azure Services Training Kit - PDC Preview Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B30953B7B77EDF78&displaylang=en Divirtam-se! :) Por enquanto s! At o prximo post :) Waldemir.
Posted: Saturday, January 17, 2009

Azure Services Platform : falando sobre dados na nuvem.

85

Ol pessoal, tudo certo? Nossa srie sobre a plataforma de servio Azure continua e o assunto de hoje dados na nuvem. Quando pensamos no uso de uma plataforma como servio, natural pensar em vrios cenrios diferentes: ora teremos aplicaes rodando na nuvem e ora teremos aplicaes rodando no enterprise, persistindo dados na nuvem, por exemplo. Na plataforma Azure, os servios que oferecem capacidades para armazenamento e tratamento de dados esto na sute SQL Services. O que o SQL Services?

O SQL Services uma pilha de capacidades da tecnologia Microsoft SQL Server baseadas na nuvem. Entre as vrias capacidades previstas, o SQL Data Services (SDS) a primeira, j disponvel para testes.

O que o SQL Data Services (SDS)?

O SQL Data Services (ou SDS) uma capacidade de armazenamento de dados, que oferece um base de dados para aplicaes, acessvel atravs de um conjunto de interfaces via REST e SOAP. Esses mtodos de acesso via Web permitem grande agilidade e flexibilidade de integrao com diferentes plataformas de desenvolvimento. Desse modo, podemos construir aplicaes em .NET, JAVA, PHP, RUBY, etc, que consomem interfaces SOAP/REST para a persistncia de dados no Azure (na nuvem).

A figura abaixo apresenta esse conjunto completo de capacidades do SQL Services:

As caixas em destaque j esto disponveis para testes no CTP da plataforma. As demais caixas esto previstas para os prximos CTP's.

86

Ainda em desenvolvimento, o SQL Services oferece uma srie de recursos que podemos testar atravs do portal do Azure. Reveja o post sobre a "Hello Cloud", onde descrevo o passo-a-passo para criar sua conta no Azure. Voc vai precisar desse registro para acessar os servios do SQL Services. Uma vez criada sua conta, voc poder construir aplicaes no enterprise que consomem dados na nuvem, consumindo o servio SQL Data Services (SDS).

Assim como acontece com os demais servios do Azure, ainda no esto definidos os modelos de assinatura e subscrio de espao para o SQL Services. Ao longo de 2009 deveremos ter novos anncios sobre a plataforma e provavelmente, um simulador de custo de subscrio por espao de dados armazenado ou transferido. Pense que uma das caratersticas principais de uma plataforma como servio sua capacidade de provisionamento dinmico, ou seja, tambm poderemos contratar ou liberar espao conforme a necessidade, pagando pelo uso. Para acompanhar esses custos e mesmo a quantidade de informao persistida no SDS, o servio ainda oferece uma srie de estatsticas via interface REST e SOAP. Olhando a arquitetura do SQL Data Services J que falamos em configurao dinmica de espao e atendimento de requisies em alta escala, a arquitetura do SQL Data Services foi pensada para esse tipo de escalabilidade, implementando 2 frentes de servios: servios de front-end, que recebem as requisies de aplicaes dentro e fora da nuvem; e servios de back-end, responsveis pela persistncia de dados em particionamentos de dados do Azure. A figura abaixo apresenta essa arquitetura:

87

Note que no front-end, a interface de acesso das aplicaes respeita um modelo baseado nos conceitos ACE - AUTHORITY, CONTAINER e ENTITY. Atravs desses conceitos, podemos criar domnios de dados diferentes para a mesma aplicao, enquanto adicionamos nossos registros na forma de entidades. Podemos fazer uma comparao de AUTHORITY, CONTAINER e ENTITY, com SERVIDOR (SERVER), DATABASE (DATABASE) e LINHA (ROW) de uma base de dados tradicional. A camada Front-End chamada Data Access Lib um cliente ADO.NET que faz a interface com as parties no Back-End. Qual a diferena entre o Windows Azure Storage e o SQL Data Services?

O windows Azure Storage um servio de armazenamento essencial na nuvem. Ele oferece o conjunto principal de repositrios de dados no relacionais e recuperao em escala massiva, atravs de particionamento e tipos de dados como Tables, Blobs, Queues, Locks. O SQL Data Services um servio de banco de dados na nuvem. Ele extende as capacidades da plataforma de dados do SQL para a nuvem, como o pocessamento de dados relacional sobre dados estruturados e no-estruturados. Ainda, ele oferece capacidades crticas de uma plataforma de dados como Mining, Reporting, ETL, Data Mining, etc.

Essa foi apenas uma introduo sobre o tema. Para maiores informaes sobre o SQL Services e suas capacidades, confira os links abaixo: SQL Data Services (SDS) Developer Center Ref.: http://msdn.microsoft.com/en-us/sqlserver/dataservices/default.aspx SQL Data Services Public CTP (FREE) Ref.: http://go.microsoft.com/fwlink/?LinkID=133905&clcid=0x409

88

SQL Services Ref.: http://www.microsoft.com/azure/sql.mspx SQL Data Services (SDS) SDK (CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=0B1FA5C6-EC9D-440B939E-481DD05F2627&displaylang=en Azure Services Training Kit - PDC Preview Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83B309-53B7B77EDF78&displaylang=en Alguns posts j publicados aqui no blog sobre o assunto: Ref.: http://blogs.msdn.com/wcamb/archive/tags/SSDS/default.aspx E finalmente, vale conferir a sesso sobre SQL Services, apresentada no ltimo S+S Day, de dezembro de 2008 aqui na Microsoft. S+S Day - SQL Services : Aplicao de dados na nuvem (ppt) Ref.: http://www.msdnbrasil.com.br/downloads/ssday/SS_Day_SQL_Services.pdf Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, January 20, 2009

Azure Services Platform : falando sobre servios e workflows na nuvem.

Ol pessoal, tudo certo? Sem dvida, um dos cenrios possveis para o desenvolvimento na nuvem a integrao entre empresas e aplicaes do enteprise. Permitir que diferentes domnios de aplicao troquem mensagens e executem servios atravs de uma interface padro, pela internet e com alta escalabilidade, quase uma vocao para a nuvem.

89

No post de hoje, vamos tratar da sute .NET Services, presente na plataforma de servios do Windows Azure. O que o .NET Services?

Podemos dizer que o principal objetivo do .NET Services fornecer um Service Bus com alta disponibilidade e escalabilidade na nuvem. Para isso, o .NET Services oferece uma sute de capacidades que estendem as tecnologias .NET para a nuvem, oferecendo suporte a padres abertos e interoperveis como REST, SOAP, RSS, AtomPub, etc. para a construo de servios e workflows, alm de servir como um repositrio de servios na nuvem. Ele tambm oferece um SDK para Java, PHP, Ruby e linguagens .NET, o que permite um conjunto maior de opotunidades de integrao entre empresas de diferentes plataformas.

O .NET Services possui 3 grandes caixas de servios, que tratam aspectos necessrios para a integrao e composio de servios e workflows sobre o Azure. Veja o diagrama a seguir:

O que o Access Control?

O .NET Access Control Services oferece um mecanismo de controle de acesso para aplicaes web e servios. Ele utiliza providers de identidade baseados em padres seja atravs de sistemas de diretrios no enterprise ou sistemas de identidade na web como o Windows Live ID. Como exemplo temos o suporte do SAML - Security Assertion Markup Language v.2.0 - um padro XML para troca de informaes sobre autorizao, autenticao e declaraes de segurana atravs de atributos. Assim, decises sobre autorizao para o acesso de funcionalidades podem ser retiradas da aplicao e colocadas em um conjunto de regras de declaraes via Access Control, transformando declaraes (claims) de segurana em regras que as aplicaes entendem e aplicam na execuo de seus processos de negcio.

O que o Service Bus?

O .NET Service Bus tem por objetivo facilitar a conexo entre aplicaes atravs da Internet. Para isso, ele permite que servios sejam registrados num barramento (Bus) que facilmente descoberto e acessado, atravs de qualquer topologia de rede. De fato, o Service Bus oferece um pattern familiar de Enterprise Service Bus (ESB) na nuvem, facilitando a integrao atravs de diferentes fronteiras de rede, segurana, limites organizacionais, na escala da internet.

O que o Workflow Services?

90

O .NET Workflow Services um host de alta escalabilidade para a execuo de fluxos de controle na nuvem. Ele fornece um conjunto de atividades otimizadas para envio, recebimento e manipulao de mensagens HTTP e mensagens do Service Bus. Entre as ferramentas disponibilizadas pelo Workflow Services temos: um conjunto de ferramentas para deployment, gerenciamento e rastreamento de instncias executadas de workflows e um conjunto de API's para gerenciamento. Para o desenvolvedor, workflows podem ser construdo usando as ferramentas de desenho no prprio Visual Studio 2008, de forma integrada.

No portal da plataforma Azure, voc tem acesso a todas as informaes previstas para os servios do .NET Services, como vemos a seguir:

O que preciso saber sobre o Access Control?

O Access Control pode ser usado como principal mecanismo de autenticao de suas aplicaes sobre o Azure. Ainda, o Access Control pode ser o mecanismo integrado de controle de autorizao e acesso para aplicaes externas, instaladas no enterprise e que consomem servios da nuvem. O desenho a seguir exemplifica esse cenrio, onde aplicaes customizadas no enterprise consomem servios e aplicaes na nuvem.

91

Para saber mais sobre o Access Control, confira o link a seguir: http://www.microsoft.com/azure/accesscontrol.mspx

O que preciso saber sobre o Service Bus?

O Service Bus oferece o conceito de registro de EndPoints para publicao dos servios no barramento. Um exemplo de URL para um servio no Service Bus segue:

[http|sb]://servicebus.windows.net/services/projeto/servio/

A partir do registro do servio, aplicaes externas ou servios no prprio Azure podem acessar os servios atravs de seus EndPoints. A figura a seguir exemplifica o barramento do Service Bus com a publicao dos diversos EndPoints de servios registrados, com Pub/Sub via URI's.

Para saber mais sobre Service Bus, confira o link a seguir: Ref.: http://www.microsoft.com/azure/servicebus.mspx

O que preciso saber sobre o Workflow Services?

O Worflow Services oferece uma coordenao de regras para o disparo de servios, de acordo com os parmetros de entrada de um workflow.

92

Para saber mais sobre o Workflow Services, confira o link a seguir: Ref.: http://www.microsoft.com/azure/workflow.mspx

J deu para perceber que o assunto .NET Services muito amplo, abrindo espao para grandes discusses sobre servios na nuvem, workflows, controle de acesso, barramento de servios, integrao entre enterprise e nuvem, etc. Em posts futuros, vamos avanar no detalhamento das demais caixas do .NET Services, incluindo alguns exemplos de projetos. Aguardem!!! Finalmente, o pacote SDK do .NET Services j est disponvel desde dezembro passado: Microsoft .NET Services SDK (Dec 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=83e1e30f-bd9a-4284-80a6388ba2e768fd&displaylang=en Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, January 22, 2009

Azure Services Platform : falando sobre Live Services, Live Framework e Live Mesh

Ol pessoal, tudo certo?

93

O assunto de hoje o Live Services, um tema que j tratamos aqui no blog, no comentrio que virou post, lembram? O desenvolvimento Live e o Windows Azure : o comentrio que virou post! Ref.: http://blogs.msdn.com/wcamb/archive/2008/12/08/o-desenvolvimento-live-e-o-windowsazure-o-coment-rio-que-virou-post.aspx O que o Live Services?

O Live Services uma caixa de servios que envolve uma srie de capacidades, envolvendo o tratamento de informaes sobre usurios, dispositivos, aplicaes, sincronizao de dados, identidade, diretrios, comunicao e presena, alm de recursos de search e distribuio.

A figura abaixo apresenta as principais caixas do Live Services, agrupadas por afinidades:

Portanto, os recursos do Live Services adicionam valor para todos os tipos de aplicaes, seja no ambiente web, mobile ou enterprise. Quais so as capacidades presentes no Live Services?

Existem inmeras capacidades implementadas pelo Live Services, como vemos na figura a seguir:

94

Sem dvida, um recurso importante do Live Services o Mesh. O Mesh Services envolve mecanismos de colaborao e sincronizao entre usurios, dispositivos, aplicaes e usurios, estendendo aplicaes web para o mundo desktop. Iniciando com o Live Mesh... O Live Mesh est em Beta, mas j est disponvel para testes atravs do link a seguir: Live Mesh Beta Ref.: http://www.mesh.com Assim que voc cadastrar seu LiveID, voc ter acesso ao portal do Live, onde visualizar os componentes participantes de suas sesses de sincronizao, podendo ser Mac (em breve), PC, Desktop ou dispositivos mveis. A figura a seguir apresenta essa tela de controle do Mesh, logo aps o sign in:

Como primeiro passo, selecione o cone Install Software, para adicionar os componentes de sincronizao do Live Mesh em seu desktop:

95

Assim que a instalao ocorre, voc ver o cone do Live Mesh Beta no canto direito do desktop:

At que finalmente a janela de sign in do Mesh aparecer:

96

Feito o sign in, voc poder adicionar seu device, comeando pelo desktop:

Uma vez adicionado seu desktop, voc poder visualizar os participante do Mesh em sua mquina, como vemos a seguir na janela de controle:

97

Aqui, vemos os componentes participantes da rede Mesh criada. No exemplo, apenas a mquina WCAMB-PC e o Live Desktop esto disponveis. O Live Desktop estar acessvel atravs do portal do Mesh, permitindo que voc visualize os documentos ou objetos compartilhados na rede Mesh. Novos dispositivos podem ser adicionados conforme a necessidade. A sincronizao ocorrer de forma controlada, de acordo com a configurao desejada. Assim, ser possvel sincronizar todos os participantes conforme atualizaes de documentos ou outros objetos forem ocorrendo. Atravs do cone Live Desktop acima, voc poder visualizar os folder criados na Web, assim como criar novos folder para compartilhamento, veja:

Uma vez criado o folder no Live Mesh, a mgica possvel. Veja que agora voc possui um folder em sua mquina, onde poder compartilhar documentos diretamente a partir do desktop:

98

Todo objeto colocado nessa pasta poder ser sincronizado no folder online, de forma automtica, controlada pelo Live Mesh:

Esse foi apenas um exemplo de compartilhamento simples de documentos feito pelo Live Mesh. Existem inmeras aplicaes que podemos criar usando essa infra-estrutura de sincronizao de objetos. Pense na atualizao automtica de folders online com as fotos tiradas de seu dispositivo mvel, ou a atualizao de desktops entre equipes colaborando num projeto. O cu o limite :)

99

Finalmente, podemos integrar todos esses recursos diretamente em nossas aplicaes, usando um framework dedicado para o acesso a esses recursos, o Live Framework: O que o Live Framework?

Live Framework fornece APIs, Modelo de Recursos e Ferramentas para Criar, Instalar, Executar e Atualizar Aplicaes Web - Mesh. O Live Framework fornece uma maneira uniforme de programar para Live Services a partir de uma variedade de plataformas, linguagens de programao, aplicaes e dispositivos.

O Live Framework merece um post dedicado ao assunto, o que faremos no futuro. Por enquanto, recomendo as sesses dedicadas a ele, feitas durante o PDC 2008: Ref.: http://channel9.msdn.com/tags/pdc2008.live+framework/ Sem esquecer do blog do Live Mesh, claro: Blog do time do Live Mesh Ref.: http://blogs.msdn.com/livemesh Finalmente, no deixe de conferir a sesso BB06, falando sobre a arquitetura do Live Services e Mesh, grande apresentao: BB06 - Mesh Services Architecture And Concepts - PDC 2008 Ref.: http://channel9.msdn.com/pdc2008/BB06/ Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, January 26, 2009

Azure Services Platform : falando sobre "Geneva" e a integrao entre a nuvem e o enterprise.

Ol pessoal, tudo certo? Uma pergunta que surge sobre o uso do Windows Azure quando iremos para o ambiente enterprise e quando iremos para a nuvem, isto , quais aplicaes so indicadas para o enterprise e quais podem ser colocadas na nuvem.

100

Para essa anlise podemos avaliar dois aspectos interessantes: controle e economia de escala.

J falamos um pouco sobre essa viso aqui no blog, veja aqui. Pensando em controle vs. economia de escala, temos 3 grandes participantes em nossa composio de TI: o ambiente on-premise (onde participa o hardware de nossa empresa, local), o ambiente de hosting (baseado em provedores locais, onde podemos inclusive fazer o deploy de servidores colocados) e o ambiente elstico da nuvem, the cloud (onde contratamos por demanda capacidades de computao, provisionando de forma dinmica e acessando esses recursos atravs de tecnologias de internet, SOAP, REST, etc.).

Porm, mesmo aps nossa deciso sobre a melhor composio entre os diferentes ambientes de TI, vamos conviver com questes de integrao entre os ambientes. Aplicaes presentes no onpremise devero ser integradas com aplicaes e servios em hoster's locais ou mesmo na nuvem. Como tratar aspectos de controle de acesso, autenticao e autorizao entre esses ambientes? Pensando na integrao com a nuvem, o Windows Azure oferece um mecanismos de autenticao e autorizao chamado "Geneva". O que o "Geneva"?

O "Geneva" um modelo de autenticao/autorizao que trabalha baseado em declaraes, o chamado Claim Based Authorization/Claim Based Authentication. O "Geneva" permite a integrao de aplicaes do enterprise com a nuvem, de uma forma transparente, fornecendo ainda interfaces de programao que permitem a manipulao dos atributos das declaraes tanto no enterprise como na nuvem.

101

O modelo de Claims-Based Access previsto para o Azure envolve vrios componentes no ambiente enterprise e cloud, como vemos na arquitetura a seguir:

O que uma declarao? (Claim)

Uma declarao uma informao que pode ser associada a uma entidade no sistema. Em geral, essa entidade um usurio, mas tambm pode ser um servio ou recurso qualquer. Uma declarao consiste de trs informaes: o tipo da declarao, seu contedo e se ela descreve a entidade ou um recurso do objeto.

O que o "Geneva Server"?

A partir do desenho acima, o "Geneva Server" fica instalado no ambiente enterprise e fornece um servio de tokens de segurana, um STS - Security Token Service. Esse servio suporta o padro SAML 2.0 (Federated Claims-Based Application), o que permite uma maior flexibilidade na escolha do mtodo de autenticao local para os usurios e aplicaes. Ao mesmo tempo, o "Geneva Server" o componente do enterprise que mantm uma relao de confiana com a nuvem, tornando a autenticao transparente para o usurio junto s aplicaes e servios publicados no Windows Azure.

O que o Microsoft Services Connector?

No ambiente enterprise tambm possvel utilizar o "Microsoft Services Connector", um conector que permite a autorizao de usurios junto ao Azure, sem todo o conjunto de servios do Geneva Server. De fato, o Services Connector um pacote gratuto, que j est disponvel atravs do link abaixo:

Microsoft Services Connector - Connecting Business to Services Ref.: http://www.microsoft.com/servicesconnector/ O que o Federation Gateway?

102

No modelo Windows Azure, o Microsoft Federetaion Gateway uma camada de segurana presente no sistema operacional que permite a integrao com o enterprise, falando o protocolo SAML 2.0, sendo baseado em declaraes de segurana. O Federation Gateway est acessvel para as aplicaes instaladas no Azure atravs do .NET Services Access Control, o que permite a manipulao de declaraes e atributos de forma programtica. Ainda, o ambiente enterprise conversa com o Federeation Gateway via "Geneva" Server ou via Microsoft Services Connector, como apresentado no desenho de arquitetura acima.

O que o "Geneva Framework"?

O "Geneva" Framework, inicialmente chamado de "Zermatt", o nome cdigo do novo framework Microsoft para a construo de aplicaes e servios baseados em declaraes de segurana (claims-based), permitindo a implementao de cenrios de federated security. O "Geneva Framework" fornece um conjunto de API's no ambiente enterprise e no ambiente Azure, tornando a autenticao/autorizao de forma programtica ainda mais flexvel para aplicaes e servios.

Como ficaria uma soluo envolvendo o "Geneva" para a integrao entre o enterprise e a nuvem?

Uma soluo do enteprise pode autenticar usurios localmente, no AD do enterprise, e exportar declaraes baseadas em atributos selecionados para a autorizao junto a servicos publicados na nuvem. Essa integrao ser feita atravs do "Geneva" e seus componentes, como apresentado na figura a seguir:

Como sempre, esse post foi apenas uma introduo sobre o assunto. Resumindo, podemos dizer que o "Geneva" Server implementa um servio de tokens de segurana (Windows-based STS), o CardSpace "Geneva" oferece um seletor de identidades para clientes Windows, o "Geneva" Framework uma biblioteca padro para a criao de

103

aplicaes e servios que suportam segurana por declaraes (claims-aware) e finalmente, o Windows Azure oferece o Federation Gateway e o Access Control, que oferecem mecanismos de autenticao/autorizao para aplicaes na nuvem, de uma forma integrada com o ambiente enterprise. Alguns links que usei para escrever esse post relaciono a seguir: Microsoft Code Name Geneva Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=1e3c3efc-e980-4895-909586e51c1cd9d8&displaylang=en&tm Geneva Team Blog Ref.: http://blogs.msdn.com/card/default.aspx Geneva Whitepapers and Datasheet Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=9CA5C685-3172-4D8F81CB-1A59BDC9F7E3&displaylang=en#filelist Tambm, temos algumas sesses gravadas do PDC 2008 no Channel9 que so imperdveis, confira: .NET Services: Access Control Service Drilldown Ref.: http://channel9.msdn.com/pdc2008/BB28/ Identity: "Geneva" Server and Framework Overview Ref.: http://channel9.msdn.com/pdc2008/BB42/ Identity: "Geneva" Deep Dive Ref.: http://channel9.msdn.com/pdc2008/BB43/ Identity: Windows CardSpace "Geneva" Under the Hood Ref.: http://channel9.msdn.com/pdc2008/BB44/ Finalmente, o prprio SAML 2.0 um assunto bem interessante. Mas vou deixar o tema para nosso amigo Markus :) Confira aqui. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, January 28, 2009

104

Azure Services Platform : Uma srie que termina...

Ol pessoal, tudo certo? O ms de janeiro foi dedicado ao Windows Azure. Juntos, passamos pelos vrios temas da plataforma, desde os aspectos de um sistema operacional na nuvem, at algumas das capacidades de servios oferecidas pelo Azure. Vimos os conceitos e funcionalidades do .NET Services, Live Services, SQL Services, assim como uma primeira viso sobre o "Geneva" Server e "Geneva" Framework. Alguns desses posts foram resultados de discusses que j comearam com algumas empresas e arquitetos, o que bem legal e animador... :) Fevereiro est chegando com um nova srie, que devo anunciar em breve. Enquanto isso, continuem testando a plataforma Azure, seus laboratrios e exemplos. Para no esquecer, o link principal esse aqui: http://www.microsoft.com/azure/default.mspx E o material de apoio esse aqui: Azure Services Training Kit - PDC Preview Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83B309-53B7B77EDF78&displaylang=en Windows Azure Software Development Kit (January 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=80E3EABF-0507-4560AEB6-D31E9A70A0A6&displaylang=en Windows Azure Tools for Microsoft Visual Studio (January 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=8E90B639-1EF0-4E21BB73-FC22662911BC&displaylang=en Microsoft .NET Services SDK (Dec 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=83E1E30F-BD9A-428480A6-388BA2E768FD&displaylang=en SQL Data Services (SDS) SDK (January 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=0B1FA5C6-EC9D-440B939E-481DD05F2627&displaylang=en

105

Microsoft .NET Services White Papers (Dec 2008 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=5057E2B3-C8E5-4B26A601-FF9621589CE3&displaylang=en Por enquanto s! At o prximo post :) Waldemir. Posted: Friday, January 30, 2009

Aplicaes na nuvem: um estudo de caso para Aplicaes Web Colaborativas.


Ol pessoal, tudo certo? Esses ltimos dias falamos de alguns assuntos interessantes: Comeamos com o lanamento do Composite Application Guidance for WPF and Silvelight, o PRISM v2.0 que foi lanado agora em fevereiro. Depois passamos pelas atualizaes do Training Kit do Windows Azure, com uma srie de laboratrios e exemplos de cdigo. E na sequncia, voltamos ao mundo das interfaces e falamos do Sculpture v1.0, um pacote muito interessante no Codeplex para a construo de interfaces e aplicaes com WPF, ASP.NET, MVC, etc. O que todas essas tecnologias tm em comum? So ferramentas interessantes para a construo de aplicaes na nuvem. Como assim? :) Podemos destacar 3 tipos de cenrios de aplicaes na nuvem:

SaaS LOB Applications, ou aplicaes de linhas de negcio que disponibilizadas como servio (por exemplo CRM SAAS, HR SAAS, ERP SAAS, etc.), podendo persistir seus dados na nuvem, oferecendo interfaces de operao Web para seus usurios; Aplicaes web colaborativas, onde diversos tipos de usurios colaboram com a troca de dados de diferentes formatos e com um grande volume de requisies; Hub de dados compartilhado, onde participantes compartilham dados e mensagens de forma integrada, atravs de interfaces padronizadas via HTTP/REST/SOAP e a partir de um ponto central de mensagens na nuvem, um Internet Service Bus, por exemplo.

A seguir, temos um diagrama exemplo para o cenrio de Aplicaes Web Colaborativas, veja:

106

A soluo acima representa um bureau de imagens e notcias, onde diferentes usurios e dispositivos operam informaes de diversos formatos. Temos clientes de mdia consumindo informaes em XML e imagens para pautas, fotgrafos adicionando novas imagens a partir de cmeras ou dispositivos mveis, usurios administrativos sincronizando informaes de forma ocasional, a partir de bancos de imagens locais e usurios executivos, consumindo portais de anlise e gerenciamento, acompanhando a evoluo dos diferentes tipos de dados, contas e usurios envolvidos. Um cenrio tpico na indstria de mdia e informaes. Podemos destacar dois aspectos importantes em arquitetura de solues:

Provisionamento e escalabilidade da soluo; Consumo de servios e funcionalidades das interfaces de aplicaes;

Provisionamento e escalabilidade da soluo Quando falamos em escalabilidade, pense na evoluo da infra-estrutura aplicada para esse projeto. Ao longo do tempo, espera-se um crescente volume de dados sendo persistido no sistema, seja atravs de imagens, fotos, vdeos, udios e nticias, ou mesmo pelo crescente volume de requisies feitas online para seus dados pelos usurios. Ainda, um bureau de servios tpico tende a utilizar o modelo de negcios SAAS Software as a Service onde diferentes empresas de notcias e mdias podem contratar a infra-estrutura e soluo de gerenciamento do bureau para suas operaes. Desse modo, surge o conceito de uma infra-estrutura como servio, escalvel e com alta disponibilidade, que atenda os diversos usurios e potenciais clientes no mercado. Ao mesmo tempo, a opo de subscrio, de provisionamento dinmico de servios e mesmo contratao de infra-estrutura ao longo da operao do sistema so caractersticas do modelo elstico de computao, obtido com o cloud computing ou computao na nuvem. Cada empresa contrata mais infra-estrutura do bureau de acordo com suas necessidades, pagando pelo uso e provisionando mais ou menos infra-estrutura de forma dinmica.

107

Assim, o cenrio seria um excelente candidato para um ambiente na nuvem, executando suas aplicaes e persistindo seus dados numa infra-estrutura elstica. Vemos aqui o Windows Azure, com suas capacidades de dados na nuvem via o SQL Data Services um exemplo de aplicao direta para a soluo. Da mesma forma, podemos publicar nossas interfaces de aplicao tambm na nuvem, ganhando a escalabilidade e disponibilidade que o ambiente oferece. Consumo de servios e funcionalidades em interfaces de aplicaes Quando falamos em interfaces e consumo de servios, uma grande preocupao est em relao aos diferentes dispositivos utilizados pelo usurio. Da mesma forma, aspectos de RIA Rich Internet Application esto presentes e fornecem recursos adicionais para uma maior usabilidade. Interfaces de composio so combinaes de patterns que permitem a construo de telas leves, flexveis, que permitem o desenvolvimendo simultneo e a personalizao da interface de acordo com o desejo do usurio. Como uma tendncia do Web 2.0, mashups de composio so opes interessantes de se avaliar. Assim, o cenrio tambm candidato para a construo de suas interfaces usando pacotes como o Prism v2.0 ou o prprio Sculpture v1.0. Pensando no Prism, o desenvolvimento de cada mdulo ou componente de tela pode ser feito de forma simultnea, por equipes ou desenvolvedores trabalhando em paralelo. Ao mesmo tempo, cada mdulo pode ser concebido para o consumo de uma funcionalidade ou servios afins, permitindo uma modularidade na arquitetura tambm visvel a partir da interface da soluo. Finalmente, no podemos esquecer que nosso projeto do bureau de imagens pode aproveitar ainda os recursos das demais caixas de capacidades da plataforma de servios do Windows Azure. Para lembrar os componentes do .NET Services, do SQL Services e do Live Services, confira o desenho abaixo:

Em posts futuros, vamos exercitar de forma prtica os cenrios de aplicaes aderentes ao modelo de computao na nuvem. Um pouquinho de cdigo sempre bom, no acha?

108

Por enquanto s! At o prximo post :) Waldemir.


Posted: Tuesday, March 10, 2009

Azure Services Platform: Novos CTPs anunciados.

Ol pessoal, tudo certo? Muitas novidades esto chegando com o MIX09 e novos CTPs foram anunciados para a plataforma de servios do Windows Azure. Vamos atualiz-los neste post: Windows Azure Tools for Microsoft Visual Studio March 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=59E8FC0C-C399-4AB78A93-882D8E74B67A&displaylang=en Windows Azure Software Development Kit (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af103d2839a5a362&displaylang=en Azure Services Training Kit - February Update Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B30953B7B77EDF78&displaylang=en Opa, coisa nova chegando!!! Live Framework Tools Live Framework Tools for Microsoft Visual Studio April 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=4257C275-BE72-4AF8B2F0-1E01C67FB8BF&displaylang=en E veja o .NET Services, nas palavras de Steven Martin, um dos gerentes para tecnologias da nuvem na Microsoft: .NET Services - Cloud Interoperability Ref.: http://blogs.msdn.com/stevemar/archive/2009/03/30/net-services-cloudinteroperability.aspx

109

Com o recm anunciado CTP de maro!!! foi ontem!!! :) Microsoft .NET Services SDK (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=8d1d1d5e-1332-4186-b33f26d053759e49&displaylang=en Bom, agora vou instalar os pacotes acima em minha mquina. Assim que comear meus testes, em breve coloco aqui meus comentrios. Vale tambm acompanhar os posts sobre Windows Azure, filas e tipos do Azure Storage do Giovanni, que ficou bem legal, confira :) Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, April 01, 2009

Windows Azure Internals: Uma reviso de conceitos.


Ol pessoal, tudo certo? Os CTPs de maro da plataforma Azure trouxeram grandes novidades e informaes sobre os detalhes internos do sistema operacional para a nuvem. Para relembrar, os links para downloads esto abaixo: Windows Azure Tools for Microsoft Visual Studio (March 2009 CTP ) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=59E8FC0C-C399-4AB78A93-882D8E74B67A&displaylang=en Windows Azure Software Development Kit (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=b44c10e8-425c-417f-af103d2839a5a362&displaylang=en Microsoft .NET Services SDK (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=8d1d1d5e-1332-4186-b33f26d053759e49&displaylang=en Microsoft .NET Services Client Redist (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=4EFF38B3-FCA0-4940A014-461631152E5D&displaylang=en

110

Vamos aproveitar o post para reforar alguns tpicos sobre a plataforma e seus conceitos. Comeando pelas capacidades principais do Windows Azure, podemos organiz-las em 3 grupos: computao, armazenamento e gerenciamento.

Gerenciamento (Management): o controlador de malha (ou Fabric Controller) responsvel pela organizao da infra-estrutura contratada pelo cliente, atravs de um modelo de servios representado por um arquivo de configurao. A configurao permite definir quantas mquinas sero provisionadas para front-end, back-end, assim como o nmero de instncias de cada papel em execuo, seja Web Role ou Worker Role.

Computao (Compute): o ambiente de computao virtualizado baseado em Windows Server. A figura acima representa os principais componentes de computao do Windows Azure, onde vemos Web Roles e Worker Rolers. As principais caractersticas desse ambiente so:

Suporte ao .NET 3.5 sp1 sobre IIS7 Infra-estrutura Windows Server 2008 64bit Virtualizao oferecida atravs de Hyper-V Microsoft Web Role: implementados como Web Sites (ASP.NET) e Web Services (WCF) Worker Role: similares a servios Windows locais

111

Servidores Stateless (sem manuteno de estado) Acesso via Http(s), TCP

Hoje, computao na plataforma Azure (no CTP de Maro) significa executar cdigo gerenciado somente. No futuro, a plataforma dever suportar tambm cdigo no-gerenciado, como foi anunciado durante o PDC 2008. J possvel executar cdigo PHP atravs do mdulo IIS FastCGI na plataforma Azure, como disponvel anunciado durante o ltimo MIX 09, veja:

Ref.: http://blogs.msdn.com/windowsazure/archive/2009/03/18/using-3rd-party-programminglanguages-via-fastcgi.aspx Existem 2 papis possveis para nossos processos sobre o Windows Azure:

Web role: que um site web, ASP.NET, com servios WCF, imagens, CSS, etc. Worker role: que similar ao servio Windows on-premise, sendo executado de forma desacoplada em background na plataforma Azure. Todos os servidores so stateless na plataforma e todo acesso para eles suporta balanceamento de carga.

Armazenamento (Storage): o espao de armazenamento de dados, durvel e para alta escalabilidade.


Durvel: toda escrita persistida em disco, no em memria; Escalvel: voc ter diversos servidores com seus dados replicados;

112

Disponvel: assim como ocorre com a computao, o Windows Azure garante a disponibilidade de seus dados, replicando em diversos servidores; Tipos Blobs: similar ao sistema de arquivos, podemos usar blobs para armazenar contedo e suas alteraes, uploads, dados no estruturados, imagens, filmes, etc.; Tipos Tables: dados semi-estruturados, oferece um armazenamento de entidades particionvel, permitindo a persistncia de linhas em mltiplos servidores; Queues: filas simples para desacoplar as Web Roles das Worker Roles; Interfaces REST: permite o acesso a dados a partir da web sobre HTTP, sendo possvel tambm o uso de ADO.NET Data Services para seu consumo;

Computao, Armazenamento e Gerenciamento so os principais macro-componentes do Windows Azure, que nos ajudam a entender suas capacidades e recursos disponveis para aplicaes na nuvem. Enfim, nossas aplicaes sobre o Windows Azure podero aproveitar os diferentes processos, enquanto consomem dados de diferentes tipos no ambiente de armazenamento do Windows Azure, conhecido como Azure Storage. A figura abaixo ilustra este cenrio:

Finalmente, que tal dar uma olhada em como se parece mesmo um datacenter Microsoft para o Windows Azure? Veja as fotos abaixo:

113

Realmente, so milhares de kms de cabeamento, espao em disco quase ilimitado e poder de processamento escalvel, em rea de mais de 50 mil m2. Essa nova gerao de datacenters pode mesmo ser considerada as novas usinas de processamento do mundo. Sobre esses vrios recursos, encontramos a plataforma de servios do Windows Azure. Mas vamos deixar esse assunto para uma prxima conversa. Por enquanto s! At o prximo post :) Waldemir. Monday, April 27, 2009

Azure Application Monitor e WFP Client for Windows Azure


Ol pessoal, tudo certo? Gostaria de destacar hoje dois projetos interessantes sobre o Windows Azure, que esto pblicos e disponveis no codeplex para nossos testes:

Azure Application Monitor Ref.: http://azuremonitor.codeplex.com/ Comentrios: O Azure Application Monitor uma ferramenta que permite a monitorao e acompanhamento e o controle de suas aplicaes hospedadas sobre o Windows Azure. O pacote inclui uma biblioteca runtime que captura as informaes da aplicao e permite a monitorao atravs de uma interface desktop, em tempo real. Bem interessante e pode ser uma boa dica para estudo, j que o fonte est disponvel.

114

WPF Client for the Windows Azure Blob Storage Ref.: http://azureblobclient.codeplex.com/ Comentrios: O WPF Client for Azure Blob uma aplicao escrita em Visual Basic 2008, que permite ao desenvolvedor gerenciar arquivos armazenados em seu servio de Blobs do Azure Storage. Circulando pelo codeplex, vemos que vrios desenvolvedores e arquitetos esto construindo exemplos interessantes de ferramentas e bibliotecas interagindo com os servios do ambiente Azure. Sem esquecer de aplicaes completas, como o j comentado aqui Azure Issue Tracker, veja:

Azure Issue Tracker Ref.: http://azureissuetracker.codeplex.com/ Vale a pena conferir esse material tambm! Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, April 03, 2009

115

Links e CTPs para o Windows Azure


Ol pessoal, tudo certo? Algumas pessoas me perguntaram sobre as ltimas atualizaes da plataforma Windows Azure, na semana passada. Sempre vale fazer uma reviso sobre os links. Assim, segue abaixo os ltimos pacotes para voc preparar sua mquina. Se voc ainda no tem o Visual Studio 2008 e o SQL 2008 para alguns testes, confira as verses Express Editions, abaixo: Visual Web Developer 2008 - Express Edition Ref.: http://www.microsoft.com/express/vwd/ Microsoft SQL Server 2005 Express Edition Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=220549b5-0b07-4448-8848dcc397514b41&displaylang=en Para trabalhar com os recursos do Windows Azure e do Azure Services Platform, confira os pacotes CTPs de maro: Windows Azure Software Development Kit (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=B44C10E8-425C-417FAF10-3D2839A5A362&displaylang=en Windows Azure Tools for Microsoft Visual Studio (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=59E8FC0C-C399-4AB78A93-882D8E74B67A&displaylang=en Microsoft .NET Services SDK (March 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=8D1D1D5E-1332-4186B33F-26D053759E49&displaylang=en E o kit de treinamento atualizado em abril: Azure Services Training Kit - April Update 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B30953B7B77EDF78&displaylang=en Finalmente, para o Live Framework, confira os links: Live Framework Tools for Microsoft Visual Studio April 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=4257C275-BE72-4AF8B2F0-1E01C67FB8BF&displaylang=en

116

Live Framework SDK April 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=3DD6E663-B4D9-44E3971C-101325E39413&displaylang=en Por enquanto s! Boa instalao e at o prximo post :) Waldemir.
Posted: Monday, May 04, 2009

Azure Issue Tracker: integrao entre o enterprise e a nuvem


Ol pessoal, tudo certo? J falamos aqui sobre o Azure Issue Tracker, uma soluo SaaS (Software as a Service) que aproveita os recursos de computao na nuvem sobre o Windows Azure (veja aqui). Um aspecto interessante dessa soluo sua integrao entre as mquinas do enterprise e as APIs da soluo, fazendo uso do Access Control do .NET SERVICES para controle de acesso e autorizao de usurios. A figura a seguir exemplifica essa infra-estrutura:

117

Vemos que atravs da identificao do usurio enterprise junto ao Provedor de Identidades STS local, os vrios agentes de monitorao da infra-estrutura local ganham acesso API de gerenciamento (Management API) do Azure Issue Tracker. Essa primeira parte da soluo responsvel por popular a base de gerenciamento (Management repository) que est colocada tambm na nuvem (atravs do SQL Data Services). A partir da coleo de dados sobre Issues capturados do ambiente Enterprise, o usurio de TI de cada empresa podem consultar as informaes de sua prpria infra-estrutura, a partir da aplicao Web IssueTracker Web Site, tambm hospedada na nuvem. Como vemos, o modelo SaaS respeitado na soluo, considerando os vrios inquilinos (tenents) suportados, assim como a escalabilidade e o espao de armazenamento de dados (Management repository) crescente e provisionvel, conforme a demanda. Achei interessante resgatar a estrutura interna do Azure Issue Tracker aqui no blog, pois vrias empresas j esto trabalhando em cenrios possveis para testes da infra-estrutura Windows Azure. Como apresentado pela soluo acima, existem vrias questes possveis para a escolha de nosso cenrio de testes, como:

Quais dados sero publicados no SQL Data Services?

Resp.: o SQL Data Services sofrer mudanas em breve, com o prximo CTP que deve chegar at junho/julho. Conforme anunciado no ltimo MIX09, teremos suporte ao TDS, permitindo que a aplicao faa acesso aos dados do SQL Data Services atravs de um cliente SQL tpico, consumindo o Modelo T-SQL que j conhecemos. Desse modo, uma aplicao ir falar com dados relacionais persistidos na nuvem, o que ser bem interessante para nossas aplicaes. O suporte para consultas REST/SOAP deve continuar, mas mudar em relao ao antigo ACE Authority, Container e Entity. Mas um fator de deciso importante: qual o crescimento esperado de espao necessrio para armazenamento de dados, assim como o custo de administrao e manuteno de uma infra-estrutura para persistncia de dados localmente (onpremise). Ser que alguns dados (como o histrico de Issues do Azure Issue Tracker) no so aderentes ao modelo da nuvem?

Podemos criar toda a soluo como uma aplicao WEB ASP.NET hospedada na nuvem?

Resp: sem dvida, um exemplo natural de soluo sobre o Windows Azure a construo de uma aplicao Web, usando Web Roles e Worker Roles para a implantao de suas funcionalidades na nuvem. Nesse modelo, temos suporte ao AJAX e Silverlight 2.0, permitindo a construo de interfaces ricas para a nuvem. Como estamos numa soluo que caminha para o modelo SaaS, no podemos esquecer do tratamento multi-inquilino, que envolve o metadado sobre os vrios clientes usurios da soluo, assim como o tratamento de controle de acesso e autorizao, que deve aproveitar os recursos do Access Control do .NET Services. Isso significa que um modelo de dados de metadados e metaconfigurao torna-se importante, para a personalizao da interface e funcionalidades de forma dinmica, de acordo com a empresa ativa na soluo. Na soluo do Issue Tracker isso aparece nos componentes de configurao,

118

gerenciamento de contas e gerenciamento de tarefas, de acordo com um metadado de inquilios ativos.

Quais funcionalidades de servios devo registrar no Service Bus do .NET Services Bus?

Resp: pense que estamos registrando servios locais para o discovery na nuvem. Usando ainda o Access Control, podemos autenticar os usurios que iro consumir esses servios de uma forma transparente, independente de chamadas feitas a partir da nuvem ou do ambiente enterprise (local). Um cenrio interessante mapear os servios que podem oferecer REUSO a partir da nuvem, publicados para sistemas e clientes externos consumirem.

Como fao a autenticao e autorizao da aplicao?

Resp: autenticao e autorizao passam pela projeto Geneva e pelo Access Control. O Azure Issue Tracker utiliza a verso Beta do Geneva para a emisso de identidades baseadas em declaraes (ou claims) que a base do modelo CBA Claim-based Authentication. Atravs dele, podemos usar qualquer tipo de provedor de identidades, abrindo as possibilidades para diversos mecanismos presentes no ambiente enterprise. Atravs das declaraes, os atributos escolhidos para descrever os usurios so usados para autorizar o acessos em chamadas feitas para servios e aplicaes na nuvem. Segurana ser sempre um aspecto importante num modelo SaaS sobre a nuvem. Enfim, essas so apenas algumas das questes comuns presentes num modelo de computao na nuvem. Outros aspectos existem como transao, tratamento de exceo, monitorao, etc. Assim como vimos no post anterior, ainda possvel coordenar regras de negcio como workflow services, o que permite novas combinaes na nuvem. Em posts futuros, vamos continuar avaliando cenrios reais, enquanto estudamos solues possveis para nossos projetos na nuvem. Para saber mais sobre o Azure Issue Tracker, confira o link a seguir: Azure Issue Tracker Ref.: http://www.codeplex.com/azureissuetracker Finalmente, se voc j est construindo seus projetos no Windows Azure, fique a vontade para divulgar e comentar suas experincias aqui no blog. Se preferir, coloque tambm uma discusso no ARQBR, para que todos possamos aprender juntos. O canal est aberto! Pensar em equipe sempre mais legal! :) Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, May 08, 2009

119

Templates de aplicaes Live: usando os recursos do Live Services, Live Framework e Windows Live
Ol pessoal, tudo certo? Continuando nosso vo sobre templates de servios para o Windows Azure, vamos falar hoje sobre o Live Services e algumas aplicaes suportadas pelos recursos do Windows Live (depois de conversas com os leitores Andr e Flvio :). J tivemos um post sobre o Windows Live aqui no blog, confira aqui! Para comear, vamos preparar nossa mquina com os pacotes necessrios para esses templates, a partir dos links abaixo: Windows Live Tools for Microsoft Visual Studio November 2008 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=f438b207-96af-497c-94db152d48344af5&DisplayLang=en Live Framework SDK April 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=3DD6E663-B4D9-44E3971C-101325E39413&displaylang=enb Live Framework Tools for Microsoft Visual Studio April 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=4257C275-BE72-4AF8B2F0-1E01C67FB8BF&displaylang=en Aps a instalao, alm dos SDK e CTP do Windows Azure, os seguintes templates so instalados no Visual Studio 2008:

Web\Windows Live Web Application Cloud Service\Role\Windows Live Web Role Live Framework\Mesh-enabled Web Application Live Framework\Silverlight Mesh-enabled Web Application

Para relembrar, o Live Service um conjunto de servios centrados no usurio, que oferecen acesso de forma programtica aos dados e recursos do Windows Live. Devido essa integrao com o ambiente Live, as aplicaes podem interagir com milhes de usurios cadastrados de todo o mundo. As aplicaes Live podem rodar tanto no ambiente local como na nuvem, permitindo a conexo com diferentes dispositivos, sistemas, formatos de dados e usurios geograficamente distribudos.

120

Entre os principais servios do ambiente Live temos o Identity Service (LiveID), o Live Space, o Virtual Earth, o Live Messenger e o Data Synchronization. A figura a seguir ilustra a plataforma Live como disponvel pelo Live Services:

Um dos grandes desafios de utilizao desses servios que cada um deles possui sua prpria API, com recursos metodos de programao. Por isso, o time do Live crio o Live Framework, que oferece uma maneira uniforme de programao dos servios do Live Services, a partir de uma variedade de plataformas, linguagens de programao, aplicativos e dispositivos. Atravs do Live Framework, possvel consumir ou combinar servios do Live Services para a construo de aplicaes que abrangem dispositivos digitais e solues na web. O Live Framework veio com uma srie de ferramentas e SDK que amplia as alternativas para o desenvolvimento e arquitetura de aplicaes sobre o Windows Live. A seguir, temos um breve resumo sobre os templates disponveis para aplicaes Live: template Live Framework\Mesh-enabled Web Application (MEWA Application):

Atravs deste template, construmos aplicaes que suportam o Live Mesh, tambm chamadas de MEWA - Mesh-enabled Web Application. Aplicaes MEWA so aplicaes que usam tecnologias para clientes web como HTML, CSS e Javascript ou tecnologias ricas como Silverlight. MEWAs podem ser instaladas em usurios finais rodando em ambiente web ou desktop. A principal vantagem de aplicaes MEWAs permitir a sincronizao de dados atravs dos servios do Live, em situaes off-line ou on-line.

template Live Framework\Silverlight Mesh-enabled Web Application:

Com esse template, construmos aplicaes web que suportam o Live Framework, tambm chamadas de Live Framework-enabled Web site. Esse tipo de aplicao essencialmente um site web (ASP.NET) que pode trabalhar com dados de usurios atravs dos servios do Live, a partir da liberao de acesso feita pelos usurios.

template Web\Windows Live Web Application:

121

Esse template permite a construo de aplicao Web que acessam os principais recursos do ambiente Live, fazendo referncias s bibliotecas: Microsoft.Live.ServerControls e Microsoft.Live.ServerControls.VE, entre outras, veja:

Se voc est iniciando suas aplicaes na web e pretende consumir os principais servios do Live, esse template um bom comeo. Para saber mais sobre aplicaes Live, no deixe de conferir um post do Rogrio Cordeiro do MSDN, aqui!

template Cloud Service\Role\Windows Live Web Role:

Finalmente, o template Windows Live Web Role um template de aplicaes Web para o Windows Azure, instalado com o CTP de Novembro de 2008 do Windows Live Tools for Visual Studio 2008. Esse template tambm referencia as bibliotecas Microsoft.Live.ServerControls e Microsoft.Live.ServerControls.VE, suportando os recursos do Windows Live.

Assim, fizemos um breve resumo sobre os templates disponveis no Visual Studio 2008 para a construo de aplicaes usando os recursos do Live Services, do Live Framework e do Windows Live. No portal de desenvolvimento do Live voc ainda encontra uma srie de aplicaes exemplo que oferecem boas dicas de programao e arquitetura. No deixe de conferir no link a seguir: Quick Applications (beta) Ref.: http://dev.live.com/quickapps/

122

Sem dvida, os servios do ambiente Live complementam os cenrios de interfaces e aplicaes na nuvem, criando vrias oportunidades de integrao, usabilidade e navegao para nossas solues. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, May 13, 2009

Projetos do SQL Azure Database Labs


Ol pessoal, tudo certo? Mais um post sobre Windows Azure. Vamos focar hoje os projetos que esto sendo encubados no SQL Azure Labs. Alis, o SQL Services mudou de nome e agora chamado SQL Azure. Da mesma forma, o SQL Data Services passou a ser chamado SQL Azure Database. Ainda estamos aguardando o lanamento do novo CTP do SQL Azure, que promete grandes inovaes. Entre as principais destacamos o maior suporte para o modelo relacional de dados, suporte ao protocolo Tabular Data Stream (TDS) e consultas via Transact-SQL (T-SQL), permitindo assim uma integrao mais natural com as aplicaes corporativas (on-premise). A figura a seguir ilustra o suporte do SQL Azure para aplicaes com bases relacionais:

123

Essa mudana ter um impacto muito grande para as aplicaes candidatas para o ambiente Azure. De fato, foi um pedido do mercado ao longo dos primeiros CTPs deste ano. Como resultado, teremos um nmero maior de cenrios de aplicaes que sero suportados pelo modelo. Uma questo que anda circulando alguns fruns e blogs sobre o tamanho das parties previstas para o SQL Azure, algo em torno de 10 GB. J li alguns artigos comentando que essa dimenso atende mais de 80% do mercado-alvo da primeira verso. O prximo CTP ainda est chegando, vamos aguardar!!! A pgina principal do SQL Azure Database Labs essa: SQL Azure Database Labs Ref.: http://www.microsoft.com/azure/sqllabs.mspx Essa pgina concentra uma srie de projetos que esto em gesto no Azure, mas que j podem ser testados pela comunidade. Vamos ver alguns interessantes: Data Mining in the Cloud Ref.: http://www.microsoft.com/azure/mining.mspx

Comentrio: esse projeto Data Mining pretende trazer funes de data mining para a nuvem, oferecendo ferramentas online e addins para que planilhas Excel faam mineraes de dados e anlises diversas. Vale a pena conferir o que j est disponvel de forma online.

124

Codename "Huron" - Sync Enabled Cloud Data Hub Ref.: http://www.microsoft.com/azure/huron.mspx

Comentrio: o projeto Huron tem por objetivo criar uma central de dados na nuvem, habilitando cenrios de B2B, integrando bases de dados relacionais de fontes diversas, como SQL Express, SQL CE, SQL Server, etc. Para isso, a prometida integrao entre SQL Azure Database e o Sync Framework deve acontecer de fato. Entre os vrios cenrios de aplicaes para a nuvem, central de dados e hubs de aplicaes foram muito comentadas tempos atrs. Esse projeto pretende viabilizar algumas dessas solues, usando mecanismos de sincronizao para cenrios parcialmente conectados.

Reporting Services against SQL Data Services Ref.: http://www.microsoft.com/azure/reporting.mspx

Comentrio: como o prprio nome diz, a idia oferecer os dados da nuvem atravs dos recursos do Reporting Services local. Atravs de um framework de extenso, esse projeto permitir o consumo de dados do SQL Azure Database a partir de relatrios construdos no Reporting Services 2008. Vale acompanhar.

Sem dvida, o novo CTP do SQL Azure o pacote mais esperado. Vamos acompanhar o blog do time SQL Azure Team Blog Ref.: http://blogs.msdn.com/ssds/default.aspx Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, July 20, 2009

Windows Azure SDK & Tools : CTP de Julho j est no ar!


Ol pessoal, tudo certo? Novos CTPs para a plataforma Azure foram publicados essa semana (na segunda-feira), veja: Windows Azure Tools for Microsoft Visual Studio July 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=8d75d4f7-77a4-4adf-bce81b10608574bb&displaylang=en Windows Azure Software Development Kit (July 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=AA40F3E2-AFC5-484DB4E9-6A5227E73590&displaylang=en

125

Microsoft .NET Services SDK (July 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=38d8cf79-fc39-4aef-b3fdef280f2e9fa6&displaylang=en Como novidade temos o suporte nativo para os sistemas Windows 7, Windows Server 2008 e Windows Vista. O aguardado CTP para o novo SQL Azure deve chegar tambm a qualquer momento. Recentemente tivemos a publicao dos valores comerciais para a primeira onda de deployment de servios no Azure (veja aqui). At novembro deste ano, quando teremos o lanamento da verso comercial da plataforma durante o PDC 2009, creio que podemos esperar novas atualizaes a partir dos diversos feedbacks do mercado. Compilei os vrios CTPs e SDKs at agora lanados para a plataforma, apenas por curiosidade, veja quanta coisa a gente j acompanhou nessa jornada: OUTUBRO 2008 Anncio da plataforma durante o PDC 2008 Windows Azure Software Development Kit (October 2008 CTP) Windows Azure Tools for Microsoft Visual Studio October 2008 CTP DEZEMBRO 2008 Microsoft .NET Services SDK (Dec 2008 CTP) JANEIRO 2009 Windows Azure Tools for Microsoft Visual Studio January 2009 CTP Windows Azure Software Development Kit (January 2009 CTP) SQL Data Services (SDS) SDK (CTP) FEVEREIRO 2009 Azure Services Training Kit - February Update MARO 2009 Windows Azure Software Development Kit (March 2009 CTP) Windows Azure Tools for Microsoft Visual Studio (March 2009 CTP) Microsoft .NET Services SDK (March 2009 CTP) ABRIL 2009 Azure Services Training Kit - April Update Live Framework Tools for Microsoft Visual Studio April 2009 CTP Live Framework SDK April 2009 CTP MAIO 2009 Windows Azure Software Development Kit (May2009 CTP) Windows Azure Tools for Microsoft Visual Studio (May 2009 CTP)

126

JULHO 2009 Windows Azure Tools for Microsoft Visual Studio July 2009 CTP Windows Azure Software Development Kit (July 2009 CTP) Microsoft .NET Services SDK (July 2009 CTP) Agosto, Setembro, Outubro NOVEMBRO 2009 Lanamento comercial da plataforma durante o PDC 2009 Sem dvida, estamos diante da gestao de uma nova plataforma para aplicaes na nuvem, que deve suportar a TI dinmica que tanto esperamos. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, July 22, 2009

Novidades no CTP de Julho para o Windows Azure


Ol pessoal, tudo certo? Como fazemos sempre que um novo CTP lanado para a plataforma Azure, vamos conferir as novidades que chegaram! No post anterior voc encontra os links para os novos CTPs. Logo aps a instalao, voc j percebe que os templates para a nuvem foram agrupados numa caixa de dilogo, como vemos a seguir. A partir da opo Cloud Service/Cloud Service no Visual Studio 2008 (caixa New Project)

127

voc pode escolher quais templates aplicar em seu projeto para a nuvem, como vemos a seguir:

Como resultado, agora podemos combinar mltiplas Web Roles e Worker Roles num mesmo projeto cloud, veja o exemplo abaixo:

Isso deve permitir a construo de solues mais interessante na nuvem, combinando e dividindo tarefas entre diferentes Worker Roles, assim como capacidades da aplicao em diferentes Web Roles. Ainda, possvel integrar essas Roles com o CGI Web Role, uma Web Role que suporta uma aplicao FastCGI.

128

Nosso arquivo de configurao (.cscfg) tambm mudou, contemplando os vrios projetos agora participantes, veja: Arquivo: ServiceConfiguration.cscfg
1: <?xml version="1.0"?> 2: <ServiceConfiguration serviceName="CloudService2" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"> 3: <Role name="WebRole1"> 4: <Instances count="1" /> 5: <ConfigurationSettings /> 6: </Role> 7: <Role name="WebRole2"> 8: <Instances count="1" /> 9: <ConfigurationSettings /> 10: </Role> 11: <Role name="WebRole3"> 12: <Instances count="1" /> 13: <ConfigurationSettings /> 14: </Role> 15: <Role name="WorkerRole1"> 16: <Instances count="1" /> 17: <ConfigurationSettings /> 18: </Role> 19: <Role name="WorkerRole2"> 20: <Instances count="1" /> 21: <ConfigurationSettings /> 22: </Role> 23: </ServiceConfiguration>

Assim como o arquivo de definio de processo e roles para o ambiente no Windows Azure, veja: Arquivo: ServiceDefinition.csdef
1: <?xml version="1.0" encoding="utf-8"?> 2: <ServiceDefinition name="CloudService2" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceDefinition"> 3: <WebRole name="WebRole1" enableNativeCodeExecution="false"> 4: <InputEndpoints> 5: <!-- Must use port 80 for http and port 443 for https when running in the cloud --> 6: <InputEndpoint name="HttpIn" protocol="http" port="80" /> 7: </InputEndpoints> 8: <ConfigurationSettings /> 9: </WebRole> 10: <WebRole name="WebRole2" enableNativeCodeExecution="false"> 11: <InputEndpoints>

129
12: <!-- Must use port 80 for http and port 443 for https when running in the cloud --> 13: <InputEndpoint name="HttpIn" protocol="http" port="8080" /> 14: </InputEndpoints> 15: <ConfigurationSettings /> 16: </WebRole> 17: <WebRole name="WebRole3" enableNativeCodeExecution="false"> 18: <InputEndpoints> 19: <!-- Must use port 80 for http and port 443 for https when running in the cloud --> 20: <InputEndpoint name="HttpIn" protocol="http" port="8081" /> 21: </InputEndpoints> 22: <ConfigurationSettings /> 23: </WebRole> 24: <WorkerRole name="WorkerRole1" enableNativeCodeExecution="false"> 25: <ConfigurationSettings /> 26: </WorkerRole> 27: <WorkerRole name="WorkerRole2" enableNativeCodeExecution="false"> 28: <ConfigurationSettings /> 29: </WorkerRole> 30: </ServiceDefinition>

Quando executamos nosso projeto localmente, o Development Storage iniciado, para suportar os objetos Blobs, Queues e Tables do Azure Storage.

Da mesma forma, a ferramenta Development Fabric disparada, apresentando nosso ambiente local para testes com as vrias Roles participantes do projeto. Em nosso exemplo inicial, temos 3 Web Roles e 2 Worker Roles, veja:

130

Continua assim a possibilidade de acompanhar nossos testes locais de forma integrada, monitorando o comportamento de cada papel no projeto para a nuvem. A publicao do projeto para o Windows Azure continua da mesma forma, integrada ao Visual Studio 2008, na janela Solution Explorer:

Aps a compilao, somos direcionados para o portal do Windows Azure, para o upload dos arquivos de projeto (.cspkg) e configurao (.cscfg):

131

Depois de algum tempo realizando o upload dos arquivos, a pgina de administrao de Staging e Production apresentada, permitindo a inicializao e execuo do projeto. Veja que agora, como o projeto possui mais de uma role associada, temos as vrias roles descritas para nossa administrao de forma individualizada, bem legal!

Em posts futuros, vamos falar um pouco mais sobre as novidades do CTP de Julho e como podemos aproveitar seus recursos em alguns novos cenrios de aplicaes para a nuvem. Por enquanto s! At o prximo post :)

132

Waldemir.
Posted: Thursday, July 23, 2009

Windows Azure Platform Training Kit : Update de agosto no ar!


Ol pessoal, tudo certo? O mais novo Windows Azure Platform Training Kit foi publicado ontem, no link abaixo: Windows Azure Platform Training Kit Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83B309-53B7B77EDF78&displaylang=en O material est bem completo, com apresentaes, demos, laboratrios e vrios exemplos. Instalao obrigatria para quem est acompanhando a evoluo da plataforma Windows Azure. Em posts futuros, vou comentar algumas das novidades do kit e seus exemplos. Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, August 18, 2009

SQL Azure CTP de Agosto no ar!!!


Ol pessoal, tudo certo? O grande dia chegou!!! Foi anunciado hoje o novo CTP do SQL Azure, o to esperado servio online para a persistncia de dados relacionais na nuvem, sobre a plataforma Windows Azure. Veja mais no post do time de produto: Try SQL Azure Database CTP Today Ref.: http://blogs.msdn.com/ssds/archive/2009/08/18/9874133.aspx Entre as novidades do SQL Azure, o suporte a T-SQL e a transparncia da fonte de dados para uma aplicao so os grandes destaques. Isto significa que agora, sua aplicao pode consumir dados locais (on-premise) de um servidor SQL Server 2008 local, do mesmo modo que acessa e

133

consome dados do SQL Azure Database, o principal servio das capacidades do SQL Azure na nuvem. Para quem estiver no TechEd Brasil 2009 semana que vem, a track de Azure (AZP) tem uma sesso dedicada para o SQL Azure e suas novidades. No perca! Depois do Azure Training Kit de Agosto, agora o SQL Azure Semana cheia de novidades!!! Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, August 18, 2009

Artigos, training kits, samples e demos para o Windows Azure


Ol pessoal, tudo certo? Sem dvida, essa semana est sendo cheia de novidades! E olha que semana que vem temos TechEd Brasil 2009!!! Tivemos o lanamento do Windows Azure Training Kit CTP Agosto 2009 na segunda-feira Windows Azure Platform Training Kit - August Update Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83B309-53B7B77EDF78&displaylang=en Na tera-feira, o anncio do SQL Azure CTP de Agosto, Completo e Total (quem no se lembra desse livro de C++, no vai dar risada :) Try SQL Azure Database CTP Today Ref.: http://blogs.msdn.com/ssds/archive/2009/08/18/9874133.aspx E para completar, deixei escapar as atualizaes da pgina de Samples do Windows Azure Code Samples, aqui: Windows Azure Code Samples Ref.: http://code.msdn.microsoft.com/windowsazuresamples

134

No pacote do Windows Azure Code Samples, execute o script buildall.cmd e divirta-se com uma srie bem legal de exemplos e projetos prontos sobre Web Roles, ASP.NET providers, Queues, Tables, etc. na pasta: C:\Samples for Windows Azure. Finalmente, novos artigos em portugus esto publicados no Dev Center sobre Windows Azure no MSDN, veja: Centro de Desenvolvimento da Plataforma Azure Ref.: http://msdn.microsoft.com/pt-br/azure/default.aspx Artigos recomendados: Apresentando o Windows Azure Ref.: http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/ApresentandoWindowsAzure.xps Apresentando a plataforma de servios Azure Ref.: http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/ApresentandoPlataformaAzure.pdf Tabelas do Windows Azure Ref.: http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/TabelasDoWindowsAzure.xps Filas do Windows Azure Ref.: http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/FilasDoWindowsAzure.xps

135

Blobs do Windows Azure Ref.: http://download.microsoft.com/download/2/9/3/293F671C-203F-4208-9CD1195463F7BCBE/BlobsDoWindowsAzure.xps O portal visita obrigatria, pois est bem completo, sempre com novidades! Acho que esse final de semana promete! Leve seu cachorro para vacinar e depois divirta-se com essas demos, artigos e novidades Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, August 20, 2009

Atualizao de projetos para o Windows Azure no CodePlex


Ol pessoal, tudo certo? Tempos atrs eu falei de alguns projetos presentes no CodePlex para o desenvolvimento com o Windows Azure. Veja mais aqui. So vrias ferramentas interessantes, principalmente para a manipulao de blogs, queues, tables, permisses, etc. Algumas permanecem estacionadas, outras tiveram atualizaes recentes, suportando os novos CTPs e SDKs da plataforma. Veja um resumo rpido abaixo: Windows Azure MMC August Update http://code.msdn.microsoft.com/windowsazuremmc/Release/ProjectReleases.aspx?ReleaseId=30 92

Status: o MMC foi atualizado com o novo CTP de Julho. Excelente ferramenta para a manipulao de blobs, containers, queues e permisses. Pena que ainda no trabalha com tables.

Azure Storage Explorer http://azurestorageexplorer.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=27202

Status: a ltima alterao foi em maio de 2009 mas vale conferir porque a ferramenta bem til em testes com queues, tables e blobs. Ontem mesmo, vi o Rogerio brincando com a ferramenta, enquanto depurava suas demos para o TechEd.

Azure Issue Tracker Standard Edition http://azureissuetracker.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=22138

136

Status: algumas pessoas me perguntaram sobre o Issue Tracker esses dias. Por enquanto, um desenvolvimento Beta e a ltima verso disponveis de Abril. No fiz meus testes ainda com o novo CTP de Julho, mas o site avisa que o cdigo no foi portado ainda nem para o CTP de Maro/2009. Vamos aguardar, pois a soluo bem legal.

Azure Application Monitor http://azuremonitor.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=25216

Status: por enquanto, temos apenas a verso inicial da ferramenta, estacionada em Maro. O site chama de verso Alpha ainda. Vamos monitor-la... :)

WPF Client for the Windows Azure Blob Storage http://azureblobclient.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24873

Status: Um cliente WPF interessante para o consumo de blobs no Azure. Vale conferir!

Essas so as ferramantas mais conhecidas. Mas sempre tem coisa nova aparecendo e de tempos em tempos, algum me avisa de novos recursos. Quem tiver novidades, s avisar! Divulgue aqui sua ferramenta preferida ou diga se os projetos acima esto funcionando bem! O espao est aberto, como sempre! Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, August 21, 2009

SQL Azure Migration Wizard


Ol pessoal, tudo certo? Se voc j percorreu os laboratrios do Azure Training Kit de Agosto, viu alguns exerccios interessantes, incluindo o lab de migrao de SQL local para a nuvem. Windows Azure Platform Training Kit Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=413E88F8-5966-4A83B309-53B7B77EDF78&displaylang=en O lab o Hands-On Lab Migrating Databases to SQL Azure e tem durao de quase 1 hora. Durante o lab, voc aprende os vrios ajustes necessrios sobre o script SQL gerado localmente, antes de subir o banco para o SQL Azure Database, no atual CTP de Agosto.

137

Pensando nisso, tivemos a publicao de uma nova ferramenta no CodePlex essa semana, o SQL Azure Migration Wizard, veja: SQL Azure Migration Wizard Ref.: http://sqlazuremw.codeplex.com/ Conectando ao banco SQL 2005 / 2008 local, voc pode escolher a base desejada para migrao:

A partir da escolha da base local, o Wizard apresenta as opes para gerao do script de sada:

138

Na sequncia, escolha as tabelas desejadas:

E finalmente, escolha a sada de script para o SQL Azure:

A ferramenta apresenta ent!o o script gerado, j com os ajustes para o SQL Azure Database. Voc pode fazer a subida do script manualmente, via SQLCMD.EXE, por exemplo, ou usar a prpria ferramenta para fazer o deployment do banco na nuvem, veja:

139

Terminada a migrao, a ferramenta mostra a sequncia de atividades realizadas:

Conferindo o portal do SQL Azure, encontramos a base recm criada, com sucesso! :)

140

Portanto, recomendo avaliar a ferramenta e fazer seus testes locais, migrando suas bases para a nuvem. Tudo CTP e a ferramenta ainda Beta, portanto, avalie com carinho! Aplicaes combinando dados locais e dados na nuvem uma tendncia e uma opo bastante interessante em alguns cenrios. Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, September 01, 2009

Windows Azure Service Management API Reference


Ol pessoal, tudo certo? Temos novidades no mundo Azure! Essa semana, tivemos o lanamento do Azure Management API:

141

Windows Azure Service Management API Reference Ref.: http://msdn.microsoft.com/en-us/library/ee460799.aspx O Service Management API oferece um acesso programtico para muitas das funcionalidades disponveis atravs do Portal do Desenvolvedor no Windows Azure. Durante minhas conversas sobre Windows Azure esse ano, diversos arquitetos e desenvolvedores me perguntaram quando teramos a possibilidade de interagir programaticamente com o portal online. Agora podemos! :) Usando o Service Management API, podemos gerenciar as contas de storage, servios hospedados no Azure, processos de deployment e afinidades de grupos. O Service Management API uma API baseada em REST e suas operaes so realizadas sobre SSL, suportando autenticao mtua baseada em certificados X.509 v3. O gerenciamento pode ser feito a partir de servios rodando sobre o prprio Azure ou diretamente via Internet, a partir de aplicaes usando requisies HTTPS. O blog oficial da API voc encontra abaixo: Introducing the Windows Azure Service Management API http://blogs.msdn.com/windowsazure/archive/2009/09/17/introducing-the-windows-azureservice-management-api.aspx E uma bela documentao com exemplos voc tem a seguir: Windows Azure Code Samples Ref.: http://code.msdn.microsoft.com/windowsazuresamples Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, September 18, 2009

142

Captulo 5
Persistncia de dados, Entity Framework e LINQ

Em arquitetura de solues, a persistncia de dados e o acesso s informaes um dos tpicos mais quentes e de grande importncia. Um dos grandes temas na plataforma Microsoft a persistncia de dados via Entity Framework, um framework que implementa o modelo ORM Object Relational Mapping para cenrios diversos de aplicaes e mltiplos bancos. Confira neste captulo os principais aspectos envolvidos na verso 1.0 do Entity Framework e seu impacto na construo de aplicaes de N camadas.

143

Leitura Recomendada: artigos sobre Entity Framework


Ol pessoal, tudo certo? Depois de uma semana bem agitada com Tech-ed Brasil [20090, palestras e at uma General Session para variar um pouco, esta semana tivemos algumas discusses com equipes de projetos em empresas grandes. Uma dessas reunies tratou de aspectos de Entity Framework e o uso de uma camada de persistncia de dados em aplicaes Web. Imagine um cenrio de aplicao Web na intranet de uma empresa, com mais de 3000 usurios previstos, 350 usurios simultneos, uma anlise de 1500 pontos de funo e um modelo de dados em torno de 450 tabelas. Esse cenrio at comum no mercado e podemos considerar o desenho abaixo uma bela simplificao, posicionando alguns componentes interessantes:

Aqui, aproveitei um desenho da sesso do Cond (DAT301) do ltimo Tech-ed Brasil, valeu Cond! :)

144

Veja que j estou apondando algumas decises para o projeto, como o uso de ASP.NET MVC para a interface Web, servios WCF para as regras de negcio e uma camada de persistncia com Entity Framework, implementando vrios EDMX, um para cada domnio de dados que participar da aplicao. Para fundamentar a camada de dados com Entity Framework, alguns artigos so interessantes pelos exemplos fornecidos, veja: Criando um modelo de dados de entidade By John Papa Ref.: http://msdn.microsoft.com/pt-br/magazine/cc163286.aspx Acesso a dados flexvel com LINQ to SQL e Entity Framework By Anthony Sneed Ref.: http://msdn.microsoft.com/pt-br/magazine/dd263098.aspx Obtenha uma modelagem de dados flexvel com o Entity Framework By Elisa Flasko Ref.: http://msdn.microsoft.com/pt-br/magazine/cc700331.aspx Expor e utilizar dados no mundo de servios web By Elisa Flasko e Mike Flasko Ref.: http://msdn.microsoft.com/pt-br/magazine/cc748663.aspx N-Tier Application Patterns By Daniel Simmons Ref.: http://msdn.microsoft.com/pt-br/magazine/ee321569.aspx EF v2 and Data Access Architecture Best Practices By Tim Mallalieu Ref.: http://msdn.microsoft.com/pt-br/magazine/ee236639.aspx Para esse projeto, ainda outros aspectos sero importantes, como:

segurana de mensagens e de transporte validao de parmetros e mtodos dos servios WCF caching de dados tratamento de exceo hosting de servios WCF administrao do ambiente em produo transferncia de dados entre camadas, via DTO Data Transfer Object, entre outros

Mas como eu gostaria de destacar apenas as questes de Entity Framework, fica aqui uma ltima dica de leitura, o blog do Danny Simmons, gerente de produto do Entity Framework, que tem mantido um excelente blog sobre EF.

145

Danny Simmonss Blog Ref.: http://blogs.msdn.com/dsimmons/ Bastante coisa para ler, bons exemplos para testar!!! Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, September 03, 2009

Construindo solues com Entity Framework e arquitetura em mltiplas camadas.


Ol pessoal, tudo certo? Esse assunto tem sido recorrente desde julho, retornando em algumas discusses com empresas de diversas reas: Como organizar uma arquitetura de soluo usando Entity Framework? Como representar as entidades de negcio, as interfaces de servios e como passar esses dados entre as vrias camadas de uma aplicao? Para comear, tenho recomendado olhar a parte IV do AppArchGuide 2.0, que anunciamos semana passada, aqui: patterns & practices : Application Architecture Guide 2.0 Ref.: http://blogs.msdn.com/wcamb/archive/2008/12/19/patterns-practices-applicationarchitecture-guide-2-0.aspx Uma arquitetura de referncia interessante a organizao de uma aplicao desktop (Rich Client Application), como vemos a seguir:

146

Note que na camada de negcios, temos os Business Workflows, Business Components e os Business Entities bem definidos. Nesse cenrio, os BE's representam as abstraes de dados que obtemos a partir da camada de dados, via Entity Framework. Na sequncia, um bom exemplo de implementao dado no artigo do John Papa, que segue abaixo: Entity Framework em arquiteturas de camadas John Papa Ref.: http://msdn.microsoft.com/pt-br/magazine/cc700340.aspx O artigo apresenta uma soluo que oferece um bom comeo para quem est pensando em projetos com o Entity Framework. A figura a seguir apresenta a organizao bsica da soluo, onde vemos as interfaces em WCF para comunicao entre a camada de apresentao e a camada de negcio.

147

Finalmente, vale lembrar que o Otvio fez uma apresentao sobre o assunto durante o ltimo Tech-Ed Brasil 2008, usando o mesmo artigo do John Papa para falar sobre mltiplos contextos e boas prticas. Veja alguns comentrios dele aqui: Semana de acontecimentos Ref.: http://blogs.msdn.com/otavio/archive/2008/10/19/semana-de-acontecimentos.aspx Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, December 22, 2008

ADO.NET Entity Framework : novos providers esto chegando


Ol pessoal, tudo certo?

148

O ltimo TechEd 2008 trouxe algumas novidades sobre o mundo ADO.NET Entity Framework e LINQ, vale conferir. Para quem est comeando agora, Entity Framework oferece uma camada de mapeamento ORM - Object Relational Mapping, resolvendo a impedncia entre o mundo relacional (de dados e colees) e o mundo orientado a objetos (de tipos e classes). Enquanto isso, o LINQ - Language Integrated Query - oferece uma sntaxe de manipulao e acesso a colees, permitindo uma navegao por dados de uma forma mais legvel e aderente ao modelo orientado a objeto. Quando vemos um cdigo acessando uma base de dados via LINQ to SQL, por exemplo, temos algo assim:

A partir de um contexto de conexo, instanciamos uma classe de mapeamento da tabela People (do banco de dados mapeado) e fazemos nossa consulta atravs de uma coleo, dada pelo objeto query. Veja que o tipo utilizado "var", um tipo annimo que permite esse tratamento de colees no LINQ. Assim tambm, o mesmo acesso utilizando LINQ to Entity sobre o ADO.NET Entity Framework ficaria assim:

No exemplo acima, a instncia da tabela People feita atravs do objeto ObjectQuery, que acessa a pilha de mapeamento do Entity Framework. S para lembrar, quando falamos em LINQ to SQL, estamos somente sobre SQL Server da Microsoft. Quando falamos em LINQ to Entity, estamos sobre qualquer banco mapeado pelo Entity Framework.

149

A boa notcia, anunciada no ltimo TechEd em Orlando, que novos providers para mltiplos bancos esto saindo do forno, uma demanda que muitas empresas tm feito para o uso do Entity Framework. Vejamos:

a Core Lab foi a primeira empresa a oferecer um ADO.NET provider com suporte para o Entity Framework Beta 3, ainda com conectividade para o SQLite, Oracle, MySQL e PostgreSQL. Veja mais aqui:

Ref.: http://crlab.com/news/2007/directs430.html

a IBM anunciou recentemente seus providers para Entity Framework, permitindo a conectividade com DB2, IDS e U2, trabalhando tambm com o DB2 Express-C 9.5. Veja mais aqui:

Ref.: http://www-128.ibm.com/developerworks/forums/thread.jspa?threadID=203893

a Npgsql j oferece o beta 4 de seu provider .NET Data Provider para bancos de dados Postgresql, confira:

Ref.: http://pgfoundry.org/forum/forum.php?forum_id=1307

Reggie Burnett, o lead developer do provider para MySQL, o MySQL ADO.NET provider, anunciou que em breve, a verso 5.3 do produto ir suportar a tecnologia Entity Framework. Finalmente, a DataDirect anunciou que ir disponibilizar j em Q3 de 2008, um novo release de seu Oracle ADO.NET provider, suportando o Entity Framework para acesso aos bancos de dados Oracle. Ainda para o mundo Oracle vale um destaque: diversas empresas esto atualizando seus providers para o suporte ao Entity Framework e acesso aos bancos de dados Oracle. o caso da Core Lab, da OpenLink Software e agora a DataDirect Technologies.

Com o lanamento desses providers, ser possvel implementar estruturas de navegao LINQ com qualquer tipo de banco de dados, ampliando a flexibilidade de acesso de nossas solues. Um sonho se tornando realidade! Por enquanto s! At o prximo post :) Waldemir.
Posted: Saturday, June 14, 2008

150

Entity Framework FAQ : atualizado e com novas questes.


Ol pessoal, tudo certo? Para quem anda acompanhando a evoluo do Entity Framework, componente importante da prxima verso do ADO.NET, o FAQ de Danny Simmons foi atualizado esta semana e est mais rico do que nunca... :) Entity Framework FAQ Version 0.4 5/13/2008 Ref.: http://blogs.msdn.com/dsimmons/pages/entity-framework-faq.aspx Aqui no blog, j tivemos alguns posts falando sobre camadas de persistncia, LINQ e EF. Veja: Revisitando a Persistncia - LINQ, Entity Framework, Object-relational mapping, entre outros. Ref.: http://blogs.msdn.com/wcamb/archive/2008/03/20/revisitando-a-persist-ncia-linq-entityframework-ado-entity-framework-entre-outros.aspx Revisitando a Persistncia - ORM, ADO.NET Entity Framework, Data Services, Sync, LINQ e ainda outros comentrios. Ref.: http://blogs.msdn.com/wcamb/archive/2008/03/26/revisitando-a-persist-ncia-orm-ado-netentity-framework-data-services-sync-linq-e-ainda-outros-coment-rios.aspx Estou preparando um novo material para avanar no assunto e em breve compartilho com vocs algumas solues. Aguardem... E no deixem de visitar tambm a pgina do projeto EF no CodePlex, veja: Entity Framework Contrib project Ref.: http://www.codeplex.com/efcontrib Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, May 16, 2008

151

Revisitando a Persistncia - ORM, ADO.NET Entity Framework, Data Services, Sync, LINQ e ainda outros comentrios.
Ol pessoal, tudo certo? No ltimo post, comeamos uma discusso interessante sobre persistncia. Vamos rever alguns pontos e avanar mais um pouquinho. A motivao do estudo uma s: como e por que integrar a modelagem e programao Orientada a Objetos com Bancos de Dados Relacional? De fato, a maior parte de nossas aplicaes usam um banco relacional para armazenamento de dados. Como vimos, essa tecnologia vigente no mercado, por sua maturidade, fundamentao em uma teoria matemtica forte (baseada em conjuntos) e padronizao. Veja que, quando usamos o modelo relacional, o objetivo a normalizao e a otimizao de recursos no armazenamento de nossos dados ou colees; Da mesma forma, a maior parte de nossas aplicaes usam linguagens de programao orientada a objetos em seu desenvolvimento. Com isso, nosso objetivo a modelagem de processos, como a definio de comportamentos e tipos de entidades na forma de classes; Surge assim um problema chamado "Impedance Mismatch", que a dificuldade em realizar o mapeamento entre os dois mundos, o mundo relacional e o mundo OO. Para esse problema, uma soluo o uso de uma camada de traduo ou ORM - Object Relational Mapping, que responsvel por esse mapeamento entre o mundo OO e o mundo relacional. Pense que o grande desejo que essa camada de mapeamento ORM seja transparente para nossas aplicaes.

Existe uma srie de ferramentas no mercado que oferecem solues implementando camadas ORM e seus recursos. Veja que a tcnica de mapeamento objeto-relacional ainda precisa resolver alguns problemas de mapeamento e representao de dados entre ambos os mundos, problemas como:

Mapeamento entre Entidade e Classe (queries X tipos) Herana Tratamento de Chaves (primrias, extrangeiras)

152

Representao de Relacionamentos Campos Calculados Diferenas entre tipos SQL e linguagens de programao Locking e Isolation Level Tunning Caching, entre outros.

De fato, existe um impacto em banco de dados durante a implementao desses modelos ORM. Para a implementao de herana, por exemplo, temos tcnicas de mapeamento horizontal, mapeamento vertical, mapeamento filtrado, que implementam abordagens diferentes para a representao da herana entre classes, atravs de 1 ou mais tabelas em banco. No final, a prpria deciso pelo uso de uma camada de mapeamento objeto-relacional deve ser ponderada em funo de um conjunto de critrios (pessoais), como:

Desempenho final exigido (SLA envolvido na soluo); Frequncia de Leitura x Escrita x Atualizao; Flexibilidade e Custo de Manuteno; Desempenho e Redundncia x Custo de Manuteno e Formas Normais; Consumo de Espao x Desempenho; Tempo de Processamento de Consultas; Estilo da Aplicao; Integrao com sistemas legados, etc.

Atualmente, temos uma srie de novos frameworks disponveis para o tratamento de acesso a dados, assim como para a construo de consultas integradas ao modelo orientado a objetos. o caso do prprio ADO.NET Entity Framework e do LINQ, como citamos anteriormente. Porm, j existem muito outros componentes disponveis, que voc precisa conhecer. Para ajudar um pouco nesse roadmap, segue um conjunto de links interessante: ADO.NET 2.0 Nosso ADO.NET clssico, onde encontramos as estruturas Dataset, DataReader, Datatable, DataAdapter, DbConnection, DbCommand, etc. Ref.: http://msdn2.microsoft.com/en-us/data/aa937722.aspx ADO.NET 3.5 Disponvel com o .NET Framework 3.5, onde encontramos as verses de LINQ to Objects, LINQ to DataSets, LINQ to SQL, LINQ to XML, enfim, as implementaes de LINQ Language Integrated Quey, que permite a construo de consultas integradas ao modelo OO, para o acesso aos dados no mundo relacional ou ainda qualquer outra fonte de dados, como arquivos XML, estruturas customizadas, etc. Em linhas gerais, LINQ implementa um conjunto de mecanismos e bibliotecas para consultas de dados em memria, atravs de colees. Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=333325fd-ae52-4e35-b531508d977d32a6&DisplayLang=en ADO.NET vNext A prxima verso do ADO.NET deve encapsular um conjunto de novas ferramentas, que j esto

153

sendo disponibilizadas em CTP e Previews para nossa discusso e alegria. Os principais componentes que j temos so:

ADO.NET Entity Framework Beta 3 Responsvel pelo mapeamento objeto-relacional, atravs do chamado EDM - Entity Data Model. Esse modelo permite o mapeamento de classe objeto em qualquer tipo de fonte de dados (no s o modelo relacional) atravs de um processo de traduo implementado em 3 camadas: camada conceitual, camada lgica e camada de mapeamento. A documentao que acompanha o pacote est muito boa, vale conferir. Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D-9B18D1A04A21B519&displaylang=en ADO.NET Data Services (codenome Astoria) => download do ASP.NET 3.5 Extensions Preview, onde temos o ASP.NET 3.5 + ADO.NET Data Services. Permiti a publicao e navegao das informaes de um banco de dados de forma online. Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=A9C6BC06-B894-4B11-830035BD2F8FC908&displaylang=en Um exemplo muito interessante de navegao via Data Services voc encontra aqui.Veja que nosso velho Northwind agora pode ser navegado diretamente atravs de querystrings, praticamente. As aplicaes so inmeras, como integraes para aplicaes AJAX, consumo via WCF, aplicaes Web convencionais, etc. Northwind - Navegando dados online via ADO.NET Data Services Ref.: http://astoria.mslivelabs.com/OnlineServiceNorthwind.aspx

ADO.NET Sync Services v1.0 Sync Services uma primeira parte de um framework ainda em desenvolvimento, que deve atender as aplicaes que ficam parcialmente conectadas, ou seja, que demandam o uso de um cache local em tempos de desconexo, com a necessidade de uma sincronizao de dados posterior com o servidor. Esses mecanismos e estruturas de persistncias temporrias so o objetivo do Sync Services. Recomendo assistir um vdeo do channel9, nesse link: Ref.: http://channel9.msdn.com/Showpost.aspx?postid=384948 Para saber ainda mais, acompanhe as discusses aqui: Ref.: http://www.danielmoth.com/Blog/2008/02/adonet-sync-services.html Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=75FEF59F-1B5E-49BC-A21A9EF4F34DE6FC&displaylang=en (sync for devices) Ref.: http://www.microsoft.com/downloads/details.aspx?&FamilyID=7849b34f-67ab-481f-a5a54990597b0297&DisplayLang=en (sync for desktop)

Finalmente, outros projetos que esto tambm no forno so o Microsoft ASP.NET MVC Framework e o SubSonic.

154

O Microsoft ASP.NET MVC Framework habilita o desenvolvimento de aplicaes Web no modelo MVC - Model View Controller. Nesse modelo, a lgica da pgina fica na poro CONTROLLER, os objetos de HTML ficam no mdulo VIEW e a lgica da aplicao fica na poro MODEL. No est muito relacionado com o acesso a dados, mas colabora! :)

ASP.NET MVC Preview 2 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=38CC4CF1-773A-47E18125-BA3369BF54A3&displaylang=en

O SubSonic Project, conduzido por Rob Conery, um conjunto de ferramentas que deve gerar de forma completa a camada de acesso a dados. Ao contrrio do modelo ORM, onde temos o mapeamento do mundo OO no mundo relacional, SubSonic ser um gerador de cdigo ou do modelo de classes OO, a partir do schema do banco relacional. Bonito! :)

Para saber mais, acompanhe as discusses no Codeplex, aqui: SubSonic Codeplex Ref.: http://www.codeplex.com/subsonic SubSonic: 2.1 Beta 2 Available Now Ref.: http://www.codeplex.com/subsonic/Release/ProjectReleases.aspx?ReleaseId=5636 Enfim, Vida Longa ao Blog!!! Acho que no vai faltar assunto para os prximos meses, no acham? Por enquanto s! At o prximo post e boa leitura a todos... :) Waldemir.
Posted: Wednesday, March 26, 2008

Revisitando a Persistncia - LINQ, Entity Framework, Object-relational mapping, entre outros.


Ol pessoal, tudo certo? Falar de LINQ e persistncia de dados mesmo desafiador? Estive navegando pela Web e existem diversos blogs, artigos, whitepapers, pdf's, ppt's, wikis e exemplos que realmente deixam o leitor confuso. E algumas perguntas ainda aparecem no meio da discusso, como: "usando LINQ, onde melhor colocar minha lgica de negcio, em banco de dados ou em componentes extra banco?" ou ainda "para toda arquitetura devo utilizar um modelo de persistncia e mapeamento relacional?" e outras como "Qual a diferena entre LINQ, XPO, SubSonic, Ibatis, Nhibernate ou algo domstico?".

155

Bom, este post no pretende esgotar o assunto, mas colocar uma rpida viso sobre o tema, com um foco sobre o ADO.NET Entity Framework e seus componentes. Para comear, vamos rever algumas definies. Revisitando a persistncia Quando falamos em persistncia de dados pensamos no armazenamento "eterno" dos dados, ou seja, enquanto o dispositivo fsico de armazenamento dure. Quando se grava um arquivo no disco, por exemplo, o dado est sendo "eternizado" ou "persistido", deixando de ser voltil na memria RAM e passando a ser escrito num dispositivo que armazena a informao de modo que ela no desaparea facilmente. Assim, podemos dizer que a persistncia de dados envolve um meio fsico que permita recuperao de dados, como um banco de dados, um arquivo em disco, etc, o que garante a persistncia das informaes e sua posterior recuperao. Ao longo da execuo de um sistema, a persistncia de dados fator crtico, pois determina o modelo de acesso aos dados persistidos, assim como o desempenho, a facilidade de acesso, a dificuldade de manuteno, a capacidade de rastreabilidade dos dados, o modelo de programao, etc. De modo geral, o modelo de persistncia mais comum no mercado o baseado em banco de dados relacional, onde atravs de SQL (Structured Query Language), fazemos a navegao pelos dados persistidos. Nossas consultas so escritas em SQL e executadas sobre o banco, para a recuperao de informaes especficas. Essa tecnologia muito madura, difundida e padroniza, porm, apresenta muitos problema de acoplamento com a orientao a objetos. Vamos considerar que a orientao a objetos hoje o modelo de programao de sistemas dominante. Assim, quando falamos sobre persistir nossos objetos de um modelo OO, falamos da persistncia de objetos, o que exige um mapeamento. De fato, a persistncia de objetos utilizando um modelo relacional envolve a discusso sobre o chamado Object-Relational Mappings, ou mapeamento Objeto-Relacional. Revisitando o mapeamento objeto-relacional (ORM - Object-relational mapping) Como vimos, o mapeamento objeto-relacional uma tcnica que visa diminuir a chamada impedncia entre o modelo de objetos e o modelo relacional em banco de dados. Existe muita discusso em torno do assunto, j que alguns aspectos de ambos os modelos so conflitantes. Algumas vezes, voc vai desejar um modelo de persistncia que simplesmente faa a serializao de seus objetos para armazenamento. Em cenrios de longo prazo, onde versionamento dos objetos persistidos importante, voc vai precisar ainda de algum mecanismo mais sofisticado, que faa um mapeamento objeto relacional considerando a verso dos objetos envolvidos. Mas a necessidade de se tornar transparente a persistncia de dados, instncias de objetos e informaes de sistemas OO uma constante. Frequentemente somos confrotados com a deciso sobre utilizar uma camada de persistncia de nossos dados ou simplesmente manter o acoplamento de classes com estruturas relacionais de forma explcita.

156

Por exemplo, quando pensamos num modelo objeto-relacional, pensamos numa tabela por classe, com artibutos primitivos representados por colunas. Da mesma forma, atributos complexos so representados por mltiplas colunas ou tabelas adicionais. E todo esse mapeamento feito de forma transparente para o sistema, isolando o desenvolvedor desses detalhes durante a codificao da lgica de negcio. Agora, algumas otimizaes ainda podem ser necessrias no modelo objeto-relacional, como redues e transformaes de schemas, para eliminao de colunas redundantes, validaes, verbalizaes para eliminao de ambiguidades, entre outras. Visitando o ADO.NET Entity Framework Depois dessa introduo, vamos falar um pouco sobre o ADO.NET Entity Framework. Ele est disponvel atravs do link abaixo: ADO.NET Entity Framework Beta 3 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=15DB9989-1621-444D9B18-D1A04A21B519&displaylang=en Voc ainda vai precisar de um pacote de ferramentas para trabalhar com ele, obtido aqui: ADO.Net Entity Framework Tools Dec 07 Community Technology Preview Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=D8AE4404-8E05-41FC94C8-C73D9E238F82&displaylang=en De fato, o ADO.NET Entity Framework um pacote que integra as funcionalidades do ADO.NET 2.0 (com seus mecanismos de DataSet, DataAdapter, DbConnection, DbCommand , etc), adicionando 2 novos componentes: o Entity Data Model e o LINQ - Language Integrated Query. Veja a figura a seguir que representa bem o pacote:

157

De forma resumida, o Entity Framework permite o mapeamento do modelo relacional para o modelo de negcio orientado a objetos na aplicao. Assim, parte importante da arquitetura do Entity Framework so suas camadas internas: camada conceitual, camada de mapeamento e camada lgica. Essas 3 camada garantem o mapeamento ORM (Object-relational mapping) conforme discutido anteriormente:

No ambiente do Visual Studio, esse mapeamento disponibilizado atravs da ferramenta Entity Model Code Generator Tool, instalada com o pacote ADO.Net Entity Framework Tools, citado acima. Veja uma figura da ferramenta em ao:

Observamos a parte inferior com o mapeamento entre colunas e propriedades das classes envolvidas no mapeamento objeto-relacional. Esse mapa mantido pelo EDM - Entity Data Model presente na aquitetura.

158

Nesse contexto surge o LINQ. LINQ um conjunto de recursos introduzidos no .NET Framework 3.5 que permite a realizao de consultas diretamente em base de dados, documentos XML, estrutura de dados, coleo de objetos, etc. usando uma sintaxe parecida com a linguagem SQL. Como resultado, o desenvolvedor obtm maior legibilidade no cdigo final, assim como maior transparncia sobre os detalhes de implementao de cada fonte de dados. Assim, sobre o Entity Framework possvel aplicar consultas LINQ em uma de suas variaes. Veja:

Alguns exemplos de variaes LINQ so:


LINQ to Objects LINQ to DataSets LINQ to SQL LINQ to Entities LINQ to XML

Cada variao ainda contempla as caractersticas da fonte de dados alvo. Um exemplo de consulta LINQ to Entities segue abaixo: string city = London; var query = from c in northwindContext.Customers where c.City == city select c; foreach (Customers c in query) Console.WriteLine(c.CompanyName); Algumas consideraes Quando devemos utilizar um modelo objeto relacional para a persistncia de dados? De fato, alguns desenvolvedores e arquitetos tm iniciado o uso de camadas de persistncia ORM em

159

todas as suas solues. Isso um erro. Um dos grandes problemas no uso dessa camada o desempenho final obtido. Muitas vezes, devido a presena de mecanismos de cache durante a execuo das consultas e retorno de objetos, uma camada ORM pode significar um desempenho deteriorado para a aplicao. Concordamos que muitos cenrios no so aderentes ao modelo ORM por serem crticos quanto ao SLA definido. Nesses casos, o mais indicado um middleware de banco de dados de alto desempenho. Precisamos entender que existem cenrios onde a fronteira entre a lgica de programao e a camada de persistncia de dados simplesmente no precisa ser escondida, ao contrrio, importante estar bem definida para os componentes da arquitetura. Um exemplo semelhante ocorreu na discusso do CORBA sobre os objetos distribudos. As estruturas internas para tornar transparente a localizao de um objeto ou esconder o fato de que tnhamos uma rede entre os componentes envolvidos trouxe grande complexidade para algumas solues, assim como um desempenho ruim em muitos cenrios. Assim, devemos avaliar bem os benefcios de uma camada de persistncia objeto relacional em nossa arquitetura, de acordo com as demandas reais de negcio que a soluo ir atender. Entre os aspectos que podemos utilizar nessa deciso temos:

Desempenho Manutenabilidade Legibilidade Rastreabilidade de dados Facilidade de Depurao Escalabilidade Presena de mltiplos bancos de dados na soluo etc.

Em posts futuros vamos conversar mais sobre o assunto. Fique ligado! Como referncias adicionais, veja os links:

Object-relational mapping Ref.: http://www.orm.net/ ADO.NET Entity Framework & LINQ to Relational Data Ref.: http://code.msdn.microsoft.com/adonetefx/ ADO.NET Team blog Ref.: http://blogs.msdn.com/adonet/ Data Team blog Ref.: http://blogs.msdn.com/data/

Por enquanto s! At o prximo post :) Waldemir


Posted: Thursday, March 20, 2008

160

Captulo 6
Evoluindo o Windows DNA

Desde o lanamento do .NET Framework, o mercado tem migrado suas solues para os novos recursos do .NET, observando os benefcios de uma plataforma rica, modular e desacoplada. Nesse contexto de migrao, vimos diversos cenrios de convivncia entre a plataforma Windows DNA Distributed Network Architecture, baseado em componentes COM+, e novas solues baseadas em .NET, componentes Enterprise Services e servios em WCF. Neste captulo, vamos conferir algumas das principais questes sobre a convivncia e migrao de WinDNA para .NET.

161

Do Windows DNA para o mundo orientado a servios : cada caso um caso?


Ol pessoal, tudo certo? A partir dos ltimos emails, tive uma grande discusso com o amigo Rogrio Cordeiro (aqui do MSDN) sobre o uso de WCF, WF e outros frameworks na evoluo de arquiteturas WinDNA usadas em algumas aplicaes tpicas. Cenrios como Internet Banking, Interfaces de Corretoras, Acompanhamento de Pedidos ou Portais de Comrcio Eletrnico so bons exemplos. Ao final da discusso, comeamos a traar um mapa sobre alternativas de arquiteturas e tecnologias para a evoluo desse tipo de plataforma. Se relembrarmos os tempos de Windows DNA - Windows Distributed interNet Applications Architecture (anunciado em setembro de 1999, voc se lembra?), a camada de apresentao era implementada em pginas ASP/HTML, enquanto a lgica de negcio era implementada atravs de componentes COM+, hosteados no COM+ 1.0 do Windows NT 4.0 ou Windows 2000 Server. O controle e a coordenao de transaes eram feitos atravs do MSDTC - Microsoft Distributed Transaction Coordinator e a camada de dados era isolada em servidores dedicados, acessados pelos componentes de negcio. E quando havia transaes disparadas na plataforma alta (mainframes), o uso de COMTI e COMAREA era muito comum (saudades de uma TLB ? :) A figura abaixo representa bem o famoso WinDNA:

Outro ponto importante nessa discusso era o modelo de threads implementado pelo Visual Basic 6.0, grande gerador de componentes COM na poca. Tipicamente, VB6 gera componentes STA - Single Thread Apartment, o que provoca o enfileiramente de mensagens devido sua limitao no tratamento de mltiplas chamadas para a mesma thread. O modelo que liberava esse enfileiramento conhecido como MTA - Multi Thread Apartment, que obtido em componentes COM implementados em C++ ou agora em .NET.

162

Um bom artigo sobre o WinDNA est no link abaixo: Windows DNA Architecture Design: A Scalable, Highly Available Business Object Architecture Ref.: http://www.microsoft.com/technet/archive/ittasks/deploy/depovg/windna.mspx?mfr=true E sobre as questes de STA e MTA, veja ainda no artigo: Understanding COM Apartments Ref.: http://www.codeguru.com/cpp/com-tech/activex/apts/article.php/c5529 De fato, muitas empresas implementaram os cenrios acima em WinDNA e atualmente questionam quais so as alternativas rumo aos novos frameworks da Microsoft. Mas sobre quais frameworks e tecnologias estamos falando? Vejamos nossas opes:

WCF - Windows Communication Foundation (.NET 3.x) WF - Windows Workflow Foundation (.NET 3.x) WPF - Windows Presentation Foundation (.NET 3.x) Windows CardSpace (.NET 3.x) ADO.NET Entity Framework (Beta 3) ADO.NET Data Services (CTP) Microsoft Sync Framework (CTP) ASP.NET MVC Framework (Preview 2) Microsoft ASP.NET AJAX 1.0

E ainda outras tecnologias como (misturei assuntos de propsito):


Virtualizao; LINQ to SQL, LINQ to XML, LINQ to Entities, LINQ to Objects; Microsoft Silverlight 2 (Beta 1); SaaS, Web 2.0, SOA, ESB, RIA; IIS 7.0 e o Windows Process Activation Service (WAS); Windows Server 2008, SQL Server 2008; Service Broker, SSIS; Fbricas de Software, Domain-Specific Languages, GAT/GAX; Office Business Application (OBA); e mais recentemente Software + Services (S+S), para ficar em algumas...

Assim, nossa discusso sobre evoluo de uma arquitetura WinDNA tpica torna-se um grande desafio. Nossas opes de tecnologias tornaram-se mais complexas e diversas nesses timos 10 anos. Mas para atacar esse desafio, vamos propor 2 etapas muito bsicas. Como primeiro passo, precisamos de algumas questes para um processo de preparao e entendimento de nosso cenrio atual. Vejamos:

163

Na evoluo de nossa interface ASP, temos espao para um novo padro visual, caminhando para interfaces mais ricas (RIA), com interatividade e customizao feita pelo usurio (WEB 2.0) e ainda com capacidade para compor funcionalidades de diferentes fontes de dados (Aplicaes de Composio ou Mashups)? Quantos componentes de negcio estamos tratando? Conseguimos separar os componentes crticos em desempenho dos componentes de apoio? Estamos utilizando algum framework de desenvolvimento para a construo dos componentes de negcio no WinDNA? Conseguimos construir um inventrio completo sobre esses componentes de negcio? Na evoluo de nossos componentes de negcio, possvel observar espao para composio e coordenao de processos, na forma de workflows ou encadeamento de atividades? Existe a necessidade de aplicao de regras de negcio, seja de forma dinmica ou esttica? Na evoluo de nossa conectividade com outros sistemas, quais so os cenrios de transporte possveis? Reconhecemos o uso de TCP, Named Pipes, MSMQ e Web Services? Na evoluo de nosso consumo de transaes na plataforma alta, estamos utilizando chamadas via COMTI ou outros mecanismos de comunicao via APPC ou TCP com aplicaes no mainframe? Quais so os bancos de dados envolvidos? Conseguimos identificar um isolamento claro entre camada de negcio e camada de dados? Como est o uso de stored procedures e queries SQL pela arquitetura? Como esto os modelos de dados envolvidos? Qual o inventrio de sistema operacional presente na arquitetura atual? Como est a infra-estrutura atual para as questes de disponibilidade da aplicao, como balanceamento de carga, balanceamento de componentes, farm de servidores, clusters, etc.? Como so tratados os demais aspectos da aplicao como transao, recuperao, monitorao, segurana, tratamento de excees, autenticao, controle de acesso, atualizao de verses, etc.?

De fato, as questes acima iro nos ajudar para um maior entendimento sobre a arquitetura atual. Com certeza voc ir adicionar novas questes, especficas para sua empresa. O passo seguinte ser mapear os recursos e benefcios de cada um dos novos frameworks PsWinDNA, afim de comear o mapeamento de tecnologias que iro oferecer a melhor soluo para sua arquitetura. Um exemplo de aplicao seria esse: Ao lado, uma aplicao Web (asp) com componentes COM+ 1.0 e acesso ao banco de dados e mainframe (usando HIS), uma foto tirada durante nossa discusso com o Rogrio :-) Como seria a evoluo desse tipo de cenrio? Veremos algumas idias em breve... Para finalizar, no devemos esperar solues mgicas ou solues nicas para todos os cenrios. Cada caso um caso, sempre! Esse texto foi s para iniciar a discusso.

164

Vamos continuar o tema em posts futuros, por isso, comentrios sero benvindos... Por enquanto s! At o prximo post :) Waldemir.
Posted: Saturday, April 12, 2008

Do Windows DNA para o mundo orientado a servios : uma proposta para estudo.
Ol pessoal, tudo certo? No ltimo post, comeamos nosso papo sobre evoluo de uma arquitetura WinDNA para uma plataforma mais atual. Vimos que antes de tudo, precisamos ter uma viso clara sobre os cenrios envolvidos, assim como conhecer as novas tecnologias oferecidas pelo mercado. Nesse aspecto, novos frameworks esto disponveis na plataforma Microsoft e cabe a ns, arquitetos, conhec-los e exercit-los, afim de melhor decidir sobre cada alternativa de evoluo para nossas aplicaes. Considerando a disposio de componentes na plataforma WinDNA, podemos estudar uma alternativa de soluo, conforme a figura a seguir:

165

Camada de apresentao : ASP.NET com Microsoft AJAX verso 1.0 e Silverlight 2.0. Para uma aplicao tipicamente Web, a construo de uma interface rica (RIA - Rich Internet Application), que traga as funcionalidades e recursos da Web 2.0 recomendvel. E sobre recursos pensamos no somente em wikis, fruns, webparts, controles grficos, streaming, etc, mas tambm em novas abordagens de apresentao e UX - User Experience. Pensando ainda na composio de servios e workflows, conceitos de aplicaes compostas ou mashups tambm uma capacidade que deve ser avaliada para nossa arquitetura. Nesse ponto, a infra-estrutura ASP.NET com AJAX e Silverlight 2.0 oferece essa gama de recursos para a construo de interfaces poderosas em .NET. Claro, devemos avaliar qual a aderncia de nossa aplicao para todas essas inovaes. Mas os novos recursos de administrao do IIS 7.0 devem ser avaliados, independente do grau de ousadia de nossa nova interface. O IIS 7.0 seria nossa infra-estrutura de suporte s pginas e requisies HTTP/HTTPS, etc. sobre o Windows Server 2008. Para saber mais sobre o IIS 7.0 e esses recursos, no deixe de ver a srie especial sobre o produto no blog do Danilo Bordini, onde temos:

IIS 7.0 (Internet Information Services): Parte 7: Delegao IIS 7.0 (Internet Information Services): Parte 6: Configurao IIS 7.0 (Internet Information Services): Parte 5: Extensibilidade IIS 7.0 (Internet Information Services): Parte 4: Segurana IIS 7.0 (Internet Information Services): Parte 3: Pilares IIS 7.0 (Internet Information Services): Parte 2: Evoluo da Plataforma Srie Especial - IIS 7.0 (Internet Information Services)

Ref.: http://blogs.technet.com/dbordini/archive/tags/Internet+Information+Services+_2800_IIS_2900_ /default.aspx e para saber mais sobre o Silverlight 2.0 e o AJAX 1.0, veja os links: Ref.: http://silverlight.net/ Ref.: http://www.asp.net/ajax/ E sempre bom acompanhar como est a evoluo do modelo ASP.NET MVC Framework, ainda em Preview 2 (Model-View-Controller). Veja aqui: Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=38CC4CF1-773A-47E18125-BA3369BF54A3&displaylang=en Camada de colaborao de processos : Windows Workflow Foundation (.NET 3.5)

166

Em alguns cenrios, podemos pensar na implementao de processos de negcio atravs de fluxos de controle ou mesmo mquinas de estado. Quando falamos em fluxos de controle (ou workflows), pensamos num cenrio onde a execuo de atividades sequencial, a partir de eventos que so tratados numa ordem esperada. Temos uma atividade inicial e uma atividade final bem definida. Quando falamos em mquinas de estado, a execuo das atividades orientada por eventos, que podem ocorrer numa ordem aleatria. Assim, nosso desenvolvimento baseado no estado corrente, com transies por eventos, sendo mais flexvel para mudanas externas. A implementao de um processo de negcio atravs de um workflow ou mquina de estados pode ser feita atravs do WF - Windows Workflow Foundation. Como vimos em posts anteriores, podemos ainda integrar esses processos com servios do WCF - Windows Communication Foundation, ou ainda outros processos de negcio. Finalmente, lembre-se que um processo pode ter interao humana para aprovaes ou submisses, o que pode caracterizar execues de longa durao. A interao de servios ou outras camadas com esse tipo de processo precisa ser bem pensada e sinalizada para toda a arquitetura. Algumas perguntas: Quais so os processo de longa durao e de curta durao presentes em nossa arquitetura? Podemos implementar parte da lgica e regras de negcio em processos com WF? Para saber mais sobre WF e processos, veja: Ref.: http://msdn2.microsoft.com/en-us/netframework/aa663322.aspx Camada de servios e negcicos : Windows Communication Foundation e servios hosteados no WAS - Windows Process Activation Service Surge ento a discusso sobre a camada de servios. O que mesmo um servio? :) Podemos pensar na implementao de classes de negcio, com suas business entities e business process, utilizando a infra-estrutura do WCF para sua exportao e publicao de interfaces. Quando surge o WCF em nossa arquitetura, precisamos discutir alguns pontos importantes: Qual ser o template de servio que usaremos? Nesse template, precisamos considerar o tratamento de exceo, a propagao de mensagens de erro, exportao de contadores de performance, e tambm aspectos de comportamento do servio, contrato de dados, suporte transacional, mensagens tratadas, etc. Qual ser o transporte tratado pelo servio? A definio do binding (para nosso endpoint) to importante quanto a definio do prprio servio. Atravs do binding correto, garantimos a melhor performance para a interao entre camadas, processos e servios.

167

Qual ser o host para execuo de servios? Aqui, surge o WAS, j comentado em posts anteriores. Veja: Windows Process Activation Service (WAS) - Um mecanismo de ativao de processos e servios. Ref.: http://blogs.msdn.com/wcamb/archive/2008/04/10/windows-process-activation-servicewas-um-mecanismo-de-ativa-o-de-processos-e-servi-os.aspx A importncia da definio do host est associada ao processo de execuo, mas tambm de administrao, governana, distribuio e monitorao dos servios em nossa arquitetura. Sem dvida, cuidado muito especial exigido. Camada de negcio e aplicaes LOB : COM+ 1.5 e MSDTC Um ponto importante nessa arquitetura para estudo que ainda podemos conviver com componente publicados no COM+, isto , componentes COM que esto hosteados no Component Services (veja comexp.msc) e ainda aproveitam o MSDTC - Distributed Transaction Coordinator para o suporte transacional. Esses componente podem e devem permanecer em nossa arquitetura. Isso significa que possvel conviver com esse legado, seja atravs de camadas de interoperabilidade (interop .NET) ou simplemente consumindo esses componentes atravs de Web Services. Para alguns casos, teremos tradues entre ambiente gerenciado .NET e no-gerenciado, o que deve causar um certo delay, que deve ser avaliado. A questo sempre ser sobre a viabilidade (de custo, recursos e tempo) para a migrao desses componentes (COM+ WinDNA) para .NET. Camada de acesso a dados e LOB : bancos de dados legado e aplicaes LOB E para o acesso aos dados temos algumas alternativas, como:

ADO.NET 2.0, quando usamos o .NET 2.0 e seus recursos como Dataset, DataReader, Datatable, DataAdapter, DbConnection, DbCommand, etc.; LINQ TO SQL, quando usamos .NET 3.5 e estamos falando com servidores da famlia SQL Server; LINQ TO ENTITY, quando usamos ADO.NET Entity Framework (ainda em Beta 3), para falar com outros servidores de bancos de dados, atravs do providers oferecidos no mercado.

J falamos sobre LINQ e Entity Framework em alguns posts anteriores, veja aqui: Ref.: http://blogs.msdn.com/wcamb/archive/tags/LINQ/default.aspx A deciso entre as tecnologias de acesso a dados e camadas de persistncia acima vai depender da orientao do projeto, entre a especializao para um middleware de alto desempenho, focado num nico banco, ou um middleware de abstrao e mapeamento, que permitir trocas futuras de bancos de dados sem impacto na aplicao, porm, com um custo de mapeamento de tradues que deve ser avaliado quanto a performance.

168

Mais uma vez, importante lembrar que cada caso um caso, sempre! A estrutura em camadas acima foi colocada apenas como pretexto para a discusso dos frameworks e tecnologias disponveis. Caber a cada equipe de arquitetura avaliar internamente a aderncia s suas prprias aplicaes. Porm, tenha em mente que sua nova plataforma precisa estar antenada com as tendncias de colaborao e integrao de Software + Servios que temos observado. Construir preparado para a mudana, j que tudo se move, tudo flui, uma prtica cada vez mais desejada, j dizia Herclito de feso, uns 500 a.C. :) Panta hrei! Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, April 18, 2008

Do Windows DNA para o mundo orientado a servios : a viso Software + Servio e a Cloud Computing.
Ol pessoal, tudo certo? Continuando nosso assunto de evoluo de uma plataforma WinDNA para uma arquitetura baseada em servios, vamos falar um pouco sobre Software + Services (S+S). E indo direto ao ponto, podemos definir essa viso de software + servio como uma estratgia que engloba software em diferentes localidades, com diferentes qualidades de entrega (ou compromissos e garantias) e com software implementado nos 4 principais universos de programao de hoje em dia: desktop, web, mobile e enterprise. E tudo isso acontecendo ao mesmo tempo, ou seja, um cenrio de composio, de colaborao, de convivncia. E como sempre diz o mestre Gebara, nada como um bom exemplo para clarear alguns conceitos: vejamos um cenrio de Software+Service para o servio de mensagens (emails). Para contas crticas, destinadas para as mensagens importantes da corporao, com criptografia, manuteno histrica de threads, etc., podemos implementar uma infra-estrutura local, com servidores dedicados e cuidar das melhores prticas de operao e higiene de mensagens para nossa empresa. Veja que a responsabilidade sobre essa infra-estrutura ser nossa e o custo de operao total tambm nosso. Para caixas postais no to crticas, mas que so usadas no dia-a-dia da empresa, podemos pensar numa soluo de menor complexidade, onde parte das caixas postais esto locais e algumas

169

funcionalidades adjacentes so contratadas da web, como gateways, repositrios de arquivos, filtros, etc. Podemos pensar tambm em caixas postais mais ordinrias, que no exigem grandes cuidados com backups ou histrico de mensagens. Essas contas podem ser implementadas em provedores de email na web, de forma gratuta ou de baixo custo. Finalmente, podemos pensar em cenrios onde para caixas postais estratgicas, a empresa prefira contratar um servio inteiramente online, que fornea garantias para a qualidade do servio prestado, como backup, cotas em disco, filtros, criptografia, etc. Deu para perceber que nessa nova arquitetura de TI, nossa infra-estrutura de mensageria e caixas postais apresenta diferentes nveis de qualidade para os servios oferecidos. De acordo com a criticidade da caixa postal ou demanda do servio, podemos contratar um nvel de qualidade mais adequado, pagando mais ou menos pela funcionalidade desejada. A mesma discusso valeria para espao de armazenamento em disco, por exemplo, onde podemos usar storages locais para dados importantes, com rgidas polticas de backup e contingncia ou considerar o uso de espaos contratados na web, como o SkyDrive Live da Microsoft (com 5 Gb gratutos) ou ainda o Amazon Simple Storage Service (Amazon S3). Essa a viso Software + Service: compor diferentes qualidades de servio (SLA - Service Level Agreement) de acordo com a necessidade. Evoluindo o diagrama do ltimo post, bastaria indicar nossos servios consumidos da nuvem para exemplificar esse cenrio:

170

Claro, o mundo no to simples assim e diversas questes devem surgir nessa discusso, como segurana, autenticao e controle de acesso, tarifao, disponibilidade, tempo de resposta e latncia, controle de versionamento, protocolos de transporte, contratos de servios, mensagens, entre outras. Todas essas questes fazem parte do universo S+S e sero inevitveis durante a definio da arquitetura final. O importante considerar essas alternativas, de acordo com a relevncia do negcio e possveis economias decorrentes da aplicao desse tipo de arquitetura. J falamos sobre Software + Service em discusses passadas, como no post sobre SaaS, veja: SaaS - Software as a Service - Uma viso sobre o software como servio. Ref.: http://blogs.msdn.com/wcamb/archive/2008/03/09/saas-software-as-a-service-uma-vis-osobre-o-software-como-servi-o.aspx Ainda como referncia sobre o assunto, no deixe de reler a edio nmero 13 do "The Architecture Journal", onde temos o artigo: Implications of Software + Services Consumption for Enterprise IT Ref.: http://msdn2.microsoft.com/en-us/arcjournal/bb906061.aspx Como mensagem final arrisco: no vamos mais decidir sobre uma abordagem ou outra, se software local ou na rede, se comprado (on premise) ou contratado (in the cloud). A tendncia pela composio, com solues hbridas e o desafio reconhecer quais sero os custos e economias envolvidos em nossa nova TI, enquanto suportamos a chamada Cloud Computing. Com certeza, existem diversos benefcios envolvidos na viso Software+Services e caber a ns, arquitetos, avaliar o impacto para nossas empresas. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, April 23, 2008

171

Captulo 7
Posts de opinio

Durante os ltimos anos, trabalhando como Arquiteto de Solues, tive a oportunidade de debater com diversas empresas os mais variados cenrios em arquitetura de solues e direo da TI no suporte de seus negcios. Alguns temas foram quentes e geram posts interessantes, que aparecem consolidados neste captulo.

172

Sesses Back to Basics? Por que no?


Ol pessoal, tudo certo? Estamos em tempo de mudana. Como o Markus fala de vez em quando, o Mundo Mudou!. Concordo com vocs, as vezes difcil acompanhar o ritmo das mudanas e inovaes que atingem nossa rea. TI assim! Durante o ltimo Tech-ed Brasil 2009, eu ouvi o mesmo comentrio de vrios participantes: Qual tecnologia eu devo usar?, O que eu preciso estudar agora?, Porque temos tantos frameworks e opes diferentes disponveis?, O que eu uso para uma aplicao Web?, entre outros. De fato, no temos uma resposta padro ou simples para todas essas perguntas. Tenho trabalhado em TI nos ltimos 15 anos e j vi diversas mudanas em arquitetura, alavancadas por diferentes fatores. Quem aqui no viu (tudo bem, alguns aqui no viram) o nascimento do cliente/servidor, aplicaes com C++, VB6, componentes em COM+ sobre Windows Server 2000, as novidades do mundo Web, a adoo de Web Services em alta escala pelas empresas, etc. Voc viu tambm a publicao do .NET Framework, sua evoluo com as verses 2.0, depois 3.0 com o WCF e o WPF, o uso de servios REST, o .NET 3.5 SP1. Finalmente, vimos o crescimento da discusso em torno de SOA, SOI, SAAS e mais recentemente o Cloud Computing, o provisionamento dinmico, a computao de alta escala, o Windows Azure, etc. Durante o Tech-ed Brasil, tive a oportunidade de falar sobre a iniciativa Software + Servios da Microsoft, que oferece uma viso para a TI do futuro. Um dos slides que usei mostra a evoluo das arquiteturas dominantes nas ltimas dcadas. Claro, uma simplificao do que aconteceu em TI, mas vale como ilustrao, veja:

Em cada dcada, tivemos uma arquitetura dominante, que definiu o estilo e o comportamento do software que era construdo para o mercado e para nossos usurios. Vale destacar que cada nova arquitetura apareceu como uma nova alternativa de infraestrutura, adicionando valor e novas opes de recursos para as arquiteturas existentes. Essa combinao tem sido observada at hoje e muitas empresas ainda convivem com vrias dessas arquiteturas, ao mesmo tempo.

173

Mas retornando s dores de nosso dia-a-dia e pensando nas perguntas que vimos no comeo deste post, existe ao menos uma coisa que constante nessa evoluo toda: a aplicao de bons prncpios de engenharia de software. Independente do tipo de framework, camada, componente ou novos recursos que voc adote, lembre-se sempre de princpios como:

Programao Estruturada; Programao Orientada a Objetos; Modelagem de Dados e Teoria de Conjuntos; Bons Patterns de Arquitetura; Tipos Abstratos de Dados, Filas, Pilhas, Listas Ligadas, Caches; Otimizao de Algortimos, etc.

Como arquitetos de software, creio que saudvel manter frescos na memria esses conceitos. Separe um tempinho de seu corrido dia para relembrar os tpicos acima. Creio que uma sesso back-to-basics de vez em quando vai ajud-lo a olhar os vrios recursos e frameworks sob um prisma diferente. Isso tambm vai ajud-lo a reconhecer quais tecnologias voc pode aplicar em sua empresa, no momento certo de sua necessidade. o que eu tenho feito e tem funcionado!!! Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, September 14, 2009

Pensando na evoluo da TI de uma empresa.


Ol pessoal, tudo certo? Durante o Tech-ed Brasil 2009, tive algumas discusses que mais ou menos foram replicadas essa semana, com outras empresas e arquitetos. Uma dessas discusses foi sobre a evoluo da TI numa empresa, com o foco em sua organizao e maturidade. Veja o desenho abaixo:

174

No primeiro bloco, vemos o que chamado de uma arquitetura Spaghetti ou Macarronada ou digamos Noooooossa :) muito comum encontrarmos esse tipo de organizao de TI, onde para cada comunicao entre sistemas temos um tipo dedicado de conexo, sem padronizao, reuso de funcionalidades ou normalizao de mensagens e formatos de dados. O custo de manuteo desse tipo de arquitetura alto, assim como sua administrao complicada, com erros recorrentes. Atualmente, tenho visto muitas empresas iniciando aes para sair desse tipo de arquitetura e organizao em TI. Um segundo estgio nessa evoluo pode ser o uso de um motor de EAI Enterprise Application Integration. Uma infraestrutura de EAI oferece um cenrio padronizado de conectividade entre sistemas, facilitando a comunicao entre os servios existentes atravs de adaptadores padronizados, schemas de mensagens, formatos de dados versionados, alm de uma srie de patterns para transformao de mensagens, subscrio, publicao, auditoria, tracing, entre outros, de forma centralizada. Porm, algumas empresas aplicam cenrios de EAI em alguns departamentos, enquanto ainda permitem a continuidade de arquiteturas macarrnicas em outros andares, seja por problemas histricos, polticos ou de investimentos. Finalmente, coloco aqui um terceiro estgio de evoluo, o ESB Enterprise Service Bus, ou barramento corporativo de servios. Podemos pensar num ESB como um conjunto de patterns de EAI, adicionado a patterns de roteamento de mensagens, composio de mensagens e servios, tratamento de exceo, resoluo de chamadas para servios, etc. Uma grande diferena entre EAI e um ESB a possibilidade de composio dinmica de servios. Enquanto que num cenrio de EAI temos links estticos entre clientes e provedores, no modelo ESB o desacoplamento ainda maior, sendo possvel a composio dinmica de chamadas. A presena de um repositrio ou catlogo de servios tambm parte desse tipo de soluo, seja atravs de um UDDI ou mesmo de catlogo em bancos de dados. O que achei interessante essa semana foi ver como cenrios assncronos de mensageria, assim como a possibilidade de publicao de servios ou dados num ambiente na nuvem tornam-se participantes dessa nova TI que arquitetos comeam a imaginar. Mensageria no novidade de forma alguma, mas mensageria entre diferentes infraestrutura de TI me pareceu interessante.

175

Como tenho dito para algumas pessoas, nossa TI no futuro ser cada vez mais hbrida, combinando servios e dados ora no ambiente local (on-premise), ora no ambiente hospedado (em hosters e provedores) ora na nuvem. Um dos aspectos importantes que teremos ser a combinao de SLAs e nveis de operao, assim como mecanismos de monitorao, logging e administrao unificados, que torne a vida do ITPro mais fcil para esses cenrios. Cloud Computing uma evoluo de SOA? Depois de um EAI, sigo para um ESB? E depois de um ESB, sigo para o uso de um ISB Internet Service Bus? De fato, penso que essas perguntas no tm muita relevncia. O mais importante ser mesmo aproveitar o melhor de cada infraestrutura, de acordo com as reais necessidades de sua aplicao, soluo ou negcio. Fique atento ao que realmente interessa para sua empresa! Se voc um ITPro, fique atento s ferramentas de administrao que esto aparecendo. Se voc um desenvolvedor, fique atento aos frameworks e opes de tecnologias que surgem para a construo de aplicaes. E se voc um arquiteto, seja de solues ou de infra, fique atento na hora de aplicar a melhor tecnologia que atende sua empresa. Seja usando SAAS, EAI, ESB, ISB, ERP, CRM, SC, UDDI, SOAP, REST, HTTP, TCP, etc. o que vale mesmo atender corretamente seu usurio final, no mesmo? Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, September 11, 2009

Qual a importncia de um arquiteto?


Ol pessoal, tudo certo? Semana passada, o Markus Christen havia iniciado uma discusso sobre o papel do arquiteto no ARQBR. Algumas pessoas avanaram as discusses offline e tivemos algumas concluses. Gostaria de colocar aqui uma viso consolidada sobre o tema. Pessoalmente, tenho visto diversos tipos de profissionais atuando como arquitetos no mercado. Pensando em arquitetos de solues, focados em projetos e na construo de sistemas, qual a importncia deles? Gosto muito da seguinte frase para explicar a importncia do arquiteto de solues: "Arquitetura de software o conjunto de decises de design as quais, se feitas incorretamente, podem provocar o cancelamento de seu projeto". :) Ainda pensando na construo de software, a SEI - Software Engineering Institute | Carnegie Mellon, tem conduzido uma pesquisa sobre definies para arquitetura de software em todo o mundo, atravs do link abaixo:

176

Ref.: http://www.sei.cmu.edu/architecture/community_definitions.html Lendo as vrias definies, fica claro que mesmo pensando na construo de software, o papel do arquiteto e suas atividades so muito diversificados. Mas sempre direcionado pelas decises que podem conduzir uma soluo para o sucesso ou fracasso, decises essas relacionadas com a escolha e a combinao de tecnologias aplicveis para aquela soluo. Assim, creio que podemos resumir a importncia do arquiteto de soluo nessa palavra: direo! Direo para a melhor arquitetura de software que ser empregada, buscando a aplicao de uma boa engenharia de software sempre. Pensando em arquitetos enterprise ou corporativos, esses esto mais distantes do mundo de solues, muito envolvidos com o negcio da empresa. Qual o papel da TI para a misso da empresa? Qual o impacto de longo prazo do investimento em uma determinada tecnologia ou abordagem de soluo. Alguns exemplo? Pense na adoo de um sistema Web para o terminal de auto-atendimento de um banco de varejo. Estamos falando de quantos terminais espalhados pelo Brasil? Pense na adoo de uma plataforma baseada em servios para a oferta de produtos para corretoras de valores? Qual o impacto de segurana e velocidade de implantao de novos produtos nessa infra-estrutura? Enfim, uma deciso tomada pelo arquiteto corporativo apresentada para o ncleo de negcios da empresa e normalmente, tem um tempo de maturidade e implantao de mdio e longo prazo. Mas so importantes pelo poder de influncia e impacto no dia-a-dia de todos da corporao. Qual a importncia desse profissional hoje em dia? Finalmente, pensando em arquitetos de infra-estrutura, estamos num momento muito especial em TI, vendo o nascimento de uma nova plataforma de infra-estrutura disponvel na nuvem. Nos prximos anos, o cloud computing ser uma realidade para muitas empresas, que buscam a composio de custos entre software e infra-estrutura on-premise e software e servios na nuvem. O arquiteto de infra-estrutura e IT Pros, que atuam diretamente nesse ambiente de suporte a software podero focar cada vez mais nas capacidades de TI, oferecendo uma infraestrutura combinada que ir permitir a construo de solues mais flexveis, dinmicas e transparentes para o usurio final. Qual a importncia do arquitetura de infra-estrutura? Suas decises, o quanto mais alinhadas com a direo de negcio e desenvolvimento da empresa, permitiro uma maior velocidade na adoo de novas tecnologias, consequentemente, um posicionamento melhor no mercado de atuao de sua empresa. Agora, uma nova pergunta: voc que est na carreira de arquiteto, como est se preparando para tomar as decises corretas em sua empresa? O impacto de suas decises pode ser to grande quanto o sucesso ou fracasso de uma campanha, de um projeto, de um produto ou de um lanamento em sua empresa. Prepare-se! Alguns links interessantes: Worldwide Institute of Software Architects - WWISA Ref.: http://www.wwisa.org/

177

IASA - International Association of Software Architects Ref.: http://www.iasahome.org/web/home/home http://www.wwisa.org/ The Architecture Journal Ref.: http://msdn.microsoft.com/en-us/architecture/bb410935.aspx Dev Center de Arquitetura no MSDN Brasil Ref.: http://msdn.microsoft.com/pt-br/architecture/default.aspx Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, August 14, 2009

O ritmo da inovao e o papel do arquiteto


Ol pessoal, tudo certo? Semana passada estive com uma equipe de arquitetura de uma empresa do setor financeiro, discutindo sobre tendncias em TI e a viso para a computao na nuvem. Com certeza, 2009 est sendo o ano do Cloud Computing. Uma pergunta que aparece nesse tipo de discusso sobre quando adotar uma nova plataforma. Vale a pena investir na computao na nuvem? Quais benefcios a plataforma pode oferecer para o meu negcio? Esse o mesmo dilema quando pensamos em investir em treinamentos sobre novas tecnologias, como frameworks, ferramentas de desenvolvimento ou plataformas de aplicaes. O cenrio mais crtico quando a TI da empresa est desatualizada em relao ao mercado. Se voc ainda desenvolve em ASP com componentes COM+ em VB6 e possui alguns sites em ASP.NET com .NET 1.1, por exemplo, o impacto de uma evoluo maior, tanto na capacitao de sua equipe como na percepo de melhorias para o usurio e para o negcio da empresa. Veja o grfico abaixo, onde temos o tempo no eixo x e a vantagem competitiva de uma empresa num determinado mercado no eixo y.

178

O desenho ilustra o impacto da adoo de uma inovao tecnolgica ao longo do tempo. Imagine 3 empresas para uma determinada rea de atuao. A primeira uma empresa gil, que rapidamente incorpora inovaes estratgicas e consegue um melhor posicionamento no mercado em relao a seus concorrentes. Para isso, essa empresa investe em novas tecnologias, acompanha o lanamento de novas plataformas e ferramentas de mercado, assim como mantm uma cultura de constante avaliao de suas solues em relao ao negcio da empresa. Como resultado, reconhecida como uma empresa inovadora e que lana tendncias ou aproveita os benefcios de uma nova tecnologia, melhorando sua produtividade, tempo para o lanamento de novos produtos, reduo de custos, alcance para novos mercados, etc. Com o passar do tempo, uma segunda empresa adota a mesma inovao, ainda conseguindo um bom posicionamento no mercado. Muitas vezes, essa empresa uma seguidora de lderes da indstria, um cenrio muito comum no mercado financeiro e entre bancos. Finalmente, uma terceira empresa adota as inovaes estratgicas de forma tardia, no aproveitando os benefcios e oportunidades da adoo de uma nova tecnologia, apenas corrigindo sua posio no mercado. Muitas vezes, essa empresas trata a rea de TI como um universo apenas operacional, de suporte ao negcio da empresa sem relevncia, no reconhecendo o impacto e possveis oportunidades que a primeira empresa conseguiu aproveitar. Existem diversos motivos que posicionam uma empresa em cada um desses 3 perfis, como cultura organizacional, histrico de projetos, tamanho da empresa, tolerncia ao risco, burocracia, inrcia das reas envolvidas, resistncia a novas formas de trabalho, etc. Reconhecer em qual grupo sua empresa est o primeiro passo nessa auto-anlise tecnolgica. A partir desse diagnstico, identificar quais benefcios e o impacto de uma nova tecnologia para o negcio da empresa deve oferecer bons argumentos para uma tomada de deciso.

179

Ao mesmo tempo, um tpico que aparece o chamado dilema da inovao. O aparecimento de novas tecnologias e inovaes estratgicas tambm pode criar empresas emergentes, que aproveitam com maior sucesso de novas demandas do mercado ou de seus clientes, que tambm percebem os benefcios da inovao disponvel. Entre 2009 e 2010, vamos acompanhar de perto uma das maiores ondas de lanamentos de tecnologias e inovaes na plataforma Microsoft. Teremos Office 2010, SharePoint 2010, Exchange 2010, Visual Studio 2010, .NET 4.0, Windows Azure, Windows Server 2008 R2, Windows 7, entre tantos outros. Em tempo de crise, investir em inovao to importante quanto controlar os custos operacionais da empresa. Cada empresa possui um histrico prprio que explica seu posicionamento e seu grau de inovao no mercado. Como arquitetos, como podemos ajudar nossa empresa no entendimento dessas questes, para dar o prximo passo evolutivo no ritmo das inovaes em TI? Fica para pensar Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, August 05, 2009

Estudo de caso : um mapa para decises de projeto


Ol pessoal, tudo certo? Recentemente, acompanhei algumas discusses interessantes sobre aspectos para a deciso pela plataforma .NET em um determinado projeto. A partir desse bate-papo, achei que seria bom comentar aqui uma soluo que acompanhei para um projeto Web multi-tenant de mdia/alta complexidade no ambiente corporativo. Assim, vamos explorar alguns dos pontos avaliados pela equipe para a deciso pela plataforma .NET. Considere esse projeto apenas como uma abordagem possvel, j que:

projetos so sempre diferentes entre si, seja em recursos, tempo ou equipes. Faa suas adaptaes e avaliaes de acordo com a sua realidade; pessoas bem capacitadas sempre importante, para qualquer plataforma, seja .NET, JAVA, PHP ou RUBY; um mapa claro das reais necessidades da empresa tambm ajuda para manter as expectativas sob controle, assim como a escolha pela tecnologia mais aderente.

180

Considere ainda a necessidade por uma boa engenharia de software versus o atendimento de um cenrio mais simples, com pouco perspectiva de evoluo. Para comear, veja o desenho de arquitetura escolhido para o projeto, conforme temos no Application Architecture Guide 2.0:

A partir desse mapa, vejamos alguns pontos que a equipe considerou ao escolher a plataforma .NET: 1. EVOLUO: A plataforma .NET tem evoludo desde 2002. Desconsiderando o .NET 1.0 (2002) e o .NET 1.1 (2003), da verso 2.0 em diante (2005) tem sido adicionado novos recursos e protocolos de forma integrada ao framework, atendendo uma srie de cenrios no mercado. Alguns exemplos so servios REST, consultas integradas via LINQ, AJAX, padres MVC, frameworks de sincronizao, caching, etc. Como a evoluo contnua, isso garante o atendimento de novos cenrios no originalmente previstos; 2. LINGUAGEM: A plataforma .NET oferece 2 grandes linguagens para o desenvolvimento de aplicaes, C# e VB.NET. Claro, existem outras, mas so as de maior presena no mercado. A equipe considerou a linguagem C# como alternativa por deciso de projeto apenas, j que os recursos e namespaces oferecidos so os mesmos sobre .NET. A sntaxe de C# tambm pesou na deciso, devido alguns membros trabalharem em Java em projetos paralelos; 3. WEB+RIA: Para cenrios de aplicaes WEB evoluindo para RIA - Rich Internet Application, a dupla ASP.NET + AJAX foi bem avaliada, considerando uma evoluo para ASP.NET + SILVERLIGHT em alguns cenrios. Na poca, era o Silverlight 2.0. Hoje, temos o Siverlight 3.0 com o framework em desenvolvimento .NET RIA SERVICES, que promete

181

implementao interessante, integrando servios Web Services em JAVA, camadas em nHibernate e bancos ORACLE, servios REST, etc. A soluo hoje 80% ASP.NET + AJAX, considerando algumas funcionalidades de LOB para Silverlight 3.0. Por ter iniciado antes do lanamento, o ASP.NET MVC est sendo avaliado somente agora; 4. SERVIOS: De modo geral, o suporte de servios no lado do servidor e na camada de negcios foi bem implementado com o WCF - Windows Communication Framework, presente na plataforma .NET desde sua verso 3.0 (2006). Uma das grandes caractersticas do WCF sua extensibilidade com a adio de novos Bindings de conectividade, seja atravs de solues domsticas ou de mercado. Na soluo em questo, foram aplicados os bindings padro TCP, wsHTTPBinding e basicHTTPBindig para integrao Java; 5. PERFORMANCE: A estabilidade e robustez do modelo ASP.NET+WCF foi bem avaliada desde as provas de conceito. Isso contou para garantir uma plataforma que tivesse alta escalabilidade ao longo do tempo. Os nmeros para mensagens por segundo e suporte para mltiplas instncias de servios foram muito bons! Realize provas de conceito, sempre. Veja um artigo clssico sobre performance do WCF, aqui. Para os testes usaram o Web Capacity Analysis Tool do Internet Information Services (IIS) 6.0 Resource Kit Tools, alm das ferramentas de Web Testing do Visual Studio 2008. 6. PROCESSOS: Em cenrios de coordenao de processos, o WF - Windows Workflow Foundation tambm foi avaliado, uma vez que sua implementao visual e integrada a prpria IDE do Visual Studio. Alguns desses workflows fazem chamadas para servios WCF, coordenando processos de negcio. O template Sequential Workflows Service Library foi o mais adotado. J falamos dele por aqui, veja; 7. TRANSAO: O suporte transacional obtido com o WCF e WF garantiu tambm a aplicao de transaes distribudas, integrando servios em .NET e JAVA, atravs do protocolo WS-AT (Atomic Transaction), suportado pelo WCF e WF no .NET. Como alguns web services participantes esto em Java, foi usado o WSIT para o suporte transacional, com interoperabilidade Java e .NET. Veja mais aqui. 8. HOSTING: Outro aspecto importante avaliado foi o HOSTING, isto , onde as camadas de apresentao e lgica seriam hospedadas. No cenrio sobre .NET, as pginas ASP.NET e pores em Silverlight foram hospedados em baterias de mquinas de apresentao, sobre IIS7 (Windows Server 2008). Para a camada de negcios e servios, mquinas W2k8 foram dedicadas para hospedagem de servios sobre a dupla IIS7/WAS - Windows Process Activation Service. Desse modo, foi possivel garantir o "desacoplamento" desejado para o projeto, separando a frente de apresentao e balanceamento de carga Web da frente de servios e negcios, permitindo a futura exportao de servios para outros sistemas. Avalie esse cenrio como uma expanso futura real e desejvel. De modo geral, pense em Web Services sobre HTTP/SOAP. Para cenrios de servios com alta performance, usamos o WAS para suportar o transporte em TCP/Binrio e no em HTTP/SOAP/XML apenas. Veja mais sobre arquitetura WAS aqui; 9. ADMINISTRAO: Foi avaliado que a construo de servios WCF e WF e a preparao da equipe sobre a plataforma .NET garantiria a adoo de Dublin sobre o Windows Server 2008

182

no futuro. O Dublin deve ampliar as funcionalidades de gerenciamente e administrao de servios WCF e WF no servidor de aplicaes, criando um hosting com melhor governana para a soluo. Mais um ponto para a adoo do .NET. A equipe comeou com W2k3 e passou logo para W2K8 durante o projeto; 10. SEGURANA: Para cenrios de autenticao, autorizao e controle de acesso, aplicamos os exemplos disponveis na Enterprise Library, o que ajudou muito na produtividade; 11. TESTES: Avaliamos tambm a aplicao de cenrios de testes sobre o Visual Studio 2008, diretamente relacionado a plataforma .NET; 12. CONFIGURAO: Considerando a dupla ASP.NET+WCF, tivemos bons resultados na velocidade de configurao do ambiente de produo, devido principalmente o desacoplamento entre ambos. A configurao via XML e EndPoints tambm foi um ponto interessante de avaliao no uso de servios em WCF, recurso muito bem avaliado na plataforma .NET; 13. PRODUTIVIDADE: Em relao ao processo de desenvolvimento em si, aplicamos alguns templates customizados, criados em tempo de planejamento e arquitetura. Desse modo, foi possvel disponibilizar em servidores da rede de desenvolvimento alguns templates especficos para pginas CRUD e servios WCF, aumentando muito a produtividade da equipe de desenvolvimento. Avaliamos tambm o uso de guias de automao sobre o Visual Studio, como a dupla GAT/GAX, mas o cenrio foi bem atendido apenas com os templates puros em .vstemplate para pginas ASP.NET e servios WCF/WF; 14. PERSISTNCIA: Considerando bancos de dados em Oracle e SQL Server, foi aplicada uma camada ORM com nHibernate, em .NET. A equipe est realizando testes com o Entity Framework, aguardando a verso 2.0 ser lanada. Para a manipulao das colees obtidas de consultas, diversos mdulos de negcio manipulam os itens atravs de consultas LINQ, integradas ao C# no .NET. Essa abordagem de manipulao integrada permitiu um grande ganho de produtividade, devido o uso do intellisense em tempo de desenvolvimento, assim como facilidade de construo de consultas e filtros sobre colees; 15. CAPACITAO: Em relao a capacitao da equipe, foi planejado 40 horas de treinamento formal em WCF e 24 horas de treinamento formal WF. O uso de templates bem formatados para cada camada do projeto garantiu uma curva de aprendizado suave para a equipe; 16. RECURSOS: Foram considerados alguns sites importantes para o apoio da equipe. Entre os links principais, cito: WCF Windows Communication Foundation http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.as px WF Windows Workflow Foundation http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windo ws%20Workflow%20Foundation.aspx

183

Sem esquecer do material impresso, atravs de livros para o .NET 3.x (WCF, WF e ASP.NET). 17. PROJETO: Em relao ao processo de gerenciamento, o time no aplicou o SCRUM de forma rgida, mas manteve o PRODUCT BACKLOG, assim como o papel do SCRUM MASTER, SPRINTs de 3 a 4 semanas e as SCRUM Meetings dirias. 18. COMPLEXIDADE: Avalio o projeto como de mdia para alta complexidade, considerando o potencial de crescimento e escalabilidade prevista. Apesar do aspecto multi-tenant (multiinquilino), a integrao com o legado, o controle de acesso, a integrao transacional com servios Jrava e a necessidade de crescimento de novas funcionalidades foram fatores tambm crticos. Para os mais rgidos, aplicar a Anlise por Pontos de Funo tambm ajuda. 19. FRAMEWORKS: No foi construdo um framework de desenvolvimento para o projeto. Ao invs, foram construdos bons templates para pginas CRUD e faades de servios e workflows. Dessa maneira, a equipe conseguiu grande produtividade no desenvolvimento sem o custo adicional de manuteno de um framework domstico. Fbricas de Software ou DSLs no foram consideradas pela equipe por enquanto. :) 20. ALM Application Lifecycle Management: como parte importante do projeto, foram considerados os vrios papeis e processos previstos no ALM aplicado sobre MSF for Agile (MSF for Agile Software Development Process Guidance). O uso de VSTS Visual Studio Team System como ferramenta de apoio ao processo de desenvolvimento e projeto tambm foi importante para o sucesso do ALM adotado. Assim, fizemos as seguintes consideraes para a plataforma .NET:

capacidade de desacoplamento entre apresentao e servios (via WCF); suporte para a construo de servios com transporte via HTTP, MSMQ e TCP (via WCF); facilidade na construo de processo por workflows, realizando chamadas coordenadas para servios (via WF); integrao do desenvolvimento e testes com a ferramenta de desenvolvimento principal, via Visual Studio 2008; suporte a frameworks de sincronizao, caching, xml, colees, etc, alm da possibilidade de se trabalhar com configurao desacoplada para a camada de apresentao e de negcios (via web.config); disponibilidade de bons exemplos de cdigo na web (via a Enterprise Library 3.1 e 4.1). Mais recentemente, o Hands On Lab da EntLib 4.1 trouxe bons exemplos para alguns cenrios no avaliados originalmente; facilidade de construo de Web Forms via RAD no Visual Studio; suporte para integrao futura com outros cenrios de apresentao e canais de relacionamento, como o ambiente Mobile;

Passamos aqui por alguns aspectos de deciso do projeto e algumas justificativas que levaram a adoo da plataforma .NET no cenrio acima. A partir desse exemplo, podemos montar uma planilha de deciso mais ampla, para a comparao ou avaliao de outras tecnologias, considerando:

184

1. reduo de custos de desenvolvimento; 2. reduo de custos de manuteno; 3. agilidade no processo de desenvolvimento; 4. produtividade e ferramentas de automao no desenvolvimento; 5. facilidade de integrao com sistemas legados; 6. interoperabilidade com outras plataformas; 7. segurana; 8. suporte transacional; 9. mobilidade; 10. capacitao da equipe; 11. conectividade com web services e padro WS-I.org; 12. suporte a padres W3C; 13. facilidade de depurao e ferramentas; 14. integrao e rastreabilidade no ambiente de infra-estrutura; 15. custo total de infra-estrutura necessria, etc. Para pensar Creio que um dos aspectos importantes na adoo da plataforma .NET no cenrio acima foi a deciso pela boa engenharia de software. O projeto precisava considerar balanceamento de carga, crescimento e escalabilidade ao longo do tempo, integrao com o legado e diferentes plataformas, mltiplos bancos, processos via workflows e interfaces de servios, etc. Era uma soluo Web multi-inquilino, com potencial de crescimento no ambiente corporativo, e que sinalizava evoluo ao longo do tempo. Veja que a equipe no avaliou outros recursos importantes, como Live Services ou Cloud Computing atravs da plataforma Azure. Considerando valores de pricing da plataforma, assim como o desenvolvimento e depurao integrados sobre o Visual Studio 2008, a nuvem passa a ser uma opo cada vez mais interessante para projetos semelhantes tambm de baixa e mdia complexidade. Avalie se sua aplicao SAAS sobre ASP.NET + Banco de Dados no tambm aderente ao modelo elstico da nuvem. Em cenrios menores, a anlise acima pode ser exagerada (exemplo, um site simples sobre 1 nica mquina consumindo 1 nico banco de dados, com equipe reduzida). Mas se sua aplicao tem potencial de crescimento ou aspectos SaaS / Web 2.0 mais corporativos, passa a ser importante considerar os componentes de arquitetura de forma mais completa. A lista abaixo foi retirada do App Arch Guide 2.0:

185

Veja o que voc realmente precisa em sua soluo e escolha a melhor tecnologia de forma racional e com boas memrias de clculo justificando suas decises. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, July 29, 2009

Leitura Recomendada: The Architecture Journal #20 e o papel do arquiteto


Ol pessoal, tudo certo? A edio n.20 do The Architecture Journal em ingls j est disponvel, na verdade desde junho :) O tema desta edio foi Arquitetura em Tempos Turbulentos, bem atual. Veja mais aqui: http://msdn.microsoft.com/en-us/architecture/bb410935.aspx Nesse tema, gostaria de levantar um assunto: minhas ltimas conversas com arquitetos e profissionais de TI envolveram diversos aspectos relacionados com a plataforma de aplicaes, integrao entre servios .NET e servios em Java, construo de servios e cenrios SOA/SOI, melhores prticas para WCF e WF, assim como direes para times de arquitetura e desenvolvimento. Porm, sempre que questionei os aspectos de negcio envolvidos na soluo ou mesmo sobre o impacto de cada deciso de projeto no negcio da empresa, foram poucas as respostas. :(

186

De fato, tenho sentido uma falta constante de envolvimento de muitos arquitetos em relao aos motivadores de TI. J falei um pouco desses motivadores num post maior, aqui. Quando escolhemos entre Web Forms e MVC, por exemplo, o impacto no est relacionado apenas em aspectos de programao, maior controle sobre o cdigo HTML ou a aplicao de funcionalidades RAD. Existe um impacto de mdio e longo prazo em manuteno, composio, testabilidade, operao, etc. que resulta em maiores ou menores oportunidades de negcio para a empresa. Isso mais forte em algumas indstrias, seja para cenrios de ISVs, pequenas e mdias empresas ou corporaes. Sempre falamos que responsabilidade do arquiteto estar envolvido com os aspectos de negcio que direcionam cada deciso tcnica. Pensar em cenrios de negcio ao invs de features ou funcionalidades de produto parte obrigatria dessa viso. Porm, por que no temos observado isso no dia-a-dia de nossas empresas e arquitetos? Atualmente, tem sido mais fcil encontrar arquitetos operacionais do que estratgicos. Ser que este comportamento consequncia da crise deste primeiro semestre, que atingiu o mercado em diferentes nveis para cada indstria? Ou o papel do arquiteto (de solues, infraestrutura e enterprise) no Brasil continua em formao, abrangendo vrios sabores de atuao? Falta maior capacitao para a viso de negcio na formao de nossos arquitetos hoje em dia? O que vocs acham? Waldemir.
Posted: Monday, July 06, 2009

187

Captulo 8
Identidade e Segurana

Um tema constante em mesas redondas com o mercado foi segurana: como implementar Autenticao e Autorizao, assim como os principais aspectos envolvidos no controle de acesso em aplicaes corporativas. Neste captulo apresentamos alguns dos principais posts sobre o assunto, com destaque para o projeto Geneva, uma iniciativa baseada em CBA Claim-based authentication.

188

Windows Identity Foundation (WIF) e o Claims based Authenticaion & Authorization (CBA)
Ol pessoal, tudo certo? Esta semana eu gravei com o Markus mais um ArqCast, desta vez sobre Identidade, Autenticao e Autorizao, aproveitando para falar tambm do projeto Geneva Framework. Agora, esse projeto tem um novo nome, Windows Identity Foundation (WIF). O projeto Geneva uma iniciativa Microsoft na linha do Claims based Authentication, ou autenticao baseada em declaraes. Existem diversas vantagens nessa abordagem, principalmente no desacoplamento entre aplicaes e provedores de identidade, assim como na maior interoperabilidade entre plataformas. possvel a construo de um verdadeiro Single Sign-On entre diferentes infraestruturas e plataformas atravs de um modelo CBA. Back to Basics : Identidades Em nossas solues, tratamos identidade com o objetivo de garantir as questes de acesso de um usurio aos recursos disponveis na arquitetura ou soluo. Perguntas como "quem voc?", "o que voc pode fazer?", "como posso personalizar minha aplicao para voc?", so exemplos que tratamos nesse contexto, alm de lidar com a segurana e a integridade das informaes disponveis. No dia-a-dia, temos diversas opes para esse tipo de tratamento, como contas de domnio Windows, Kerberos, autenticao via WebForms, AD, OpenID, modelos customizados pela empresa, etc. Porm, quando tratamos identidades, diversos desafios aparecem como o gerenciamento de usurios, o gerenciamento de permisses, a proteo de informaes confidenciais, a integrao entre aplicaes e sistemas, para citar alguns. Um cenrio muito comum hoje em dia o uso de autenticao corporativa via AD Active Directory e autorizao via Roles, atravs do Authorization Manager (AzMan). Para esse tipo de desenvolvimento, recomendo conferir a Enteprise Library 4.1 e seus Hands-on Labs, para os blocos de autenticao/autorizao. Veja mais aqui! Back to Basics : Authorization Manager (AzMan) O AzMan (ou Authorization Manager) tem sido uma excelente alternativa para a implementao de um modelo de segurana baseado em Roles e Permisses em nossas aplicaes. Para quem no se lembra, ele existe desde o Windows Server 2003, sendo muito usado em aplicaes Web e Desktop com a dupla W2k3 e Windows XP. A prpria Enterprise Library 4.1 oferece suporte para a configurao de cenrios com Role Security usando AzMan de um modo muito fcil.

189

J no Windows Server 2008 e no Windows Vista, o AzMan passou a suportar o SQL Server como Storage para permisses. Antes disso, apenas metadados em AD, ADAM e arquivos XML eram suportados. Mais recentemente, o Windows Server 2008, Windows Server 2008 R2, Windows Vista e Windows 7 oferecem agora o AzMan MMC Snap-in, suportando aplicaes customizadas com Storages diversos como tabelas em banco, AD LDS, diretrios LDAP, entre outros recursos baseados em componentes chamados Custom Object Picker (que ficou mais interessado, vale olhar aqui!). Outro link interessante sobre AzMan esse aqui! Uma soluo muito interessante tambm o NetSqlAzMan, que implementar uma soluo desacoplada para .NET 3.5, baseada em Role Security. NetSqlAzMan - .NET SQL Authorization Manager Ref.: http://netsqlazman.codeplex.com/ Um modelo baseado em Identidades Federadas A partir do cenrio acima, j deu para perceber que TIPros, assim como desenvolvedores sofrem no tratamento das questes de segurana. Da mesma forma, nossos usurios sofrem na ausncia de um modelo de identidade nica, com tantas senhas e credenciais sendo apresentadas para os sistemas. Haja post-it para guardar tanta senha!! :) Uma resposta para aliviar esses problemas o modelo de Identidades Federadas, baseado no WS-Federation. O WS-Federation uma especificao para federao de identidades, desenvolvida como padro aberto por diversas empresas (BEA, BMC, CA, IBM, Microsoft, Novell, entre outras). O WSFederation permite a definio de regies separadas de segurana, para o trfego de identidades, atributos de identidades e autenticao via declaraes (Claims). Um dos elementos principais do modelo a definio de tokens de segurana, com declaraes que escolhemos para o mapeamento de identidades. Atravs dos artibutos escolhidos, nossa aplicao pode decidir pela autorizao ou no de um usurio, para uma determinada funcionalidade. Por trs deste modelo temos o protocolo SAML 2.0 - Security Assertion Markup Language, que um padro aberto baseado em XML, para a troca de identidades entre regies de segurana distintas. O desenho a seguir ilustra uma negociao entre um usurio (User Agent) e um servios (Service Provider). Para uma requisio do usurio, veja que um provedor de identidades (Identity Provider) envolvido, oferecendo uma identidade de usurio, que ser apresentada junto ao Service Provider, para o consumo da funcionalidade desejada.

190

Esse o modelo que est por trs do CBA, base do projeto Geneva. Componentes do projeto Geneva O projeto Geneva nasce com uma srie de componentes sobre a plataforma Microsoft, envolvendo:

Active Directory Federation Services (ADFS) codinome Geneva Server Windows Identity Foundation (WIF) codinome Geneva Framework; Windows Cardspace, codinome CardSpace Geneva, para usurios finais e estaes de trabalho;

Um desenho que aparece na documentao do Geneva Beta 2 segue abaixo (claro, alguns nomes esto mudando, mas a idia dar uma viso geral sobre o Geneva, que j foi chamado de Zermatt inclusive :)

191

Bastante coisa chegando! Podemos ficar at confusos com tanta coisa, no mesmo? A boa notcia que o time do Patterns & Practices j est trabalhando num guia bem completo sobre Identidade, Autenticao e Autorizao. Olha s um mapa desse guia:

Quando o material ficar pronto, eu divulgo por aqui! Aguardem Para voc que ficou interessado no Geneva e no uso de um modelo CBA, veja os links abaixo:

192

Geneva Team Blog Ref.: http://blogs.msdn.com/card/archive/2009/07/22/official-name-for-geneva.aspx Microsoft Code Name "Geneva" Ref.: http://www.microsoft.com/forefront/geneva/en/us/ Evaluate Microsoft Code Name Geneva beta 2 today Ref.: http://msdn.microsoft.com/en-us/evalcenter/dd440951.aspx Microsoft Code Name "Geneva" Beta 2 (de 18 de agosto de 2009) Ref.: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=118c35889070-426a-b655-6cec0a92c10b Security Assertion Markup Language Ref.: http://en.wikipedia.org/wiki/SAML_2.0 Outro material bem legal segue abaixo: Geneva Interop Whitepapers (Setembro/2009) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=9EB1F3C7-84DA-40EBB9AA-44724C98E026&displaylang=en#filelist Geneva Whitepapers and Datasheet (Maio/2009) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=9CA5C685-3172-4D8F81CB-1A59BDC9F7E3&displaylang=en E no podia esquecer os posts do Markus, aqui! ITPros, Desenvolvedor e Arquitetos, fiquem ligados!!! Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, September 16, 2009

193

Captulo 9
Aplicaes Compostas

Retornando ao mundo da orientao a servios, Aplicaes de Composio ou Composite Applications tornou-se um assunto importante na mesa de muitos arquitetos de solues. A construo de uma aplicao de composio, entretanto, envolve diversos desafios, assim como patterns especficos que facilitam o trabalho de desenvolvimento. Assim, o Composite Application Guidance for WPF & Silverlight (tambm chamado de projeto PRISM) tem sido uma importante alternativa para a construo de aplicaes compostas sobre a plataforma .NET da Microsoft. Neste captulo, vamos conferir alguns dos posts que trataram o assunto,enquanto acompanhamos a evoluo do prprio projeto PRISM.

194

Do PIC ao PRISM, do DOS ao Azure o tempo no para! :)


Ol pessoal, tudo certo? Essa semana, num papo de corredor, estive conversando com o Palma sobre microprogramao, arquiteturas de micro-kernel e como a tecnologia evoluiu nesses ltimos anos. Se voc se lembra de desenhos como esse, vai entender:

O desenho acima um diagrama de blocos do micro-controlador PIC16F62X, um FLASHBased 8-Bit CMOS que foi uma febre um tempo atrs, para quem gostava de eletrnica digital (como eu :) ). Estudando o data sheet do PIC, era possvel implementar uma infinidade de sistemas, de pequenos controladores at programas sofisticados de converso e controle de dados em digitais. NOR, AND, OR, flip-flop, famlia 74 CMOS, eram os artefatos de programao digital nos anos 90. Na mesma poca, o mercado era repleto de gigas de teste, onde tambm era possvel aplicar instrues e projetos simplificados, como essas abaixo:

195

Talvez alguns dos leitores tenham visto mesas como essas em suas aulas na faculdade, enquanto aprendia os fundamentos de digitais e engenharia de computao. Hoje, passamos grande parte do tempo no mundo do software, compondo patterns como Pub/Sub, Facade, State, Observer, Proxy, etc, combinando funcionalidades em aplicaes de composio, que lembram um pouco essas mesas de testes. Voc escolhe seus componentes, servios e fontes de dados, conecta esses elementos entre si e tem uma aplicao. Passado algum tempo, podemos desligar algumas conexes feitas, reorganiz-las e temos uma nova aplicao.

Nesse mesma onda, o mundo dos sistemas operacionais tambm evoluiu. Em 1981 comeava a saga do Microsoft DOS (MS-DOS), que assim como o PC-DOS da IBM, oferecia um ambiente quase obrigatrio para quem iniciava no mundo dos PCXTs. A computao pessoal comeava, com um sistema operacional que oferecia uma srie de recursos como DIR, RENAME,

196

FORMAT, FDISK, CHDIR, ANSY.SYS, EMM386, COMMAND, entre outros, que faziam a interface entre o usurio e os recursos de uma mquina desafiadora com 640 KB de memria, 10 MB de HD e incrveis 4 MHz de CPU. Era um admirvel mundo novo!!! :) Hoje, falamos de sistemas operacionais na nuvem, fazendo uma nova interface entre o usurio e um ambiente massivo de processamento e armazenamento ilimitado. Falamos em transparncia de autenticao e integrao entre infra-estruturas corporativas locais e aplicaes distribudas em datacenters de ltima gerao, com milhares de mquinas e alta escalabilidade. Parece mesmo o nascimento de um admirvel mundo novo!!! :) Do PIC ao PRISM, passamos de componentes discretos de eletrnica digital aos componentes e patterns de composio para a construo de aplicaes compostas. Do DOS ao AZURE, passamos de recursos de um sistema operacional local, com aplicaes de 16 bits em mquinas que viviam a maior parte do tempo isoladas, para um sistema operacional na nuvem, suportando os conceitos da computao elstica. Realmente, esses ltimos 30 anos foram impressionantes. Como sero os prximos 30 anos de evoluo em TI ? Talvez no precisemos esperar tanto para nos surpreender com as inovaes que esto adiante. Por enquanto s! At o prximo post :) Waldemir.
Posted: Saturday, March 07, 2009

Aplicaes Compostas com o Prism v2.0 : Um "Hello World" para comear.


Ol pessoal, tudo certo? Atualmente, estou envolvido num projeto que avalia uma interface de composio e seus desafios. Existem diversos aspectos de arquitetura envolvidos nesse tipo de interface, como:

Suportar diferentes fontes de dados e servios; Utilizar patterns de composio para seus diversos componentes de tela; Permitir o desenvolvimento simultneo de seus componentes; Suportar as novas necessidades de usabilidade e flexibilidade em interfaces UX; Tratar layouts dinmicos; Tratar eventos e subscrio de eventos;

197

Para atender esses requisitos, existem diversos patterns aplicveis, como:


Composite User Interface patterns: Composite and Composite View, Comando e Adaptadores; Modularity patterns: Separated Interface and Plug In, Service Locator, Event Aggregator e Faades; Testability patterns: Inversion of Control, Separated Presentation, etc.

Como alternativa na plataforma Microsoft estou usando o PRISM v2.0 - Composite Application Guidance for WPF and Silverlight 2.0, anunciado recentemente, veja aqui.

Assim, os prximos posts sero dedicados ao PRISM v2.0 e seus recursos. Para comear, a figura ao lado apresenta a pilha de componentes do PRISM, que executa sobre o .NET 3.5 e os recursos do WPF Windows Presentation Foundation. Entre os componentes principais citamos: o Unity Application Block, responsvel pela infra-estrutura para inverso de controle e tratamento de containers; o Unity Extensions Composite Application Library, que disponibiliza os recursos da Unity no ambiente de programao do PRISM; e a prpria Composite Application Library (CAL), que encapsula esses recursos para o desenvolvedor PRISM. Sobre a CAL, criamos nossos mdulos e shell interface para a aplicao de composio. J no desenvolvimento de nossos mdulos e elementos de tela, a CAL oferece o seguinte conjunto de recursos:

Bootstrapper Module Services & Containers Regions Views Events Commands

Seu primeio projeto com o PRISM v2.0 Vejamos um primeiro projeto com o PRISM. O pacote possui diversos projetos prontos que so boas dicas de estudo, entre eles, vrios Quick Starts sobre cada um dos componentes da CAL. Vamos olhar hoje o Quick Start "Hello World". Ele se encontra instalado na pasta abaixo:

198

C:\[PRISM V2.0]\Quickstarts\Hello World\HelloWorld.Desktop Abrindo o QuickStart "Hello World", voc ter a seguinte soluo no Visual Studio:

Na figura ao lado, vemos 1 pasta para os componentes da CAL (Composite.Desktop, Composite.Presentation.Desktop e Composite.UnityExtensions.Desktop), assim como 2 projetos na soluo:
HelloWorld.Desktop - Projeto que implementa a interface principal, sendo tambm o ponto de entrada da aplicao; HelloWorldModule - Projeto do mdulo de visualizao, que far parte da interface principal. Em solues maiores, teremos vrios projetos de mdulos, cada um implementando uma View ou Views de composio.

Portanto, uma soluo com o PRISM ter no mnimo 2 projetos: a interface principal (sendo o ponto de entrada) e um mdulo de visualizao. Quando olhamos o projeto do HelloWorldModule, notamos que nenhuma referncia feita para o projeto Desktop. Ao mesmo tempo, temos uma pasta de View(s) presente no projeto, implementando os componentes de tela do mdulo. Uma View na verdade um User Control em WPF que ser apresentado na interface shell, como vemos abaixo:

Em XAML, esse User Control aparece assim:


1: <UserControl x:Class="HelloWorldModule.Views.HelloWorldView" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 4: <Grid> 5: <TextBlock Text="Hello World - Arquitetura de Solues" Foreground="Green" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="24" FontWeight="Bold"></TextBlock> 6: </Grid> 7: </UserControl>

Encapsulando essa View no Mdulo HelloWorld, vemos a classe HelloWorldModule, apresentada a seguir a partir do arquivo "HelloWorldModule.cs". Note que atravs dessa classe,

199

relacionamos as views presentes no mdulo, assim como a regio que usaremos na interface principal para apresentao da view:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: using Microsoft.Practices.Composite.Modularity; using Microsoft.Practices.Composite.Regions; namespace HelloWorldModule { public class HelloWorldModule : IModule { private readonly IRegionViewRegistry regionViewRegistry; public HelloWorldModule(IRegionViewRegistry registry) { this.regionViewRegistry = registry; } public void Initialize() { regionViewRegistry.RegisterViewWithRegion("MainRegion", typeof(Views.HelloWorldView)); } } }

Esse projeto compilado dever gerar a biblioteca "HelloWorldModule.dll". Olhando o projeto HelloWorld.Desktop presente na soluo, vemos uma interface principal chamada Shell, que define a MainRegion, container para os vrios mdulos da soluo.

O cdigo XAML da Shell principal dado a seguir:


1: <Window x:Class="HelloWorld.Shell" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 4: xmlns:cal="http://www.codeplex.com/CompositeWPF" 5: Title="Hello World" Height="195" Width="316"> 6: <ItemsControl Name="MainRegion" cal:RegionManager.RegionName="MainRegion" /> 7: </Window>

200

No XAML acima vemos a definio do MainRegion, atravs da chamada cal:RegionManager.RegionName = "MainRegion". Nesse ponto, fazemos a associao da regio para visualizao do mdulo criado. Finalmente, o projeto HelloWorld.Desktop implementa uma classe importante chamada "Bootstrapper". Ela o ponto de entrada da CAL na aplicao, sendo responsvel pela enumerao e carga dos mdulos participantes da soluo. No cdigo abaixo, vemos o mtodo GetModuleCatalog(), onde o mdulo HelloWorldModule chamado:
1: namespace HelloWorld 2: { 3: class Bootstrapper : UnityBootstrapper 4: { 5: protected override DependencyObject CreateShell() 6: { 7: Shell shell = new Shell(); 8: shell.Show(); 9: return shell; 10: } 11: 12: protected override IModuleCatalog GetModuleCatalog() 13: { 14: ModuleCatalog catalog = new ModuleCatalog() 15: .AddModule(typeof(HelloWorldModule.HelloWorldModule)); 16: return catalog; 17: } 18: 19: 20: } 21: }

Uma vez compilado, o projeto HelloWorld.Desktop dever gerar o executvel "HelloWorld.exe", que consome o mdulo HelloWorldModule.dll. Ao final, a aplicao executada apresenta a seguinte interface:

Como exerccio sobre esse projeto, execute passo-a-passo a soluo e verifique a ordem de disparo de cada um dos componentes da CAL. Voc ver a primeira chamada para a class App : Application, seguida pela class Bootstrapper : UnityBootstrapper, etc. Vale conferir.

201

Nos prximos posts, vamos falar de cada um desses componentes, enquanto percorremos os HOW TO'S, Quick Starts e demais artigos presentes no Prism v2.0. Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, February 26, 2009

Composite Application Guidance for WPF and Silverlight 2.0 Final Fev.2009
Ol pessoal, tudo certo? Excelente notcia para todos que acompanham o PRISM - Composite Application for WPF and Silverlight: esta semana tivemos o anncio de sua verso 2.0 - Final! :) O pacote completo vem com a Composite Application Library, uma implementao de referncia melhorada (a Stock Traders application in WPF and Silverlight), 9 Quick Starts para estudo, 26 HOW TO'S e vrios documentos sobre patterns de UI e arquiteturas clientes. Para quem se lembra da verso 1.0, a tela principal da implementao de referncia era assim:

Agora na verso 2.0 melhorou bastante e ainda conta com exemplos de animao em diversos controles de tela, confira :)

202

Internamente, a arquitetura tambm evoluiu, suportando uma srie de patterns de aplicaes compostas e recursos como IoC, subscrio de eventos, containers, views, entre outros. De fato, os mdulos participantes da aplicao permanecem desacoplados, permitindo a construo de um projeto independente no Visual Studio para cada recurso da interface de composio. Outro recurso muito importante (eu diria at SENSACIONAL!) o compartilhamento do mesmo projeto desktop na web, ou seja, a mesma aplicao acima pode ser encapsulada num projeto Silverlight, como vemos abaixo:

No fundo, a aplicao como um todo encapsulada como um arquivo .XAP, sendo executada com o plug-in do Siverlight 2.0. Veja como fica a chamada da aplicao na pgina web acima:
1: <div id="silverlightControlHost"> 2: <object data="data:application/x-silverlight," type="application/x-silverlight-2" width="100%" height="100%"> 3: <param name="source" value="StockTraderRI.xap"/>

203
4: <param name="onerror" value="onSilverlightError" /> 5: <param name="background" value="white" /> 6: <param name="minRuntimeVersion" value="2.0.31005.0" /> 7: <param name="autoUpgrade" value="true" /> 8: <a href="http://go.microsoft.com/fwlink/?LinkID=124807" style="text-decoration: none;"> 9: <img src="http://go.microsoft.com/fwlink/?LinkId=108181" alt="Get Microsoft Silverlight" style="border-style: none"/> 10: </a> 11: </object> 12: <iframe style='visibility:hidden;height:0;width:0;border:0px'></iframe> 13: </div>

Recomendo fortemente baixar o pacote e comear suas aplicaes compostas e interfaces em Desktop e Silverlight! Veja mais aqui: Composite Application Guidance for WPF and Silverlight - February 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21be3fa10d013dd&DisplayLang=en Finalmente, para a preparao do seu ambiente de desenvolvimento, confira a instalao dos seguintes pacotes: Microsoft Visual Studio 2008 SP1 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A79649-6D9F6D58056E&displaylang=en Microsoft .NET Framework 3.5 SP1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=AB99342F-5D1A-413D8319-81DA479AB0D7&displaylang=en Microsoft Silverlight (para aplicaes Silverlight) Ref.: http://www.microsoft.com/silverlight/ Microsoft Silverlight Tools for Visual Studio 2008 SP1 (para aplicaes Silverlight) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=c22d6a7b-546f-4407-8ef6d60c8ee221ed&displaylang=en Confira tambm dois vdeos interessantes do Channel9 sobre o Prism v2.0, a seguir:

Ref.: http://channel9.msdn.com/shows/Continuum/Prismv2/

204

Ref.: http://channel9.msdn.com/posts/akMSFT/What-is-Prism-v2/ Com certeza, esse assunto merece um ArqCast Brasil especial, no acham? :) Por enquanto s! At o prximo post :) Waldemir
Posted: Thursday, February 19, 2009

patterns & practices: Composite WPF and Silverlight - Prism V2 - Drop 10

Ol pessoal, tudo certo? Para quem est acompanhando, na ltima sexta-feira (30/jan) foi publicado do Drop 10 da Verso 2 do Composite WPF and Silverlight. Outros posts sobre o assunto voc encontra aqui. Novas atualizaes na Composite Application Library para Silverlight foram implementadas nesse pacotes, alm de vrias melhorias como um arquivos de help, comentrios nos arquivos de XML da CAL e algumas mudanas de nomes de classes. Confiras os links principais abaixo: patterns & practices: Composite WPF and Silverlight - Prism V2 - Drop 10 Ref.: http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=22566 Prism: patterns & practices Composite Application Guidance for WPF and Silverlight site. Ref.: http://www.codeplex.com/CompositeWPF Por enquanto s! At o prximo post :)

205

Waldemir.
Posted: Monday, February 02, 2009

Composite Application Guidance for WPF v2.0 Drop 6


Ol pessoal, tudo certo? Temos acompanhado a evoluo do Composite Application Guidance for WPF (Prism) e suas bibliotecas, a CAL - Composite Application Library - aqui no blog. Veja aqui. Esta semana tivemos uma atualizao na verso 2.0 ainda em desenvolvimento. Entre os objetivos da nova verso citamos:

Extenso do Prism 1.0, suportando a construo de aplicaes WPF e Silverlight; Suporte para aplicaes multi-headed, tanto para ambiente desktop como para navegao web; alm de uma srie de novos templates, quickstarts, suporte ao Silverlight Toolkit Controls e o deploy da verso Stock Trader em Silverlight sobre a CAL;

O diagrama abaixo apresenta a arquitetura prevista para o Prism 2.0, onde notamos as caixas de suporte a estilos e temas, assim como o host Silverlight previsto:

Vale conferir a evoluo desses patterns, atravs dos links abaixo: Composite Application Guidance for WPF - Prism V2 - Drop 6 Ref.: http://www.codeplex.com/CompositeWPF/Release/ProjectReleases.aspx?ReleaseId=19731 Por enquanto s! At o prximo post :)

206

Waldemir.
Posted: Wednesday, November 26, 2008

patterns & practices : Composite Application Guidance for WPF (New Release)
Ol pessoal, tudo certo? O patterns & practices continua com bons lanamentos e mais um merece destaque aqui no blog. A documentao do Composite Application Guidance for WPF j est disponvel, fornecendo um bom material de estudo para os interessados. J tivemos uma introduo sobre o assunto aqui no blog. Recomendo mais esse documento do patterns & practices como leitura obrigatria pelo time de arquitetura. Maiores informaes, veja: Composite Application Guidance for WPF Ref.: http://msdn.microsoft.com/en-us/library/cc707819.aspx Composite Application Guidance for WPF-June 2008 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453BB827-98E162E1BD8D&displaylang=en Documentation for Composite Application Guidance for WPF (PDF) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=E3E87BDC-FEC1-448991FA-E1CF69721563&displaylang=en Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, November 10, 2008

patterns & practices: Composite Application Guidance for WPF


Ol pessoal, tudo certo?

207

Um dos tpicos importantes para o consumo de funcionalidades de uma infra-estrutura organizada a servios a composio. As novas aplicaes desenvolvidas com essa habilidade so conhecidas como aplicaes compostas ou Composite Applications. Recentemente, o time do patterns & practices publicou o Composite Application Guidance for WPF, que oferece esse poder de composio sobre a infra-estrutura do Windows Presentation Foundation (WPF). patterns & practices Composite Application Guidance for WPF Ref.: http://www.codeplex.com/CompositeWPF Assim, fica a dica para conhecer esse material enquanto evolumos nossas aplicaes no ambiente corporativo.

Por enquanto s! At o prximo post :) Waldemir.


Posted: Wednesday, July 23, 2008

Composite Application Guidance for WPF (PRISM)


Ol pessoal, tudo certo? Quando falamos sobre Aplicaes Compostas, uma srie de questes aparecem de forma prtica para a construo de interfaces com esse tipo de abordagem. Pense na diviso de tarefas entre equipes distintas, que atuam em funcionalidades diferentes acopladas ao mesmo formulrio ou seo de tela, por exemplo. Como coordenar e integrar essas peas de software que faro as chamadas para os servios das camadas inferiores? Outros aspectos envolvidos so padronizao de chamadas, controle de acesso, segurana, evoluo e adio de novos recursos dinmicos na interface, etc. Procurando tratar essas questes, o time do patterns&practices publicou recentemente o Composite Application Guidance for WPF, codenome Prism, j disponvel para download:

208

Composite Application Guidance for WPF (codenome PRISM) - June 2008 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=6DD3D0C1-D5B4-453B-B82798E162E1BD8D&displaylang=en

Entre os recursos do PRISM temos a estruturao de um pattern para Aplicaes Compostas, onde verificamos um modelo de shell de integrao que funciona como um ponto central para as chamadas das funcionalidades de composio da aplicao. O pattern ainda usa a abordagem Model-View-Presenter, para coordenar as peas de funcionalidades, permitindo uma melhor separao entre recursos de tela em tempo de design. Finalmente, atravs de IoC - Inversion of Control e Injection, o pattern resolve alguns problemas de adio de funcionalidades de forma dinmica, uma caracterstica do modelo de composio de interfaces. Fica como dica para quem j est iniciando seus primeiros passos para o mundo das interfaces de composio sobre uma arquitetura SOA. Em posts futuros, vamos falar um pouco mais sobre esse pattern e seus componentes principais. Enquanto isso, vale a leitura do artigo da MSDN Magazine, veja: Padres para criao de aplicativos compostos com WPF (PRISM) Glenn Block Ref.: http://msdn.microsoft.com/pt-br/magazine/cc785479.aspx Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, October 09, 2008

209

Composite Application Guidance for WPF - Parte 1


Ol pessoal, tudo certo? J falamos aqui sobre o Composite Application Guidance for WPF, o projeto codenome PRISM, para a construo de aplicaes de composio. Veja o primeiro post aqui. Esse pacote est dentro da famlia de recursos para a construo de interfaces de aplicaes, onde vimos o Smart Client - Composite UI Application Block - CAB (Dez/2005-2006) e depois o Smart Client Software Factory - SCFS (Abr/2008). Um documento que descreve essa evoluo este aqui. A discusso em 2006 j posicionava um modelo de Shell para uma interface composta como vemos a seguir:

De fato, enquanto o pacote CAB oferecia uma srie de bibliotecas para a construo de smart clients, a SCSF fornecia uma fbrica de software completa para a gerao automtica de cdigo, automatizando os passos de construo para o desenvolvedor. A verso Composite Application Guidance for WPF (Release 1) compe uma biblioteca de componentes (a CAL - Composite Application Library), no uma fbrica de software. Ao invs de templates, o pacote disponibiliza uma srie de HOW TO's. Eles esto disponveis no arquivo "Composite Application Guidance for WPF - June 2008.chm". A instalao do pacote trs uma srie de arquivos ".bat", que disparam alguns exerccios com o Composite WPF, veja:

Open Composite Application Library Solution.bat Open Hello World Solution.bat Open QS-Commanding Quickstart Solution.bat Open QS-ConfigurationModularity Quickstart Solution.bat Open QS-DirectoryLookupModularity Quickstart Solution.bat Open QS-EventAggregation Quickstart Solution.bat

210

Open QS-UI Composition Quickstart Solution.bat Open RI-StockTrader Reference Implementation Solution.bat

Entre os exemplos encontramos a aplicao StockTrader (projeto RI-StockTrader Reference Implementation Solution), que apresenta uma interface composta por 4 mdulos implementados como projetos independentes dentro da soluo.

A figura acima destaca os arquivos da soluo (a esquerda), onde vemos os 4 projetos de mdulos da interface. Do lado direito, a pgina principal da aplicao apresenta em destaque os quatro componentes do layout, Watch, New, Market e Position. Cada mdulo apresentado em uma caixa especfica. Esse um dos principais benefcios que o modelo implementa, ou seja, a capacidade de registro de novos mdulos funcionais de interfaces na mesma aplicao, permitindo que estes desenvolvimentos sejam independentes. No exemplo acima, cada mdulo (Watch, New, Market e Position) poderia ter sido desenvolvido por um desenvolvedor de forma independente, em paralelo. Com essa abordagem, evitamos o conflito de desenvolvimento de funcionalidades sobre uma mesma interface, um mesmo formulrio, tpico de projetos de interfaces compostas. O pacote PRISM tambm trabalha com o pattern MVP - Model View Presenter, para o controle da interface e comportamento da aplicao. O desenho a seguir apresenta um dos aspectos do modelo, o registro dos mdulos de funcionalidades junto a interface Shell, que controla a apresentao para o usurio:

211

De fato, recomendo a leitura desse pacote. A prxima verso (Relase 2.0) deve trazer ainda novas funcionalidades, como por exemplo a total interoperabilidade entre mundo Web e mundo Windows. Isso significa que o mesmo desenvolvimento (cdigo) deve gerar uma interface compatvel com Web e Windows, um sonho de longa data. :) Algumas referncias mais veja aqui: Smart Client - Composite UI Application Block (Dez/2005) Ref.: http://msdn.microsoft.com/en-us/library/aa480450.aspx patterns & practices - Smart Client Guidance (Jun/2006) Ref.: http://www.codeplex.com/smartclient/Release/ProjectReleases.aspx?ReleaseId=4940 Smart Client Software Factory (Abr/2008) Ref.: http://msdn.microsoft.com/en-us/library/aa480482.aspx Composite Application Guidance for WPF - Release version 1.0 (Jun/2008) Ref.: http://msdn.microsoft.com/en-us/library/cc707819.aspx Em posts futuros, vamos continuar vendo alguns exemplos com o Composite for WPF e seus recursos. Um outro assunto importante a estrutura da CAL - Composite Application Library, fique ligado. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, October 22, 2008

212

Composite Application Guidance for WPF - Parte 2


Ol pessoal, tudo certo? Continuando nosso estudo sobre Composite Application Guidance for WPF, vamos olhar um pouco mais sobre sua estrutura e principais recursos da CAL - Composite Application Library. Existe um conjunto bsico de componentes que esto envolvidos na construo de uma aplicao de composio com essa biblioteca. Esses componentes so baseados nos conceitos:

Bootstrapper Containers Mdulos e Servios Regies Visualizaes Eventos e Comandos

Cada conceito envolve uma etapa do processo de construo de uma interface de composio. Vejamos:
Bootstrapper a classe principal de uma aplicao composta, onde podemos inserir as aes de inicializao de componentes como containers, regies, views, etc. o ponto de entrada da aplicao. De fato, existe uma classe maior App da aplicao, que usamos para instanciar a classe Bootstrapper. Para que mdulos de funcionalidades possam ser relacionados numa interface de forma desacoplada, ou seja, sem relaes de dependncias diretas entre si, a biblioteca CAL utiliza o conceito de containers. Containers encapsulam mdulos e oferecem servios, que permitem a injeo de funcionalidades na interface Shell. Numa aplicao composta, grande parte da lgica do aplicativo reside nos mdulos e servios, visveis pela classe bootstrapper atravs de containers de injeo. So as reas especificas de mapeamento e renderizao de funcionalidades na interface. No projeto, uma region definida em XAML, atravs do controle RegionManager, que relaciona as regies do layout presente em cada formulrio de composio. Dentro da interface da aplicao, usamos o controle ViewBox para inserir uma View numa regio. Cada mdulo define sua View, relacionando a regio alvo para renderizao.

Containers

Mdulos e Servios

Regions

Views

213

Events/Commands Comandos so as atividades mais simples que definem o comportamento da interface, enquanto que eventos capturam os disparos realizados pelo usurio na interface. Uma aplicao de composio permite que os mdulos assinem os eventos desejados, atravs do pattern de subscrio de eventos.

Vejamos um exemplo. Um projeto bsico de aplicao com o Composite Application Guidance for WPF contm os seguinte componentes:

Exemplo "HelloWorld Solution". A soluo acima composta por 5 projetos: 3 projetos da Composite Application Library (Composite, Composite.WPF e Composite.UnityExtensions), 1 projeto de mdulo de funcionalidades (HelloWorld) e 1 projeto principal da interface Shell da aplicao (HelloWorldSample). Portanto, podemos iniciar a construo da aplicao em 2 frentes: o projeto principal da Shell e o projeto de cada mdulo independente. Para o projeto principal da Shell, notamos o arquivo Shell.xaml, que contm a chamada para a classe BootStrapper, responsvel pela inicializao dos demais servios da biblioteca CAL. Uma classe bootstrapper para nosso exemplo seria:
1: using System.Windows; 2: using Microsoft.Practices.Composite.Modularity; 3: using Microsoft.Practices.Composite.UnityExtensions;

214
4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27:

// Mdulo de funcionalidades para a interface de composio. using HelloWorld; namespace HelloWorldSample { internal class Bootstrapper : UnityBootstrapper { protected override IModuleEnumerator GetModuleEnumerator() { // Adicionando o mdulo a interface. return new StaticModuleEnumerator() .AddModule(typeof(HelloWorldModule)); } protected override DependencyObject CreateShell() { Shell shell = new Shell(); shell.Show(); return shell; } } }

No mtodo GetModuleEnumerator() acima, vemos a adio do mdulo "HelloWorldModule" como funcionalidade cadastrada na Shell. Isso feito atravs da chamada .AddModule. Para aplicaes com vrios mdulos de funcionalidades, podemos adicionar vrias chamadas AddModule, determinando ainda uma hierarquia entre os mdulos, para sua apresentao e navegao do usurio. No projeto do mdulo, adicionamos um UserControl que conter o controle ViewBox para renderizao de funcionalidades implementadas pelo mdulo. Veja o exemplo de User Control e View "HelloWorldView" a seguir (arquivo "HelloWorldView.xaml":
1: <UserControl x:Class="HelloWorld.Views.HelloWorldView" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"> 4: <Grid> 5: <TextBlock Text="Hello World" Foreground="Green" HorizontalAlignment="Center" VerticalAlignment="Center" FontFamily="Calibri" FontSize="24" FontWeight="Bold"></TextBlock> 6: </Grid> 7: </UserControl>

Na sequncia, definimos um controle RegionManager no arquivo "Shell.xaml" do projeto da Shell. O controle RegionManager ser responsvel pela coleo de regies que poderemos ter em nossa interface.
1: <Window x:Class="HelloWorldSample.Shell" 2: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 3: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

215
4: xmlns:cal="http://www.codeplex.com/CompositeWPF" 5: Title="Composite Application Library Sample" Width="400" Height="300"> 6: <ItemsControl cal:RegionManager.RegionName="MainRegion"/> 7: </Window>

A seguir, vemos a classe principal de mdulo "HelloWorldModule", relacionando a regio alvo para renderizao de sua funcionalidade, em nosso exemplo, a regio "MainRegion":
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: using HelloWorld.Views; using Microsoft.Practices.Composite.Modularity; using Microsoft.Practices.Composite.Regions; namespace HelloWorld { public class HelloWorldModule : IModule { private readonly IRegionManager regionManager; public HelloWorldModule(IRegionManager regionManager) { this.regionManager = regionManager; } public void Initialize() { IRegion mainRegion = this.regionManager.Regions["MainRegion"]; mainRegion.Add(new HelloWorldView()); } } }

Assim, cercamos alguns dos principais conceitos envolvidos na CAL. Esses componentes so representados de forma organizada na figura a seguir:

216

Ento isso: quando usamos a CAL para construir uma aplicao composta, pensamos na interface principal chamada Shell e nos vrios mdulos componentes. Assim, precisamos definir quais so as regies existentes na interface principal Shell. Cada mdulo contm funcionalidades que sero apresentadas em regies da interface Shell. Essa apresentao feita atravs do componente View, que adicionamos em cada mdulo. Todo o mdulo contido num container, que encapsula e oferece recursos para a cola com a interface Shell. Essa cola feita atravs do injection do mdulo junto a aplicao Shell. Por fim, podemos realizar o desenvolvimento de mdulos e Shell de forma desacoplada e em paralelo, uma necessidade que caractersticas de interfaces compostas. Esse post fez apenas uma introduo sobre os principais aspectos da CAL, estudando uma aplicao composta muito bsica. Claro que o objetivo do pacote construir interfaces mais complexas, com um grande nmero de mdulos, funcionalidades e eventos associados. Outro assunto importante no estudo da CAL o pattern de subscrio de eventos. Cada mdulo tambm pode assinar os eventos desejados para o disparo de funcionalidades especficas. Em posts futuros, vamos continuar discutindo alguns exemplos, enquanto aumentamos a complexidade de nossas composies sobra a Composite Application Library. Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, October 23, 2008

217

Captulo 10
OBA Office Business Application

Ainda na linha das aplicaes compostas, solues OBA Office Business Application so exemplos de composio sobre a plataforma Office da Microsoft. Aproveitando os recursos e interfaces de clientes como Word, Excel, PowerPoint, SharePoint, etc. possvel a construo de solues dinmicas, combinando servios existentes com interfaces j conhecidos pelo usurio final. Neste captulo veremos alguns dos principais posts sobre solues de composio baseadas em OBA.

218

OBA Composition Reference Toolkit - No caminho das aplicaes compostas.


Ol pessoal, tudo certo? E no path da construo de servios, consumo de suas funcionalidades e composio de processos, encontramos as aplicaes compostas. Esse assunto j foi bastante tratado aqui no blog e agora retorna com uma novidade: o OBA Composition Reference Toolkit. Ele foi anunciado publicamente no ltimo ODC 2008 - Microsoft Office System Developer Conference | 2008. Ref.: https://microsoft.crgevents.com/ODC2008/Content/default.aspx?p=UC3HYF Esse pacote de ferramentas da Microsoft permite a construo de solues sobre a plataforma Office System 2007, coordenando artefatos como Workflows, bibliotecas e documentos do SharePoint, listas, pginas do SharePoint, Web Parts, addin's do VSTO Office Client, relatrios de BI, Dashboards etc. Desse modo, representa uma maior integrao e unificao dos vrios recursos j conhecidos para a construo de aplicaes de composio ou componentes do OBA - Office Business Application. A descrio original do pacote muito interessante, veja: "It integrates seamlessly with the Microsoft Office 2007 System to enable a prescriptive application composition experience for Information Workers to build and deploy Office Business Applications (OBAs) using semantically related OBA Components like Workflows, SharePoint document libraries and lists, SharePoint Pages, Web Parts, VSTO Office Client Add-ins, BI Reports, BI Dashboards etc. The toolkit comprises an OBA Composition Server and an OBA Composer. The OBA Composition Server implements metadata and provisioning services to enable cataloging OBA components, defining semantic relationships between components, defining the bindings between components and LOB systems, and to support deploying OBAs composed by users. The OBA Composer is a WPF application that consumes and uses the services of the OBA Composition Server to enable a rich client and prescriptive user experience for composing and deploying OBAs." Composio de componentes, metadados, provisionamento, integrao semntica, distribuio, etc. so alguns dos objetivos perseguidos pelo OBA Composition Reference Toolkit, como vimos na descrio acima. Para relembrar, Aplicaes Compostas so aplicaes construdas atravs da combinao de apresentao, lgica e dados de mltiplos sistemas e/ou mltiplos componentes. Uma soluo OBA - Office Business Application - representa um modelo de aplicao composta que aproveita os recursos e servios disponveis na sute 2007 Office System da Microsoft. Entre os recursos mais conhecidos citamos:

Clientes do 2007 Office System, como Word, Excel, PowerPoint e InfoPath;

219

Servios do Microsoft Office SharePoint Server 2007 (MOSS2007) como Excel Services, Forms Services, Security Services, Storage Services, Enterprise Search, Live Communication Server, entre outros; Componentes de extenso escritos em .Net Framework 3.0, implementados sobre WF Workflow Foundationou e WCF - Windows Communication Foundation;

Porm, utilizar todos esses elementos de forma integrada um grande desafio. Por isso, quando pensamos numa soluo de composio, algumas perguntas so muito comuns, por exemplo: como realizar a composio de todos os componentes disponveis, seja de servios, funcionalidades, interfaces, controles e dados? Sei que tenho disponvel uma srie de servios em minha infra-estrutura, mas como integrar ou publilcar esses recursos? Ou ainda, quais mecanismos de integrao devo utilizar, entre adaptadores, web services, servios, assemblies, etc? Parte destes questionamentos direciona a necessidade de um catlogo de componentes e metadados, para que os vrios elementos de composio sejam disponibilizados para uma soluo. Ainda, surge a necessidade de uma plataforma de desenvolvimento para a construo das interfaces de composio, que traga maior agilidade na escolha e consumo dos componentes desejados. Para uma soluo Web, a imagem que vem a de WebParts, por exemplo. Sabemos que a arquitetura de uma soluo OBA - Office Business Application baseada nos servios do Microsoft Office Sharepoint Server 2007 e nas funcionalidades dos clientes do 2007 Office System, como vemos a seguir:

Note que os servios disponveis suportam funcionalidades importantes como search de informaes, mapeamento de identidades, metadados, catlogo de entidades, segurana, entre outros, podendo ainda haver customizaes para uma soluo especfica. Exemplos de extenses

220

de componentes so controles e funcionalidades integradas aos clientes do Office, que realizam o consumo de servios ou aplicaes LOB - Line Of Business - da empresa, como ERP's, CRM's, etc. Nessa linha, a arquitetura do OBA Composition Reference Toolkit apresentada a seguir:

Note que a viso fornecer um metadado de servios e componentes que sero registrados para posterior provisionamento, durante a construo de solues de composio sobre o Sharepoint. Nesse cenrio, o Microsoft Office Sharepoint Server 2007 Business Data Catalog (o conhecido BDC do Sharepoint) tem papel fundamental como infra-estrutura de metadado. Entre os tipos de componentes OBA que o Toolkit suporta encontramos:

SharePoint Lists SharePoint Document Libraries Workflows Site Pages Web Parts Content Types InfoPath Forms e Form Libraries Excel Services Reports BDC Application Definitions SSRS Reports VSTO Application Add-ins VSTO Documents

221

Com esse suporte de componentes, a construo de diversos patterns de aplicao OBA torna-se mais fcil e flexvel, como:

Pattern de Aplicao Office como Interface Rica Pattern de Integrao de Documentos OpenXML Pattern de Interface de Composio Web, Windows ou Hbrida Pattern de Workflow de Documentos Pattern de Colaborao Web Pattern de Notificaes/Tasks integrados com aplicaes LOB

E numa viso sobre oportunidades de negcio, o OBA Composition Reference Toolkit pode ser uma infra-estrutura interessante como catlogo de componentes de composio para comunidades de ISV - Independent Software Vendors, enquanto seus componentes agrupados por indstrias ou solues so disponibilizados para clientes. Esse um outro assunto interessante que vamos tratar em posts futuros. Um pouco de infra-estrutura ... Como pr-requisitos para o OBA Composition Reference Toolkit, temos a seguinte infraestrutura abaixo (retirado do Setup Guide):

Operating System: Windows Server 2003 SP2 IIS 6.0 SQL Server 2005 Developer or Enterprise Edition with SP2. o The SQL Server 2005 Express edition is not supported o A default instance accessible as localhost is required o SQL Server Reporting Services (SSRS) must be installed to deploy/test SSRS Report components o SQL Server Analysis Services (SSAS) must be installed to deploy/test SSAS OLAP Databases and components like SSRS Reports and Excel Services Reports that use an SSAS OLAP Database .NET 3.5 Framework Microsoft Office SharePoint Server 2007 Enterprise Edition o Enterprise features like the Business Data Catalog, Excel Services, and InfoPath Forms Services must be installed and activated to deploy/test related components. o SQL Server Reporting Services (SSRS) must be configured in the SharePoint integrated mode to deploy/test SSRS Report Components Office 2007 Professional Edition Visual Studio Tools for Office system 3.0 Runtime

Portanto, recomendo fortemente seguir os passos descritos no Guia de Instalao, antes de comear seus primeiros testes com a tecnologia. Veja abaixo: OBA Composition Reference Toolkit Setup Guide Ref.: http://files.skyscrapr.net/users/javeds/OBA%20Composition%20Reference%20Toolkit%20Instal lation%20and%20Setup%20Guide.pdf

222

Esta primeira conversa foi s um aperitivo... Em posts futuros, vamos detalhar um pouco mais a arquitetura do pacote, enquanto consideramos novas alternativas sobre a construo de aplicaes de composio. Nesse contexto, o OBA Composer ser uma ferramenta importante em nossas prximas discusses. O Mashup Corporativo ou Enterprise Mashup est caminhando para se tornar uma realidade. Nesse sentido, a computao orientada a servio e o negcio orientado a servio agradecem!!! :) Alguns links mais... OBA Composition Reference Toolkit Ref.: http://msdn2.microsoft.com/en-us/architecture/cc196391.aspx OBA Office Business Application Ref.: http://msdn2.microsoft.com/en-us/architecture/aa699381.aspx Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, February 27, 2008

OBA Central e consideraes sobre Aplicaes Compostas.

Ol pessoal, tudo certo? Mais um post sobre Aplicaes Compostas. Como j discutido aqui no blog, sabemos que Aplicaes Compostas so aplicaes construdas atravs da combinao de apresentao, lgica e dados de mltiplos sistemas.

223

E sobre a plataforma Microsoft temos o Office Business Application (OBA) como ambiente de construo desse tipo de aplicao, baseado no Office System. Entre as tecnologias envolvidas temos:

O Microsoft Office Client, com o Word, Excel, PowerPoint e InfoPath. O Microsoft Office SharePoint Server 2007, com servios diversos como Excel Services, Forms Services, Security Services, Storage Services, Enterprise Search, Live Communication Server, entre outros E o prprio desenvolvimento em .Net Framework 3.0, com o Windows Workflow Foundation e o Windows Communication Foundation.

Como principais ferramentas de configurao e construo de solues OBA, temos recursos como:

Web Parts Ribbons Form Regions Task Panes, como principais.

Sempre pensando na integrao entre uma interface configurvel e os sistemas de linhas de negcio, ou LOB - Line Of Business, uma soluo OBA exige tambm cuidados especiais, como:

Analisar as necessidades de negcio, antes de iniciar uma soluo OBA; Construir as extenses de clientes, de acordo com o perfil de usurios e experincia de interface desejada; Construir o site SharePoint para manuteno dos documentos Office envolvidos na soluo; Manter sincronizados os sites e aplicaes usando um modelo de processo de negcios; Conectar as aplicaes via o backbone de servios existente; Avaliar a adio de mtricas, relatrios e dashboards no ambiente OBA; Empacotar a soluo para distribuio / deployment no ambiente de produo; Manter um processo de administrao com monitorao e auditoria constantes, para a boa sade da organizao.

Nada de novo realmente! Necessidades bsicas de uma soluo bem feita.

224

Visitei recentemente o portal OBA Central e encontrei alguns artigos e apresentaes interessantes, com bons exemplos sobre solues baseadas em OBA. Fica a dica para conhecer mais esse portal : https://www.obacentral.com/default.aspx Por enquanto s. At o prximo post! :) waldemir.
Posted: Monday, November 26, 2007

OBA Office Business Application : A ltima fronteira.

Ol pessoal, tudo certo? Recentemente, uma pesquisa da Better Business Bureau dos Estados Unidos publicou o ranking das 10 indstrias com maiores ndices de reclamaes por parte de seus clientes. O ranking foi:
1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Cadeias de franchised para revenda de autos Reparos de autos e auto-mecnicas Computadores - Software e Servios Celulares e servios wireless Provedores de Internet E-Commerce e Internet Carros usados Varejo de mveis Agncias de colees Empresas de Ar Condicionados.

Interessante observar como a indstria de TI est envolvida em 4 dos eleitos acima. Arrisco aqui algumas das possveis causas para essa posio:

225 1. Falhas na experincia de usurio em muitas solues: a produtividade tem sido negligenciada muitas vezes em solues de TI. Alm disso, muitos processos ainda esto desconectados no enterprise; 2. As organizaes ainda so ilhas, tanto diante de outras organizaes como em seus prprios sistemas: ainda encontramos funcionalidades duplicadas no enteprise, alm da falta de governana, problemas de conectividade, etc; 3. Finalmente, o modelo SOA e a necessidade pela orientao a servios tem favorecido a conexo entre sistemas, negligenciando o usurio final desse novo ambiente de aplicaes.

Desse modo, a experincia do usurio ser o prximo foco de discusso no ambiente SOA. A partir da publicao de servios, a composio de processos e melhor integrao da informao ser uma necessidade no enteprise. Como construir novas aplicaes front-end para usurios na frente de uma arquitetura SOA? Nesse ponto, a Microsoft possui uma abordagem para a integrao de aplicaes, chamada OBA - Office Business Application. Em rpidas palavras, OBA oferece uma plataforma para a construo de aplicaes, onde a configurao flexvel um recurso mais presente que a codificao e a customizao. Sendo um tipo de plataforma para aplicaes compostas, OBA integra clientes do Office com os recursos do Office System e Sharepoint. Note que podemos falar de OBA sobre Office 2003 e 2007, uma vez que os conceitos de integrao sero os mesmos, aproveitando a interface de um cliente Office para o consumo de servios e funcionalidades do enterprise. Em linhas gerais, podemos compor uma soluo OBA com o seguinte menu da plataforma Microsoft:

Microsoft Office Clients: WORD, EXCEL, POWERPOINT e INFOPATH Microsoft Office SharePoint Server 2007: EXCEL SERVICES, FORMS SERVICES, LIVE COMMUNICATOR SERVER .NET 3.0: Windows Workflow Foundation, Windows Communication Foundation

Vamos avanar sobre o assunto OBA nos prximos posts. Fiquem ligados! Por enquanto s. At o prximo post! :) Waldemir.
Posted: Wednesday, November 07, 2007

226

Captulo 11
Windows 7 e seus recursos

Na onda de lanamentos sobre a plataforma Microsoft, o Windows 7 o grande destaque de 2009. Neste captulo, vamos conferir um resumo dos principais recursos presentes no Windows 7, assim como seu impacto para solues reais de mercado e processos de migrao e compatibilidade.

227

Windows 7 e Windows Server 2008 R2 : links e recursos interessantes


Ol pessoal, tudo certo? Hoje vamos falar um pouco sobre sistemas operacionais e recursos de infra-estrutura! :) O Windows 7 e o Windows Server 2008 R2 tiveram o cdigo finalizado, atingindo a verso Release to Manufacturing (RTM) essa semana. Isso significa que o cdigo est pronto para o mercado e seguir agora uma agenda para ser disponibilizado para fabricantes de PC, parceiros, assinantes e consumidores finais. Veja alguns anncios abaixo: Windows 7 Has Been Released to Manufacturing Ref.: http://windowsteamblog.com/blogs/windows7/archive/2009/07/22/windows-7-has-beenreleased-to-manufacturing.aspx Windows Server 2008 R2 Hits RTM Milestone Ref.: http://edge.technet.com/Media/Windows-Server-2008-R2-hits-RTM-Milestone/ O Windows 7 deve chegar s lojas em 22 de outubro. Enquanto isso, a verso Release Candidate (RC) que muitos j instalaram continua disponvel para download at 20 de agosto de 2009. Essa verso poder ser usada at 1 de junho de 2010, como bem descrito no link abaixo: Windows 7 Release Candidate Ref.: http://technet.microsoft.com/pt-br/evalcenter/dd353205.aspx Essa nova onda de cliente (Windows 7) e servidor (Windows Server 2008 R2) oferece uma srie de recursos que devemos considerar. Alguns aspectos que achei interessante compatilho com vocs aqui: 1. Tanto o cliente como o servidor trazem um recurso novo conhecido como Windows Web Services API (WWSAPI), que oferece suporte nativo para aplicaes C/C++ consumirem web services, um pedido do mercado. Cenrios onde cdigo nativo C/C++ obrigatrio, um nmero menor de dependncias desejada, rpido startup time de web services e suporte ao WS-* so o alvo do WWSAPI. Veja mais sobre o WWSAPI aqui! 2. Especificamente do lado do servidor, o WWSAPI implementa uma biblioteca que oferece o suporte nativo para a famlia de protocolos WS-* para web services baseados em SOAP. Essa implementao diminui o foot-print de servidores para web services, permitindo a subida de servios com o mnimo de recursos dependentes. 3. Do lado do cliente, alguns novos recursos no browser IE8 sobre Windows 7 deve enriquecer aplicaes Web e RIA. Um exemplo interessante a tecnologia WebSlice, que permite ao cliente subscrever pores de cdigo de uma pgina Web, criando um container na prpria interface do IE8.

228

Veja um exemplo abaixo. Fiz uma consulta sobre o clima e um dos resultados oferece o WebSlice para subscrio (Weather in So Paulo):

Na figura acima, a pgina do Bing implementa um WebSlice em um dos resultados obtidos, permitindo a sua subscrio. Clicando o boto verde em destaque, temos a janela de confirmao abaixo:

Que realiza a instalao do WebSlide na interface do IE8. Ao final, teremos algo como na figura a seguir, onde aparece o WebSlice j assinado:

229

O ponto de destaque que o componente WebSlice adicionado ao Common Feed List da plataforma de feeds do Windows, tornando o WebSlice disponvel no apenas para o IE8, mas tambm para qualquer aplicao Windows, RIA ou Desktop. Diversos sites esto implementando esse recurso, criando um canal a mais de personalizao e comunicao com o usurio. Para saber mais sobre WebSlices, veja aqui! 4. Outro recurso interessante no Windows Server 2008 R2 est relacionado ao Service Control Manager e ao Task Scheduler. Agora podemos criar cenrios onde servios podem ser iniciados ou terminados quando da ocorrncia de um evento. Isso elimina a necessidade de inicializao de servios somente na subida do sistema, alm de cenrios de polling ou espera ativa por um evento pelo prprio servio. Um servio deve ser iniciado quando um evento determinado ocorre, de forma automtica, havendo ou no uma requisio para ser tratada. Confira mais aqui! 5. Outro recurso que chama a ateno na combinao Windows Server 2008 R2 e Windows 7 o DirectAccess, que promete diminuir custos associados com a conectividade entre pontas de uma soluo. Um problema comum em diversos cenrios o tratamento da conectividade de usurios mveis, que acessam a partir da rede corporativa, a partir de redes externas ou via internet. Na maioria dos casos, a soluo aplicada para esses usurios o uso de uma VPN - Virtual Private Network. Dependendo do tipo da VPN, um software cliente de VPN necessrio para o estabelecimento da conexo, assim como concentradores, mquinas para suporte a VPN, configurao adicional, etc. Em cenrios de clientes Windows 7 e servidores Windows Server 2008 R2 essa integrao facilitada pelo recurso DirectAccess, que garante a conectividade de forma transparente para o usurio e para a aplicao. Veja mais sobre DirectAccess aqui! 6. Mais um recurso interessante no lado do servidor virtualizao. Dois tipos de virtualizao so suportadas pelo Windows Server 2008 R2: Client and Server Virtualization Provided by Hyper-V e Presentation Virtualization. O blog do Danilo Bordini est consolidando uma srie de informaes sobre virtualizao e o lado servidor, vale uma visita! Veja mais sobre virtualizao tambm nesse artigo aqui!

230

7. Outras funcionalidades presentes no lado cliente (Windows 7) foram bem explorados no blog do Luciano Palma, em dois posts que recomendo a leitura: Ref.: http://blogs.technet.com/lpalma/archive/2009/07/14/windows-7-10-coisas-que-voc-precisasaber-parte-1.aspx Ref.: http://blogs.technet.com/lpalma/archive/2009/07/14/windows-7-10-coisas-que-voc-precisasaber-parte-2.aspx Para finalizar, o Windows Azure chega comercialmente em Novembro, completando as opes para a arquitetura de solues na plataforma Microsoft. Teremos algo como a figura a seguir:

Pensando em uma arquitetura Software+Servio (S+S), onde nossa soluo deve atender as vrias frentes disponveis, teremos sempre a combinao de todos esses ambientes, seja dispositivos mveis, desktops, servidores e a nuvem. A idia do post no foi consolidar todos os recursos da nova onda da famlia Windows, mas chamar a ateno para alguns pontos de destaque, que poderemos aplicar em nossas solues muito em breve. Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, July 24, 2009

231

Links para uma instalao sobre o Windows 7 Enterprise RC


Ol pessoal, tudo certo? Enquanto eu esperava diminuir o trnsito da quarta-feira, antes do feriado, construi uma nova mquina para testes com o Windows 7 Enterprise Release Candidate. Claro, preparei a mquina com os pacotes para o Windows Azure, Silvelight 2, Silverlight 3, Visual Studio 2008 e .NET RIA Services, entre outros. A seguir, voc encontra os links para os principais pacotes instalados: Windows 7 Release Candidate: Download instructions Ref.: http://www.microsoft.com/windows/windows-7/download.aspx Visual Studio 2008 Professional Edition Ref.: http://msdn.microsoft.com/pt-br/evalcenter/bb655861.aspx Microsoft Visual Studio 2008 Service Pack 1 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A79649-6D9F6D58056E&displaylang=en Windows Azure Software Development Kit (May2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=22703881-1197-49e5-8231f49095cfd0bb&displaylang=en Windows Azure Tools for Microsoft Visual Studio (May 2009 CTP) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=11b451c4-7a7b-4537-a769e1d157bad8c6&displaylang=en .NET Framework 3.5 Enhancements Training Kit Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=355c80e9-fde0-4812-98b58a03f5874e96&displaylang=en Microsoft SQL Server 2008 Express with Tools Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=7522A683-4CB2-454EB908-E805E9BD4E28&displaylang=en Microsoft SQL Server 2008 Express Edition Service Pack 1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=01AF61E6-2F63-4291BCAD-FD500F6027FF&displaylang=en Nota: tive alguns problemas na instalao do SQL 2008 Express de primeira, mas depois de alguns SPs de SQL e VS2008, o Express rodou com sucesso. Ele necessrio para o pacote de Oslo de Maio.

232

Microsoft SQL Server 2008 Management Studio Express Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=08e52ac2-1d62-45f6-9a4a4b76a8564a2b&displayLang=en Visual Studio 2008 SDK 1.1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=59EC6EC3-4273-48A3BA25-DC925A45584D&displaylang=en Enterprise Library 4.1 - October 2008 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B5293E41584B6CE5&displaylang=en Hands-On Labs for Enterprise Library 4.1 March 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2B40C-7867D99D4B6A&displaylang=en Microsoft "Oslo" - May 2009 CTP Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=827122a5-3ca0-4389-a79e87af37cbf60d&displaylang=en Composite Application Guidance for WPF and Silverlight - February 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=fa07e1ce-ca3f-4b9b-a21be3fa10d013dd&DisplayLang=en Microsoft Silverlight 3 SDK Beta 1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=D09B6ECF-9A45-4D99B752-2A330A937BC4&displaylang=en Microsoft Silverlight 3 Tools Beta 1 for Visual Studio 2008 SP1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=11DC7151-DBD6-4E39878F-5081863CBB5D&displaylang=en Microsoft .NET RIA Services May 2009 Preview Ref.: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=76bb3a073846-4564-b0c3-27972bcaabce#filelist Claro, o prximo pacote que devo instalar o Beta 2 do Visual Studio 2010, que deve conviver sem problemas com os demais pacotes acima. Visual Studio 2010 and .NET Framework 4 Beta 1 Ref.: http://msdn.microsoft.com/en-us/vstudio/dd582936.aspx Visual Studio 2010 and .NET Framework 4 Training Kit - May Preview Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=752cb725-969b-4732-a383ed5740f02e93&displaylang=en

233

Finalmente, para continuar blogando a partir da nova mquina, o pacote do Windows Live tambm foi colocado: Windows Live Download Ref.: http://download.live.com/?mkt=pt-br Se voc se animou em fazer o mesmo, os links acima devem ajud-lo na coleo de arquivos de instalao. Boa sorte! Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, June 15, 2009

ACT Application Compatibility Toolkit 5.5 Avaliao de aplicaes para o Windows 7


Ol pessoal, tudo certo? Com o anncio do Windows 7, um assunto importante retorna: o processo de migrao/compatibilidade para um novo sistema operacional. Na verdade, qualquer migrao no ambiente Windows, de 2000 para XP, de XP para Vista, de Vista para Windows 7, envolve cuidados e devemos estar atentos ao processo de validao de nossas solues durante a migrao para as novas verses de sistema. Existem vrios tpicos envolvidos e em todos eles, possvel considerar uma lista de pontos de ateno, que esto diretamente ligados s novas funcionalidades da plataforma alvo. Outros pontos esto relacionados s mudanas no comportamento das aplicaes, devido restries de segurana, acesso aos recursos restritos do sistema operacional, etc. J h algum tempo esse processo de validao tem sido apoiado pelo pacote ACT Application Compatibility Toolkit. O ACT tradicionalmente o pacote de ferramentas e recomendaes para o processo de migrao de aplicaes entre verses do sistema Windows. Ao longo do tempo, a Microsoft foi adicionando ferramentas e guias teis ao ACT, que permitem aos desenvolvedores e arquitetos avaliarem os principais riscos de migrao de uma soluo, apontandos os pontos de no conformidade, assim como os mtodos e recomendaes para a soluo da maioria dos problemas. Em abril de 2009, o ACT verso 5.5 foi publicado, com o processo e principais recomendaes de migrao para o Windows 7. O processo sugerido obedece 3 fases principais:

Fase 1: Coletar os dados de compatibilidade e inventrio de software da mquina;

234

Fase 2: Anlise dos dados de compatibilidade; Fase 3: Teste e correo dos principais problemas;

Os principais componentes do ACT 5.5. so:


Application Compatibility Manager (ACM): principal ferramenta de administrao, configurao, coleta e anlise dos dados de compatibilidade para a migrao; Data Collection Package (DCP): arquivo de configurao para deployment para cada computador que ser avaliado no processo; ACT Log Processing Service: um servios usado para processar os arquivos de LOG do ACT; ACT Log Processing Share: um folder usado pelo servio de processamento de logs do ACT; ACT Database: um banco de dados no SQL Server que usado para manter os dados coletados no processo; Microsoft Compatibility Exchange: um Web Service que propaga os problemas de compatibilidade de aplicaes encontrados, habilitando o check automtico por informaes e atualizaes de compatibilidade junto ao portal Microsoft, na internet.

A figura abaixo apresenta a arquitetura do ACT 5.5, com seus principais componentes:

A documentao do ACT verso 5.5 est bem completa, detalhando os vrios passos de cada fase (coleta, anlise e testes/correes), assim como as vrias ferramentas disponveis em cada uma das fases. No deixe de confira: Microsoft Application Compatibility Toolkit (ACT) Version 5.5 Ref.: http://technet.microsoft.com/en-us/library/cc722055(WS.10).aspx

235

Microsoft Application Compatibility Toolkit 5.5 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=24DA89E9-B581-47B0B45E-492DD6DA2971&displaylang=en Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, June 01, 2009

236

Captulo 12
.NET RIA Services

RIA Rich Internet Application uma grande tendncia na construo de aplicaes em arquitetura de solues. Podemos definir uma aplicao RIA como um cruzamento entre uma aplicao baseada em browser (web) e uma aplicao desktop tradicional. Assim, devemos combinar os melhores aspectos do mundo Web (browser), como deployment facilitado, sem instalao no cliente, versionamento instantneo, navegao via browser, etc., com os melhores aspectos do mundo Desktop (local), como o processamento local, cenrios desconectados, uma interface rica, etc. O .NET RIA Services um novo framework da Microsoft que oferece recursos para a construo de aplicaes RIA de modo facilitado e desacoplado.

237

Microsoft .NET RIA Services May 2009 Preview


Ol pessoal, tudo certo? Um assunto emergente e muito importante o .NET RIA Services, anunciado durante o ltimo MIX09. Depois do primeiro preview em Maro, tivemos uma nova atualizao do pacote agora em Maio de 2009. Onde se aplica? De modo geral, o desenvolvimento de uma arquitetura em N camadas pode ser bem difcil e envolve uma srie de desafios e dificuldades para o correto mapeamento de seus componentes. Por exemplo, como garantir de forma padronizada questes como paginao, transferncia de dados entre as camadas de negcio e apresentao, implementao de recursos bsicos do CRUD Create, Read, Update e Delete, etc. O que o .NET RIA Services oferece? O .NET RIA Services tem por objetivo aumentar a produtividade de solues N camadas com arquiteturas RIA Rich Internet Application, resolvendo alguns aspectos comuns de integrao entre camadas. Pense na facilidade de desenvolvimento que temos hoje para aplicaes ASP.NET e o RAD Rapid Application Development. O .NET RIA Services pretende oferecer essa mesma produtividade para o contexto de aplicaes RIA com N camadas. Assim, um desenho que aparece na documentao do .NET RIA Services ilustra bem essa integrao entre camadas de aplicao e lgica de negcio, veja:

Como preparar o ambiente para o .NET RIA Services? Vamos preparar nosso ambiente de desenvolvimento para testes do .NET RIA Services. O pacote ainda est em CTP e a ltima atualizao foi em maio:

238

Microsoft .NET RIA Services May 2009 Preview Ref.: http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=76bb3a073846-4564-b0c3-27972bcaabce#filelist Para a instalao do pacote RIA Services, voc vai precisar do Silverlight 3 Beta 1 e os componentes:

Microsoft Silverlight 3 Beta SDK Microsoft Silverlight 3 Tools

Comece instalando o SDK Beta 1, a seguir: Microsoft Silverlight 3 SDK Beta 1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=D09B6ECF-9A45-4D99B752-2A330A937BC4&displaylang=en Aps instalar o SL3 SDK Beta 1, reinicie sua mquina para seguir instalando o SL3 Tools Beta 1, a seguir: Microsoft Silverlight 3 Tools Beta 1 for Visual Studio 2008 SP1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=11DC7151-DBD6-4E39878F-5081863CBB5D&displaylang=en Finalmente, instale o .NET RIA Services, atravs do pacote RiaServices.msi. O que o pacote .NET RIA Services ofecere? Com a instalao do pacote CTP de Maio, seu Visual Studio 2008 ir disponibilizar um novo template de aplicao na pasta Siverlight, como vemos a seguir:

239

Escolhendo esse template, geramos uma soluo contendo dois projetos principais: um projeto de aplicao Web (BusinessApplication1.Web), para interface com o usurio e um projeto de lgica de negcio (BusinessApplication1). Veja a seguir:

240

A soluo oferecida pelo template j implementa um exemplo de aplicao Web pronta para ser estendida com nossos servios e funcionalidades. Executando o projeto como est, a aplicao se parece como no desenho abaixo:

Veja que a interface ir aproveitar os recursos do Silverlight 3 Beta 1, por isso aguarde algumas boas surpresas em recursos e funcionalidades.

241

Um ponto bem interessante que foi dica do Otvio a documentao de Maio do CTP. No final do documento RIAServicesOverviewforMay2009.docx, disponvel no link principal do RIA Services, temos um tutorial que estende as funcionalidades do template acima, permitindo um bom estudo sobre os benefcios e recursos oferecidos pelo pacote RIA Services. Assim, esse post foi s para inici-lo no assunto. Em breve, veremos um pouco mais sobre o RIA Services e como poderemos utiliz-lo no futuro em nossas solues. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, May 20, 2009

.NET RIA Services CTP Roadmap


Ol pessoal, tudo certo? Um produto que estou acompanhando de perto o .NET RIA Services. J falamos um pouco dele aqui no blog. Em rpidas palavras, o . NET RIA Services um framework que oferece um padro para a construo de lgica de aplicao, funcionando como um middle-tier, controlando o acesso aos dados para consultas, alteraes e operaes diversas. Ele promete resolver alguns dos desafios que encontramos na construo de aplicaes RIA, quando tratamos os dados entre a parte cliente e a parte servidor. Aspectos como ordenao, paginao, filtro, validao, autorizao, batching e sincronizao off-line so comuns nesse tipo de aplicao, que envolve uma relao de trust entre a parte cliente e o mid-tier server em muitos casos. Nesse contexto, o .NET RIA Services facilita a manipulao dos dados da aplicao numa abordagem fim-a-fim, criando uma camada intermediria entre apresentao e o acesso a dados, fazendo o mapeamento da lgica de negcio para sua aplicao. Recentemente, foi publicado o roadmap previsto para o .NET RIA Services, no link abaixo: .NET RIA Services V1 CTPs: current thinking Ref.: http://silverlight.net/forums/t/101160.aspx Vale conferir!!! Nos prximos, posts vamos ver alguns exemplos do .NET RIA Services em ao. Para quem ficou interessado, veja alguns artigos bem interessantes, que estou usando para estudo:

242

.NET RIA Services: From Vision to Architecture Ref.: http://www.nikhilk.net/NET-RIA-Services-Vision-Architecture.aspx View Model Pattern with .NET RIA Services Ref.: http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern.aspx ViewModel + .NET RIA Services Part 2: Testability, Server Mocking and Dependencies Ref.: http://www.nikhilk.net/NET-RIA-Services-ViewModel-Pattern-2.aspx O pacote Preview de Maio 2009 est aqui: Microsoft .NET RIA Services May 2009 Preview Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c327972bcaabce&displaylang=en E voc vai precisar do SL3 tambm instalado, abaixo: Microsoft Silverlight 3 SDK Beta 1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=D09B6ECF-9A45-4D99B752-2A330A937BC4&displaylang=en Microsoft Silverlight 3 Tools Beta 1 for Visual Studio 2008 SP1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=11DC7151-DBD6-4E39878F-5081863CBB5D&displaylang=en Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, June 22, 2009

HelloWorld com o .NET RIA Services


Ol pessoal, tudo certo? Quando pensamos no desenvolvimento de aplicaes RIA Rich Internet Application, o uso de uma abordagem n-tier envolve uma srie de desafios. Assim, o principal objetivo do .NET RIA Services oferecer a produtividade do ASP.NET/RAD - Rapid Application Development para o desenvolvimento de aplicaes RIA. O .NET RIA Services oferece uma unificao no desenvolvimento entre cliente e servidor, focando os dados da aplicao e a camada de negcios. Atravs de um framework prescritivo, que oferece templates e patterns atendendo cenrios tpicos de RIA, o .NET RIA Services lida

243

com os principais tpicos de integrao do cliente Web com as camadas de negcio do lado do servidor, encapsulando diversas operaes. Entre os principais tpicos tratados pelo .NET RIA Services temos:

manipulao de dados, atravs de ordenao, paginao e filtros; regras de acesso a dados, atravs de autorizao, validao e conflito de acesso; operaes customizadas; operaes batching e off-line;

Neste post, vamos ver uma primeira aplicao com o .NET RIA Services, usando o CTP de Maio de 2009. Para preparar sua mquina para esse desenvolvimento, instale os pacotes indicados neste post aqui. Vamos comear criando uma aplicao do tipo Silverlight Navigation Application com o Visual Studio 2008:

Criando nossa aplicao HelloWorldRIAServices, devemos selecionar as opes de "Host the Silverlight application in a new Web Site, assim como a opo "Link to ASP.NET server project", como vemos na figura a seguir:

244

Nossa soluo criada com dois projetos principais: a parte cliente e a parte servidor, j que escolhemos um projeto do tipo ASP.NET Web Application para container da soluo. No futuro, teremos outras opes disponveis para o .NET RIA Services. A soluo faz referncia para algumas bibliotecas novas, como vemos abaixo:

245

Nesse ponto, faa uma primeira compilao e execute a soluo. Voc ver uma pgina Web com Silverlight 3.0, que oferece a estrutura base para nossa soluo. Essa pgina poder ser customizada conforme a necessidade de sua aplicao. O passo seguinte criar um modelo de dados. Adicione uma classe LINQ to SQL ao projeto HelloWorldRIAServices.Web, apontando para a base de dados de sua preferncia.

Com a classe LINQ to SQL criada, adicione as tabelas desejadas. No meu exemplo, adicionei o modelo de dados com as seguintes tabelas:

246

Nesse ponto, faa mais uma compilao, gerando assim as classes para o mapeamento de dados do modelo escolhido, antes de continuar. Feita a compilao, vamos adicionar uma classe Domain Service, da categoria Web. Adicione essa nova classe ao projeto HelloWorldRIAServices.Web.

No meu exemplo, chamei essa nova classe de HelloWorldDomainService.cs. Assim que voc clicar em Add, voc ter uma nova janela para escolher as entidades que faro parte de seu domnio de servios e sero expostas para o lado cliente. Escolhi todas as tabelas, sem a opo de edio ligada, veja:

247

Note que estou selecionando tambm a opo Generate associated classes for metadata. Essa opo ir gerar as classes no lado cliente, para o tratamento das entidades na camada de apresentao. Voc poder ver o arquivo gerado no projeto HelloWorldRIAServices fazendo a apresentao de todos os arquivos do projeto, na opo Project\Show all Files. Adicionando essa classe, nosso projeto ganha algumas novas referncias, como System.ComponentModel.DataAnnotations, System.Web.DomainServices, System.Web.DomainServices.Providers e System.Web.Ria. Tambm criamos os arquivos HelloWorldDomainService.cs e HelloWorldDomainService.metadata.cs no projeto do lado servidor automaticamente. Como passo seguinte, vamos adicionar uma referncia para "System.Windows.Controls.Data.dll" no projeto HelloWorldRIAServices, lado do cliente, para a adio do objeto Data Grid Control, que far a apresentao dos dados exportados pelo .NET RIA Services. Uma vez feita a referncia, podemos aproveitar a pgina HomePage.xaml do projeto cliente para adicionar o controle, veja:

248

Na sequncia, adicionamos o DataGrid Control ao corpo da pgina HomePage.xaml, abaixo:

Ainda na pgina HomePage.xaml, vamos adicionar uma chamada para o evento Page_Loaded, como vemos a seguir:

Antes de adicionar o evento Page_Loaded no arquivo HomePage.xaml.cs, devemos fazer a referncia ao projeto Web, atravs da clusula using, a seguir:

Agora, podemos adicionar nosso evento Page_Loaded no arquivo HomePage.xaml.cs. Note que neste evento fazemos o uso do DomainService exportado pelo .NET RIA Services, o que vai permitir que nosso projeto cliente possa manipular as entidades escolhidas para exportao na aplicao. Veja como ficou o arquivo HomePage.xaml.cs depois dessas mudanas:
1: 2: 3: 4: 5: 6: 7: 8: 9: using using using using using using using using using System; System.Collections.Generic; System.Linq; System.Net; System.Windows; System.Windows.Controls; System.Windows.Documents; System.Windows.Input; System.Windows.Media;

249
10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: using using using using System.Windows.Media.Animation; System.Windows.Shapes; System.Windows.Navigation; HelloWorldRIAServices.Web; //Adicionado para refernciar o projeto server!

namespace HelloWorldRIAServices { public partial class HomePage : Page { public HomePage() { InitializeComponent(); } // Executes when the user navigates to this page. protected override void OnNavigatedTo(NavigationEventArgs e){} private void Page_Loaded(object sender, RoutedEventArgs e) { HelloWorldDomainContext context = new HelloWorldDomainContext(); this.dataGrid.ItemsSource = context.Accounts; context.LoadAccounts(); } } }

Pronto! :) Compilando a soluo, voc ir exportar as entidades recebidas atravs do .NET RIA Services via o DataGrid Control, que adicionamos na pgina HomePage.xaml do projeto HelloWorldRIAServices:

Lembrando, o produto ainda est em CTP e deve ganhar no futuro novas funcionalidades, assim como uma maior automao em alguns pontos do processo de exportao e referncias de assemblies. Mas j bastante promissor a possibilidade de construir aplicaes RIA de uma forma to rpida, suportando os novos recursos do Silverlight 3.0.

250

Em posts futuros, vamos ver novos exemplos sobre o .NET RIA Services e seus recursos. No deixe de fazer seus testes tambm! Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, June 24, 2009

Mais recursos do .NET RIA Services CTP Maio 2009


Ol pessoal, tudo certo? Este mais um post sobre os recursos do .NET RIA Services, que a Microsoft est desenvolvendo para a construo de aplicaes RIA Rich Internet Application de uma forma mais simplificada. No post anterior, vimos os passos para a construo de uma primeira aplicao HelloWorld, que usava o dataGrid Control no Silverlight 3 Beta 1 para apresentar os dados de um banco de uma aplicao cliente. Para este post, vamos repetir os passos iniciais de criao da soluo RIA: 1. Criar a soluo a partir do template Silverlight Navigation Application.

2. Adicionar um modelo de dados atravs de uma classe LINQ to SQL, criando assim um arquivo DataClasses.dbml.

251

3. Compilar a soluo antes de seguir para o prximo passo! 4. Adicionar uma classe Domain Services, escolhendo as entidades que sero exportadas a partir do modelo de dados Data Classes.

Para a escolha das entidades, selecionei todas as tabelas do meu modelo, escolhendo tambm o modo de edio para cada entidade.

252

5. Compilar a soluo antes de seguir para o prximo passo! 6. No projeto cliente, adicionar uma referncia para os assemblies System.Windows.Controls.dll, System.Windows.Controls.Data.dll e System.Windows.Ria.Controls.dll 7. No arquivo HomePage.xaml do projeto cliente, adicionar uma referncia ao namespace do Ria.Controls, como vemos no xmlns:ria:

Neste ponto, temos uma soluo que pode ser compilada e que exporta para a camada cliente as entidades e regras de negcio da soluo. O principal objetivo do .NET RIA Services tornar o desenvolvimento de aplicaes RIA algo mais simples, gerando automaticamente as operaes de CRUD e o mapeamento de entidades que sero passadas do lado servidor para o lado cliente. Assim, vamos agora criar um DomainDataSource para manipular no lado cliente as entidades passadas. 8. Vamos adicionar um DomainDataSource na pgina HomePage.xaml do lado cliente.

253

9. Ao adicionar o Domain Service no lado do servidor, o Visual Studio gera um cliente DomainContext que faz a integrao de entidades entre as partes da aplicao. Assim, devemos agora fazer o binding do DomainContext do lado cliente com nosso DataSource RIA. Para isso, adicione a referncia ao projeto servidor na pgina HomePage.xaml

10. Na sequncia, fazemos o binding no DataSource ao nosso contexto, via a chamada <local:DomainService1/>

11. Finalmente, vamos adicionar o dataGrid Control e fazer o binding para o DomainDataSource que geramos para a apresentao dos dados. Primeiro, adicionar o xml namespace data na pgina HomePage.xaml.

12. Depois, adicionar o controle DataGrid mesmo, fazendo o binding para o customersDataSource, veja:

254

Pronto! Podemos compilar e rodar nossa aplicao, que dever apresentar um grid preenchido com os dados da entidade Customer apenas. Veja que fizemos apenas uma carga, no LoadMethodName = LoadCustomers.

Para ilustrar um pouco mais essa demo, vamos adicionar um controle de paginao com o controle DataPager. 13. Para isso, adicionar no lado do cliente uma referncia para o assembly System.Windows.Controls.Data.DataForm.dll. Se ainda no fez, agora o momento. 14. Adicione o xml namespace na pgina HomePage.xaml para o controle.

15. Como ltimo passo, adicionar o controle e fazer seu binding com o DomainDataSource.

Pronto! Rodando a aplicao, voc ver nosso grid com o DataPager no rodap, apresentando os dados de 3 em 3 linhas, como vemos abaixo:

255

Adicionando novos controles RIA, voc pode trabalhar ainda com agrupamento de dados (GroupDescriptor), ordenao (SortDescriptor) e filtros (FilterDescriptor) enquanto manipula suas entidades no lado cliente. O CTP de Maio do .NET RIA Services vem com uma documentao bem interessante, que oferece outros laboratrios que voc pode conferir. Em posts futuros, vamos continuar explorando esse framework que deve facilitar muito a construo de aplicaes LOB sobre o Silverlight 3, oferecendo grande produtividade para as equipes de desenvolvimento. Por isso, continue ligado! Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, June 26, 2009

Microsoft .NET RIA Services July 2009 Preview


Ol pessoal, tudo certo? Nessa correria de anncios e reunies, acabei deixando passar o lanamento do novo Preview do .NET RIA Services:

256

Microsoft .NET RIA Services July 2009 Preview http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c327972bcaabce&displaylang=en#filelist Agora trabalhando com a verso final do Silverlight 3.0. A documentao disponvel tambm cresceu bastante, passando de 100 para quase 200 pginas. Antes de instalar o novo Preview, recomendo desinstalar a verso anterior de Maio. O pacote final passou de 6.3 MB (v.1.0.0.10) para 10 MB (v.1.0.0.11) instalado. Ainda estou revendo minhas demos e cenrios, mas j vi que temos um novo template, o .NET RIA Services Class Library:

Esse template permite o empacotamento de bibliotecas de classe de uma aplicao RIA distribuda em mltiplas camadas, atravs de um nico pacote! Ao final, sua aplicao ser encapsulada como na figura abaixo:

257

J o template Silverlight Business Application mudou o layout da interface Web, aproveitando o design disponvel com o Silverlight 3.0 final:

Em breve voltamos aqui com novos posts e cenrios do novo Preview do .NET RIA Services, falando um pouco mais sobre suas novidades. Para ver os outros posts sobre o .NET RIA Services, confira a TAG [.NET RIA Services], aqui. Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, July 17, 2009

Microsoft .NET RIA Services CTP July 2009 : Algumas mudanas com o Silverlight 3 final
Ol pessoal, tudo certo?

258

Depois de alguns testes com o novo CTP de Julho do .NET RIA Services e a verso final do Silverlight 3.0, notei algumas mudanas e comentrios aqui so necessrios. Nesses posts abaixo, voc tinha alguns exemplos com o .NET RIA Services CTP de Maio 2009 e Silverlight 3.0 ainda Beta, lembra deles? Mais recursos do .NET RIA Services CTP Maio 2009 Ref.: http://blogs.msdn.com/wcamb/archive/2009/06/26/mais-recursos-do-net-ria-services-ctpmaio-2009.aspx HelloWorld com o .NET RIA Services Ref.: http://blogs.msdn.com/wcamb/archive/2009/06/24/helloworld-com-o-net-ria-services.aspx As dlls a seguir foram mantidas no SDK do Silverlight:

System.Windows.Controls.dll System.Windows.Controls.Data.dll System.Windows.Ria.Controls.dll

Porm, a System.Windows.Controls.Data.DataForm.dll, que era usada para a adio de controles dataControls (como o DataPager) foi movida do Silverlight SDK para o Silverlight Toolkit. Microsoft Silverlight 3 Tools for Visual Studio 2008 SP1 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=9442b0f2-7465-417a-88f35e7b5409e9dd&displaylang=en Silverlight Toolkit - July 2009 Ref.: http://silverlight.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=24246 Se voc no havia encontrado o Data.DataForm a partir da verso final do SL3, essa era a razo. Uma lista completa de quebras e mudanas do SL2 para o SL3 encontrada no link abaixo: Ensuring That Your Silverlight 2 Applications Work with Silverlight 3 Ref.: http://msdn.microsoft.com/en-us/library/cc645049(VS.95).aspx O .NET RIA Services tambm mudou e a partir da documentao, o primeiro exemplo dado usando o Entity Framework para a gerao do DomainContext, exportando as entidades mapeadas para o cliente Ria. Algumas pessoas tambm me perguntaram sobre o DomainContext gerado pela classe proxy no lado cliente. Quando tentaram fazer o binding dos dados no controle DataGrid, por exemplo, tiveram dificuldade para encontrar o DomainContext ou mesmo fazer a associao do DataSource no controle. Para isso, vale destacar a localizao do DomainContext. Sempre que a documentao cit-lo, ele est criado no arquivo da pasta Generetad_Code, por exemplo, o arquivo

259

SilverlightApplication1.Web.g.cs. Veja a figura abaixo, onde destaco o DomainContext criado:

O nome que no ajuda :( quando voc criar a classe DomainService, ela empresta o nome para o DomainContext no proxy cliente. Isso pode gerar a confuso! A partir desse DomainContext, que no meu exemplo foi gerado a partir do EDMX do Entity Framework no lado servidor, podemos usar o seguinte mapa para binding de dados. Arquivo no lado do cliente: MainPage.xaml
1: <UserControl x:Class="SilverlightApplication1.MainPage" 2: xmlns:data="clrnamespace:System.Windows.Controls;assembly=System.Windows.Controls.Data" 3: xmlns:dataControls="clrnamespace:System.Windows.Controls.Data;assembly=System.Windows.Controls.Data.DataForm" 4: xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 5: xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 6: xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 7: xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 8: mc:Ignorable="d" d:DesignWidth="640" d:DesignHeight="480"> 9: <Grid x:Name="LayoutRoot"> 10: <data:DataGrid Name="TheDataGrid"></data:DataGrid> 11: </Grid> 12: </UserControl>

Arquivo no lado do cliente: MainPage.xaml.cs


1: 2: 3: 4: using using using using System; System.Collections.Generic; System.Linq; System.Net;

260
5: using System.Windows; 6: using System.Windows.Controls; 7: using System.Windows.Documents; 8: using System.Windows.Input; 9: using System.Windows.Media; 10: using System.Windows.Media.Animation; 11: using System.Windows.Shapes; 12: 13: // Adicionar novos namespaces 14: using SilverlightApplication1.Web; 15: using System.Windows.Ria.Data; 16: 17: namespace SilverlightApplication1 18: { 19: public partial class MainPage : UserControl 20: { 21: // Adicionar o contexto do DomainServices1 22: private DomainService1 _ctxt = new DomainService1(); 23: 24: public MainPage() 25: { 26: InitializeComponent(); 27: 28: // Carregar as entidades deseajdas. 29: LoadOperation<Contacts> loadOp = this._ctxt.Load(this._ctxt.GetContactsQuery()); 30: 31: this.TheDataGrid.ItemsSource = loadOp.Entities; 32: } 33: } 34: }

No cdigo acima, note o trecho onde fazemos o binding para o DataGrid colocado na pgina .XAML, veja:

261

O que eu fiz foi carregar os dados da entidade Contacts, que foi exportada pelo contexto, a partir do EDMX gerado para meu banco de dados. Para isso, usei o mtodo GetContactsQuery() do contexto gerado. Para as outras entidades, tambm tenho os mtodos de consulta, como GetAccountsQuery(), GetBusinessCustomersQuery(), GetCustomersQuery(), etc. Recomendo a leitura e testes sobre os exemplos com o novo .NET RIA Services CTP de Julho. Ele parece mais simples e aos poucos, esse framework vai ganhando os contornos de uma boa soluo para o middle tier de uma soluo RIA. Microsoft .NET RIA Services July 2009 Preview http://www.microsoft.com/downloads/details.aspx?FamilyID=76bb3a07-3846-4564-b0c327972bcaabce&displaylang=en#filelist Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, July 30, 2009

262

Captulo 13
Domain Specific Language (DSL)

Pensando em produtividade no desenvolvimento de software, DSLs Domain Specific Languages aparecem como uma opo interessante para as equipes de desenvolvimento, oferecendo um ambiente para a construo e gerao de aplicaes de forma automtica, com grande variabilidade de combinaes. Neste captulo, vamos conferir alguns dos principais posts sobre o tema, muito discutido no mercado.

263

Algumas palavrinhas sobre Domain-Specific Language (DSL)


Ol pessoal, tudo certo? Semana passada voltei a falar com algumas empresas sobre DSLs e Fbricas de Software. Como muitos j sabem, o tema est bastante relacionado com a construo de frameworks de desenvolvimento, patterns, guias de automao e ainda com a abstrao de um domnio para o desenvolvimento de software. Uma DSL Domain Specific Language ou linguagem especfica de domnio (alguns at preferecem linguagem de domnio especfico), uma ferramenta de gerao de software e modelagem, que permite ao usurio a criao de solues iniciais a partir de artefatos componentes da DSL. Uma DSL pode envolver linguagens de modelagem, templates, referncias a frameworks de desenvolvimento, atividades, exemplos de cdigo, etc. Em resumo, uma DSL oferece ferramentas para a modelagem de solues, com grande variabilidade de resultados. Um exemplo j clssico de DSL grfica o editor de modelos de dados do Entity Framework, sobre o Visual Studio 2008, veja:

Na figura acima voc v do lado esquerdo, os shapes disponveis na DSL, como Entity, Association e Inheritance, que podem ser adicionados ao modelo desenhado a partir das tabelas do banco (no lado direito da figura). A DSL oferece assim, uma grande flexibilidade para a criao de novos modelos EDMX, em nosso exemplo. Mas nem s de DSLs grficas vive o mercado. Veja a figura abaixo:

264

Podemos classificar as DSLs em domnios horizontais e verticais, de acordo com o foco de cenrio que deve atender. Tambm, sua especializao pode ser mais genrica (de propsito geral) ou mais especfica (atendendo um cenrio determinado). Ainda, uma DSL pode ser grfica, textual, baseada em formulrios ou um modelo hbrido. Quando precisamos de uma DSL? Existem cenrios de desenvolvimento que envolvem:

grande complexidade nas operaes e mtodos; mudanas frequentes em requisitos e organizao do software; busca por maior agilidade entre a definio e a execuo do projeto de software; muitos pontos de manuteno do projeto, etc.

Em cenrios como esses, a aplicao de uma DSL torna-se interessante. Segundo Martin Fowler, ainda podemos classificar uma DSL como interna (ou Embedded) e externa. Uma DSL interna pode ser entendida como uma maneira de se projetar uma API ou uma interface no domnio da aplicao, usando uma linguagem mais natural para o desenvolvedor, com palavras dentro de um contexto ou domnio especfico. Uma DSL interna aproveita os recursos de uma linguagem host maior, por exemplo, um parser de aplicao feito em C# (veja que no precisamos criar um compilador, regras rgidas de gramtica ou descries para C#, elas j existem). J uma DSL externa mais ampla e exige um esforo de implementao maior, pois aplica restries e consideraes de gramticas e linguagens de programao, como as linguagem Tipo2 ou Livres de Contexto (pensando na Hierarquia de Chomsky, lembra dela?). ;) So exemplos de DSLs externas o T-SQL, transformadores XSLT, a linguagem SQL, etc. Sendo linguagens mais completas, oferecem um poder de modelagem para seus usurios muito maior. Finalmente, podemos esperar para breve novidades no mundo das DSLs sobre a plataforma Microsoft. A plataforma OSLO promete um grande uso dessas ferramentas, para a criao e manipulao de modelos no chamado MDD Model Driven Design. Mas esse um assunto para outro post :)

265

DSL um assunto bem interessante e tem muita coisa publicada na web. Se voc ficou interessante em conhecer mais sobre DSLs, alguns links que eu recomendo so esses: DSLs: The Good, the Bad, and the Ugly http://www.infoq.com/presentations/Truth-about-DSL Como separar semntica e implementao da DSL http://www.microsoft.com/brasil/msdn/arquitetura/Journal/SeparatingDSLSemanticsfromImplem entation.mspx Introducing Domain Specific Languages - Martin Fowler http://msdn.microsoft.com/en-us/oslo/dd727707.aspx Generating Code for DSLs http://martinfowler.com/articles/codeGenDsl.html FurtaSpace - www.afurtado.net (Blog do Andr Furtado, que tem diversos posts sobre DSLs) http://afurtado1980.spaces.live.com/default.aspx Frameworks de Desenvolvimento http://blogs.msdn.com/wcamb/archive/tags/Frameworks/default.aspx GAT/GAX http://blogs.msdn.com/wcamb/archive/tags/GAT+_2F00_+GAX/default.aspx Uma ltima pergunta: voc tem usado DSLs em seu dia-a-dia como arquiteto? Quais DSLs tm sido mais importantes? Consegue reconhec-las? Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, August 17, 2009

266

Captulo 14
Frameworks de Desenvolvimento

Praticamente todas as empresas do mercado j pensaram na construo ou no uso de frameworks de desenvolvimento enquanto buscavam uma maior produtividade em suas equipes. De fato, frameworks de desenvolvimento oferecem uma srie de benefcios para as equipes, assim como uma srie de desafios para as empresas que os implementam. Esse assunto apareceu diversas vezes em reunies e planos de TI nas empresas, por isso tambm ganha um destaque aqui nessa consolidao de posts, confira!

267

Frameworks de desenvolvimento e blocos de aplicao


Ol pessoal, tudo certo? Semana passada estive com alguns times falando sobre frameworks de desenvolvimento. Esse assunto est sempre em alta, principalmente em tempos de crise, quando produtividade, padronizao e qualidade de software ganham uma certa importncia. Existem vrias questes envolvidas em projetos de frameworks, tanto que j tivemos por aqui um post sobre esses desafios, confira! Uma pergunta que surgiu durante a discusso foi sobre a diferena entre blocos de aplicaes e frameworks de desenvolvimento. Pergunta interessante, respondi da seguinte maneira Podemos definir blocos de aplicaes como peas de cdigo que so comuns em diversos projetos de software. Exemplos de blocos so componentes de cache, logging, validao, monitorao, etc. Uma empresa que coleciona blocos de aplicaes pode reaproveit-los durante o desenvolvimento de diversos sistemas. Ao longo do tempo, para um mesmo domnio de aplicao teremos diversas aplicaes utilizando os mesmos blocos construtivos, conforme a necessidade. Ganha-se com o reuso e com a previsibilidade de comportamento desses componentes, que amadurecem ao longo do tempo, com as constantes intervenes e depuraes. Veja a figura abaixo que ilustra esse cenrio:

J um framework de desenvolvimento envolve uma soluo inicial dentro de um domnio de soluo ou problema. Essa soluo inicial envolve certos blocos construtivos que ajudam na

268

soluo, como componentes de acesso a dados, configurao, logging, monitorao, etc. muitas vezes os mesmos componentes que antes funcionavam apenas como blocos de aplicao. O ponto chave desse cenrio a coordenao dos vrios elementos dentro do mesmo domnio, fornecendo um ambiente para a construo de nossas aplicaes. O framework oferece assim uma soluo inicial para novas aplicaes. Assim, ilustro um framework de desenvolvimento atravs da figura abaixo, onde cada aplicao imersa dentro do ambiente fornecido pelo framework, veja:

O que vocs acham? Compraram as definies acima? Seja para a adoo de blocos de aplicao ou para a construo de frameworks de desenvolvimento, continuo sugerindo a Enterprise Library 4.1 como um bom comeo. Ela oferece bons exemplos e alguns cenrios de forma antecipada, economizando muita codificao durante nossos projetos. Para pensar: atualmente, estamos com o .NET 3.5 SP1 e em breve o .NET 4.0 ser lanado. Novos frameworks e templates tm sido anunciados como Velocity, .NET RIA Services, Sync Framework, Live Framework, entre outros. Esse processo contnuo e com certeza, novos protocolos e modelos de programao devem surgir ao longo dos anos. Oslo tambm desponta no horizonte prximo. Por isso, ao projetar seu framework de desenvolvimento, pense sempre em MUDANA, e at espere por ela!!! Isso far seu projeto mais flexvel, suportando adaptaes futuras, versionamento de interfaces, configurao dinmica e composio de funcionalidades. Se o ritmo continuar o mesmo, 2009 (.NET 4.0), 2010 (.NET 5.0), 2011 (.NET 6.0), 2012 (.NET 7.0), 2013 brincadeirinha, mas voc j entendeu, certo?

269

Como j disse Herclito de feso, 500 a.C. Panta rhei, isto , Tudo flui, Tudo movimento, Tudo muda !!! :) Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, July 15, 2009

Desafios na Construo de Frameworks - Algumas idias

Ol pessoal, tudo certo? Eis que o assunto ressurge: desafios na construo de frameworks. No de hoje que o mercado tem tratado esse assunto. O tema realmente importante, tanto pelas oportunidades de acertos como pelos erros, que muitas vezes podem ter um grande impacto na arquitetura e no negcio da empresa. E durante uma conversa com outro arquiteto, sr. Nakajima :), revi alguns conceitos que agora comento com vocs. Mas no pretendo esgotar aqui o assunto, apenas repassar alguns aspectos importantes que podem gerar novas discusses com sua equipe. Para uma definio mais formal, vamos dizer que um framework pode ser visto como um padro de arquitetura, o qual pode ser criado utilizando-se uma linguagem de padres de projeto. Sua modelagem reflete uma infra-estrutura reutilizvel e adaptvel a algum contexto. E pensando em contextos, podemos identificar dois tipos: frameworks horizontais e frameworks verticais.

Os frameworks horizontais so aqueles voltados para domnios gerais de aplicaes, de uso geral, como ODBC, o prprio .NET Framework, MFC - Microsoft Foundation Class, entre outros conhecidos; J os frameworks verticais so aqueles voltados para um domnio especfico de aplicaes, atendendo cenrios dedicados, como mercado financeiro, aplicaes de helpdesk, solues especficas para aplicaes de bilhetagem em telefonia, etc. Ou seja, so frameworks com grande foco num nicho especfico de aplicaes.

Desse modo, frameworks atendem naturezas de aplicaes muito diferentes. Note que essa classificao ir determinar ainda outras necessidades, como performance, latncia, manuteno,

270

frequncia de versionamento, dimensionamento de camadas, modelo de segurana, tratamento de excees, aderncia ao balanceamento de carga, etc. Mas quase sempre, o foco bsico de um framework o reuso de um bom modelo de programao ou o encapsulamento de um bom cdigo que faz uso ou disponibiliza recursos importante da empresa. Em algum momento, a empresa deseja implementar um framework que faa o acesso a um banco de dados, classes de monitorao, auditoria, controle de acesso, autorizao, autenticao, etc. De um modo geral, existem muitos benefcios prometidos com o uso de um framework, como:

Maior produtividade; Maior qualidade do software gerado; Reduo de escopo; Reduo do prazo de entrega; Reduo da quantidade de linhas de cdigo; Padronizao e manuteno facilitada; Aplicao de padres adotados; Reuso de arquitetura, patterns e cdigo; Utilizao de solues prontas e testadas;

Realmente, a idia reaproveitar peas de cdigo que j foram intensamente testadas e que apresentam um comportamento conhecido e desejado para a aplicao, minimizando assim situaes de quebra, falhas de lgica, permitindo uma depurao mais amigvel. Porm, podemos citar vrios fatores de resistncia ao framework ou seu desenvolvimento dentro da empresa, como:

Resistncia organizacional, diante da construo do framework ou mesmo seu uso; Resistncia gerencial, devido a competio por recursos, pessoas, cronogramas; Resistncia dos desenvolvedores que iro usar o framework, depois de pronto; Questionamentos sobre o retorno do investimento e impacto real de benefcios; Ausncia de equipe capacitada para participao no ncleo de desenvolvimento principal do framework; Ausncia de um plano claro e objetivo para a adoo e implantao do framework em produo; Clara viso sobre o tempo para o retorno do investimento realizado.

Tambm importante que o framework em desenvolvimento contemple as melhores prticas e cdigo de alta qualidade, para que ele mesmo seja um facilitador de recursos e no motivo de problemas para as aplicaes que fazem seu uso. Veja como essa condio crtica para o sucesso de um framework. Assim, alguns aspectos importantes para um bom projeto de framework so:

A construo do framework deve ser considerada estratgica para a rea de TI ou a rea responsvel. Sem essa orientao, possvel que o projeto se perca pelo caminho;

271

Deve haver um forte patrocnio e um compromisso gerencial nessa atividade; Deve haver uma conscientizao e um trabalho de divulgao durante seu desenvolvimento. O envolvimento de vrios departamentos da empresa difcil, mas crtico para uma rpida adoo do projeto; Deve haver um plano de comunicao e colaborao entre equipes participantes e usurias do framework; O processo de desenvolvimento deve ser retro-alimentado, para se garantir adaptaes e correes de rotas em tempo; Deve haver um compromisso da liderana do produto e da equipe de desenvolvimento com a misso do framework; Finalmente, a equipe de desenvolvimento do framework deve ser snior e capacitada para tal.

Tratamos at este ponto de aspectos mais gerenciais do que tcnicos, no mesmo? E como fica a codificao do framework? Como implementar? Quais modelos de camadas, classes ou arquiteturas so mais indicadas? Aqui entra a leitura e o contato com bons exemplos de frameworks e cdigo que o arquiteto deve procurar conhecer. Os ltimos posts falaram muito de WCF - Windows Communication Foundation e como sua estrutura configurvel e extensvel permite solues com grande performance. Outro aspecto que vale citar sobre sua estrutura interna. Sendo altamente configurvel, o WCF um excelente exemplo de framework que podemos estudar e entender para a construo de nossos prprios frameworks. Recomendo a leitura de bons livros e artigos tratando da estrutura interna do WCF, como: Channel Model Overview http://msdn2.microsoft.com/en-us/library/ms729840.aspx A Performance Comparison of Windows Communication Foundation (WCF) with Existing Distributed Communication Technologies http://msdn2.microsoft.com/en-us/library/bb310550.aspx Vale ainda olhar artigos sobre estruturas ou mesmo direes de tecnologias para a definio de um framework. Por exemplo, em 2005 podamos usar um artigo como esse abaixo para entender a viso do .NET Framework e seus componentes (ainda hoje sua leitura vlida): Building Connected Systems: The .NET Framework and the Microsoft Enterprise Application Development Platform http://msdn2.microsoft.com/en-us/library/ms973223.aspx Ou seja, para a construo ou adoo de um framework, devemos entender muito bem as necessidades reais de nossas aplicaes, assim como as tecnologias disponveis que podemos utilizar para a melhor implementao de soluo de um framework. Sempre lembrando que, antes mesmo de iniciar a construo de um framework e encarar todos os desafios citados acima, talvez seja interessante identificar um framework j existente no mercado que possa atender nossas necessidades.

272

Outro aspecto que vale uma discusso sobre a disciplina de desenvolvimento, ou o chamado Application Lifecicle Management (ALM) e como ser feito o gerenciamento do projeto do prprio framework. E no caminho para a reutilizao de software, a busca contnua pela produtividade, vale ainda conhecer a estratgia para Software Factories que temos publicada no link... Software Factories http://msdn2.microsoft.com/en-us/teamsystem/aa718951.aspx ...pois pensar na gerao automtica de cdigo, que referencia ou no um framework existente, uma tarefa importante para a produtividade no desenvolvimento de software. Como disse, o assunto no se esgota por aqui. Em posts futuros pretendo discutir alguns exemplos prticos de frameworks, implementaes de referncias e estruturas que podem nos ajudar na construo de frameworks, quando realmente necessrios. Por enquanto s. At o prximo post! :) Waldemir.
Posted: Monday, December 17, 2007

Desafios no mercado brasileiro e algumas aes da Microsoft


Ol pessoal, tudo certo? Seguindo a linha "...o comentrio que virou post", vou aproveitar os comentrios do leitor Roberto, que colocou vrias questes importantes sobre o impacto da evoluo da plataforma Microsoft no mercado brasileiro. Grande Roberto, segue aqui algumas consideraes que fao a partir de seus comentrios, muito relevantes. Vamos l: fato: temos algumas empresas no mercado brasileiro que ainda esto em verses antigas do .NET Framework, seja 1.1, 2.0 ou mesmo 3.0; realmente, a velocidade das mudanas e inovaes de hoje tm feito com que at o .NET Framework 3.0, publicado em novembro de 2006, seja chamado de "antigo" pelo mercado. Falando em evoluo do .NET Framework, compilei um roadmap para suas principais verses, veja:

273

Nota: no desenho acima, destaquei apenas os principais RTM's, sem colocar alguns Service Packs, Hot Fixes ou Betas do Framework. Tambm coloquei o .NET 4.0, que deve chegar no final de 2009, acompanhando o VS2010. Com certeza, nossa rea tem evoludo muito rapidamente nos ltimos anos. Na platafoma Microsoft, entre o PDC 2005 e o PDC 2008 por exemplo, vimos lanamentos como Windows Vista, SQL Server 2005, .NET 3.0, SQL Server 2008, .NET 3.5, .NET 3.5 SP1 alm da consolidao de conceitos como SOA, SAAS, SOI, WEB 2.0, RIA entre outros. Temos ento um cenrio interessante:

as inovaes so inmeras e disponibilizadas cada vez mais rapidamente (no mnimo anualmente) para o mercado pelos fornecedores de plataforma e software (sem falar nas inovaes de hardware, dispositivos, plataformas embarcadas, telefonia, etc. que possuem um impacto direto no pervasive computing, na usabilidade e acessibilidade de nossos usurios); muitas empresas tm focado a reduo de custos, minimizando treinamentos ou atualizaes peridicas; muitas empresas possuem hoje equipes de desenvolvimento que dominam o negcio da empresa, mas que no tiveram tempo suficiente para acompanhar as atualizaes de plataforma desses ltimos anos; o mercado recebe anualmente novos desenvolvedores recm formados, que conhecem algumas novas tecnologias, mas ainda no tm experincias verticais em cenrios de indstria, isto , no dominam o negcio da empresa; e finalmente, existe um desalinhamento entre a velocidade com que o mercado recebe atualizaes e a velocidade com que as empresas no Brasil absorvem essas atualizaes, por uma srie de fatores;

Resultado: Grande Desafio! Nesse contexto, a Microsoft tem procurado apoiar o mercado atravs de diversas maneiras, localizando muito material para o Brasil. So dezenas de programas, eventos e canais de comunicao para as vrias comunidades, como ITPro's, Desenvolvedores, Arquitetos, Parceiros,

274

Empresas, Acadmicos, etc. O objetivo de todos esses programas um s: fornecer o mximo de contedo que ajude os vrios segmentos de profissionais de TI em suas empresas nessa constante evoluo. Para ilustrar, veja alguns exemplos de material publicado pela Microsoft para o mercado brasileiro, focando desenvolvedores e arquitetos: Portal do MSDN e seus vrios DEV CENTER's Ref.: http://www.msdnbrasil.com.br/ Portal de Arquitetura do MSDN Ref.: http://www.microsoft.com/brasil/msdn/arquitetura/home.mspx Centro de Informaes para Desenvolvedores Iniciantes Ref.: http://msdn.microsoft.com/pt-br/beginner/default.aspx Academia .NET Protector Ref.: http://www.msdnbrasil.com.br/academianetprotector/ Desenvolvedor 5 Estrelas Ref.: http://www.msdnbrasil.com.br/cinco_estrelas/ Webcasts do MSDN Ref.: http://www.microsoft.com/brasil/msdn/eventos/eventos.mspx Media Center do MSDN Ref.: http://www.msdnbrasil.com.br/microsoft.mediacenter/mediacenter.aspx MSDN Experience Ref.: http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx Artigos de Arquitetura do MSDN Ref.: http://www.microsoft.com/brasil/msdn/arquitetura/articles.mspx Developer Excellence Award Ref.: http://www.msdnbrasil.com.br/DevExcellenceAward/default.aspx Revista MSDN Magazine em Portugus Ref.: http://msdn.microsoft.com/pt-br/magazine/default.aspx Fruns MSDN Ref.: http://www.microsoft.com/brasil/msdn/forum/forum.aspx Comunidade INETA Ref.: http://www.inetabr.org/

275

Porta 25 - Open Source Software Lab Ref.: http://porta25.technetbrasil.com.br/porta25/Home/tabid/36/EntryID/77/Default.aspx Quando fiz esse levantamento com o Rogrio Cordeiro, confesso que me surpreendi com as inmeras presenas e aes da Microsoft no meio online. Focando infra-estrutura, j que arquitetura de solues envolve plataforma de desenvolvimento e plataforma de infra-estrutura, veja quanto material: Portais de Tecnologia Technet TECHCENTERS Ref.: http://technet.microsoft.com/pt-br/bb421517.aspx Academias TECHNET Ref.: http://www.microsoft.com/brasil/technet/academia/default.aspx Profissional 5 Estrelas (Infra-estrutura TECHNET) Ref.: http://www.technetbrasil.com.br/cincoestrelas/ Webcasts do TECHNET Ref.: http://www.microsoft.com/brasil/technet/eventos/webcasts/default.mspx TECHNET Experience Ref.: http://www.microsoft.com/brasil/technet/experience/default.aspx IT HERO Ref.: http://www.microsoft.com/brasil/technet/ithero/default.mspx Fruns TECHNET Ref.: http://forums.microsoft.com/technet-br/default.aspx?siteid=29 Comunidades TECHNET Ref.: http://technet.microsoft.com/pt-br/bb291006.aspx TECHNET Magazine Ref.: http://technet.microsoft.com/pt-br/magazine/default.aspx Blogs TECHNET Ref.: http://www.technetbrasil.com.br/blog/Blogs.aspx Videocasts TECHNET Ref.: http://www.microsoft.com/brasil/technet/videocast/default.mspx Calendrio de Eventos TECHNET Ref.: http://www.microsoft.com/brasil/technet/EventsCalendar/Default.aspx

276

Central de Avaliaes TECHNET Ref.: http://technet.microsoft.com/en-ca/evalcenter/default.aspx Laboratrios Virtuais TECHNET Ref.: http://technet.microsoft.com/en-ca/virtuallabs/default.aspx A lista acima foi outra surpresa obtida com o Rodrigo Dias, nosso especialista em gerenciamento e infra-estrutura. De forma presencial, tivemos ainda: Tech-Ed Brasil 2008 Ref.: http://www.teched.com.br/ Heroes {Community} Launch Ref.: http://www.microsoft.com/brasil/msdn/eventos/hcl/default.mspx Mix 2007 e 2008 Ref.: http://www.msdnbrasil.com.br/remix/ e http://www.msdnbrasil.com.br/mixessentials/
RAF 2008 - Regional Architect Forum Brasil Ref.: http://www.msdnbrasil.com.br/blog/blog_tag_RAF.aspx

Eventos presenciais da comunidade tcnica Ref.: http://www.microsoft.com/brasil/msdn/EventsCalendar/Default.aspx E para o meio Acadmico tambm so muitos eventos e programas ativos, como Clulas Acadmicas, Student Partners, Student to Business, DreamSpark, apoio aos professores e universidades, entre outros. Veja mais detalhes no link abaixo: Microsoft | Educao Ref.: http://www.microsoft.com/brasil/educacao/comunidadeacademica/default.mspx Ainda sobre o meio acadmico, no podemos esquecer o Imagine Cup, onde o Brasil sempre faz bonito com seus alunos e participao: ImagineCup 2008 http://www.microsoft.com/brasil/educacao/comunidadeacademica/imaginecup/2008/default.msp x Por ltimo, ainda temos o apoio da Microsoft para empresas Start-Up's, um programa mundial que est chegando para o Brasil, muito recente... esse quente!!! :) Programa Microsoft SOL Ref.: http://www.microsoftsol.com.br/

277

Enfim, anualmente temos muitos eventos e a muita presena online, muito material e muitos canais abertos para as vrias comunidades de TI. Reflexes sobre o futuro Pessoalmente, creio que 2009 ser um grande ano para a plataforma Microsoft, com os diversos lanamentos previstos. verdade, teremos novas tecnologias, novas verses de produtos, frameworks e oportunidades diversas para as empresas clientes, fornecedores de software, hosters e consumidores finais. um compromisso da Microsoft com a inovao. Ao mesmo tempo, podemos esperar muito material localizado, entre webcasts, artigos, how to's, fruns, alm dos eventos presenciais que iro continuar. Os blogs e discusses online so parte desse apoio. Creio tambm que 2009 ser um grande ano para a arquitetura de solues no Brasil. Como arquitetos, seremos confrontados com um cenrio desafiador na economia, o que exigir solues mais geis, de valor, que apiem de forma concreta o negcio e a operao de nossas empresas. Por isso, vejo como uma grande oportunidade a aplicao de inovaes e novas tecnologias, que tragam uma maior produtividade e qualidade na construo de software para as vrias verticais. Solues como Microsoft Blueprint, Multi-Enterprise Business Application, ou mesmo o uso de um Service Bus no Windows Azure ou o SQL Services para dados na nuvem, so exemplos de inovaes de grande impacto. Sem falar de frameworks mais maduros como WPF, WCF, WF ou os mais recentes Entity Framework, ADO.NET Data Services, ASP.NET Dynamic Data, ou ainda os recm chegados Velocity, Sync, Live Framework, etc. muita inovao!!! Mas o desafio realmente existe (o Roberto tem razo). Porm, temos um bom material disponvel que pode auxiliar as empresas brasileiras nesse ponta-p inicial. Tenho ouvido tambm sobre iniciativas de departamentos de RH, que esto usando muito desse material na definio de planos de treinamento para seus funcionrios, o que timo e muito pragmtico. Veja por exemplo o site do MSDN Experience:
MSDN Experience Ref.: http://www.msdnbrasil.com.br/experience/Officedev/Home.aspx

Depois dessas reflexes, vamos voltar para as perguntas do Roberto: Estamos (ou estaremos) preparados para isso ? J tenho notcias de algumas empresas que esto se preparando para esses novos frameworks, avaliando .NET 3.5 SP1 com Velocity, Sync, Entity Framework, etc. Tambm, tivemos um evento sobre o Windows Azure recentemente (aqui em SP) e muitas pessoas responderam que pretendem estudar os servios da plataforma na nuvem j em 2009, o que muito animador. Esse o esprito: manter a antena ligada sobre o que est chegado na plataforma Microsoft. O importante no seguir o ANTI-PATTERN do desenho acima. :)

278

O que voc acha desse cenrio "confuso" aqui no Brasil ? O Brasil um pas complexo, cheio de oportunidades e contrastes. A realidade brasileira tambm regionalizada, variando bastantes de estado para estado. No um cenrio "confuso", diria que complexo, pois as variveis e racionais so muitas. Cada empresa precisa mesmo definir bem sua estratgia para 2009 e para o futuro. Existem planos da Microsoft para um aculturamento, treinamento e divulgao da tecnologia para o pessoal aqui ? Seja na forma de incurso acadmica (caminho mais difcil e slido) ou atravs de iniciativas independentes ? Tentei responder essa pergunta com a lista acima e um pouco de reflexo. Existe um esforo constante da Microsoft em divulgar esse material, atravs de campanhas, eventos e aes de marketing. Espero ter colaborado para isso. E convido a todos para avaliarem esse material. O feedback de vocs a maior fora de mudana e transformao, seja junto aos fornecedores ou dentro de suas empresas. J terminando, sugiro a todos (arquitetos e lderes de equipe) que reflitam sobre o plano de treinamento nas empresas, o plano de carreira para nossos desenvolvedores e o plano de atualizao para nossa TI, para que todos possamos aproveitar as dezenas de inovaes que fornecedores como a Microsoft tm disponibilizado. Gerenciamento de pessoas e plano de capacitao de equipes tambm papel do arquiteto. Temos muito que colaborar com nossas impresses e direes. Espero que esse blog seja uma contribuio nesse processo. Desde j, agradeo a todos os comentrios que tm possibilitado bate-papos como esse. Por enquanto s! At o prximo post ou comentrio que virou post... :) Waldemir.
Posted: Thursday, December 11, 2008

.NET Framework e seus recursos : evoluir preciso...


Ol pessoal, tudo certo? Alguns posts atrs, falamos sobre os desafios para a evoluo de solues baseadas em verses antigas do .NET Framework. Na verdade, para muitas empresas essas verses ainda so plataformas correntes, devido uma srie de fatores histricos de cada empresa ou indstria. Veja o post aqui. O grande risco do adiamento dessa atualizao a perda de agilidade para o negcio, alm da impossibilidade de utilizao de recursos e avanos oferecidos pelas novas tecnologias.

279

Para relembrar os frameworks disponveis na plataforma .NET e suas verses, veja a figura abaixo (atualizei a figura em relao ao post anterior):

Cada atualizao do .NET Framework, a partir da verso 2.0, adicionou novos recursos e frameworks, acompanhando necessidades de mercado ou inovaes oferecidas pela plataforma, como protocolos, bindings, estruturas, etc. Porm, ao longo dessa evoluo, a CLR - Commun Language Runtime foi mantida, o que garantiu a compatibilidade entre todas as verses. Alm desses pacotes, outras tecnologias esto em desenvolvimento como Velocity - para construo de uma camada de cache unificado, Sync - para o tratamento de sesses de sincronizao entre participantes de uma soluo, alm de melhorias adicionadas ao WCF 4.0, WF 4.0, Linguagem C#, etc. Tem muita coisa chegando em 2009, sem falar na interoperabilidade com a plataforma de servios do Windows Azure (in the cloud), como o SQL Services, .NET Services, Live Services, etc.

280

Estive recentemente com uma empresa onde a rea de usurios exigiu a migrao de uma interface VB6 para WPF - Windows Presentation Foundation, para uma aplicao cliente desktop. O desempenho era bom, a aplicao era madura, os problemas eram mnimos, no havia de fato problema que justificasse mudar a aplicao. Mas o que chamou a ateno dos usurios foi a possibilidade de construir uma experincia de usurio mais rica, ao estilo RIA - Rich Internet Application, que esses mesmos usurios j utilizam na Web, no dia-a-dia. Customizao de interface, grficos dinmicos, novas mdias, streamming, protocolos do Web 2.0, como POX, REST, sindicalizao, etc, so inmeros os recursos que podem ser adicionados na nova interface de hoje, suportando os conceitos de UX (Usabilidade). Podemos at adaptar uma expresso da rea de marketing que anda muito em alta, a chamada "OPEN brand". Falaramos ento de "OPEN interface", um acrnimo para On-demand (sobdemanda), Personal (pessoal), Engaging (Envolvente) e Networks (Redes). Uma interface que aproveita a essncia da fora do Web 2.0, com as novas tendncias de adaptao e flexibilidade entre ambientes on-premise e in the cloud. Por isso, se sua empresa ainda trabalha com tecnologias anteriores ao .NET 3.0, recomendo comear um plano estratgico de evoluo/atualizao tecnolgica. Veja que esse plano no deve relacionar todas as aplicaes para recompilao apenas. Antes, vale identificar quais cenrios so relevantes para a atualizao, quais aplicaes podem ser consolidadas, quais aplicaes possuem um tempo de vida curto e ainda quais sistemas so estratgicos e merecem um cuidado especial ou prioritrio. Veja se voc concorda comigo: Nossos usurios esto mais exigentes, assim como o mercado, em busca do negcio gil. Verdade? Planejar o futuro para uma evoluo constante do ambiente de TI, assim como acompanhar as tendncias no setor nossa obrigao como arquitetos. Verdade? Aplicaes de composio integrando servios locais e servios remotos, com experincia rica uma tendncia. Verdade? :) Por enquanto s! At o prximo post :)

281

Waldemir.
Posted: Tuesday, December 02, 2008

Software Factory e Domain Specific Language - Uma discusso sobre modelagem.


Ol pessoal, tudo certo? J conversamos por aqui sobre vrios aspectos envolvidos na reutilizao de conhecimento, uso de templates e modos de padronizao no desenvolvimento de software. Nos ltimos posts, falamos de templates de projetos, guias de automao e outros mecanismos para a customizao do ambiente de desenvolvimento, sempre visando a qualidade e a produtividade de software. Vamos voltar ao assunto, avanando nossa discusso sobre as Fbricas de Software (Software Factories) e as Linguagens de Domnio Especfico (Domain Specific Language). Sempre que pensamos em qualidade e produtividade de software, existem algumas perguntas que so recorrentes na cabea do arquiteto, como:

Qual a real necessidade do meu negcio? Quais tecnologias so relevantes (sobre comunicao, apresentao, workflow, transao, storage, monitorao, etc)? Quais metodologias, patterns, templates, guias ou recomendaes devo utilizar? Como garantir o uso de boas prticas em meu time? Como monitorar e controlar a qualidade de software? Como estar preparado para mudanas? Como ser gil? Entre outras tantas.

E como temos visto, existem diversos mecanismos que ajudam o arquiteto nessas perguntas, como:

Guias de desenvolvimento; Guias livres de contexto / com contexto; Kits ou guias de automao, como nossos GAT/GAX; Implementaes de referncia e arquiteturas de referncia; Modelos de desenvolvimento e arquitetura; Frameworks de desenvolvimento; Linguagens de Domnio-Especfico (DSLs); Fbricas de Software (Software Factories);

Da lista acima, os guias com contexto conhecidos como "patterns" so os mais comuns, por darem uma viso de soluo/problema muito prtica. Porm, temos visto uma crescente ateno

282

sobre outras ferramentas, com destaque especial para as Fbricas de Software. Existe uma razo para essa mudana. Hoje, existem mais de 26 guias do Patterns & Practices (http://msdn.microsoft.com/practices/), falando de aplicaes e patterns aderentes para diversos cenrios. Por isso, quando pensamos na quantidade de informao disponvel nesses guias, enfrentamos alguns desafios:

So mais de 25 mil pginas de informao, voc vai lembrar de tudo depois de ler? Ser que voc vai ler de novo a cada projeto? Se voc aconselhar seus desenvolvedores a lerem, ser que eles iro ler de fato? Ser que eles vo ter tempo e vo entender tudo? Eles sero capazes de aplicar os conselhos no contexto correto?

Desse modo, surge a real necessidade de se usar ferramentas mais rgidas e de aplicao mais eficaz no processo de desenvolvimento de software, garantindo a qualidade, o padro e a produtividade durante o projeto. Em nossa discusso, vimos que os Guias de Automao permitem a criao de processos automatizados de gerao de cdigo, permitindo a reutilizao de templates e cdigos aprovados pelo arquiteto, o que garante maior velocidade na construo de novas solues. Nesse sentido, a partir da seleo de fontes otimizados e aderentes a nichos especficos de aplicao, o arquiteto pode criar guias de automao que orientem o desenvolvedor na construo de novas aplicaes com cdigo otimizado, de forma automtica. Nesse sentido, as Fbricas de Software ampliam essa discusso, com consideraes importantes sobre os seguintes componentes:

Patterns: Fornecem solues gerais para problemas comuns; Frameworks: Fornecem componentes suportados e reuso de componentes; Modelos: Fornecem um modo de descrio de um problema especfico; Metodologias: Definem um conjunto codificado de prticas recomendveis; Ferramentas: Suportam a criao, manuteno e debugging;

Como j foi dito, alguns exemplos de Software Factories disponveis pela Microsoft so:

Mobile Client Software Factory Smart Client Software Factory Web Client Software Factory Web Service Software Factory Application Block Software Factory

Para cada fbrica de software temos um conjunto de patterns, modelos, frameworks e guias de automao empacotados numa mesma ferramenta para o desenvolvedor. E como principal infraestrutura utilizada na construo dessa ferramenta, a Microsoft utilizou a plataforma GAT/GAX para construo dos guias e seus artefatos.

283

Assim, podemos concluir que a modelagem de uma fbrica de software passa pela definio e otimizao de seus artefatos componentes. Sem eles, no faz sentido pensarmos na construo de uma fbrica de software. A partir da definio de artefatos, podemos cercar os modelos, processos e a orientao de automao que ser atendida pela fbrica de software em desenvolvimento. Recentemente, a Microsoft publicou um novo extension para Visual Studio 2005, que permite a modelagem e construo de Web Services. Essa fbrica conhecida como Service Factory e est disponvel no seguinte link: Web Service Software Factory: Modeling Edition (Novembro 2007) Ref.: http://msdn2.microsoft.com/en-us/library/bb931187.aspx Um elemento interessante sobre essa fbrica de software sua integrao entre artefatos, guias e linguagens de domnio especfico. Ela apresenta de forma integrada 3 DSL's no Visual Studio 2005, permitindo a modelagem dos principais componentes de um servio de uma forma visual:

Service Contract Model Data Contract Model Host Model.

A figura abaixo apresenta o uso da DSL para modelagem dos componentes de um Web Service na Service Factory:

Note que para a construo dessa fbrica de software, seus autores precisaram modelar uma srie de receitas, para o completo mapeamento de tarefas para a construo de um Web Services. Algumas receitas foram:

Criar uma soluo: ativada na criao de uma soluo

284

Gerar tipos de dados e mensagens: ativada para itens ".xsd" Criar um contrato de servio: ativada para um item de projeto contrato de servio Gerar interface de servio: ativada para itens ".wsdl" Gerar adaptadores: ativada para itens ".wsdl" Criar um endpoint de Web Service: ativada para folders de soluo nos endpoints Expor uma interface de servios: ativada para projetos de endpoints

E para a implementao dessas receitas, foram utilizados modelos em linguagens de domnio especfico, o que gerou uma ferramenta visual e muito intuitiva para o desenvolvedor, facilitando o processo de construo de Web Services. Concluindo, para a construo de uma fbrica de software integrada a uma linguagem de domnio especfico, precisamos entender o domnio da aplicao, suas principais ferramentas e artefatos, antes da gerao do modelo de interao com a fbrica de software. Para maiores detalhes sobre essa fbrica de software e seus detalhes de implementao, veja: Web Service Software Factory Community Ref.: http://www.codeplex.com/servicefactory/Release/ProjectReleases.aspx?ReleaseId=8130 Recomendo fortemente o uso dessa fbrica de software como fonte de inspirao para o entendimento e estudo de alternativas para a construo de fbricas de software customizadas e integradas a DSL's. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, January 30, 2008

Evoluindo frameworks domsticos: por onde comear?


Ol pessoal, tudo certo? Esta semana estive com alguns arquitetos, falando sobre como evoluir os frameworks domsticos que esto em produo nas empresas, mas que ainda utilizam recursos do .NET 2.0 ou algum namespace do .NET 3.0 apenas. Essa discusso grande e veja que ainda existem empresas usando VB5, VB6, ASP, .NET 1.0, 1.1 ou .NET 2.0 em suas aplicaes. Mas vamos focar os frameworks neste post. Realmente, desde o lanamento do .NET 2.0, tivemos uma srie de novos pacotes e namespaces, que ajudam no desenvolvimento de aplicaes cada vez mais sofisticadas. Parte dessa evoluo foi demandada pelo mercado, como REST e AJAX. Outras, foram evolues importantes para o modelo de programao na plataforma Microsoft, como o prprio WCF - Windows

285

Communidation Foundation. Vale lembrar tambm que a prpria plataforma amadureceu, diante dos vrios cenrios presentes no mercado. Como j vimos em posts passados (esse, por exemplo), existem diversos desafios na construo e manuteno de bibliotecas, blocos de aplicaes e frameworks de desenvolvimento, sejam horizontais ou verticais. Um dos grandes desafios a manuteno de sua atualizao diante de novos recursos do mercado, como por exemplo, novos frameworks associados ao .NET na plataforma Microsoft. Para contextualizar nossa discusso, veja o diagrama abaixo, onde destaco o .NET Framework e sua evoluo:

Note que novos recursos foram sendo adicionados na pilha .NET ao longo de suas verses. Ainda, alguns novos pacotes esto faltando no desenho acima, como o SYNC Framework, o Velocity, o Geneva Framework, etc. Para todas as verses acima, estamos trabalhando sobre a mesma CLR - Common Language Runtime, o que significa que no existe quebra de compatibilidade para uma aplicao durante sua evoluo de upgrade. O prprio Visual Studio 2008 j compila para .NET 2.0, 3.0 e 3.5 como framework alvo. Semana passada vimos uma nova enxurrada de frameworks, pacotes de desenvolvimento e servios que estaro disponveis em breve para nossas aplicaes. Poderemos integrar o ambiente cliente, o ambiente enterprise e o ambiente na nuvem, utilizando recursos distintos e complementares, compondo solues de acordo com nossas necessidades. S para para lembrar, veja o que est chegando com a plataforma de servios Azure... :)

286

Bastante coisa, no mesmo? Mas voltemos para nossa pergunta bsica: Como evoluir nosso velho framework de desenvolvimento domstico de todo dia? Algumas recomendaes que fao nesse momento so:

Se voc ainda trabalha com Web Services na plataforma .NET 2.0 (extenses .asmx), ou ainda possui solues via .NET Remoting, comece com algumas provas de conceito sobre o WCF Windows Communication Foundation. Podemos resumir que WCF hoje a infra-estrutura recomendada para a comunicao entre sistema, processos e aplicaes na plataforma Microsoft. Uma evoluo natural de seu framework em NET 2.0 para .NET 3.x substituir .NET Remoting e Web Services por interfaces em WCF. Avalie os bindings diferentes para cada servio e selecione o que melhor responde s necessidades de seu negcio. Veja as consideraes sobre balanceamento de carga com o WCF tambm. O WCF parte integrante do .NET desde a verso 3.0 e com certeza uma primeira abordagem de evoluo, pelo ganho de desempenho e modelo de programao unificado que oferece. No deixe de conferir tambm, os vrios cenrios possveis para servios com WCF, aqui; Se voc ainda trabalha com pginas ASP, avalie o ASP.NET com AJAX. Veja alguns exemplos disponveis no link : http://www.asp.net/community/projects/. Existem boas idias que podem ser aproveitadas em seus projetos. Ainda, avalie exemplos com AJAX para ganhos de produtividade e performance, otimizando suas requisies junto ao servidor ou mesmo melhorando a usabilidade na navegao do usurio sobre suas pginas. Finalmente, navegar dados via ASP.NET Dynamic Data ou exporta um banco de dados atravs da interface ADO.NET Data Services, com consultas via REST uma outra boa recomendao para prova de conceito. No deixe de testar essas solues; Se voc possui um framework que prev interfaces WinForms com .NET, ou formulrios VB6 com Win32, por exemplo, avalie os recursos de usabilidade e navegao obtidos com o WPF Windows Presentation Foundation. Alm de um conjunto muito mais rico de controles grficos e interao com o usurio, o desenvolvimento sobre WPF permite maior integrao entre os times de design e desenvolvimento, devido o uso de documentos em XAML - Extensible Application Markup Language, que permitem a renderizao grfica baseada em parsers, integrados ao .NET Framework, na ferramenta de design ou no prprio Visual Studio;

287

Se voc ainda utiliza o ADO.NET 2.0 para navegar seus dados e manipular suas estruturas de retorno a partir de consultas ao banco de dados, atravs de um camada DAL - Data Access Layer - tradicional, avalie consultas utilizando LINQ - Language Integrated Query, do .NET 3.5. Verifique o tipo de legibilidade de cdigo que voc pode obter com o LINQ, assim como consultas sobre colees com o XLINQ sobre XML, ou o uso integrado do ADO.NET Entity Framework (EF), permitindo a construo de solues multi-banco. Sua prova de conceito com LINQ e Entity Framework tambm poder avaliar performance, tempo de resposta e aderncia ao SLA esperado pela aplicao, comparando com uma DAL simples. Vale citar que manuteno e independncia de banco de dados so pontos de destaque nessa infra-estrutura LINQ + EF (veja sua necessidade de ORM - Object Relational Mapping e camadas de persistncia). LINQ parte do .NET desde a verso 3.5 e o ADO.NET Entity Framework, desde a verso 3.5 SP1. Veja mais aqui; Se voc ainda possui regras de negcio no COM+ (1.0 e 1.5) ou algumas regras em Web Services publicados no IIS, avalie a exportao de suas regras como servios WCF, hosteados no WAS Windows Process Activation Services. Muita calma nesse momento, devido questes de transao, interoperabilidade com componentes legados, etc. Mas entre os benefcios do host WAS para servios WCF temos um melhor desempenho para o tratamento de requisies e instncias, assim como maior flexibilidade na seleo de protocolos de transporte e adoo de um modelo orientado a mensagens, mais flexvel quanto a integrao com outras plataformas. Sobre o Windows Server 2008, WAS torna-se uma recomendao de fato. Veja mais aqui;

Com certeza, esse um post apenas para dar algumas idias, iniciar uma discusso. Cada empresa encontrar sua melhor abordagem, de acordo com uma srie de fatores prprios, como:

maturidade do framework em produo na empresa; maturidade da equipe de desenvolvimento usuria do framework; maturidade da equipe de arquitetura responsvel pelo framework; existncia de templates e bons exemplos de cdigo utilizando o framework; maturidade do processo de desenvolvimento de software e existncia de disciplinas de ALM Application Lifecycle Management; seleo de arquiteturas de referncia e boas prticas de desenvolvimento, que sejam suportadas pelo framework, etc.

O mais importante definir uma estratgia de evoluo, procurando atender as principais necessidades do usurio, seja desempenho, usabilidade, velocidade para adio de novas funcionalidades, riqueza de interface, funcionalidades de integrao com a web ou simplesmente, a competio com o mercado. A discusso boa! O desafio tambm bom! Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, November 06, 2008

288

Captulo 15
Guia de Automao e produtividade com o GAT/GAX

Os pacotes GAT/GAX Guidance Automation Toolkit e o Guidance Automation eXtension so recursos sobre a plataforma Microsoft que oferecem ferramentas e APIs para a construo de guias de automao prprios, na busca pela produtividade nas empresas. Alm dos pacotes GAT/GAX, diversos recursos esto disponveis no Visual Studio 2005/2008, como DSLs, templates e plugins, permitindo ganhos de produtividade nas equipes de desenvolvimento. Este captulo consolida os principais posts sobre esses temas.

289

Guidance Automation Toolkit, Software Factory, Domain-Specific Languages e outros assuntos.


Ol pessoal, tudo certo? Nos ltimos posts temos falado sobre frameworks, templates e temas relacionados com a produtividade de software. Reusabilidade de servios, otimizao, qualidade na codificao e desafios no desenvolvimento so tpicos sempre recorrentes. Em linhas gerais, o mundo da arquitetura de software sempre envolve essas questes e cabe ao arquiteto direcionar suas equipes para a correta adoo das melhores prticas para uma codificao de qualidade e com produtividade. Existem diversas ferramentas que suportam o arquiteto nessa tarefa. Como exemplo, podemos citar as Fbricas de Software (Software Factories). Sobre esse tema, vale recomendar o livro "Software Factory" de Jack Greenfield, uma leitura obrigatria sobre o assunto. Software Factories: Assembling Applications with Patterns, Models, Frameworks, and Tools Ref.: http://www.amazon.com/Software-Factories-Assembling-ApplicationsFrameworks/dp/0471202843/ref=sr_1_1?ie=UTF8&s=books&qid=1200059711&sr=1-1 Outro elemento importante nessa discusso so as DSL'S - Domain-Specific Languages, que permitem a construo de ferramentas visuais para a composio de solues, gerando cdigo de forma automtica e com grande controle sobre a qualidade do cdigo gerado. O desenvolvimento de uma DSL passa pelo entendimento do negcio, assim como os artefatos de software que sero utilizados, como bibliotecas, templates, patterns de desenvolvimento, etc. Uma leitura recomendada sobre DSL's o livro "Visual Studio DSL Tools", da srie Microsoft .NET Development. Domain-Specific Development with Visual Studio DSL Tools (Microsoft .NET Development Series) Ref.: http://www.amazon.com/Domain-Specific-Development-Visual-StudioMicrosoft/dp/0321398203/ref=pd_bbs_1?ie=UTF8&s=books&qid=1200059661&sr=8-1 Mas antes de avanarmos sobre Fbricas de Software ou DSL's, vamos falar um pouco sobre ferramentas de extensibilidade e guias de automao. Nesse ponto, a Microsoft oferece j h algum tempo o pacote GAT - Guidance Automation Toolkit, de fato o fundamento para o trabalho com Fbricas de Software e Linguagens de Domnio Especfico. Veja os links para download abaixo (GAT/GAX so ambos necessrios): GAX - Guidance Automation Extensions - que fornece o ncleo de ferramentas, templates e assistentes para a criao de guias de automao; Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=C0A394C0-5EEB-47C49F7B-71E51866A7ED&displaylang=en

290

GAT - Guidance Automation Toolkit - que permite a construo de guias e navegadores sobre os artefatos utilizados em sua soluo de automao. Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5884E-97B27E49EAAE&displaylang=en Os pacotes GAT/GAX adicionam ao ambiente do Visual Studio a infra-estrutura necessria de linguagens e ferramentas para a construo de pacotes de automao para gerao de cdigo. O objetivo automatizar a codificao, baseando-se em templates e modelos de codificao que o arquiteto selecionou como melhores prticas para um nicho de soluo especfico. Por exemplo, podemos pensar na automao de um cenrio para construo de aplicaes ASP.NET, que faa uso de bibliotecas de um framework corporativo e que utilize templates de navegao otimizados e homologados pela equipe de arquitetura. O objetivo num cenrio como esse garantir que os desenvolvedores tenham produtividade durante a construo de novas aplicaes, enquanto que as variaes de solues nesse mesmo domnio ficam sob controle. Essa gerao dinmica de cdigo ocorre sobre uma linguagem de templates, a Text Templating Transformation Toolkit ou simplesmente T4. O exemplo abaixo em template T4 gera um cdigo C# que implementa uma classe para escrever "Hello Iteration: n", onde n o nmero de iteraes que passamos como parmetro para o template:

Finalmente, como parte dessa preparao para tabalharmos com GAT/GAX, devemos instalar 2 pacotes importantes: Enterprise Library 3.1 - May 2007 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=4C557C63-708F-4280-8F0C637481C31718&displaylang=en

291

Visual Studio 2005 SDK Version 4.0 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=51A5C65B-C020-4E088AC0-3EB9C06996F4&displaylang=en Nos prximos posts, vamos avanar no assunto, discutindo alguns aspectos importantes sobre GAT/GAX, enquanto evolumos juntos rumo a DSL's de sucesso! :) Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, January 11, 2008

Project Template e Item Template - Customizaes no ambiente de desenvolvimento


Ol pessoal, tudo certo? Voltando ao assunto principal, retomamos nossa discusso sobre templates e padres para o ambiente de desenvolvimento. Lembrando sempre que uma das atividades do time de arquitetura direcionar a equipe de desenvolvimento na adoo de boas prticas na produo de software, com qualidade e produtividade. Recentemente, tive uma discusso com um time de arquitetos de um cliente, que questionava exatamente as alternativas para a padronizao e uso de templates na plataforma Microsoft. Assim, perguntavam sobre customizaes do ambiente de desenvolvimento, ou seja, customizaes sobre o prprio Visual Studio, a fim de direcionar o desenvolvedor no momento da criao de cdigo. Focando a verso 2005, citamos trs mecanismos bsicos:
1. Construo de templates de projeto e templates de itens de projeto; 2. Customizao de funcionalidades atravs do SDK v4.0 para o Visual Studio 2005; 3. Construo de guias de automao para o desenvolvimento de solues;

Neste post, vamos falar inicialmente sobre o primeiro modo, a construo de templates no Visual Studio 2005. 1. Construo de templates de projeto e templates de itens de projeto A construo de templates feita atravs da funcionalidade "Export Template" do Visual Studio. Esse recurso permite a gerao de um pacote .ZIP, que agrupa arquivos de recursos, fontes, imagens e links de referncia de um projeto ou arquivo fonte, que poder ser reutilizado pelos desenvolvedores de forma integrada ao Visual Studio. Voc encontra esse recurso no menu File do IDE do Visual Studio, veja:

292

A partir de um projeto modelo selecionado, possvel criar um template de projeto ou de item, como mostrado na caixa de dilogo abaixo:

Para o exemplo de gerao de um template de projeto, gerado um arquivo .ZIP, contendo os arquivos de recursos e fontes componentes do projeto. Tambm adicionado a esse pacote o arquivo com as referncias e lista de componentes do template. Esse arquivo vem com extenso ".vstemplate". Veja o contedo de um pacote de template aqui:

293

Um exemplo desse arquivo ".vstemplate" dado a abaixo: <VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="Project"> <TemplateData> <Name>ConsoleAppDemo - Lab</Name> <Description>ConsoleAppDemo - Lab</Description> <ProjectType>CSharp</ProjectType> <ProjectSubType> </ProjectSubType> <SortOrder>1000</SortOrder> <CreateNewFolder>true</CreateNewFolder> <DefaultName>ConsoleAppDemo - Lab</DefaultName> <ProvideDefaultName>true</ProvideDefaultName> <LocationField>Enabled</LocationField> <EnableLocationBrowseButton>true</EnableLocationBrowseButton> <Icon>__TemplateIcon.ico</Icon> </TemplateData> <TemplateContent> <Project TargetFileName="ConsoleAppDemo1.csproj" File="ConsoleAppDemo1.csproj" ReplaceParameters="true"> <ProjectItem ReplaceParameters="true" TargetFileName="Program.cs">Program.cs</ProjectItem> <Folder Name="Properties" TargetFolderName="Properties"> <ProjectItem ReplaceParameters="true" TargetFileName="AssemblyInfo.cs">AssemblyInfo.cs</ProjectItem> </Folder> </Project> </TemplateContent> </VSTemplate> No template acima, temos um padro de projeto baseado no arquivo ConsoleAppDemo1.csproj, que foi o projeto base a partir do qual geramos o template. Isso aparece no tag <TemplateContent>. Outros exemplos de arquivos de template podem agrupar solues com vrios projetos, como vemos a seguir:

294

<?xml version="1.0" encoding="utf-8" ?> <VSTemplate Version="2.0.0" xmlns="http://schemas.microsoft.com/developer/vstemplate/2005" Type="ProjectGroup"> <TemplateData> <DefaultName>Template Solution Test - ClassLibraries 1 e 2</DefaultName> <Name>Template Solution Test - ClassLibraries 1 e 2</Name> <Description>Template Solution Test - ClassLibraries 1 e 2</Description> <Icon>Default.ico</Icon> <ProjectType>CSharp</ProjectType> <CreateNewFolder>false</CreateNewFolder> <DefaultName></DefaultName> <ProvideDefaultName>false</ProvideDefaultName> </TemplateData> <TemplateContent> <ProjectCollection> <ProjectTemplateLink ProjectName="ClassLibrary1"> .\ClassLibrary1\ClassLibrary1.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="ClassLibrary2"> .\ClassLibrary2\ClassLibrary2.vstemplate </ProjectTemplateLink> </ProjectCollection> </TemplateContent> </VSTemplate> No exemplo acima, note que o tag <TemplateContent> contm agora o tag <ProjectCollection>, onde encontramos a referncia para dois templates de projetos previamente gerados: <ProjectTemplateLink ProjectName="ClassLibrary1"> .\ClassLibrary1\ClassLibrary1.vstemplate </ProjectTemplateLink> <ProjectTemplateLink ProjectName="ClassLibrary2"> .\ClassLibrary2\ClassLibrary2.vstemplate </ProjectTemplateLink> Assim, criando os templates de projetos individuais, podemos gerar um template de soluo, que agrupa vrios projetos, para customizaes mais completas. O pacote .zip final com o template gerado colocado na pasta: "C:\Documents and Settings\user\My Documents\Visual Studio 2005\My Exported Templates" Mas ainda possvel criar novas pastas, agrupando templates por projetos, departamentos, funcionalidades, etc. No momento da criao de uma nova soluo ou projeto, os templates previamente gerados so oferecidos ao desenvolvedor, que agora no inicia o desenvolvimento

295

do zero. At aqui, falamos de templates de projetos, mas o mesmo mecanismo funciona para templates de arquivos ou recursos individuais de um projeto, chamados de Item Template. Uma boa referncia sobre a criao de templates voc encontra aqui, com uma srie de links sobre os tags e funcionalidades dos arquivos ".vstemplates": Create Reusable Project And Item Templates For Your Development Team http://msdn.microsoft.com/msdnmag/issues/06/01/codetemplates/default.aspx No prximo post, vamos falar das customizaes sobre o SDK v4.0 do Visual Studio 2005. Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, January 15, 2008

Guidance Automation Toolkit - Customizaes no ambiente de desenvolvimento


Ol pessoal, tudo certo? Finalmente, o terceiro mecanismo para as customizaes no ambiente de desenvolvimento so os Guias de Automao. Para o Visual Studio temos o GAT - Guidance Automation Toolkit, como sua principal ferramenta. Ele trabalha sobre um framework especfico de automao, chamado Microsoft.Practices.RecipeFramework. Como j falamos aqui no blog, o pacote GAT adiciona ao ambiente do Visual Studio a infraestrutura de linguagens e ferramentas para a construo de pacotes de automao para gerao de cdigo. O objetivo automatizar a codificao, baseando-se em templates e modelos de software que o arquiteto ou desenvolvedor selecionou como melhores prticas para um tipo de soluo. Vamos iniciar com a preparao do ambiente sobre o Visual Studio 2005, onde temos os seguintes extensions e pacotes de atualizao indicados abaixo: 1) Microsoft .NET Framework 2.0 Service Pack 1 http://www.microsoft.com/downloads/details.aspx?familyid=79bc3b77-e02c-4ad3-aacfa7633f706ba5&displaylang=en 2) Microsoft .NET Framework 3.0 Redistributable Package http://www.microsoft.com/downloads/details.aspx?familyid=10CC340B-F857-4A14-83F525634C3BF043&displaylang=en

296

3) Microsoft .NET Framework 3.0 Service Pack 1 http://www.microsoft.com/downloads/details.aspx?familyid=ec2ca85d-b255-4425-9e651e88a0bdb72a&displaylang=en 4) Guidance Automation Extensions - July 2007 (GAT) http://www.microsoft.com/downloads/details.aspx?familyid=C0A394C0-5EEB-47C4-9F7B71E51866A7ED&displaylang=en 5) Guidance Automation Toolkit - July 2007 (GAX) http://www.microsoft.com/downloads/details.aspx?familyid=E3D101DB-6EE1-4EC5-884E97B27E49EAAE&displaylang=en 6) Visual Studio 2005 SDK Version 4.0 http://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E08-8AC03EB9C06996F4&displaylang=en 7) Microsoft Visual Studio 2005 Team Suite Service Pack 1 - June 2007 http://www.microsoft.com/downloads/details.aspx?familyid=BB4A75AB-E2D4-4C96-B39D37BAF6B5B1DC&displaylang=en A partir desta instalao, nosso Visual Studio 2005 estar apto para trabalhar com o GAT/GAX, disponibilizando uma nova pasta de templates de projeto, como vemos a seguir:

Assim, a pasta Guidance Packages permite a criao de novos guias de automao, atravs do template de projeto "Guidance Package Development/Guidance Package". Por exemplo, podemos pensar na automao de um cenrio para construo de aplicaes ASP.NET. Pense em templates de navegao otimizados e homologados pela equipe de arquitetura. O objetivo nesse cenrio garantir produtividade durante a construo de novas aplicaes, atravs da gerao dinmica de arquivos e items de projeto. Essa gerao dinmica de cdigo ocorre sobre uma linguagem de templates, a Text Templating Transformation Toolkit ou simplesmente T4.

297

Um Guidance Package (ou Pacote de Automao) criado para um propsito especfico, visando atender algum tipo de soluo que queremos automatizar. Assim, caracteriza-se tambm como uma unidade de versionamento e distribuio. Uma vez finalizado, o pacote pode ser registrado e distribudo para as vrias estaes de desenvolvimento. Os desenvolvedores finais sero os usurios desse pacote de automao. A figura a seguir descreve bem esses passos no processo de modelagem e construo de um guia de automao:

De fato, um Guidance Package consiste de templates do Visual Studio, como vimos anteriormente (templates de projeto e templates de itens de projeto) e receitas de automao (passos de automao). Entre os elementos que compem um guia de automao temos:

Recipes (Receitas) Wizards (Sequncia de passos para entrada de dados, nos moldes dos Addin's Wizards que vimos no post anterior) Value Providers (Provedores de valores) Type Converters (Conversores de tipos) Actions (Aes) Code Generation (Gerao de cdigo, onde temos os templates em linguagem T4)

A figura abaixo apresenta bem a hierarquia de componentes de um guia de automao, veja:

298

Entendido os conceitos sobre o GAT/GAX, vejamos como utiliz-lo. Uma sequncia de passos para a construo de um guia de automao dada abaixo:
1. 2. 3. 4. 5. 6. 7. Definir as receitas desejadas para o guia, incluindo a definio de argumentos, wizards e aes; Definir os templates de Visual Studio envolvidos; Escrever as aes; Escrever os tipos de argumentos e conversores necessrios; Definir templates T4, se uma ao utilizar templates T4 para gerao de cdigo; Testar o pacote de automao; Construir o pacote com os arquivos de setup, para distribuio;

Ao final, um pacote de guia conter os seguintes artefatos:


arquivo de configurao do guia de automao (necessrio); templates de Visual Studio; templates T4; DLL implementando aes, editores de tipos, provedores de valores e conversores de tipos (note que uma nica DLL recomendada);

Uma boa maneira de iniciar seus trabalhos sobre o guia de automao GAT seguir os passos da soluo exemplo, que vem com a instalao do GAT/GAX. Veja na tela principal da soluo os principais passos recomendados, so 7 passos:

299

Finalmente, vamos exportar esse guia de automao para outras mquinas. A soluo template do Guidance Package gera tambm um template de Setup, que disponibiliza o pacote para instalao. Veja abaixo os projetos contidos na soluo de um guia de automao, onde notamos o projeto de Setup que deve ser instalado na estao do desenvolvedor:

Desse modo, passamos pelos principais elementos sobre a modelagem e construo de um Guia de Automao. Recomendo fortemente a leitura dos arquivos de ajuda do GAT e GAX, para um

300

maior detalhamento. O material tem informaes importantes, que ajudaro na evoluo e construo de guias de automao sofisticados. A Microsoft tambm disponibiliza uma srie de Fbricas de Software, que nada mais so do que pacotes de automao prontos para assuntos especficos. Isso significa que a base das vrias Fbricas de Software que a Microsoft disponibiliza realmente o GAT/GAX que vimos aqui. Entre as fbricas mais conhecidas temos:

Mobile Client Software Factory Smart Client Software Factory Web Client Software Factory Web Service Software Factory Application Block Software Factory

Em posts futuros, vamos avanar em outros assuntos relacionados ao ganho de produtividade no ambiente de desenvolvimento. Entre eles teremos as Fbricas de Software e as Linguagens de Domnio Especfico, ou DSL's - Domain Specific Languages. Fiquem ligados. Por enquanto s! At o prximo post :) Waldemir.
Posted: Sunday, January 20, 2008

Visual Studio 2005 SDK Version 4.0 - Customizaes no ambiente de desenvolvimento.


Ol pessoal, tudo certo? Em nossa discusso sobre mecanismos para customizao do ambiente de desenvolvimento em .NET, j falamos de templates de projeto e templates de itens de projeto. A idia passar pelos mecanismos bsicos de customizao e por fim, discutir em detalhes o Guidance Automation Toolkit (GAT). Hoje falaremos sobre o SDK - Software Development Kit v4.0 para o Visual Studio 2005. 2. Customizao de funcionalidades atravs do Visual Studio 2005 SDK Version 4.0 Quando pensamos no uso de um SDK de um determinado produto, temos em mente acessar funcionalidades e recursos de forma programtica, sem restries. O mesmo acontece com o SDK do Visual Studio. Com ele, podemos acessar os recursos para administrao de itens de projeto, solues ativas, referncia, componentes em uso, etc. Desse modo, possvel criar customizaes que adicionam funcionalidades integradas ao IDE (Integrated Development Environment) do Visual Studio. Entre as opes temos:

301

Criao de macros de expanso de cdigo; Criao de menus customizados; Criao de janelas de ferramentas customizadas; Visualizao de informaes consolidadas sobre os projetos abertos; Extenses em contedo de arquivos de ajuda; Criao de addin's de navegao; Criao de wizards diversos, etc.

Assim, atravs do SDK acessamos o modelo de objetos do Visual Studio, implementado atravs das bibliotecas EnvDTE.dll e EnvDTE80.dll. (DTE - Development Tools Environment). Uma customizao muito comum a criao de Addin's para o IDE. J que estamos falando sobre ganhos de produtividade, pense num ADDIN que oferea um Wizard, permitindo uma entrada de dados e que oriente o desenvolvedor na adio de novos recursos ao projeto ativo. Por exemplo, podemos visualizar todas as referncias existentes no projeto, permitindo ainda adicionar novas referncias de forma amigvel. Vamos imaginar um Addin implementado atravs de um classe chamada Viewer. O objetivo desse Addin navegar pelas referncias ativas de um projeto no Visual Studio, como vemos a seguir:

A figura acima apresenta a tela principal do Addin, navegando pelas referncias e tipos presentes para o projeto. Esse tipo de customizao baseado no uso de classes do modelo de objetos do DTE, como vemos a seguir:

302

Veja que uma srie de mtodos so oferecidos, permitindo a implementao de atividades durante momentos como abertura ou fechamento do addin, conexo ao menu principal, shutdown, entre outros. E para acessar a hierarquia de recursos presentes no projeto, o Addin faz uso da seguinte estrutura:

303

Veja que o mtodo acima percorre os vrios projetos da soluo ativa e para cada projeto, percorre as vrias referncias presentes, criando uma lista para o desenvolvedor. Isso feito atravs da instncia VSProj.References. Da mesma forma, veremos que possvel a construo de Code Snippet para obteno de nomes de projeto, arquivos ou recursos, que podero ser usados em templates ou guias de automao, utilizando a mesma navegao pelas estruturas do EnvDTE. Veja um exemplo de Code Snippet para obteno do nome do projeto:
EnvDTE._DTE dte = (EnvDTE._DTE)automationObject; Array activeProjects = (Array)dte.ActiveSolutionProjects; EnvDTE.Project activeProject = (EnvDTE.Project)activeProjects.GetValue(0); replacementsDictionary.Add("$projectname$", activeProject.Name);

Maiores detalhes sobre esse tipo de navegao pelos recursos do projeto voc tem aqui: DTE2.ActiveSolutionProjects Property Ref.: http://msdn2.microsoft.com/en-us/library/envdte80.dte2.activesolutionprojects(VS.80).aspx O download do SDK v4.0 do Visual Studio 2005 est disponvel aqui: Download : Visual Studio 2005 SDK Version 4.0 Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyID=51A5C65B-C020-4E088AC0-3EB9C06996F4&displaylang=en Finalmente, a partir da instalao do SDK no ambiente do Visual Studio, novos templates so oferecidos para o desenvolvedor, como vemos na figura a seguir na pasta "Other project Types/Extensibility". Entre eles temos:

Visual Studio Integration Package Visual Studio Language Package Domain Specific Language Designer Domain Specific Language Setup Help Integration Wizard

304

Note que o SDK v4.0 tambm inclui as ferramentas para construo de DSL's, que veremos em posts futuros. Importante: a documentao do SDK leitura obrigatria para explorarmos os detalhes de implementao de Addins. Portanto, esse post no esgota o assunto, mas apenas aponta algumas direes e tpicos que achei interessante, entre os mecanismos de customizao do ambiente Visual Studio 2005. No prximo post falaremos um pouco mais sobre guias de automao e linguagens para gerao de cdigo, como a T4 - Text Templating Transformation Toolkit. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, January 16, 2008

305

Captulo 16
Arquitetura de Solues

So diversos os assuntos relacionados com a Arquitetura de Solues. Entre eles encontramos SOA, SOI, SAAS, Web 2.0, Programao Paralela, Computao Pervasiva, entre outros. Neste captulo, temos uma consolidao de diversos posts relacionados aos temas que tiveram destaque nesses ltimos anos.

306

Pervasive Computing - Uma realidade para os prximos anos.


Ol pessoal, tudo certo? Um assunto que est em alta ultimamente a tecnologia conhecida como Pervasive Computing. Em portugus, j tivemos at algumas discusses sobre qual seria uma boa traduo aqui no time de arquitetos. Algumas opes foram computao disseminada, computao difundida, generalizada, entre outras. Prefiro pessoalmente manter o termo em ingls. Outra expresso relacionada ao assunto Ubiquitous Computing ou simplesmente "ubicomp". Mas em linhas gerais, Pervasive Computing trata propriamente de uma nova era da computao, onde diversos elementos computacionais estaro integrados, como desktops, sensores, dispositivos mveis, appliances, equipamentos eletrnicos, em casa, nos escritrios, nas fbricas, em roupas e produtos do dia-a-dia. E um elemento crucial dessa nova tecnologia ser o alto nvel de comunicao entre os vrios dispositivos e sensores participantes, o que permitir uma infra-estrutura de sincronizao, segurana e comunicao de uma forma transparente e generalizada, como nunca vista. Vamos ver um exemplo: voc entra em seu carro com seu celular ligado. Imediatamente, todos os dispositivos internos do carro sincronizam atividades e tarefas com seu celular. Assim, sua agenda de contatos ser apresentada no painel, permitindo que voc faa uma ligao atravs de um comando de voz dentro do carro. Sua agenda de compromissos, que poder consumir um servio como Maps Live (http://maps.live.com/), definir o melhor trajeto de sua casa at seu prximo compromisso e o mapa de ruas e direes apresentado no painel guia do carro. Podemos ainda imaginar outras integraes, como os dispositivos sensores de segurana, biometria, localizao, presena, etc. J deu para notar que existem vrios impactos decorrentes dessa convergncia e ampliao de uso de dispositivos em nosso dia-a-dia. Alguns especialistas arriscam que at 2010, estaremos nos grandes centros to acostumados com o uso da computao de forma transparente, que nem mesmo nos daremos conta disso, seja atravs de exemplos como o dado acima, ou ainda por interaes com dilogos entre homem-mquina, reconhecedores de voz, sensores de presena, monitores biolgicos, localizadores GPS, enfim, uma srie de exemplos podem ser imaginados. Outro ponto interessante que esse assunto tem sido alvo de vrias discusses j h algum tempo, no algo realmente recente. Porm, tem tomado maior notoriedade com os avanos da tecnologia mvel, assim como o barateamento dos dispositivos e servios em todo mundo. Veja por exemplo congressos como o PERCOM2008, em sua sexta edio, uma conferncia internacional patrocinada pela IEEE, sobre Pervasive Computing. PERCOM2008 Ref.: http://www.percom.org/

307

Outro exemplo o Pervasive2007, que envolveu empresas como Google, Microsoft Reseach, Nokia, Intel, sobre as tendncias e tecnologias emergentes na direo da convergncia de dispositivos. Pervasive2007 Ref.: http://www.dgp.toronto.edu/conferences/pervasive2007/index.phtml Podemos notar que existem dois aspectos revolucionrios aqui: primeiro, o aspecto computacional, que exigir novos frameworks de integrao e desenvolvimento; e segundo, o aspecto social, que provocar os diversos impactos sociais, humanos e comportamentais, que especialistas j comentam. No aspecto computacional, a FORD Motors, por exemplo, j trabalha na construo de um framework para o desenvolvimento de aplicaes e integrao no ambiente do veculo. Assim, diversos dispositivos podero usufruir de um mesmo modelo de integrao e programao, o que permitir uma srie de novos servios. Entre os elementos dessa tecnologia, podemos citar alguns como:

preparao para a composio de servios; preparao para a dinmica de servios, que deve prever constante mudana; utilizao de adaptadores de sincronizao, para bancos de dados, arquivos, dispositivos, dispositivos diversos; desenvolvimento com independncia de dispositivos, seja quanto aos recursos de hardware ou limitaes de interfaces; gerenciamento e manuteno de software distribudo, etc.

No aspecto social, quatro grandes impactos j so estudados, como:


Impacto na demanda e design de interfaces, sistemas e servios; Impacto no comportamento humano; Impacto nas atribuies sociais, e Impacto nas relaes homem-mquina.

Para arquitetos, claro: deveremos estar atentos as direes e novas oportunidades de integrao com esse novo mundo que se abre. Nossas aplicaes devero ser cada vez mais pensadas de uma forma interconectada, permitindo a integrao e o fornecimento de servios para diferentes dispositivos. O conceito de Software+Services, no ambiente desktop, web, mobile e enterprise ser cada vez mais uma realidade em nosso dia-a-dia. Como leitura adicional, recomendo os seguintes links: Pervasive Computing - the next era of computer science. Ref.: http://www.pervasivecomputing.net/about The Computer for the 21st Century, by Mark Weiser Ref.: http://www.ubiq.com/hypertext/weiser/SciAmDraft3.html

308

Ubiquitous computing Ref.: http://en.wikipedia.org/wiki/Ubiquitous_computing E no percam a edio nmero 14 do "The Architecuture Journal", que tem esse assunto e as tecnologias envolvidas como principal foco: Journal 14: Mobile Architecture Ref.: http://msdn2.microsoft.com/en-us/arcjournal/bb985491.aspx Por enquanto s! At o prximo post. :) Waldemir.
Posted: Thursday, January 24, 2008

Programao Paralela com DryadLINQ


Ol pessoal, tudo certo? Depois de um post do Otvio na semana passada, acabei dando uma circulada pelos projetos da Microsoft Research e encontrei algo bem legal! Para quem no viu, o Otvio falou rapidamente sobre MapReducing, uma estratgia interessante para a diviso de tarefas no processamento paralelo, que bem aderente para uma srie de cenrios com demanda de alto desempenho, como em pesquisas cientficas e simulaes. Usando as palavras do Otvio, a idia simples: se quisermos aumentar o paralelismo de uma operao, um processo Mestre deve dividir a tarefa em diversas parties, uma para cada processo Trabalhador. Chamamos este passo de Map. Em seguida, cada processo retorna seu resultado parcial para o processo Mestre, que aglutina e retorna todas as respostas para quem requisitou o processamento. Chamamos este passo de Reduce O post original continua a explicao sobre o tema e como podemos aplicar a estratgia sobre o Windows Azure, um ambiente de alta escalabilidade e armazenamento de dados ilimitado. Tipos como Web Roles, Worker Roles, Queues e Tables permitem uma implementao suave desse tipo de abordagem para uma computao de alto desempenho. Na Microsoft Research, encontrei o projeto DryadLINQ, que um ambiente de programao para a construo de aplicaes paralelas de alta escalabilidade de dados, rodando sobre clusters de PC. Como descrito pelo time da Research, o objetivo do projeto tornar a computao paralela simples o suficiente para projetos do dia-a-dia. O desenho abaixo ilustra a arquitetura do projeto DryadLINQ, veja:

309

DryadLINQ pronuncia-se [draied link] :) Ref.: http://research.microsoft.com/en-us/projects/dryadLINQ/ J est disponvel uma verso acadmica para testes, assim como uma documentao em .PDF bem completa. A partir desta documentao, retirei a listagem abaixo, onde vemos a referncia para a biblioteca LinqToDryad e o cdigo para a listagem de contedo de um arquivo texto (s para ilustrar).
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: using using using using using System; System.Collections.Generic; System.Linq; System.Text; LinqToDryad;

public static class Program { static void ShowOnConsole<T>(IQueryable<T> data) { foreach (T r in data) Console.WriteLine("{0}", r); } static void Main(string[] args) { string basedirectory = @"file://\\machine\directory"; string filename = "inputfile.txt"; DryadDataContext ddc = new DryadDataContext(basedirectory); DryadTable<LineRecord> table = ddc.GetTable<LineRecord>(filename); ShowOnConsole(table); Console.ReadKey(); } }

Para conferir a verso j disponvei e alguns exemplos em DryadLINQ, veja:

310

Dryad and DryadLINQ: Academic Release Ref.: http://connect.microsoft.com/site/sitehome.aspx?SiteID=891 Some sample programs written in DryadLINQ Ref.: http://research.microsoft.com/pubs/66811/tr-2008-74.pdf A programao paralela envolve diversos desafios, assim como abordagens especficas para seu tratamento. Porm, temos visto muito de sua aplicao restrita em ambientes de pesquisa e universidades. Creio que iniciativas como o DryadLINQ e mesmo tcnicas como o MapReducing sobre ambientes de computao na nuvem devem trazer a programao paralela para mais perto das iniciativas comerciais num futuro prximo. O prprio .NET 4.0 est chegando com alguns recursos importantes para programao paralela, como o Task Parallel Library (TPL), o Parallel LINQ (PLINQ), o Coordination Data Structures (CDS), alm de melhorias na System.Threading. Cada um desses recursos deve merecer um post dedicado no futuro. Olhando um pouco o Parallel LINQ (PLINQ), ele permite aos desenvolvedores aproveitarem os mltiplos ncleos de uma mquina multicore, atravs do modelo de programao do LINQ. Veja abaixo um exemplo de cdigo com PLINQ, onde notamos o uso da clusula .AsParallel(), que ativa o aproveitamento multicore disponvel na mquina:
1: var q = from p in people.AsParallel() 2: where p.Name == queryInfo.Name && 3: p.State == queryInfo.State && 4: p.Year >= yearStart && 5: p.Year <= yearEnd 6: orderby p.Year ascending 7: select p;

Um assunto puxa o outro e as oportunidades so imensas. Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, September 21, 2009

Um universo de material para estudo..


Ol pessoal, tudo certo? No princpio era s o MSDN e todos os DevCenters de tecnologias estavam disponveis a partir dele:

311

MSDN Brasil Ref.: http://msdn.microsoft.com/pt-br/default.aspx Com o passar do tempo, mais e mais tecnologias foram sendo lanadas e um Universo de material ficou disponvel (em portugus): Microsoft na Nuvem - Plataforma Azure Ferramentas e Linguagens - Visual Studio - Visual Studio Express - Visual Studio Team System - Visual Basic - Visual C# - Visual C++ Desenvolvimento Web - ASP.NET - Silverlight - Internet Explorer Desenvolvimento .NET - .NET Framework - .NET Compact Framework Desenvolvimento Windows - Windows Cliente - Windows Mobile - Windows Embedded Melhores Prticas - Arquitetura - Patterns & Practices Desenvolvimento Enterprise - SQL Server - Segurana - Microsoft Solutions Framework Desenvolvimento Office - Office - SharePoint Ao longo do tempo, o .NET Framework tambm evoluiu

312

E diversos arquitetos se perguntaram onde encontrar mais informaes sobre toda essa evoluo. A resposta foi dada abaixo:

.NET Framework Ref.: http://msdn.microsoft.com/pt-br/netframework/default.aspx Alguns tiveram um interesse maior sobre servios e interfaces e como o WCF - Windows Communication Foundation poderia ajud-los

WCF Windows Communication Foundation Media Center http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WCF.as px Outros se perguntaram sobre processos, workflows e mquinas de estado, lugares comuns para o WF - Windows Workflow Foundation.

313

WF Windows Workflow Foundation http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_Windo ws%20Workflow%20Foundation.aspx Tudo em portugus!!! Artigos, webcasts, treinamentos, centros de estudo, um mundo de leitura gratuito e disponvel para todos!!! E para as interfaces desktop ou web? O WPF Windows Presentation Foundation tambm ganhou seu lugar:

WPF Windows Presentation Foundation http://www.msdnbrasil.com.br/microsoft.MediaCenter/Default.aspx_x_CATEGORY_x_WPF.as px E para os mais exigentes, que buscam solues sofisticadas, o WindowsClient.NET tambm surgiu:

Ref.: http://windowsclient.net/default.aspx (esse est em ingls!) Finalmente, arquitetos e equipes de desenvolvimento se perguntaram por onde comear. Como criar seu roadmap de capacitao e certificao e seguir os primeiros passos pelos vrios caminhos da plataforma Microsoft? Eis que uma nova porta se abriu:

Centro de Capacitao e Recursos para Certificao do MSDN Ref.: http://msdn.microsoft.com/pt-br/bb188199.aspx

314

E o universo de estudos em constante expanso gerou mais uma fronteira chamada ramp-up

Ref.: http://msdn.microsoft.com/pt-br/rampup/default(en-us).aspx Quem tem ouvidos para ouvir, oua!!! ;) Feliz o arquiteto e o desenvolvedor que aproveitar cada material de estudo acima disponvel, pois eis que o tempo chegou para a construo de solues mais sofisticadas, compatveis com o mundo de servios, de interfaces RIA, de solues compostas e aplicaes na nuvem. Um abrao grande a todos e bom estudo!!! Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, June 04, 2009

Sculpture 1.0 Final : uma ferramenta de automao sobre o GAT/GAX


Ol pessoal, tudo certo? Gostaria de recomendar hoje um projeto muito interessante do Codeplex, o Sculpture. O Sculpture 1.0 Final foi publicado nesta tera-feira, dia 03/maro. Confira:

315

Sculpture - Model Your Life Ref.: http://sculpture.codeplex.com/Release/ProjectReleases.aspx?ReleaseId=23952 O Sculpture uma ferramenta baseada no Guidance Automation Toolkit e seus recursos (GAT/GAX). J vimos bastante sobre essa dupla aqui no blog. Sendo assim, o Sculpture fornece um ambiente baseado em Wizards, conduzindo o desenvolvedor durante a criao de aplicaes completas, a partir do modelo de banco de dados desejado. Isso mesmo! Voc aponta o modelo de dados que ser usado, escolhe o tipo de aplicao que deseja e modela sua aplicao atravs de um conjunto de shapes, operando uma verdadeira DSL (domain specific language). Que tipo de interface de aplicao voc pode gerar? Veja o menu abaixo:

E que tipo de servio podemos usar em nossa aplicao? Tambm temos um menu para isso:

E que tipo de acesso a dados podemos escolher? Veja abaixo:

316

Gostou? Vimos que compatvel com o Prism, mas ainda no terminei meus testes. Recomendo instalar o Prism v2.0 primeiro, antes do Sculpture 1.0. Aguardem mais dicas! Para comear, recomendo a preparao de seu ambiente. Antes da instalao do Sculpture, voc deve fazer a instalao dos pr-reqs sobre o Visual Studio 2008: Visual Studio 2008 Service Pack 1 Ref. :http://www.microsoft.com/downloads/details.aspx?FamilyId=FBEE1648-7106-44A79649-6D9F6D58056E&displaylang=en Guidance Automation Extensions - February 2008 Release (GAX) Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=DF79C099-4753-4A59-91E35020D9714E4E&displaylang=en Guidance Automation Extensions for Visual Studio 2008 and Visual Studio 2008 Service Pack 1 Update (GAXP1409) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=E28205C6-BB07-401B9A76-804784598BF0&displaylang=en Guidance Automation Toolkit for Visual Studio 2008 - Feb 2008 Release (GAT) Ref.: http://www.microsoft.com/downloads/details.aspx?FamilyId=B91066B3-D1D6-4990A45F-34CF8DBDC60C&displaylang=en A partir dessa preparao, instale o pacote Sculpture. Ele deve criar uma nova pasta de templates de projetos no Visual Studio a partir do Guidance Packages, lembra dele? :)

317

Depois disso, s experimentar as vrias entradas do Wizard que disparado para sua soluo. Nos prximos posts vamos falar mais do pacote. Tanto o Prism 2.0 como o Sculpture 1.0 podem ser entendidos como aceleradores para a construo de interfaces e aplicaes. Enquanto o Prism oferece uma biblioteca (a CAL Composite Application Library) para a construo de aplicaes de composio, o Sculpture oferece um guia de automao, integrando uma fbrica de software com uma DSL para a construo de interfaces diversas, assim como o modelo de negcio e servios. Entender suas diferenas, arquiteturas e principais recursos ser importante no momento da deciso pelo uso em nossos projetos. Por isso, experimente os dois pacotes (em ambiente controlado), sem moderao!!! Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, March 04, 2009

318

S+S Day : o SWOT Analysis e o trade-off entre controle e economia de escala


Ol pessoal, tudo certo? Ainda sobre Software + Services, falamos rapidamente aqui sobre algumas questes relevantes quando pensamos sobre o S+S e nossa arquitetura. Enquanto novas perguntas vo aparecendo, tambm vale pena fazer um mapa da arquitetura atual de nossas empresas, para conhec-la melhor. J que falamos de Negcio gil, uma ferramenta bem interessante para esse estudo o SWOT Analysis, voc conhece?

O SWOT Analysis envolve um estudo sobre Foras (Strengths), Fraquezas (Weaknesses), Oportunidades (Opportunities) e Ameaas (Threats) relacionadas ao cenrio-alvo. Em nosso caso, podemos colocar nossa arquitetura de solues definida para a empresa e avaliar seus pontos fortes, suas fraquezas ou pontos de melhorias, suas oportunidades e possveis ameaas. Em relao s ameaas, podemos fazer uma adaptao do conceito original e pensar quais sero as tendncias ou inovaes do setor que faro com que a soluo aplicada se torne obsoleta ou desatualizada ao longo do tempo. Essa ferramenta bem indicada para solues construdas por ISV's - Independent Software Vendor's, por exemplo, sendo aplicvel tambm para cenrios no entreprise. Nesse ltimo caso, Ameaas sero representadas por solues de terceiros ou recursos que no tratamos em nossa arquitetura. Outra anlise bem interessante sobre a aderncia entre CONTROLE vs. ECONOMIA DE ESCALA. Essa questo foi bem tratada pelo Otvio, na sesso de fechamento do S+S Day. Veja os slides aqui.

Em resumo, podemos classificar nossas aplicaes quanto necessidade por controle ou por economia de escala. Quanto maior o controle, mais indicada para o ambiente auto-hospedado, local em servidores do enterprise. Quanto maior a economia de escala, maior sua aderncia para o ambiente elstico da computao na nuvem. O desenho abaixo representa essas opes:

319

O estudo ainda pode avaliar a deciso sobre "construir" o software ou "comprar" o software, fornecendo mais uma varivel para nossa definio de arquitetura. De acordo com a maturidade de nossa TI e das ofertas de mercado, existem cenrios onde podemos comprar um software de prateleira, ao invs de mant-lo domstico, com equipes especializadas em sua evoluo e manuteno. Colocando tudo junto, teremos a deciso entre compra e construo versus onpremise e nuvem, como vemos a seguir:

Nunca demais lembrar que a essncia da viso Software + Services a combinao, a composio desses mundos de acordo com a necessidade e estratgia da empresa. Enfim, os arquitetos de solues, infra-estrutura e enterprise devero cada vez mais pesar essas vrias questes, para a construo da TI do futuro. Vale comentar que essa anlise foi inicialmente proposta pelo arquiteto Gianpaolo Carraro, nosso velho conhecido de outros RAF's Brasil. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, December 17, 2008

320

Arquitetura de solues e a organizao de componentes


Ol pessoal, tudo certo? A semana segue com o assunto Arquitetura de Solues, destacando como os componentes de software de sua soluo esto organizados e interagem em tempo de execuo. De forma histrica, todos lembramos do modelo de 3 camadas, muito utilizado por legados em VB6, Delphi, ASP WinDNA, entre outros. Quem no se lembra de desenhos como esse:

O modelo procurava separar funcionalidades em camadas, permitindo que alteraes realizadas no camada de negcios tivessem o mnimo impacto na camada de apresentao e assim por diante. "Dividir para Conquistar" era o lema. Outros nomes frequentes para essas camadas foram: Presentation Layer (PL), Business Logic Layer (BLL) e ainda Data Access Layer (DAL). Uma evoluo do modelo para arquiteturas distribudas, contemplando passagens de parmetros, disponibilidade de servios, abstrao do acesso a dados, etc., era dado pela figura a seguir:

No desenho ao lado, vemos a camada de apresentao (Presentation Tier), uma camada de processos de negcio (Business Process Components) e uma camada de acesso a dados. Essa camada de acesso a dados apresenta dois elementos bsicos: o modelo de entidades de negcio (Business Entities) e o modelo de acesso a dados (Data Access Logic Componentes). Como recurso de toda a estrutura encontramos nosso repositrio de dados da aplicao (Application Data). Se voc olhou para esses desenhos e reconheceu suas aplicaes, muito bom! bem provvel que sua soluo seja capaz de migrar sem muitas dores para outros modelos de arquitetura ou plataformas.

321

Se os desenhos foram novidades, ops! ...o gato subiu no telhado... :) Mais recentemente, voc deve ter ouvido falar em orientao a servios, interfaces de servios ou mesmo conceitos de servios encapsulando regras de negcio. Do mesmo modo, orquestrao de processos via workflows tem sido uma alternativa presente em algumas solues. Software + Services e consumo de servios online so outras tendncias tambm disponveis para nossos sistemas. De fato, existem vrias abordagens para uma arquitetura de soluo, que ainda deve considerar questes importantes como tratamento de exceo, configurao, monitorao, segurana e controle de acesso, logging e instrumentao, transao, etc. De acordo com o foco da arquitetura, iremos representar cada um desses temas em camadas diferentes, realizando simplificaes no modelo. Independente da abordagem adotada, a definio de uma arquitetura um fator crtico para a construo de uma soluo de sucesso. Em posts futuros, vamos discutir algumas abordagens de arquiteturas, j contemplando as novas tecnologias da plataforma Microsoft, como Entity Framework, LINQ, Velocity, Data Services, WCF, Dynamic Data, etc. Por enquanto s! At o prximo post :) Waldemir.
Posted: Thursday, September 11, 2008

Gramticas, Linguagens e Compiladores: um retorno s bases.


Ol pessoal, tudo certo? No post anterior iniciamos nossa discusso sobre guias e DSL's. E j que o assunto envolve a definio de linguagens e gerao de cdigo, pensei em voltar um pouco s bases. Quando pensamos em linguagens, podemos citar duas formas bsicas para a formalizao de linguagens de programao: as gramticas (com suas leis de formao) e as regras de testes ou reconhecedores (com suas regras de validao). Podemos definir uma gramtica como um conjunto de leis de formao que definem de maneira rigorosa o modo de gerao de textos corretos de uma linguagem. Assim, partindo-se de uma gramtica, possvel gerar textos vlidos na linguagem-alvo. Da mesma forma, uma linguagem um conjunto de todos os textos que podem ser gerados a partir da gramtica que define aquela linguagem.

322

Logo, gramticas so mecanismos geradores, que permitem a sntese de textos pertencentes a uma determinada linguagem. A base desse assunto a Hierarquia de Chomsky. Algumas referncias sobre o assunto voc encontra aqui: Chomsky Hierarchy Ref.: http://en.wikipedia.org/wiki/Chomsky_hierarchy A Hierarquia de Chomsky define tipos diferentes de linguagens, de acordo com a rigidez de suas gramticas e regras de formao. De forma resumida, citamos 4 tipos de gramticas:

Gramticas Irrestritas ou de tipo 0 (zero) Gramticas Sensveis ao Contexto ou de tipo 1 Gramticas Livres de Contexto ou de tipo 2 e finalmente as Gramticas Lineares ou de tipo 3, as que possuem maior importncia para o estudo e desenvolvimento de compiladores.

Durante o processo de definio de uma linguagem, podemos usar as chamadas metalinguagens. Por exemplo, pense numa meta-linguagem quando temos um texto escrito em portugus para definir a gramtica inglesa. Nesse caso, portugus a meta-linguagem, usada para explicar a gramtica alvo, a gramtica inglesa. Em computao, uma meta-linguagem muito conhecida a BNF ou "BACKUS-NAUR FORM". Veja um exemplo de BNF abaixo: <syntax> ::= <rule> | <rule> <syntax> <rule> ::= <opt-whitespace> "<" <rule-name> ">" <opt-whitespace> "::=" <opt-whitespace> <expression> <line-end> <opt-whitespace> ::= " " <opt-whitespace> | "" <expression> ::= <list> | <list> "|" <expression> <line-end> ::= <opt-whitespace> <EOL> | <line-end> <line-end> <list> ::= <term> | <term> <opt-whitespace> <list> <term> ::= <literal> | "<" <rule-name> ">" <literal> ::= '"' <text> '"' | "'" <text> "'" Outro exemplo simples de definio em BNF, para formao de expresses como 000101, 010101, 11100101, etc, dada abaixo: <integer> ::= <digit><integer> | <digit> <digit> ::= 0 | 1 Conceitos como terminais, smbolos, vocabulrios, entre outros, so elementos da definio de linguagens de programao. Veja alguns links sobre BNF aqui: BackusNaur form Ref.: http://en.wikipedia.org/wiki/Backus-Naur_form Finalmente, temos o desafio de construir nosso gerador de cdigo ou compilador. Entenda os geradores de cdigo como programas especficos, que trazem alguma sofisticao, mas que na

323

verdade so baseados em rotinas simples e bem definidas. Tipicamente, um compilador apresenta os seguintes componentes:

Funes de acesso a arquivos (acesso fsico ao disco) Funes de acesso lgico Funes para extrao de caracteres Analisador Lxico Analisador Sinttico Otimizador ou analisador semntico e o Gerador de cdigo

Veja maiores detalhes sobre cada componente de uma compilador aqui: Ref.: http://en.wikipedia.org/wiki/Compiler A figura abaixo apresenta um mapa das principais atividades realizadas por um compilador, para ilustrarmos melhor esse post.

E uma leitura importante sobre compiladores sempre o livro do drago :) Compilers: Principles, Techniques, and Tools (2nd Edition) Ref.: http://www.amazon.com/Compilers-Principles-Techniques-Tools-2nd/dp/0321486811

324

Durante o processo de definio e construo de nossos guias de automao ou mesmo nossas DSL's no vamos precisar aplicar toda a rigidez do processo envolvido na construo de compiladores, interpretadores ou mesmo geradores de cdigo para linguagens formais. Porm, muitos dos elementos da teoria de compilao so ferramentas importantes para o arquiteto nesse processo. Conhecer essas teorias e manter uma leitura constante desses assuntos sem dvida um diferencial. Como arquitetos, retornar as bases de tempos em tempos uma prtica saudvel. :) Por enquanto s! At o prximo post :) Waldemir.
Posted: Sunday, January 13, 2008

Algumas idias para discutir uma arquitetura.


Ol pessoal, tudo certo? A semana comeou com uma boa discusso de arquitetura, envolvendo um sistema bem interessante. Uma abordagem que surgiu durante o bate-papo foi primeiro olhar os vrios pilares de tecnologias e depois relacionar algumas frentes de implantao para o projeto, seguindo alguma metodologia. Quando pensamos nos pilares de desenvolvimento, podemos utilizar algumas classificaes para os vrios recursos da plataforma Microsoft. Uma proposta de organizao desses pilares poderia focar o ambiente de execuo, por exemplo:

Cada cenrio acima envolve diferentes recursos como API's, mecanismos de integrao, ferramentas de desenvolvimento, tipos de clientes e servios, etc. De fato, uma mesma soluo pode contemplar recursos de vrios pilares. Um post que j detalhou um pouco mais esse assunto, com foco no S+S, foi:

325

"Recursos para a construo de solues Software + Services." Ref.: http://blogs.msdn.com/wcamb/archive/2008/06/10/recursos-para-a-constru-o-de-solu-essoftware-services.aspx Com essa viso, podemos reconhecer quais recursos sero necessrios ou possveis para nossa soluo, permitindo dimensionar tambm as alternativas de implementao e integrao entre seus vrios componentes. A pergunta-alvo : "quais pilares de desenvolvimento nossa soluo necessita tratar hoje ou poder tratar no futuro?". Avanando na discusso, surgiu uma outra pergunta: "por onde comear nosso desenho de arquitetura?". A velha pergunta de sempre. Nesse ponto, utilizar uma metodologia que defina papis e oriente as atividades que sero executadas ao longo do projeto uma grande ajuda. Por isso, acabei propondo para o time as disciplinas do MSF - Microsoft Solutions Framework, como ponto de partida para o projeto. Aproveitando o modelo MSF for Agile, as atividades previstas para um arquiteto, que podem ser um timo guia para o desenho de uma soluo, seguem:
1. Particionamento do sistema, que envolve a escolha de padres de arquitetura e a construo de diagramas de aplicao; 2. Determinao de interfaces, que envolve o mapeamento de conexes com sistemas internos e externos, assim como requisitos de qualidade dos servios envolvidos; 3. Desenvolvimento de um Modelo de Segurana, onde deve-se avaliar autenticao, autorizao, criptografia, logging, excees, etc. Uma das ferramentas do modelo de segurana a identificao de ameaas pelo chamado STRIDE - Spoofing, Tampering, Repudiation, Information disclosure, Denial of Service e Evelation of privilege; 4. Desenvolvimento de um Modelo de Desempenho, que deve considerar os requisitos de qualidade de servio, o volume de processamento esperado e os objetivos de desempenho exigidos para o sistema, assim como o oramento disponvel para tais atividades; 5. Criao de Prottipo de Arquitetura, que deve perseguir os risco de arquitetura, para uma prova em ambiente controlado; 6. Criao da Arquitetura de Infraestrutura da soluo, que deve mapear as questes para o processo de implantao da soluo;

Com esse conjunto de atividades, conseguimos montar um desenho de soluo, assim como uma organizao para os vrios componentes presentes na arquitetura e tecnologias envolvidas. Para uma viso completa do MSF for Agile, confira o link: MSF for Agile Software Development Process Guidance Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=9F3EA426-C2B2-4264BA0F-35A021D85234&displaylang=en Foi um belo comeo de semana! Por enquanto s! At o prximo post :)

326

Waldemir.
Posted: Tuesday, September 09, 2008

Um mal necessrio ou um elemento estratgico? Como voc considera sua TI?


Ol pessoal, tudo certo? Bom, se voc tem acompanhado os posts e webcasts frequentes do Otvio, do Gebara, do Hulot e os colocados por este escriba aqui, tem percebido a quantidade de tecnologias que temos disponveis hoje. Nosso breve momento de deciso se tornou uma verdadeira maratona, um desafio em torno da seleo de frameworks, produtos e plataformas quando pensamos na construo de nossas arquiteturas. E parece mesmo que a cada dia, somos atingidos por uma avalanche de notcias sobre novos frameworks, verses CTP, previews disponibilizados, velhos Alphas e novos Betas, novos projetos no CodePlex, novas vises para famlias de produtos conhecidos, novas famlias de produtos, novas abordagens de negcio, etc., etc. Ento, temos a impresso de que estamos sempre correndo atrs do mercado. De fato, no um sentimento exclusivo seu, caro leitor... :) Onde vamos parar?

Por isso, fiz uma avaliao histrica dos ltimos posts e assuntos que tratamos por aqui, enquanto olhava tambm os blogs de outros amigos e arquitetos. Veja o que j encontrei, que deve ser seu universo de opes no momento de definio de uma nova arquitetura: WF - Windows Workflow Foundation (.NET 3.x) WCF - Windows Communication Foundation (.NET 3.x) WPF - Windows Presentation Foundation (.NET 3.x)

327

Windows CardSpace (.NET 3.x) ADO.NET Entity Framework (Beta 3) ADO.NET Data Services v1.0 - Astoria Project (CTP1) Microsoft Sync Framework v1.0 (CTP2) ASP.NET MVC Framework (Preview 2) Microsoft ASP.NET AJAX 1.0 Virtualizao, Windows Hiper-V Windows High Performance Computing (HPC) LINQ to SQL, LINQ to XML, LINQ to Entities, LINQ to Objects Microsoft Silverlight v2.0 (Beta 1) SaaS, Web 2.0, SOA, ESB, ISB, RIA IIS 7.0 e Windows Process Activation Service (WAS) Windows Server 2008 Visual Studio 2008 Team System WCF LOB (Line Of Business) Adapter SDK SQL Server 2008 (t chegando) SQL Server Service Broker User Experience (UX) BizTalk Services v1.0 (labs) SQL Server Integration Services (SSIS) IT Manager, DSI e Data Protection Manager 2007 Perfomance Management Software Factories (SF) Composite Applications e Mashups Pervasive Computing Application Lifecicle Management (ALM) e VSTS Cloud Computing Domain-Specific Languages (DSL) Guidance Automation Toolkit/Extensions (GAT/GAX) Office Business Application (OBA) OBA Composition Reference Toolkit v2.0 Web Oriented Architecture (WOA) RESTfull Architecture, JSON, ATOM, RSS, Sindicalization e finalmente SOFTWARE + SERVICES (S+S)... Voc viu que ainda temos assunto? :) E para a lista acima, voc pode adicionar todas as tecnologias at o .NET 2.0 que voc conhece como Web Services, .NET Remoting, MSMQ, Named Pipes, TCP, WinDNA, Threading, DCOM, COM+, Enterprise Services, COMTI, STA, MTA, etc. etc. e etc. Ou seja, muita coisa!!! Mas gostaria de propor uma discusso sob outra perspectiva: quais seriam os motivadores de TI? O que direciona e motiva a constante evoluo de nossa rea e que justificaria o estudo de todas essas tecnologias, alm de uma preocupao com o futuro? Para qu tudo isso? Software + Services irreversvel? (provocaes...)

328

Em seu ltimo post ("Dois Extremos"), mestre Gebara apresenta essa conversa sobre TI como um mal necessrio ou TI como um elemento estratgico. Para quem se lembra, em 2003 tivemos um artigo de grande impacto no mercado, o j conhecido: IT Doesnt Matter - Harvard Business Review http://harvardbusinessonline.hbsp.harvard.edu/hbsp/hbr/articles/article.jsp?ml_action=getarticle&articleID=R0305B&ml_page=1&ml_subscriber=true Recomendo a leitura, assim como as discusses que foram geradas a partir dele. De fato, podemos apontar quatro principais motivadores ou direcionadores do uso de TI:

Mercado, que envolve oferecer respostas aos desejos do mercado, como competio global, operao em tempo real, orientao ao cliente, responsabilidade social, regulamentao governamental, agile business, etc; Organizao, que envolve os componentes bsicos da organizao, como estruturas, culturas, polticas, estratgias, pessoas, papis executados, processos gerenciais, etc. Indivduo, que de forma abrangente envolve as vrias relao do indivduo com TI e suas realizaes, em farmcias, supermercados, na escola, na contabilidade, no imposto de renda, no sistema financeiro, no lazer, no internet banking, nos sistemas da empresa, etc. Tecnologia, que sofre ainda presses de evoluo de seus vrios componentes, como hardware, software, bases de dados, redes, processos, pessoas. [ALB2005]

A partir dessa viso, tecnologia aparece apenas como um dos elementos ativos na evoluo da TI. Ou seja, outros componentes podem ser mais importantes no momento de deciso entre uma direo e outra. Ao mesmo tempo, quando olhamos as foras que direcionam o negcio de uma empresa, podemos recorrer ao modelo de Porter [PORT1986]. O modelo das Cinco Foras de Porter foi concebido por Michael Porter em 1979 e destina-se anlise da competio entre empresas de uma determinada indstria. As cinco foras apresentadas seriam:

a Rivalidade entre os concorrentes o Poder de barganha dos clientes o Poder de barganha dos fornecedores a Ameaa de novos entrantes a Ameaa de produtos substitutos

329

Fonte: Wikipedia Ou seja, precisamos posicionar a misso da empresa no contexto de sua indstria (ou vertical), para entender se TI ser mais ou menos estratgica em relao competio, ao atendimento ao cliente, a velocidade de resposta, etc. Agora paramos para pensar: olhando as foras que determinam a competio entre as empresas e os motivadores que direcionam TI, conseguimos justificar nossa constante ateno para as novas ondas de tecnologias que teremos pela frente? Vamos adicionar mais um ingrediente. Um assunto muito interessante nessa discusso a chamada Diretriz Estratgica de uma empresa. Podemos classificar at seis diretrizes estratgicas fundamentais, para o enfoque organizacional dado para o ambiente de TI. A lista abaixo, proposta inicialmente por McFarlan, McKenney e Pyburn (1983), mostra as seis diretrizes estratgicas, veja:

Planejamento Central Tecnologia de Ponta ou Inovao Livre Mercado Monoplio Recursos Escassos Mal Necessrio

Cada diretriz determina como a empresa entende a importncia de TI para o negcio ou misso da companhia. A viso ainda prope uma matriz de impacto, de acordo com o valor estratgico atual e futuro de cada tecnologia, veja:

330

Assim, a idia seria posicionar cada uma das seis diretrizes estratgicas num dos quatro quadrantes da matriz de McFarlan, McKenney e Pyburn acima.

Portanto, est claro que de acordo com a diretriz estratgica definida pela empresa e de acordo com a indstria na qual participa, TI recebe maior ou menor ateno, navegando entre um mal necessrio ou um elemento realmente estratgico, determinante para a sobrevivncia da empresa. Depois dessa viso mais acadmica sobre estratgias, diretrizes e impactos, volto a pergunta: O que voc espera de sua TI? Como usurios de tecnologia (ou colaboradores), conclumos que muitas das decises acima so restritas ao board ou conselho executivo de nossas empresas, sendo realmente uma discusso para poucos. Mas como arquitetos, precisamos cultivar uma clara viso sobre o futuro do mercado de TI, assim como o impacto de novas ondas de tecnologias que esto sempre a caminho, reconhecendo o melhor momento para cada adoo. Como influenciadores ou conselheiros, devemos advogar sobre o correto mapeamento de cada tecnologia para o negcio suportado, ajudando no entendimento de longo prazo sobre os riscos, custos, benefcios e esforos envolvidos. Como tcnicos especializados, precisamos conhecer as interaes entre componentes, as boas prticas, os patterns, os cenrios e combinaes possveis, respondendo quais sero os pontos fortes e fracos obtidos em cada tecnologia. E como apaixonados por tecnologia, vamos curtir muito que vem por ai... :)

331

De fato, devemos estar antenados sobre o que relevante e o que no , no universo de mudanas e foras em TI que exercem impacto direto sobre o negcio da empresa, enquanto ajudamos na preparao para essas mudanas. Nesse ponto reconheo o verdadeiro valor de um arquiteto. Por enquanto s! Let's go back to coding e At o prximo post :) Waldemir. [ALB2005] Albertin, A.L.,Moura, R.M. - Tecnologia de Informao e Desempenho Empresarial - Editora Atlas - So Paulo - 2005. [PORT1986] Porter, Michael E. - Estratgia Competitiva - Campus Editora - 1986.
Posted: Friday, April 25, 2008

332

Captulo 17
Patterns & Practices e a Enterprise Library

Como parte de todo processo de desenvolvimento de software, seguir boas prticas e recomendaes parte chave para o sucesso. Diversos documentos, guias e artigos foram propostos pelo time do Patterns &Practices da Microsoft e muitos deles tiveram destaque tambm no blog Arquitetura de Solues. Por isso, esse captulo dedicado aos principais posts sobre os projetos do patterns & practices, com destaque para a srie dedicada aos recursos da Enterprise Library.

333

Hands-On Labs for Enterprise Library 4.1 March 2009


Ol pessoal, tudo certo? Semana passada, tive um belo bate-papo com alguns colegas, falando sobre algumas ferramentas para a construo de servios, aplicaes e como resolver questes bsicas de todo software.

Aqui, vale lembrar que a biblioteca Enterprise Library ainda uma grande soluo para muitas dessas questes. Apenas como histrico, j passamos por vrias verses da EntLib, veja:

Enterprise Library 4.1 - October 2008 Enterprise Library 4.0 - May 2008 Enterprise Library 3.1 - May 2007 Enterprise Library 2.0 - January 2006

Qual verso voc est usando? A mais recente a 4.1, que voc encontra aqui: Enterprise Library 4.1 - October 2008 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=1643758B-2986-47F7-B5293E41584B6CE5&displaylang=en E o recentemente lanado Hands On Lab, de Maro de 2009, voc tem aqui: Hands-On Labs for Enterprise Library 4.1 March 2009 Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=AB3F2168-FEA1-4FC2B40C-7867D99D4B6A&displaylang=en A Enterprise Library 4.1 oferece um conjunto de blocos de aplicao e bibliotecas que atendem questes bsicas da infra-estrutura de software, como:

Caching Criptografia Acesso a Dados Tratamento de Exceo Interceptao de chamadas Logging, auditoria Segurana Validao, entre outros.

O Hands On Labs (HOL) da Enterprise Library 4.1 um pacote obrigatrio para quem est iniciando seus primeiros passos com a biblioteca. A partir da instalao, voc tem uma srie de

334

pastas com exemplos, labs e documentao sobre cada um dos exerccios disponveis, como vemos a seguir:

Entre os principais, gostaria de destacar o Validation Application Block, da pasta Validation. Esse bloco permite o tratamento da validao de entrada de dados, antes da execuo de regras de negcio de uma aplicao. Ao todo, so 13 laboratrios apenas para validao, para WinForms, ASP.NET, WCF e outros. O laboratrio 13 do HOL (Lab 13: Integrating with WCF) especialmente interessante pois trata os aspectos de validao de dados a partir de uma aplicao ASP.NET, disparando regras de negcio em servios WCF Windows Communication Foundation. Usando o Validation Block, podemos definir as validaes para o contrato de servios e parmetros recebidos pela interface, como vemos no exemplo de interface abaixo:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: using using using using System.ServiceModel; Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF; Microsoft.Practices.EnterpriseLibrary.Validation.Validators; ValidationHOL.BusinessLogic;

namespace ValidationHOL.Service { [ServiceContract] public interface ICustomerService { [OperationContract] [FaultContract(typeof(ValidationFault))] string ProcessCustomer( Customer customer, [StringLengthValidator(1, 100, MessageTemplate = "The notes must be 1 to 100 characters long.")] string notes); } }

335

Como parte do processo, podemos definir o comportamento de validao do servio usando a ferramenta de configurao SvcConfigEditor.exe, que voc encontra na pasta: C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin Nota: Essa ferramenta parte do Windows SDK, que voc tem no link abaixo: Microsoft Windows Software Development Kit Update for Windows Vista Ref.: http://www.microsoft.com/downloads/details.aspx?familyid=4377f86d-c913-4b5c-b87eef72e5b4e065&displaylang=en Para uma documentao adicional, confira tambm o link: Configuration Editor Tool (SvcConfigEditor.exe) Ref.: http://msdn.microsoft.com/en-us/library/ms732009.aspx

Feita esta configurao, o arquivo Web.Config ter as definies de validao suportadas pelo servio, como vemos abaixo na seo <system.serviceModel> da interface WCF:
1: <system.serviceModel> 2: <client> 3: <remove contract="IMetadataExchange" name="sb" /> 4: <endpoint address="" behaviorConfiguration="validation" binding="netTcpRelayBinding" 5: contract="IMetadataExchange" name="sb" /> 6: </client> 7: <extensions> 8: <behaviorExtensions>

336
9: <add name="validation" type="Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF.ValidationElement, Microsoft.Practices.EnterpriseLibrary.Validation.Integration.WCF, Version=4.1.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" /> 10: </behaviorExtensions> 11: </extensions> 12: <services> 13: <service behaviorConfiguration="ValidationHOL.Service.Service1Behavior" name="ValidationHOL.Service.CustomerService"> 14: <endpoint address="" binding="wsHttpBinding" contract="ValidationHOL.Service.ICustomerService"> 15: <identity> 16: <dns value="localhost"/> 17: </identity> 18: </endpoint> 19: <endpoint address="mex" binding="mexHttpBinding" contract="IMetadataExchange"/> 20: </service> 21: </services> 22: <behaviors> 23: <endpointBehaviors> 24: <behavior name="validation"> 25: <validation /> 26: </behavior> 27: </endpointBehaviors> 28: <serviceBehaviors> 29: <behavior name="ValidationHOL.Service.Service1Behavior"> 30: <serviceMetadata httpGetEnabled="true" /> 31: <serviceDebug includeExceptionDetailInFaults="false" /> 32: </behavior> 33: </serviceBehaviors> 34: </behaviors> 35: </system.serviceModel>

O mesmo formato de configurao pelo Web.Config e definio de comportamento da aplicao seguido pelos outros blocos de aplicao da EntLib, como caching, tratamento de exceo, logging, etc. Recomendo fortemente que voc experimente a EntLib 4.1 e seu Hands On. Sem dvida, muito teis no dia-a-dia de nossas solues. Por enquanto s! At o prximo post :) Waldemir.
Posted: Monday, April 13, 2009

337

Security Application Block com a EntLib 4.1


Ol pessoal, tudo certo? Ainda falando sobre a Enterprise Library 4.1, hoje vamos olhar o Security Application Block. Segurana de modo geral um aspecto muito importante na arquitetura de solues e deve ser tratado com todo cuidado. Atravs do Security Application Block, podemos definir os mtodos de autenticao de usurio e autorizao de acesso s funcionalidades da aplicao, de acordo com os papis (roles) definidos para cada usurio, de um modo fcil e configurvel. A partir do Hands On Labs da EntLib 4.1, temos alguns exerccios para autenticao e autorizao na pasta C:\Enterprise Library 4.1 HOL\CS\Security. Veja um exemplo de implementao no arquivo SecurityHelper.cs, abaixo:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: using System.Security.Principal; using System.Threading; using System.Web.Security; namespace BugSmak.Security { class SecurityHelper { private SecurityHelper() { } public static bool Authenticate(string username, string password) { bool authenticated = false; // TODO: Authenticate Credentials authenticated = Membership.ValidateUser(username, password); // TODO: Get Roles if (!authenticated) return false; IIdentity identity; identity = new GenericIdentity(username, Membership.Provider.Name); string[] roles = Roles.GetRolesForUser(identity.Name); IPrincipal principal = new GenericPrincipal(identity, roles); // Place user's principal on the thread Thread.CurrentPrincipal = principal; return authenticated; }

338
34: 35: 36: 37: 38: 39: 40: 41: 42: 43: }

public static bool Authorized(string rule) { bool authorized = false; // TODO: Check rule-base authorization return authorized; } }

A classe SecurityHelper acima implementa os mtodos de Autenticao e Autorizao, que podemos chamar para esses tratamentos em nossa aplicao. Como um benefcio da EntLib, o modelo de programao legvel e de fcil configurao, economizando horas de projetos para a implementao desse mesmo tratamento. Por exemplo, a partir da definio da classe SecurityHelper , podemos criar um formulrio de Sign In, como vemos abaixo:

De onde chamamos a autenticao do usurio atravs do boto Sign In. Abaixo voc tem a implementao do formulrio acima, com destaque para o mtodo btnLogin_Click(), disparado pelo click no boto Sign In:
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: using System; using System.Windows.Forms; using BugSmak.Security; namespace BugSmak { public partial class LoginForm : Form { public LoginForm() { InitializeComponent(); } private void btnLogin_Click(object sender, EventArgs e) { string username = this.txtUsername.Text; string password = this.txtPassword.Text;

339
19: 20: 21: 22: 23: 24: 25: 26: 27: 28: } bool authenticated; authenticated = SecurityHelper.Authenticate(username, password); if (authenticated == true) this.DialogResult = DialogResult.OK; else this.errorLabel.Visible = true; } }

Nesse caso, a autenticao feita atravs da definio prvia de um arquivo de configurao de usurios e credenciais, usado pelo SecurityHelper para validao, como vemos no exemplo abaixo:

Arquivo: Users.xml Com o cdigo acima e usando o Security Application Block, podemos ainda autenticar nossos usurios e validar as funcionalidades liberadas de acordo com cada perfil. Por exemplo, o mtoto Create() abaixo autorizado para os papis Employee, Developer e Manager de usurios autenticados, veja:
1: 2: 3: 4: 5: 6: 7: 8: [PrincipalPermission(SecurityAction.Demand, Role = "Employee")] [PrincipalPermission(SecurityAction.Demand, Role = "Developer")] [PrincipalPermission(SecurityAction.Demand, Role = "Manager")] public static RaiseBug Create() { // TODO: Check Authorization return new RaiseBug(); }

O Security Application Block ainda suporta outros mtodos de autorizao, como o Authorization Rule Provider, o AzMan Provider ou mtodos customizados conforme a necessidade. Essa configurao feita sobre o arquivo de configurao App.Config ou Web.Config, com a ferramenta Enterprise Library Configuration:

340

Usando o Authorization Rule Provider, nosso mtodo de autorizao ficaria assim:


1: public static bool Authorized(string rule) 2: { 3: bool authorized = false; 4: 5: // TODO: Check rule-base authorization 6: // No parameter passed to GetAuthorizationProvider method as 7: // we'll set the defaultAuthorizationInstance in App.config. 8: IAuthorizationProvider ruleProvider; 9: ruleProvider = AuthorizationFactory.GetAuthorizationProvider(); 10: 11: authorized = ruleProvider.Authorize(Thread.CurrentPrincipal, rule); 12: 13: return authorized; 14: }

Ao final, nosso arquivo de configurao ter uma definio semelhante a essa:


1: <?xml version="1.0" encoding="utf-8"?> 2: <configuration> 3: <configSections> 4: <section name="securityConfiguration" 5: type="Microsoft.Practices.EnterpriseLibrary.Security.Configuration.SecuritySettings, Microsoft.Practices.EnterpriseLibrary.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null" /> 6: </configSections> 7: <securityConfiguration defaultAuthorizationInstance="RuleProvider" 8: defaultSecurityCacheInstance=""> 9: <authorizationProviders> 10: <add name="RuleProvider" 11: type="Microsoft.Practices.EnterpriseLibrary.Security.AuthorizationRuleProvider, Microsoft.Practices.EnterpriseLibrary.Security, Version=2.0.0.0, Culture=neutral, PublicKeyToken=null"> 12: <rules> 13: <add name="Raise Bug" expression="R:Employee OR R:Developer OR R:Manager" /> 14: <add name="Assign Bug" expression="R:Manager" /> 15: <add name="Resolve Bug" expression="R:Developer OR R:Manager" /> 16: </rules>

341
17: </add> 18: </authorizationProviders> 19: </securityConfiguration> 20: </configuration>

Em resumo, cada Application Block da EntLib permite uma fcil configurao e uma menor codificao para recursos importantes como a autorizao e a autenticao que vimos neste post. Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, April 15, 2009

Enterprise Library Configuration com a EntLib 4.1


Ol pessoal. tudo certo? Aproveitamos a semana para falar da Enterprise Library 4.1. Conversando com alguns colegas do mercado, j ouvi bons comentrios sobre as vantagens de seus exemplos e aplicabilidade nas solues. A idia era essa mesmo, sinalizar uma ferramenta que pode nos ajudar no dia-a-dia de projetos. Como vimos em alguns exemplos, tudo comea com a configurao do App.Config ou Web.Config da aplicao atravs do Enterprise Library Configuration:

342

De onde partimos para a escolha dos Application Blocks que iremos usar em nossa soluo. Veja o exemplo abaixo, onde o Data Access App.Block, o Exception Handling App.Block e o Logging App.Block foram escolhidos para a aplicao:

Em resumo, a Enterprise Library oferece uma srie de recursos para os principais aspectos envolvidos na construo de aplicaes. Recomendo fortemente que avaliem seus vrios pacotes e exemplos do Hands On Labs. Enterprise Library e a construo de servios Esta semana, tive ainda algumas conversas sobre os principais desafios na construo de servios, retomando a velha discusso sobre SOA e SOI. Novamente, pense que servios so peas de uma arquitetura que tambm necessitam de instrumentao, segurana, monitorao, logging, tratamento de exceo, acesso a dados, etc. Assim, podemos aplicar os blocos da Enteprise Library tambm para a construo de nossos servios de SOA, economizando horas de projeto com detalhes que so comuns a toda infra-estrutura de software. No prximo post, vamos falar um pouco mais sobre essas e outras dicas aplicveis para a construo de servios na plataforma Microsoft.

343

Por enquanto s! At o prximo post :) Waldemir.


Posted: Friday, April 17, 2009

patterns & practices : Application Architecture Guide 2.0


Ol pessoal, tudo certo? A nova verso do Application Architecture Guide 2.0 foi lanada essa semana e j est disponvel. J falamos dele aqui no blog. O documento sofreu alteraes importantes, apresentando muita informao sobre camadas, componentes de uma arquitetura de referncia, aspectos de deciso e vrios cenrios. Mas finalmente est completo! Destaque especial para a parte IV do documento, onde so apresentados diversos tipos de arquiteturas de referncia, como : Web Applications, Rich Internet Applications (RIA), Rich Client Applications, Services, Mobile Applications, Office Business Applications (OBA) e SharePoint LOB Applications. Outro destaque interessante a classificao das tecnologias tpicas para aplicaes na plataforma .NET, veja:

No deixe de conferir! patterns & practices Application Architecture Guide 2.0 Ref.: http://www.codeplex.com/AppArchGuide/Release/ProjectReleases.aspx?ReleaseId=20586 Por enquanto s! At o prximo post :)

344

Waldemir.
Posted: Friday, December 19, 2008

patterns & practices : Improving Web Services Security


Ol pessoal! Tudo certo? A nova verso do Improving Web Services Secutiry Guidance j est disponvel e merece destaque. Falamos desse projeto do patterns & practices alguns meses atrs, quando conversvamos sobre questes de segurana em cenrios de servios com WCF. De fato, esse o foco do documento, que apresenta uma srie de questes para cada cenrio de aplicao, tratando as vrias fronteiras de segurana e mecanismos para garantia de autenticao, autorizao, criptografia, certificados, credenciais e roles de usurios. A figura abaixo apresenta uma dessas discusses, onde vemos um cenrio completo de utilizao de Web Services com WCF e suas vrias fronteiras de segurana:

Recomendo mais esse documento do patterns & practices como leitura obrigatria pelo time de arquitetura. patterns & practices : Improving Web Services Secutiry Ref.: http://www.codeplex.com/WCFSecurityGuide/Release/ProjectReleases.aspx?ReleaseId=15892

345

Por enquanto s! At o prximo post :) Waldemir.


Posted: Wednesday, November 05, 2008

Leitura Recomendada: Performance Testing Guidance for Web Applications (e o Azure?)


Ol pessoal, tudo certo? O assunto hoje Web e como podemos organizar testes de performance para aplicaes Web. Apesar do documento j ser antigo, a abordagen de testes sugerida, a definio de fronteiras e os cuidados no processo de tuning propostos fornecem uma boa perspectiva sobre o tema no ambiente Web. Vale a leitura. Performance Testing Guidance for Web Applications Ref.: http://www.codeplex.com/PerfTestingGuide Algumas pessoas me perguntaram sobre tuning Web esses dias, por isso resgatei o documento acima. Outro aspecto interessante em relao ao tuning de aplicaes sobre o Windows Azure. Esse assunto vai dar muita discusso, pois pense bem, se seu software cobrado pelo uso, pelo espao utilizado para armazenamento, pelo trfego em bytes que ele gera ou mesmo pelo nmero de instncias que ele executa, ser quase obrigatrio modelar/implementar seu servio para a nuvem de um modo eficiente, economizando esses fatores de cobrana. Por exemplo, voc deve evitar armazenar grande blocos de string e XML desestruturados quando possvel, criando representaes mais enxutas para suas tables ou blobs. Ao mesmo tempo, isso deve economizar alguns byutes de transferncia entre a nuvem e seu software cliente, on-premise. Ainda, testes avaliando o nmero de instncias que voc realmente precisa para sua aplicao sero recomendados. Creio que em breve, documentos do patterns & practices nessa linha de otimizao/tunig sero obrigatrios. Ok, vou falar com o time para eles fazerem ;) Por enquanto s! At o prximo post :) Waldemir.
Posted: Tuesday, September 22, 2009

346

Captulo 18
Artigos publicados na revista Mundo .NET

Depois de tantos posts e temas variados, retornamos ao Windows Azure. Neste captulo apresentamos os 3 principais artigos publicados na revista MUNDO .NET sobre o Windows Azure e seus recursos. Considerando a constante evoluo da plataforma e seu lanamento comercial previsto para Novembro de 2009, esses artigos funcionam como um retrato histrico da plataforma, apresentando tambm os principais aspectos presentes num ambiente de computao na nuvem, de alta escalabilidade e provisionamento dinmico.

347

Revista Mundo .Net : Construindo aplicaes para o Windows Azure


Ol pessoal, tudo certo? Boas novas: j est nas bancas a nova edio da revista Mundo .NET, com mais um artigo especial sobre a Plataforma Windows Azure, veja:

Neste artigo, eu passo uma viso sobre os recursos e primeiros passos para o desenvolvimento de solues sobre o Windows Azure. Ainda temos uma jornada at o lanamento final da plataforma, que vai ocorrer em Novembro deste ano. At l, novos CTPs e pacotes sero publicados, mudando alguns dos passos apresentados no artigo. Por isso, procurei colocar uma viso ampla, sobre os processos e as principais capacidades que o desenvolvedor e o arquiteto precisam conhecer. Espero que gostem! No deixe de conferir e enviar seus comentrios, como sempre! Por enquanto s! At o prximo post :) Waldemir.
Posted: Saturday, August 22, 2009

Construindo aplicaes para o Windows Azure


Por Waldemir Cambiucci Agosto 2009

Aprenda os primeiros passos para a construo e publicao de projetos para o Windows Azure. Este artigo apresenta alguns dos principais templates de aplicaes para o Windows Azure disponveis com o CTP Community Technology Preview da plataforma para o Visual Studio 2008. Veremos aqui o processo de criao de projetos e publicao de aplicaes no portal online do Windows Azure. O artigo tambm apresenta alguns dos principais exemplos e ferramentas de administrao para a plataforma j disponveis para a comunidade via CodePlex. Por fim, veremos juntos alguns dos aspectos envolvidos na deciso entre ambiente local e a computao na nuvem.

348
Introduo Durante os ltimos meses voc deve ter ouvido muito sobre a chamada cloud computing ou computao na nuvem, um ambiente de processamento e armazenamento de dados massivo, de alta escalabilidade e alta disponibilidade, acessvel via web atravs de protocolos como HTTP, REST e SOAP, instalado em datacenters de ltima gerao espalhados pelo mundo. Uma das grandes caractersticas desse modelo o provisionamento elstico de computao, onde podemos iniciar a operao de uma aplicao com um nmero X de mquinas previstas para o front-end e back-end, por exemplo. Com o crescente volume de requisies, podemos contratar novas mquinas para nossa aplicao de forma dinmica, atravs da configurao do ambiente via um portal de administrao ou um arquivo XML. Terminado o pico de utilizao, podemos simplesmente voltar para a configurao original de X mquinas, atualizando o arquivo de configurao do ambiente na nuvem. Esse modelo de provisionamento elstico proposto pelo Windows Azure e sua plataforma de servios online. O Windows Azure um sistema operacional para a nuvem, anunciado pela Microsoft no ltimo PDC 2008 Professional Developers Conference, em Los Angeles. O Windows Azure deve rodar sobre os vrios datacenters da Microsoft em construo e operao pelo mundo e deve estar disponvel comercialmente no final do ano, com lanamento previsto durante o PDC 2009. A importncia do Windows Azure para o mercado corporativo assim como para consumidores e usurios finais enorme. Uma plataforma na nuvem oferece uma opo de uso de uma infra-estrutura verdadeiramente SaaS Software as a Service, isto , que suporta a alta escalabilidade e o volume de atendimento crescente da Web com um modelo de consumo de funcionalidades por servios, conforme a demanda. Novos modelos de licenciamento e subscrio de servios tornam-se rapidamente aplicveis para nossas aplicaes na nuvem, alm da reduo de custos associados com infra-estrutura e administrao de servios que o ambiente prope.

Os recursos da plataforma Azure Desde outubro de 2008 temos acompanhado as diversas atualizaes sobre a plataforma atravs de pacotes CTP Community Technology Preview, que tm oferecido templates e ferramentas de desenvolvimento para o Windows Azure sobre o Visual Studio 2008. At o fechamento deste artigo, o CTP mais atual era o pacote de Maio de 2009, composto pelos seguintes componentes: Windows Azure Software Development Kit (May 2009 CTP) HTTP://www.microsoft.com/downloads/details.aspx?FamilyID=22703881-1197-49e5-8231f49095cfd0bb&displaylang=en Windows Azure Tools for Microsoft Visual Studio (May 2009 CTP) HTTP://www.microsoft.com/downloads/details.aspx?FamilyID=11b451c4-7a7b-4537-a769e1d157bad8c6&displaylang=en

A partir da instalao desses pacotes sobre a mquina de desenvolvimento, estamos preparados para a construo de servios e aplicaes baseadas em templates para o ambiente Windows Azure, assim como seus principais grupos de servios. Note que esses pacotes aproveitam os recursos do .NET Framework 3.5 SP1, o que permite ainda a construo de aplicaes que suportam tecnologias importantes como Silverlight 2.0, ASP.NET com AJAX, REST, LINQ Language Integrated Query, WCF Windows Communication Foundation, WF Windows Workflow Foundation, entre outras, permitindo a criao de solues sofisticadas para a nuvem. No deixe de conferir no portal do Windows Azure se novos pacotes CTPs foram publicados no momento de leitura deste artigo. Atravs do meu blog tambm devo manter os links para os novos CTPs, no deixe de conferir (HTTP://blogs.msdn.com/wcamb/). Podemos resumir os principais recursos de desenvolvimento para o Windows Azure da seguinte maneira: O Windows Azure oferece um portal de administrao, que permite as tarefas de implantao, configurao e estatsticas sobre os pacotes de aplicaes que colocamos no Azure. Esse portal est no link HTTP://www.microsoft.com/azure/, sendo exigido seu registro como usurio no ambiente; O Windows Azure tambm oferece um SDK Software Development Kit e um pacote de templates e ferramentas para o Visual Studio 2008, que disponibiliza para o desenvolvedor os tipos de projetos suportados em cada pacote CTP;

O mercado tem colaborado tambm para um crescente nmero de ferramentas para o Windows Azure. Diversos kits de administrao, interoperabilidade, navegao e integrao esto sendo desenvolvidos pela prpria comunidade e sendo publicados atravs do portal CodePlex (HTTP://www.codeplex.com), de forma aberta e com

349
cdigo-fonte disponvel para download. So bons exemplos de projeto e ferramentas que auxiliam o desenvolvedor em diversas tarefas do dia-a-dia sobre os projetos instalados no Azure. Alguns desses projetos servem bem como ponto de partida para testes em laboratrio em sua empresa. Vamos conferir alguns desses projetos aqui no artigo. Alm desses vrios componentes, a prpria Microsoft tem publicado uma vasta documentao, com artigos, laboratrios, kits de treinamento e aplicaes exemplos, que tem ajudado o desenvolvedor durante o processo de descoberta da plataforma. No portal do Windows Azure voc encontra diversos links para toda essa documentao.

Criando um projeto no portal de servios Azure Para comear, vamos conferir o portal de servios do Windows Azure e o processo de criao de projetos. recomendado que voc conhea bem o portal e seus recursos antes de iniciar suas aplicaes com o Visual Studio 2008. Seu primeiro passo ser acessar o site da plataforma atravs dos links HTTP://www.azure.com ou HTTP://www.microsoft.com/azure/. Logo na pgina principal voc ver um link para registro, que deve direcion-lo para a pgina apresentada na figura 1, a seguir:

Figura 1 Portal do Windows Azure, ponto de partida para o registro de usurio e criao de projetos para aplicaes na nuvem.

Durante esse perodo de CTP, voc pode se registrar no Windows Azure de forma gratuita, atravs do link Register for Services indicado na figura 1. A partir desse registro, voc ir receber um email com o Invitation Code, que te dar o acesso definitivo para a criao de seus projetos e aplicaes no ambiente. O recebimento do email de confirmao tem demorado entre 2 e 3 semanas, mas pode variar conforme a demanda, por isso, faa seu registro assim que possvel! Logo aps receber o email de confirmao e associar sua conta LiveID junto ao portal, voc ter acesso pgina de administrao de seus projetos, como apresentado na figura 2:

350

Figura 2 Pgina de administrao de projetos no portal do desenvolvedor de servios Azure.

A pgina acima possui uma srie de abas com os recursos disponveis na plataforma. A aba principal a Summary, que apresenta um resumo de todos os projetos disponveis para sua conta, assim como um controle dos projetos j criados ou disponveis para criao. A aba Analytics oferece um resumo estatstico sobre o uso de cada projeto, informando horas de utilizao, nmero de mquinas virtuais liberadas, volume de uso, etc. De tempos em tempo essa pgina sofre mudanas, devido constantes manutenes e desenvolvimento contnuo do portal. Finalmente, a aba Account consolida as informaes referentes sua conta e Invitation Codes j utilizados. At o CTP de Maio de 2009, o ambiente oferecia a possibilidade de criao de 2 projetos do tipo Storage Account, destinado para a persistncia de dados no ambiente Azure; 1 projeto do tipo Hosted Services, para aplicaes ASP.NET na nuvem, contemplando as classes Web Roles e Worker Roles e 20 projetos para aplicaes do tipo Live Services, suportando as APIs existentes no ambiente Windows Live. At o lanamento comercial do ambiente, esses nmeros de projetos podem mudar, oferecendo novos cenrios para nossas aplicaes na plataforma. Para este artigo, vamos criar uma primeira aplicao para o Windows Azure, ilustrando o processo de desenvolvimento, implantao e administrao do ambiente. A partir da tela de projetos anterior, escolhemos criar um novo projeto do tipo Hosted Services, que deve suportar nossa aplicao. Vamos chamar esse projeto de Revista Mundo .Net Hosted Application - CTP Maio 2009. Durante o processo de criao de um projeto, vemos uma primeira caracterstica do ambiente na nuvem: podemos escolher qual o datacenter ou regio para hospedagem da aplicao e se nosso projeto tem algum relacionamento com outros projetos j existentes no mesmo datacenter selecionado. Isso aparece na figura 3 atravs da opo de Hosted Service Affinity Group, confira:

351

Figura 3 Entrada de demais informaes sobre o projeto Hosted Services sendo criado. Note a opo de escolha do datacenter ou regio disponvel para hospedagem de sua aplicao no Windows Azure.

Permitir a escolha de um datacenter alvo tem um impacto direto na velocidade de acesso ou mesmo flexibilidade de composio da infra-estrutura. Em muitos cenrios, interessante que os consumidores acessem recursos de um datacenter prximo, por questes de latncia de rede ou mesmo legislao de dados. Como visto na figura 3, dentro do projeto estamos criando uma aplicao Web que ter a URL final HTTP://revistamundonet.cloudapp.net para uso. Esta URL escolhida para disponibilizar nossa aplicao atravs da Web para nossos usurios. possvel checar se a URL j est em uso dentro do ambiente, sempre usando o sufixo cloudapp.net no ambiente do Windows Azure. Essa URL exemplo deve permanecer no ar at o lanamento desta edio, no deixe de conferir! Entretanto, considere eventuais indisponibilidades devido o perodo de testes e CTP do ambiente. Criado o projeto e o ttulo para nossa aplicao, o portal oferece uma pgina para a configurao e a implantao da aplicao, apresentando duas reas distintas chamadas Staging e Production. A figura 4 apresenta a tela principal de publicao de aplicaes, onde vemos essas duas reas representadas atravs de dois cubos (que j so clssicos no Azure ), veja:

352

Figura 4 Tela principal de publicao de aplicaes na infra-estrutura Azure. Note os dois ambientes de Staging e Production disponveis no portal.

Vale lembrar que o Windows Azure oferece um ambiente de computao, persistncia de dados e gerenciamento que baseado em mquinas virtuais sobre diversos datacenters padronizados e de ltima gerao. Devido seu aspecto de provisionamento dinmico e de virtualizao, os ambientes de Staging (homologao) e Production (produo) so de fato idnticos em capacidade e poder de processamento. Esse recurso muitas vezes crtico para aplicaes no mundo real e no raro encontrar empresas que possuem ambientes de teste e homologao muito diferentes do ambiente de produo, no mesmo? Assim, podemos afirmar que um dos benefcios do ambiente na nuvem a possibilidade de trabalharmos entre homologao e produo com a mesma infra-estrutura, gerando os mesmos resultados em todas as fases de produo da soluo. Nesse ponto, estamos preparados para a publicao de nossa primeira aplicao no Windows Azure. O prximo tpico apresenta de forma resumida os primeiros passos para o desenvolvimento sobre o Visual Studio 2008.

Web Role e Worker Role no Windows Azure: aplicaes na nuvem As aplicaes para o Windows Azure respeitam dois tipos de processos disponveis, a saber: Web role: que um site web, ASP.NET, com servios WCF, Silverlight, AJAX, imagens, CSS, etc. Worker role: que similar ao servio Windows local (on-premise), sendo executado de forma desacoplada em background. Esses servios so stateless (sem manuteno de estado) e todo acesso suporta balanceamento de carga. A integrao entre Web role e Worker role normalmente feita atravs de filas, como o tipo Queue do Windows Azure.

A figura 5 ilustra esses processos, veja:

353

Figura 5 Processos, mquinas virtuais e poder de computao no Windows Azure. A malha do Windows Azure representa a infra-estrutura de hardware, onde encontramos os milhares de servidores disponveis no datacenter.

Com a instalao do pacote Windows Azure Tools for Visual Studio 2008, temos disponveis os templates para a construo desses processos. Note que no CTP de Maio, os nomes originais Web role e Worker role mudaram para Web Cloud Service e Worker Cloud Service:

Figura 6 Templates disponveis no Visual Studio 2008 para a construo de processos para o Windows Azure. Destaque para os templates da pasta Cloud Services.

Na pasta Cloud Services vemos os templates principais Web Cloud Service, Worker Cloud Service e o Web and Worker Cloud Service. Vamos escolher esse ltimo para nosso exemplo. O template Web And Worker Cloud Service gera automaticamente uma soluo chamada CloudService1, formada por 3 projetos no Visual Studio: o projeto CloudService1, que define as roles participantes da soluo, os arquivos de configurao e modelo de servios; o projeto CloudService1_WebRole, que implementa uma aplicao ASP.NET para nossa interface com o usurio; e o projeto CloudService1_WorkerRole, que implementa o servio desacoplado para o processamento de dados e funcionalidades em nossa aplicao. Como o projeto Web Cloud Service um site ASP.NET, podemos aplicar os vrios recursos disponveis no .NET Framework 3.5 SP1, assim como componentes em Silverlight e controles AJAX, criando interfaces sofisticadas, conforme a necessidade. Para nosso exemplo, vamos fazer o mnimo de mudana no template, apenas adicionado ao ASP.NET alguns labels e ttulo para a pgina.

354
Ao mesmo tempo, a classe Worker Cloud Service pode ser usada para o processamento de dados de forma assncrona, consumindo informaes fornecidas pelo usurio da aplicao. Para a integrao entre Web Role e Worker Role o ambiente Azure oferece o tipo de dados Queue (fila). A listagem 1 apresenta o arquivo default.aspx do projeto CloudService1_WebRole, com o mnimo de mudana sobre o template gerado automaticamente, confira: Listagem 1. Arquivo de configurao Default.aspx.

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="CloudService1_WebRole._Default" %>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" > <head runat="server"> <title>Minha primeira aplicao na nuvem com a revista Mundo .NET</title> </head> <body> <form id="form1" runat="server"> <div><p>Windows Azure na revista MUNDO .NET:</p></div> <div><ul> <li>Artigo: Introduo ao Windows Azure - edio Abril/Maio</li> <li>Artigo: Plataforma de Servios do Windows Azure - edio Junho/Julho</li> <li>Artigo: Construindo aplicaes para o Windows Azure - edio Agosto/Setembro </li> </ul></div> </form> </body> </html>

Com o cdigo gerado pelo template e nossas adies, o projeto j pode ser publicado no Azure via opo Publish disponvel atravs do Solution Explorer no projeto CloudService1, como vemos a seguir:

355

Figura 7 Publicando nossa aplicao no Windows Azure. A publicao da aplicao envolve dois arquivos: o primeiro tem extenso cspkg, contendo os bits da aplicao propriamente dita; o segundo tem extenso cscfg e representa o arquivo de configurao da aplicao no ambiente Azure. Em nosso exemplo, os arquivos publicados so o CloudService1.cspkg e ServiceConfiguration.cscfg. Vale destacar que o arquivo de configurao da aplicao descreve o modelo de servios e ambiente que ser demandado para nossa aplicao. A listagem 2 ilustra nosso arquivo de configurao, como gerado automaticamente pelo Visual Studio 2008: Listagem 2. Arquivo de configurao ServiceConfiguration.cscfg

<?xml version="1.0"?> <ServiceConfiguration serviceName="CloudService1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ ServiceConfiguration"> <Role name="WebRole"> <Instances count="1"/> <ConfigurationSettings> </ConfigurationSettings> </Role> <Role name="WorkerRole"> <Instances count="1"/> <ConfigurationSettings> </ConfigurationSettings>

356
</Role> </ServiceConfiguration>

No arquivo acima temos um modelo de servios descrevendo o nmero de instncia de cada role de processo esperado para nossa aplicao. O template do Visual Studio gera automaticamente uma configurao para 1 instncia de WebRole e 1 instncia de WorkerRole. Aps a publicao do projeto no portal do Azure, podemos subir uma nova configurao, atravs de um novo arquivo ServiceConfiguration.cscfg, ou alterar o nmero de instncias necessrias para nossa soluo diretamente via pginas do portal. O Publish do Visual Studio tambm abre automaticamente a pgina de administrao do Azure, permitindo o upload da aplicao, subindo os arquivos cspkg e cscfg, como vemos na figura 8:

Figura 8 Subindo os arquivos de aplicao e configurao no ambiente do Windows Azure.

Terminado o upload dos arquivos, o portal apresenta a rea de Staging preenchido, oferecendo as aes de execuo (boto Run), configurao (boto Configure) e remoo da soluo (boto Delete). Em ambiente de Staging recebemos uma URL temporria para testes, que j permite a execuo da aplicao. Em nosso teste, uma URL temporria exemplo foi a http://f9decc5846764615b4e2532b9283f701.cloudapp.net/. A figura 9 ilustra o ambiente preparado para execuo em Staging, logo aps a alocao da aplicao e sua execuo pelo boto Run, veja:

357

Figura 9 Aplicao publicada no ambiente de homologao (Staging), com a URL temporria disponvel para testes. Note o boto de promoo para produo em destaque.

Terminada a fase de testes e homologao, podemos promover nossa aplicao para o ambiente de produo, o que libera a URL definitiva da aplicao para nossos usurios. A figura 10 finalmente mostra nossa aplicao publicada em ambiente de produo (Production), disponvel para uso. Note que a pgina indica na rea de produo 1 instncia de WorkerRole e 1 instncia de WebRole iniciadas. De acordo com a configurao da aplicao pelo arquivo ServiceConfiguration.cscfg, podemos mudar o nmero de instncias dedicadas para cada tipo de Role de nossa aplicao.

358

Figura 10 Aplicao publicada no ambiente de produo (production) do Windows Azure.

Se voc acompanhou os passos de deploy, inicializao e promoo da aplicao no portal do Azure at aqui, notou que a promoo de Staging para Production rpida, migrando a aplicao j em estado Started (inicializado) e pronta para uso. Note tambm que somente aps a publicao para a produo, a URL definitiva disponvel. Em nosso exemplo, voc pode conferir a aplicao usada para testes na URL HTTP://revistamundonet.cloudapp.net/. Com isso, terminamos a primeira parte deste artigo, onde vimos os primeiros passos para a construo de nossas aplicaes no ambiente do Windows Azure. A seguir, veremos alguns projetos exemplos e ferramentas de administrao disponveis gratuitamente para nossas aplicaes na nuvem.

Exemplos de projetos e ferramentas de administrao para o Windows Azure Diversos grupos de usurios, empresas, entusiastas e iniciativas da comunidade tm colaborado com a publicao de projetos exemplos para o Azure. A Microsoft mantm uma iniciativa OpenSource j muito conhecida que o portal CodePlex (HTTP://www.codeplex.com). Atravs deste portal, encontramos diversos projetos exemplos e ferramentas que esto em desenvolvimento e disponveis para o mercado, sendo boas dicas para nossas interaes com a nuvem. A seguir, vamos percorrer alguns dos projetos principais: Azure Storage Explorer, Version 2.1 (May 2009) Ref.: http://azurestorageexplorer.codeplex.com/ Descrio: O Azure Storage Explorer uma ferramenta visual que permite a explorar seus projetos do tipo Storage Accounts no Windows Azure. Entre os tipos de armazenamentos possveis temos: blobs, queues e tables. Atravs do Azure Storage Explorer possvel criar ou deletar containeres de blobs, queues e tables, alm dos itens associados. Boa dica para quem est montando vrios exemplos no Azure Storage. Windows Azure Management Tool (MMC) Ref.: http://code.msdn.microsoft.com/windowsazuremmc Descrio: O Windows Azure Management Tool tambm foi criado para o gerenciamento de suas contas de storage no Windows Azure. Desenvolvido como um MMC, a ferramenta permite a criao e a administrao de blobs e queues apenas. A interface bem completa e elegante, mas o MMC no trabalha com os tipos tables e seus itens.

359
Por enquanto, a atual verso do Windows Azure Management Tool no trabalha com Windows 7, mas funcional nos outros sistemas operacionais e vale ser conferida. Azure Issue Tracker Ref.: http://azureissuetracker.codeplex.com/ Descrio: o Azure Issue Tracker um exemplo completo de soluo SaaS - Software as a Service que aproveita os recursos de computao na nuvem sobre o Windows Azure. A soluo utiliza recursos como o controle de acesso (Access Control) e LiveID, um modelo de autenticao baseado em declaraes (claim-based authentication). A soluo ainda permite configurao, monitorao e a integrao entre a verso corporativa local (on-premise) e a nuvem. Alm do modelo de acesso, a soluo utiliza os recursos do SQL Data Services para persistncia de dados na nuvem, aproveitando a alta escalabilidade do Azure. Excelente dica e cdigo bem completo para uma soluo mais sofisticada. Confira! Azure Application Monitor Ref.: http://azuremonitor.codeplex.com/ Descrio: O Azure Application Monitor mais uma ferramenta que permite a monitorao e acompanhamento de suas aplicaes hospedadas sobre o Windows Azure. O pacote inclui uma biblioteca runtime que captura as informaes da aplicao e permite a monitorao atravs de uma interface desktop, em tempo real. Mais uma boa dica de estudo, j que o fonte tambm est disponvel. WPF Client for the Windows Azure Blob Storage Ref.: http://azureblobclient.codeplex.com/ Descrio: O WPF Client for Azure Blob outro exemplo de aplicao escrita em Visual Basic 2008, que permite ao desenvolvedor gerenciar arquivos armazenados em seu servio de Blobs no Azure Storage. Bem interessante e vale como dica para quem procura exemplos fora do universo C#. Outros exemplos de projetos so o Azure Blob Explorer (http://blobexplorer.codeplex.com/) e o Azure Grid (http://azuregrid.codeplex.com/), que tambm operam sobre recursos do Azure e esto sendo desenvolvidos pela comunidade.

Quando mover uma aplicao para a nuvem? Recentemente, a computao na nuvem tem sido alvo de diversos trabalhos e artigos discutindo seu impacto para a infra-estrutura de TI nas empresas. Uma pergunta que surge sobre o uso do Windows Azure, por exemplo, quando iremos para o ambiente local (corporativo, enterprise, on-premise) e quando iremos para a nuvem. Quais aplicaes so indicadas para o enterprise e quais podem ser colocadas na nuvem? Podemos combinar solues, parte na nuvem e parte no enterprise? Essas perguntas no so simples, mas sugerem algumas abordagens interessantes. Podemos avaliar, por exemplo, nossa necessidade por Controle versus Economia de Escala. Nessa abordagem, encontramos 3 grandes participantes em nossa composio de infra-estrutura: o ambiente on-premise onde participa o hardware de nossa empresa, local, sobre nossa superviso e controle e responsabilidade; o ambiente de hosting, baseado em provedores locais, onde podemos fazer a hospedagem remota de nossas aplicaes ou servidores colocados; e o ambiente elstico da nuvem, onde contratamos por demanda mais ou menos capacidades de computao, provisionando de forma dinmica os recursos necessrios e acessando esses recursos atravs de protocolos abertos como HTTP, REST, SOAP, etc. via internet.

A figura 11 ilustra esses 3 ambientes, ao longo da graduao entre controle e economia de escala. Essa composio deve envolver uma combinao de custos, assim como uma maior ou menor necessidade de controle sobre nossas aplicaes.

360

Figura 11 Controle versus Economia de Escala na deciso pela infra-estrutura de nossas aplicaes.

A melhor composio entre os diferentes ambientes de TI deve considerar tambm questes de integrao entre os ambientes. Aplicaes presentes no enterprise devero ser integradas com aplicaes e servios em provedores locais, assim como servios disponveis instalados na nuvem. Alm dos aspectos envolvidos com o software SaaS, outros elementos de TI como infra-estrutura, plataforma, repositrios de dados, monitorao, gerenciamento, comunicao, integrao, entre outros, so igualmente importantes. Como arquitetos de solues, de infra-estrutura e desenvolvedores devemos avaliar os aspectos de integrao e quais servios de nossas solues podem aproveitar os benefcios do modelo dinmico de provisionamento no Windows Azure. Reconhecer os cenrios corretos para a nuvem to importante quanto uma boa implementao com o Visual Studio. Como tomadores de deciso, gerentes e diretores de empresas devemos avaliar as oportunidades econmicas da composio de infra-estruturas, avaliando a reduo de custo potencial com o uso de espao de armazenamento, poder de computao e gerenciamento elstico disponveis com a nuvem. Esse tipo de computao ainda envolve a economia de escala, que como vimos anteriormente, pode ser decisivo para algumas aplicaes. At o final do ano, a Microsoft deve anunciar os valores de subscrio e os modelos de licenciamento e contratao de servios no Windows Azure. Vamos acompanhar de perto. De fato, estamos no incio de uma bela jornada, com desafios bem interessantes pela frente. Porm, ser um caminho divertido afinal, estamos descobrindo uma nova plataforma de desenvolvimento para nossas aplicaes, solues e empresas. Vamos aproveitar a viagem!

Consideraes Finais Este artigo apresentou um pouco mais sobre a plataforma Windows Azure, seus recursos online e os primeiros passos na criao de projetos para o ambiente. Vimos os principais templates disponveis com o Visual Studio, o processo de criao, configurao e execuo no portal. Apresentamos alguns projetos exemplos que esto disponveis no site do CodePlex, para estudos adicionais e por fim, fechamos o artigo com algumas consideraes sobre o modelo de deciso de hospedagem de nossas aplicaes, entre o ambiente local e a nuvem. No deixe de conferir os demais artigos e documentos disponveis no portal do Windows Azure, que ampliam os temas aqui percorridos com mais detalhes, exemplos e boas dicas de programao.

Referncias e Links Importantes Alguns links importantes para suportar este artigo voc encontra a seguir: Windows Azure Software Development Kit (May 2009 CTP)

361
http://www.microsoft.com/downloads/details.aspx?FamilyID=22703881-1197-49e5-8231f49095cfd0bb&displaylang=en Windows Azure Tools for Microsoft Visual Studio (May 2009 CTP) http://www.microsoft.com/downloads/details.aspx?FamilyID=11b451c4-7a7b-4537-a769e1d157bad8c6&displaylang=en Azure Services Training Kit - April Update 2009 http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B30953B7B77EDF78&displaylang=en [Blog] Srie especfica sobre o sistema operacional Windows Azure http://blogs.msdn.com/wcamb/archive/tags/Windows+Azure/default.aspx [Blog] Srie especfica sobre a plataforma de servios do Windows Azure http://blogs.msdn.com/wcamb/archive/tags/Azure+Services+Platform/default.aspx

362

Revista Mundo .Net : Plataforma de Servios do Windows Azure


Ol pessoal, tudo certo? Boas novas: j est nas bancas a nova edio da revista Mundo .NET, com mais um artigo especial sobre a Plataforma de Servios do Windows Azure, veja:

Neste artigo, continuo explorando os vrios servios da plataforma Azure, fazendo um maior detalhamento sobre os grupos de capacidades para dados, processos e colaborao em aplicaes na nuvem. No deixe de conferir e enviar seus comentrios, como sempre! Por enquanto s! At o prximo post :) Waldemir.
Posted: Friday, June 19, 2009

Plataforma de Servios do Windows Azure


Por Waldemir Cambiucci Junho 2009

Conhea mais sobre os blocos construtivos e servios para a construo de aplicaes na nuvem. Este artigo apresenta os principais componentes e blocos construtivos da plataforma de servios do Windows Azure, o novo sistema operacional anunciado pela Microsoft construdo para a computao na nuvem. Veremos aqui os recursos para a construo de servios, workflows e bancos de dados na nuvem, assim como as novidades dos ltimos CTPs e atualizaes da plataforma que tem o lanamento previsto para o final de 2009.

Introduo 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.

363
Uma grande caracterstica desse modelo 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, por exemplo, 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 ou um arquivo XML. 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 infra-estrutura que ser configurada 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. Assim, a computao na nuvem oferece o poder da alta escalabilidade e alcance global com os conceitos de software como servios oferecidos pelo modelo SaaS Software as a Service. Embora a computao na nuvem seja baseada numa coleo de velhos e novos conceitos como SOA Service Oriented Architecture, Grid Computing (ou computao distribuda), virtualizao e modelos de entrega de software como servio, tendncias como o chamado Negcio gil (ou Agile Business) aumentaram ainda mais o interesse sobre o tema.

Um sistema operacional na nuvem Recentemente, a computao na nuvem tem sido alvo de diversos trabalhos e artigos discutindo seu impacto para a infra-estrutura de TI nas empresas. Alm dos aspectos envolvidos com o software como servios, outros elementos de TI como infra-estrutura, plataforma, repositrios de dados, comunicao, integrao, entre outros, so tambm componentes que podero ser oferecidos pelo modelo de computao na nuvem. Veja a figura a seguir, onde temos um exemplo de taxonomia para as vrias camadas de um ambiente na nuvem:

Figura 1 Taxonomia proposta para a computao na nuvem, por Lamia Youseff.

A proposta acima foi apresentada por Lamia Youseff (ver referncias no final do artigo) e classifica aplicaes na nuvem (cloud applications), assim como outros recursos disponveis como a plataforma (PaaS - Platform as a Service), a comunicao (CaaS - Communication as a Service), o armazenamento (DaaS Data as a Service), e a infra-estrutura na nuvem (IaaS Infrastructure as a Service). 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 e operao pelo mundo.

364
Capacidades do Windows Azure 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 s falhas de servios, entre outras atividades;

Para atender as necessidades acima, o Windows Azure possui trs grupos de capacidades: computao, armazenamento e gerenciamento. A figura a seguir ilustra essa organizao, como proposto no artigo Introducing The Azure Services Platform, do autor David Chappell, veja:

Figura 2 Computao, Gerenciamento e Armazenamento na plataforma Windows Azure.

Nesse ambiente, as aplicaes rodam sobre uma infra-estrutura de computao flexvel, podendo persistir dados na nuvem, enquanto aproveitam a malha de computao disponvel nos datacenters da Microsoft. Vejamos a seguir alguns detalhes dessa organizao: Gerenciamento: o controlador de malha (ou Fabric Controller) o responsvel pela organizao da infra-estrutura contratada pelo cliente, atravs de um modelo de servios. A configurao permite definir quantas mquinas sero provisionadas para front-end, back-end, assim como o nmero de instncias de cada papel em execuo. Essa configurao feita atravs de um arquivo de configurao, que descreve o ambiente desejado para o Fabric Controller. A listagem a seguir um exemplo simples de arquivo de configurao de uma aplicao para o Windows Azure, veja: Listagem 1. Exemplo de arquivo de configurao para o Windows Azure. <?xml version="1.0"?> <ServiceConfiguration serviceName="GuestBook1" xmlns="http://schemas.microsoft.com/ServiceHosting/2008/10/ServiceConfiguration"> <Role name="WebRole"> <Instances count="1" />

365
<ConfigurationSettings> <Setting name="AccountName" value="guestbook"/> <Setting name="AccountSharedKey" value="putyourownkeyhere"/> <Setting name="BlobStorageEndpoint" value="http://blob.core.windows.net"/> <Setting name="QueueStorageEndpoint" value="http://queue.core.windows.net"/> <Setting name="TableStorageEndpoint" value="http://table.core.windows.net"/> </ConfigurationSettings> </Role> <Role name="Worker"> <Instances count="1" /> <ConfigurationSettings> <Setting name="AccountName" value="guestbook"/> <Setting name="AccountSharedKey" value="putyourownkeyhere"/> <Setting name="BlobStorageEndpoint" value="http://blob.core.windows.net"/> <Setting name="QueueStorageEndpoint" value="http://queue.core.windows.net"/> <Setting name="TableStorageEndpoint" value="http://table.core.windows.net"/> </ConfigurationSettings> </Role> </ServiceConfiguration>

Computao: o ambiente de computao sobre o Windows Azure virtualizado e baseado em Windows Server 2008. As principais caractersticas desse ambiente so: Suporte total ao .NET framework 3.5 sp1 sobre IIS7 Internet Information Server. Infra-estrutura Windows Server 2008 64 bit Virtualizao oferecida atravs de Hyper-V Microsoft Web Role: implementadas como Web Sites (ASP.NET) e Web Services (WCF) Worker Role: similares a servios Windows locais Servidores Stateless (sem manuteno de estado) Acesso via Http(s) e TCP

Atualmente, a computao na plataforma Azure (CTP de Maro) suporta a execuo de cdigo gerenciado somente. No futuro, a plataforma dever suportar tambm cdigo no-gerenciado, como foi anunciado durante o PDC 2008. J possvel executar cdigo PHP atravs do mdulo IIS FastCGI na plataforma Azure, como tambm anunciado durante o ltimo evento MIX 09, realizado em maro de 2009 (confira mais no link http://visitmix.com).

366
Existem dois papis possveis para nossos processos sobre o Windows Azure: Web role: que um site web, ASP.NET, com servios WCF, imagens, CSS, etc. Worker role: que similar ao servio Windows local (on-premise), sendo executado de forma desacoplada em background na plataforma.Todos os servidores so stateless (sem manuteno de estado) e todo acesso suporta balanceamento de carga. A figura 3 ilustra esses processos.

Figura 3 Processos, mquinas virtuais e poder de computao no Windows Azure.

Armazenamento: o espao de armazenamento de dados, durvel e de alta escalabilidade. Entre as principais caractersticas desse ambiente, temos: Durvel: toda escrita persistida em disco, no em memria; Escalvel: voc ter diversos servidores com seus dados replicados; Disponvel: assim como ocorre com a computao, o Windows Azure garante a disponibilidade de seus dados, replicando o contedo em diversos servidores; Blobs: similar ao sistema de arquivos; podemos usar blobs para armazenar contedo e suas alteraes, dados no estruturados, imagens, filmes, etc.; Tables: suportam dados semi-estruturados, oferecendo um armazenamento de entidades particionvel, permitindo a persistncia de linhas em mltiplos servidores; Queues: so filas simples que permitem desacoplar as Web Roles das Worker Roles de uma aplicao na nuvem. Existem vrios cenrios onde filas permitem o desacoplamento entre os produtores e consumidores de mensagens; Interfaces REST: permite o acesso a dados a partir da web sobre HTTP, sendo possvel tambm o uso de ADO.NET Data Services para seu consumo;

Enfim, aplicaes sobre o Windows Azure podero aproveitar os diferentes processos (Web roles e Worker roles), enquanto consomem dados de diferentes tipos no ambiente de armazenamento no Windows Azure. Os recursos blobs, tables e queues so componentes do chamado Azure Storage, que oferece esses recursos de persistncia de dados para nossas aplicaes. A figura 4 ilustra essa combinao de recursos, processos e dados no Azure Storage, veja:

367

Figura 4 Processos, mquinas virtuais, armazenamento e poder de computao no Windows Azure.

Computao, Armazenamento e Gerenciamento so os principais componentes do Windows Azure, que nos ajudam a entender suas capacidades e recursos disponveis para aplicaes na nuvem. Sobre essa infra-estrutura temos uma plataforma de servios online conhecida como plataforma de servios Azure, nosso prximo assunto. Para comear, confira a figura 5, onde os principais componentes da plataforma de servios Azure so apresentados. Na edio de abril/maio da revista Mundo .NET tivemos uma introduo sobre esses servios.

Figura 5. Plataforma de Servios do Windows Azure.

Nos ltimos meses, a Microsoft tem anunciado algumas novidades sobre as principais capacidades da plataforma. A seguir, vamos conferir alguns aspectos interessantes, considerando os pacotes CTPs Community Technology Preview e SDK Software Development Toolkit, de Maro e Abril de 2009.

Recursos do SQL Services: base de dados na nuvem

368
A figura 6 apresenta os principais componentes do SQL Services, o conjunto de servios voltado para o armazenamento de dados na nuvem no Windows Azure.

Figura 6. Principais capacidades do SQL Services : base de dados na nuvem.

O principal servio desse pacote o SQL Data Service (SDS), responsvel pela persistncia de dados. At o atual pacote CTP de maro, o SDS oferece para as aplicaes uma interface de acesso via REST/SOAP, que suporta uma estrutura de dados chamada ACE Authority, Container e Entity. Essa organizao facilita o acesso aos dados persistidos na nuvem atravs de consultas REST poderosas, sobre dados geograficamente distribudos entre vrios datacenters. Durante o evento MIX09 realizado em maro nos Estados Unidos, foi anunciado que o SDS deve sofrer alteraes, atendendo aos pedidos de diversas empresas usurias da plataforma. Entre as mudanas, uma especial: nossas aplicaes locais podero falar com a nuvem atravs de consultas relacionais comuns, as mesmas que temos quando falamos com nossos bancos de dados locais, como o SQL Server. A figura 7 apresenta a nova organizao prevista para o SDS, que deve suportar interfaces HTTP/REST e TDS Tabular Data Stream, permitindo consultas ao modelo T-SQL tradicional.

Figura 7. Principais mecanismos de acesso para os dados no Windows Azure.

369
Isso deve ampliar o nmero de cenrios possveis para aplicaes locais que persistem dados na nuvem no formato relacional, tornando a integrao local/nuvem muito mais fcil e transparente para as aplicaes, por isso uma grande novidade. Essa inovao deve chegar com o prximo CTP do SDS, entre junho e julho (at o fechamento deste artigo, o time de produto do SQL Services no tinha divulgado a data de lanamento, por isso, confira o blog do time no link: http://blogs.msdn.com/ssds/ e a sesso sobre SDS no MIX09 http://videos.visitmix.com/MIX09/T06F).

Recursos do .NET Services: servios e workflows na nuvem O .NET Services estende os recursos do WCF Windows Communication Foundation e do WF Windows Workflow Foundation para a nuvem, criando um ambiente para a publicao de servios e workflows no Windows Azure. Quando pensamos na integrao entre aplicaes locais (on-premise) e aplicaes na nuvem, o .NET Services oferece 3 servios para suportar cenrios diversos: Service Bus, Workflow Services e Access Control. O Service Bus Services desenhado para oferecer um barramento de servios de propsito geral, disponvel na internet na escala da internet. Podemos considerar o Service Bus como um ESB - Enterprise Service Bus na nuvem, tambm chamado de ISB - Internet Service Bus. Fundamentalmente, o .NET Services Bus permite a conexo entre aplicaes atravs de um modelo de publicao/subscrio de mensagens (publish/subscribe) muito simples. A figura 8 ilustra a publicao e a subscrio de servios consumidos por uma aplicao.

Figura 8. Servios registrados no .NET Service Bus do Windows Azure.

O Workflow Services oferece um ambiente compartilhado de execuo para workflows declarativos do tipo seqencial. Esses workflows so realmente focados na orquestrao de mensagens atravs do barramento de servios do Service Bus. Assim, imagine um cenrio onde publicamos algumas mensagens no barramento e esperamos por respostas. Esse o foco do workflow services, permitindo a construo desse tipo de orquestrao na nuvem. A figura 9 ilustra a orquestrao de servios na nuvem.

Figura 9. Workflows coordenando chamadas de servios no .NET Services do Windows Azure.

Vale destacar que todos os recursos para a construo de servios e workflows para a nuvem so oferecidos pelo prprio Visual Studio 2008, atravs da instalao do pacote de ferramentas para o Windows Azure. Entre os componentes e shapes instalados para a construo de workflows para a nuvem, destacamos o CloudHttpReceive, CloudHttpSend, CloudServiceBusSend, CloudServiceBusReceive, CloudXPathRead, entre outros. Finalmente, o Access Control Services desenhado para oferecer um controle de acesso baseado em declaraes (claims-based). Essencialmente, isso permite a definio de regras de autorizao para aplicaes que usam a abordagem baseada em declaraes, uma tendncia que tem sido adotada em muitos produtos da plataforma Microsoft. O Access Control desenhado para transformar declaraes de entrada em declaraes de sada baseado em regras que voc define. Essas declaraes podem ser usadas para definir requerimentos de

370
autorizao para acessar servios, assim como servios personalizados conectados ao Service Bus ou a outro provedor de servios atravs da plataforma Azure.

Figura 10. Controle de Acesso do .NET Services em aplicaes no Windows Azure.

Colocando todos os servios do .NET Services juntos, podemos criar um cenrio de integrao onde uma aplicao ASP.NET persiste dados no SQL Data Services, consumindo servios publicados no barramento Service Bus. Para acessar os servios do barramento, a aplicao utilizar declaraes (claims) para realizar a autorizao junto ao servio. Para isso, o Access Control permite a autorizao na nuvem.

Figura 11. Exemplo de aplicao Web sobre o Windows Azure, consumindo dados do SQL Data Services, servios registrados no Service Bus e controle de acesso com o Access Control.

Um cenrio semelhante utilizado no projeto Azure Issue Tracker, um exemplo de soluo SaaS Software as a Service implementada sobre o Windows Azure. O projeto est colocado no codeplex e seus fontes so pblicos. No deixe de conferir atravs do link http://www.codeplex.com/azureissuetracker.

Recursos do Live Services: colaborao na nuvem O Live Service um conjunto de servios centrados no usurio, que oferece acesso de forma programtica aos dados de usurios e recursos do Windows Live. Devido essa integrao com o ambiente Live, as aplicaes integradas ao ambiente podem interagir com milhes de usurios de todo o mundo. As aplicaes Live podem estar tanto no ambiente local como na nuvem, permitindo a conexo com diferentes dispositivos, aplicaes, formatos de dados e usurios geograficamente distribudos. Entre os principais servios do ambiente Live temos o Identity Service (ou Live ID), o Live Space, o Virtual Earth, o Live Messenger e o Data Synchronization, que permite a sincronizao de dados entre diferentes aplicaes. A figura 12 apresenta o conjunto completo de participantes do ambiente Live Services.

371

Figura 12. Principais capacidades presentes no Live Services e Live Framework do Windows Azure.

Um servio de destaque nesse ambiente o Live Mesh. Ele utiliza os recursos do Live Framework e do Live Services para integrar dispositivos e computadores, realizando a sincronizao de pastas e documentos atravs da web. Atualmente, o Mesh suporta as plataformas Windows XP, Windows Vista e Mac OS. Dispositivos mveis sero em breve adicionados. Um dos grandes desafios de integrao desses vrios servios do ambiente Live que cada um possui sua prpria API. Por isso, para facilitar a construo de aplicaes, a Microsoft criou o Live Framework, um modelo de programao unificado que permite maior flexibilidade e facilidade na configurao desses vrios servios. Existem dois componentes principais com o Live Framework: Um modelo de programao comum, que consiste de bibliotecas clientes em .NET, Silverlight e Javascript; Um ambiente operacional Live, que oferece instncias locais de servios Live com suporte para sincronizao de dados. Isto permite que aplicaes usem os servios Live tanto em situaes online como off-line.

Finalmente, Live Services e Live Framework foram desenhados para serem abertos e interoperveis, provendo suporte para protocolos padro de internet como HTTP, XML, ATOM, RSS, REST, etc. At o CTP de abril do Live Framework (ver referncias no final do artigo), existem dois tipos de aplicaes que podemos construir com o Live Framework e o Live Services: O primeiro tipo so aplicaes que suportam o Live Mesh e so chamadas de MEWA - Mesh-enabled Web Application. Aplicaes MEWA so aplicaes que usam tecnologias para clientes web como HTML, CSS e Javascript ou tecnologias ricas como Silverlight. MEWAs podem ser instaladas em usurios finais rodando em ambiente web ou desktop. A principal vantagem de aplicaes MEWAs permitir a sincronizao de dados atravs dos servios do Live, em situaes off-line ou on-line. O segundo tipo de aplicaes so sites web que suportam o Live Framework, tambm chamadas de Live Framework-enabled Web site. Esse tipo de aplicao essencialmente um site web que pode trabalhar com dados de usurios atravs dos servios do Live, a partir da liberao de acesso feita pelos usurios.

Sem dvida, os servios do ambiente Live complementam os cenrios de interfaces e aplicaes na nuvem, criando vrias oportunidades de integrao, usabilidade e navegao para nossas solues.

Roadmap Para a construo desse artigo, utilizei as informaes disponveis com os CTPs de Maro e Abril de 2009 para a plataforma Windows Azure, assim como as principais sesses sobre a plataforma, apresentadas durante os ltimos MIX 2009 (http://visitmix.com/) e o Tech-Ed US 2009 (http://www.microsoft.com/events/TechEd2009/), realizados nos

372
Estados Unidos. Ao longo do ano, novos pacotes, CTPs e SDKs devem ser disponibilizados, enquanto a Microsoft atende aos feedbacks do mercado. Algumas empresas no Brasil j esto experimentando os recursos da plataforma com projetos e cenrios de testes. Por isso, no deixe de participar com seus comentrios e sugestes junto aos times do Windows Azure, no link: http://www.azure.com/. Para obter mais informaes, confira os links listados na seo de referncias deste artigo.

Consideraes Finais Este artigo apresentou um pouco mais sobre a plataforma Windows Azure, seus servios e alguns exemplos de cenrios de utilizao para aplicaes na nuvem. Vimos que as trs principais capacidades do Windows Azure so computao, gerenciamento e armazenamento, conceitos comuns para qualquer plataforma de aplicao, seja ela local ou remota (na nuvem). Vimos tambm que recursos do Live sero importantes para aplicaes na nuvem, uma vez que seus servios oferecem ferramentas e mecanismos de integrao com milhes de usurios conectados pelo mundo, atravs dos servios online da Microsoft. Finalmente, podemos afirmar que a TI do futuro ser cada vez mais hbrida, combinando recursos e dados locais com servios e dados remotos, aproveitando a infra-estrutura provisionvel e dinmica de datacenters pelo mundo. A computao na nuvem ser apenas mais um componente do mapa de recursos de uma infra-estrutura de TI no futuro. Isso significa que vamos continuar monitorando nossas aplicaes locais, assim como novos componentes e servios com nveis de operao diferenciados, instalados na nuvem. Na plataforma de servios do Windows Azure, por exemplo, todos os servios publicados e consumidos geram informaes estatsticas de uso, assim como logs de operao, que podem ser recuperados e monitorados como uma aplicao local. Por isso, as oportunidades sero enormes para empresas, arquitetos, desenvolvedores e profissionais de TI. No fique de fora dessa! Continue acompanhando a evoluo do Windows Azure ao longo do ano e aproveite os recursos da computao na nuvem!

Referncias e Links Importantes Alguns links importantes para suportar este artigo voc encontra a seguir: Windows Azure Software Development Kit (March 2009 CTP) http://www.microsoft.com/downloads/details.aspx?familyid=B44C10E8-425C-417F-AF103D2839A5A362&displaylang=en Windows Azure Tools for Microsoft Visual Studio (March 2009 CTP) http://www.microsoft.com/downloads/details.aspx?familyid=59E8FC0C-C399-4AB7-8A93882D8E74B67A&displaylang=en Microsoft .NET Services SDK (March 2009 CTP) http://www.microsoft.com/downloads/details.aspx?familyid=8D1D1D5E-1332-4186-B33F26D053759E49&displaylang=en Live Framework Tools for Microsoft Visual Studio April 2009 CTP http://www.microsoft.com/downloads/details.aspx?familyid=4257C275-BE72-4AF8-B2F01E01C67FB8BF&displaylang=en Live Framework SDK April 2009 CTP http://www.microsoft.com/downloads/details.aspx?familyid=3DD6E663-B4D9-44E3-971C101325E39413&displaylang=en Azure Services Training Kit - April Update 2009 http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B30953B7B77EDF78&displaylang=en Toward a Unified Ontology of Cloud Computing, Lamia Youseff, Maria Butrico, Dilma Da Silva. http://www.cs.ucsb.edu/~lyouseff/CCOntology/CloudOntology.pdf

373
Introducing The Azure Services Platform An Early Look At Windows Azure, .Net Services, Sql Services, And Live Services, David Chappell. http://www.davidchappell.com/writing/white_papers/Azure_Services_Platform_v1.0--Chappell.pdf Srie de posts sobre o Windows Azure http://blogs.msdn.com/wcamb/archive/tags/Azure+Services+Platform/default.aspx

374

Revista Mundo .Net : Computao na Nuvem com Windows Azure


Ol pessoal, tudo certo? Boas novas: j est nas bancas a nova edio da revista Mundo .NET, com um artigo especial sobre Computao na Nuvem com o Windows Azure, veja:

A idia foi consolidar os principais tpicos sobre o Windows Azure num artigo introdutrio e bastante amplo sobre os servios e principais recursos disponveis na plataforma. No deixe de conferir e enviar seus comentrios! Novos artigos j esto a caminho Por enquanto s! At o prximo post :) Waldemir.
Posted: Wednesday, April 22, 2009

Introduo ao Windows Azure


Por Waldemir Cambiucci Abril 2009

Um sistema operacional e uma plataforma de servios na nuvem Este artigo apresenta uma introduo sobre o Windows Azure, o novo sistema operacional anunciado pela Microsoft durante o PDC 2008 Professional Developers Conference voltado para a computao na nuvem. Veremos aqui os principais conceitos do Windows Azure, seu modelo de computao elstica e os principais componentes da plataforma de servios que ele oferece.

Introduo Imagine uma aplicao ASP.NET instalada num grupo de servidores para atendimento de requisies que chegam a partir de clientes Web. Imagine ainda que atrs dessa bateria de servidores temos um grupo de mquinas para as regras de negcio, coordenao de processos ou mesmo servios implementados em WCF Windows Communication Foundation, fornecendo funcionalidades para essa aplicao. Tambm no back-end encontramos as

375
mquinas para bancos de dados ou sistemas de integrao com o legado da empresa, acessando as chamadas aplicaes linhas de negcio (LOB Line of Business Applications). Esse cenrio muito comum nas empresas hoje em dia, implementado numa infra-estrutura prpria (on-premise) ou eventualmente com mquinas em provedores e hosts locais. A partir de uma campanha de marketing, que coloque em evidncia sua empresa, ou mesmo devido o crescente interesse pelas funcionalidades da aplicao, o volume de transaes deve crescer ao longo do tempo, aumentando o nmero de requisies ou mesmo de usurios simultneos nas pginas e servios da soluo. Em seu planejamento, voc prepara esse crescimento, disparando a compra de mais servidores, mais infra-estrutura de rede e a configurao da nova parte da TI para a aplicao. Com esse crescimento, ganhamos um custo de operao adicional, mais mquinas para administrar, monitorar, enquanto voc passa a ser responsvel pela atualizao de software bsico e instalao das funcionalidades da aplicao em mais mquinas. Os riscos e desafios aumentam, no verdade?! Imagine agora que o volume de acesso e requisies diminua por alguma razo, estabilizando num patamar inferior ao volume inicialmente previsto de crescimento, recuando para o volume original de acesso. Suas mquinas esto agora ociosas a maior parte do tempo, ainda consumindo custos de operao, administrao, energia eltrica, monitorao, etc. No seria interessante poder simplesmente mudar um arquivo de configurao e desprovisionar essas mquinas adicionais, pagando novamente os custos originais do sistema? E que tal fazer esse provisionamento/desprovisionamento quantas vezes quiser, enquanto for necessrio? O cenrio apresentado o ambiente perfeito para o modelo de computao na nuvem e o Windows Azure. A computao na nuvem 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 da computao: olhando o exemplo da introduo, podemos iniciar a operao do sistema com 10 mquinas previstas para o front-end e backend. Com o crescente volume de requisies, 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, podemos simplesmente retornar para a configurao original de 10 mquinas, apenas atualizando a configurao do ambiente na nuvem. Esse poder de configurao conhecido como computao elstica, onde o provisionamento feito de modo dinmico, conforme a demanda pela 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 usa. 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. Um sistema operacional 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. 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;

376
Vamos olhar um pouco mais do ncleo de operao do Windows Azure: ele composto pelos componentes de processamento, gerenciamento de servios (Service Management), virtualizao (Virtualized Compute), espao de armazenamento (Storage) e tipos de dados especficos para o ambiente de computao elstica, como Tables, Blobs, Queues e Locks. A figura a seguir representa esse ncleo do Windows Azure conforme anunciado no PDC 2008:

Figura 1. Componentes do ncleo do sistema operacional Windows Azure.

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;

Muitos outros cenrios so aderentes ao modelo, a lista acima apenas um comeo. Para abordar aspectos da arquitetura do Windows Azure, vamos agora tratar das questes de virtualizao e provisionamento, segurana, recuperao, persistncia de dados e administrao do ambiente. Falando em virtualizao, o Windows Azure provisiona seu poder de processamento e espao de armazenamento atravs de mquinas virtuais, gerenciadas pelo prprio sistema operacional de forma automtica. De fato, o Windows Azure construdo sobre as tecnologias do Windows Server 2008 e o Microsoft Hyper-V, adaptados para o modelo de computao elstica. Assim, quando uma empresa provisiona mais mquinas no Windows Azure, novas mquinas virtuais so instanciadas e uma infra-estrutura de rede preparada automaticamente pelo sistema operacional, oferecendo mais poder de processamento para sua aplicao. Esse aspecto de virtualizao e provisionamento dinmico gerenciado pelo Fabric Controller, um importante componente presente na arquitetura do Azure. Podemos definir o Fabric Controller como um recurso fundamental do Windows Azure. Se o Windows Azure um sistema operacional para o cloud computing, podemos dizer que o Fabric Controller seria seu gerenciador de processos.

377

Figura 2. Provisionamento de mquinas virtuais com o Fabric Controller do Windows Azure.

A partir de requisies disparadas para as aplicaes no Azure, o Fabric Controller (Controlador de Malha) responsvel pela seleo de mquinas virtuais e poder de processamento necessrio para o atendimento dessas requisies. Essa seleo feita de acordo com as especificaes presentes na configurao do ambiente contratado no Azure. Isto , cada aplicao possui um arquivo de configurao que determina os recursos para front-end e back-end, previstos para o atendimento da demanda na aplicao. O modelo de segurana do Windows Azure oferece 5 nveis de isolamento, criando um ambiente altamente protegido para a integridade e proteo de dados e aplicaes. O Windows Azure responsvel pelas configuraes de IP Filtering, isolamento entre mquinas virtuais, firewall, restries de privilgios e isolamento no cdigo gerenciado, garantindo mxima proteo de dados entre os sistemas executados no ambiente do datacenter. Finalmente, o Windows Azure tambm suporta um modelo de tolerncia a falhas e recuperao conhecidos como Fault domains" e Update domains. De acordo com a configurao desejada, possvel definir como ser realizada a recuperao e a atualizao das mquinas virtuais preparadas para o ambiente de sua aplicao, de forma flexvel e dinmica.

Figura 3. Modelo de recuperao e atualizao de hardware do Windows Azure.

O Windows Azure ainda oferece no prprio sistema operacional o conceito de storage de dados. O Windows Azure Storage implementa um repositrio que durvel, escalvel, disponvel, seguro e de grande desempenho para as aplicaes. Entre as abstraes de dados que sero suportados pelo Azure Storage encontramos: Queues e blocks: para a comunicao entre servios; Blobs e blocks: para o tratamento e persistncia de grandes blocos de dados; Tables e caches: para o controle de estado de servios e aplicaes;

A interface de programao para o Windows Azure Storage simples e baseada no modelo ADO.NET, sendo acessvel tambm via REST. Existem vrios exemplos de cdigo e solues para estudo no Azure Training Kit, recentemente atualizado em fevereiro de 2009. Confira o link na sesso de referncia no final do artigo.

378
Uma plataforma de servios na nuvem At aqui, vimos os vrios aspectos do sistema operacional Azure, com seus recursos e abstraes para a computao na nuvem. Mas o Windows Azure ainda oferece uma plataforma de servios, com capacidades para a construo de aplicaes sofisticadas, tanto de solues para o usurio como para o ambiente corporativo. A figura 4 apresenta essa plataforma de servios, conforme anunciado no ltimo PDC 2008.

Figura 4. Plataforma de Servios do Windows Azure.

Na primeira camada, vemos o Windows Azure, oferecendo os recursos de um sistema operacional para a nuvem, conforme j falamos. Sobre o Windows Azure temos uma plataforma de servios organizada em capacidades, onde cada grupo atende as necessidades de dados, servios, orquestrao e colaborao na nuvem. Esses servios so os chamados de building block services ou servios de blocos construtivos para aplicaes. Sobre essa camada de servios encontramos as aplicaes SaaS para o usurio final, como Windows Live, Office Live, Exchange Online, SharePoint Online, etc. Nem todas esto sobre o Windows Azure atualmente, mas podero no futuro aproveitar a infra-estrutura e recursos da plataforma. A seguir, vamos conferir alguns detalhes dos principais grupos de servios j anunciados pela plataforma, o Live Services, o .NET Services e o SQL Services. Dados na nuvem com o SQL Services Nosso primeiro assunto o SQL Services, um grupo de capacidades para dados na nuvem. O SQL Services deve agrupar todas as capacidades esperadas para o tratamento e persistncia de dados num ambiente de computao na nuvem. Assim, recursos como Reporting, Data Mining, ETL, Sincronizao, etc. so capacidades previstas para o SQL Services no futuro. A figura 5 apresenta a arquitetura completa do servio:

Figura 5. Principais capacidades do SQL Services do Windows Azure.

379
A principal capacidade do SQL Services o SDS ou SQL Data Services que oferece poder de processamento sobre dados estruturados e no-estruturados, assim como capacidades crticas de uma plataforma de dados. De fato, o SDS um banco de dados na nuvem, acessvel atravs de interfaces via Web, com padres em HTTP, REST e SOAP. O SDS suporta dados estruturados e no-estruturados, obedecendo um modelo de acesso chamado ACE Authority, Container e Entity, que criar uma hierarquia para o acesso aos dados na nuvem. Uma Authority uma unidade de geo-localizao e billing, equivalente ao nome DNS de servidores de bancos de dados no corporativo. Atravs da Authority, criamos colees de Containers, para a organizao de nossos bancos de dados na nuvem. Um Container unidade de consistncia de dados, tambm funcionando como uma unidade de particionamento no Windows Azure. O Container oferece o escopo para consultas e atualizaes de dados da aplicao. Atravs do container temos nossas colees de entidades. Enquanto o container equivalente ao banco de dados no ambiente corporativo, as entidades so equivalentes s linhas de um banco de dados. Assim, uma Entity uma unidade de armazenamento bsica, persistida atravs de propriedades em pares Nome/Valor. Um container pode persistir inmeras entidades, de tipos diferentes, oferecendo uma grande flexibilidade na persistncia de dados para nossas aplicaes. Uma consulta aos dados no SDS possvel atravs de APIs em REST, HTTP e SOAP, permitindo cenrios de clientes em plataformas Microsoft e no-Microsoft. Voc pode conferir o contrato WSDL da atual verso do servio SDS na URL da figura 6, atravs do seu Visual Studio: https://data.database.windows.net/soap/v1

Uma consulta aos dados via REST obedece ao seguinte formato de URL, com os componentes Authority, Container e Entity descritos explicitamente pela aplicao:

Figura 6. Exemplo de URL com a identificao de Authority, Container e Entity, para uma consulta ao servio SQL Data Services.

Para saber mais sobre SQL Services e SQL Data Services, veja os links da sesso de referncias, no final deste artigo. Servios na nuvem O .NET Services da plataforma de servios do Windows Azure oferece um conjunto de capacidades para a construo de um barramento de servios na nuvem. Atravs do Service Bus do .NET Services, possvel registrar nossos servios, permitindo que outras aplicaes disparem mensagens para esses servios. Atravs do Service Bus do .NET Services temos mesmo um Internet Service Bus sobre o Windows Azure:

Figura 7. Principais capacidades do .NET Services do Windows Azure.

Outras capacidades previstas no .NET Services so o Access Control e o Workflow Services.

380
O Access Control responsvel pelas funcionalidades de controle de acesso, autenticao e autorizao na nuvem, oferecendo recurso para a manipulao de declaraes e credenciais em aplicaes. O modelo CBA Claim-Based Authentication suportado pelo Access Control, permitindo ainda a integrao das aplicaes do ambiente corporativo com o Windows Azure de modo fcil e transparente. O Workflow Services do .NET Services oferece um host na nuvem para a execuo de orquestraes de servios e regras de fluxos de mensagens. Com o Workflow Services, possvel a implementao de regras e processos na nuvem, coordenando atividades de servios publicados pelas aplicaes. Para saber mais sobre o .NET Services, veja os links da sesso de referncias, no final deste artigo. Colaborao na nuvem Finalmente, nem s de aplicaes corporativas vive o Windows Azure, mas tambm de usurios e dispositivos. Quando falamos de usurios e dispositivos, pensamos em aspectos de colaborao, importantes no ambiente Web 2.0 como os conceitos de redes sociais, mobilidade, diversidade de formatos e aplicaes de composio. Podemos organizar ento a colaborao em 4 dimenses: Dados, Dispositivos, Aplicaes e Pessoas. Quando falamos em dados, um universo de formatos e estruturas so utilizados hoje em dia em nossas aplicaes, atravs de fotos, vdeos, arquivos, documentos, planilhas, cada vez mais integrados atravs de redes sincronizadas entre os vrios sistemas. Falando em dispositivos, uma infinidade de inovaes em mobilidade oferece os recursos para que nossos usurios estejam cada vez mais online, consumindo funcionalidades de aplicaes 24x7 (24 horas do dia, 7 dias da semana). Essa integrao online de dispositivos e dados exige um modelo de programao robusto e flexvel, assim como uma infra-estrutura altamente escalvel. Da mesma forma, nossas aplicaes evoluram para modelos mais ricos, com usabilidade, suporte a composio de recursos e capacidades para dispositivos diversos. So exigncias de um usurio conectado, com mobilidade, online e social. Por ltimo, nossos usurios esto mais crticos, exigentes e capacitados para operar um ambiente completo, que manipula dados on-line e off-line, dispositivos e aplicaes ricas de uma forma fluente e gil. Para suportar o desenvolvimento de aplicaes com essas exigncias, o Windows Azure oferece o Live Services, que envolve todas essas necessidades, atravs de uma rica lista de recursos e ferramentas de colaborao. De forma simplificada, Live Services so blocos prontos para manusear dados de usurios e recursos de aplicao, os quais voc pode conectar a sua aplicao com centenas de milhares de usurios. A figura a seguir apresenta a arquitetura de componentes do Live Services no Windows Azure:

Figura 8. Principais capacidades do Live Services do Windows Azure.

Alm da pilha de recursos, o Live Services oferece um modelo de programao unificado atravs do Live Framework, que a maneira uniforme de programar para Live Services de uma variedade de plataformas, linguagens de programao, aplicaes e dispositivos. Para saber mais sobre o Live Services, veja os links da sesso de referncias, no final deste artigo. Ainda, no deixe de conferir o artigo sobre Windows Live do Rogrio Cordeiro, tambm presente nesta edio da revista Mundo .NET. Desenvolvimento integrado no Visual Studio 2008 Outro aspecto importante da plataforma Azure sua integrao entre a nuvem e o corporativo. O desenvolvimento de aplicaes para a plataforma Azure feito atravs do Visual Studio 2008, a partir da instalao dos seguintes pacotes:

381
Windows Azure Tools for Microsoft Visual Studio January 2009 CTP http://www.microsoft.com/downloads/details.aspx?familyid=8E90B639-1EF0-4E21-BB73FC22662911BC&displaylang=en

Windows Azure Software Development Kit January 2009 CTP http://www.microsoft.com/downloads/details.aspx?familyid=80E3EABF-0507-4560-AEB6D31E9A70A0A6&displaylang=en

Atravs do pacote de Tools do Azure, adicionamos ao Visual Studio novos templates e ferramentas de teste do ambiente. O pacote Azure SDK instala os componentes de manipulao da plataforma, como os tipos Blog, Table e Queue, assim como a infra-estrutura necessria para o deployment e depurao das aplicaes a partir do Visual Studio 2008. Integrando o ambiente corporativo com o Windows Azure Ao final, nossas aplicaes podero combinar os servios e recursos presentes no ambiente corporativo (onpremise), instalados e suportados localmente, com os servios e recursos presentes na nuvem (in the cloud), rodando sobre a plataforma do Windows Azure. A figura a seguir ilustra um cenrio completo de integrao:

Figura 9. Exemplo de integrao entre aplicaes do ambiente corporativo e aplicaes da nuvem, sobre o Windows Azure.

Esse poder de escolha, combinando recursos locais com recursos remotos parte da estratgia chamada Software + Servios, definida pela Microsoft. O Windows Azure um componente importante dessa estratgia e merece uma ateno especial ao longo deste ano, enquanto novos CTPs e anncios sero feitos sobre seu desenvolvimento. Segundo o prprio Steve Ballmer, CEO - Chief Executive Officer da Microsoft, o Windows Azure ser lanando ainda esse ano. Por isso, fique ligado! Roadmap Para a construo desse artigo, utilizamos as informaes publicadas com o primeiro CTP da plataforma Windows Azure, datado de novembro de 2008. Nesse primeiro CTP foram publicados os recursos dos primeiros servios disponveis (.NET Services, Live Services, SQL Services), o SDK da plataforma e ferramentas para o Visual Studio. Em fevereiro de 2009 tivemos novos CTP's de atualizao, com recursos adicionais para os servios e novos laboratrios e demos com o Azure Training Kit de Fevereiro de 2009. O Roadmap j anunciado prev novos CTP's e atualizaes ainda no primeiro semestre de 2009, com a apresentao do plano de preos, nveis de operao de servios esperado (SLA - Service Level Agreement) e

382
novos datacenters para a plataforma Azure. No deixe de conferir o portal do evento MIX09, que ser realizado entre 18 e 20 de maro e promete o anncio de novidades. (Confira em http://visitmix.com/) Consideraes Finais O Windows Azure ser um sistema operacional completo para a nuvem, oferecendo recursos de computao elstica como: Gerenciamento de Servios; Armazenamento massivo e com alta disponibilidade; Desenvolvimento gil; Acessibilidade pela internet, atravs de padres HTTP/REST/SOAP; Host de servios e dados na nuvem; Alta disponibilidade e alta escalabilidade para aplicaes; Suporte a federao de datacenters;

Ao mesmo tempo, reconhecemos os elementos de um PaaS Platform as a Service, ou plataforma como servios no Windows Azure, atravs de sua plataforma de servios que pode ser integrada facilmente com o ambiente corporativo. No futuro, as principais capacidades presentes no mundo corporativo tero equivalentes no mundo Azure, oferecendo os benefcios da combinao e poder de escolha do Software + Servios. Nesse sentido, a construo de uma TI dinmica, suportando as exigncias de um negcio gil passa definitivamente pela combinao, do local com a nuvem. Por isso, no deixe de acompanhar a evoluo do Windows Azure ao longo deste ano. Referncias Alguns links importantes para suportar este artigo voc encontra a seguir: Azure Services Platform http://www.microsoft.com/azure/default.mspx

Live Services http://dev.live.com/

SQL Services http://www.microsoft.com/azure/sqllabs.mspx

.NET Services http://www.microsoft.com/azure/netservices.mspx

SQL Data Services (SDS) SDK (CTP) http://www.microsoft.com/downloads/details.aspx?familyid=0B1FA5C6-EC9D-440B-939E481DD05F2627&displaylang=en

Microsoft .NET Services SDK (Dec 2008 CTP) http://www.microsoft.com/downloads/details.aspx?familyid=83E1E30F-BD9A-4284-80A6388BA2E768FD&displaylang=en

Windows Azure Tools for Microsoft Visual Studio January 2009 CTP http://www.microsoft.com/downloads/details.aspx?familyid=8E90B639-1EF0-4E21-BB73FC22662911BC&displaylang=en

Windows Azure Software Development Kit January 2009 CTP http://www.microsoft.com/downloads/details.aspx?familyid=80E3EABF-0507-4560-AEB6D31E9A70A0A6&displaylang=en

Azure Services Training Kit February Update

383
http://www.microsoft.com/downloads/details.aspx?familyid=413E88F8-5966-4A83-B30953B7B77EDF78&displaylang=en

Microsoft Silverlight Tools for Visual Studio 2008 SP1 http://www.microsoft.com/downloads/details.aspx?familyid=C22D6A7B-546F-4407-8EF6D60C8EE221ED&displaylang=en

Innovation Labs da Microsoft Em breve, um bom material sobre Windows Azure ser publicado aqui! http://www.microsoft.com/downloads/results.aspx?pocId=&freetext=innovation%20lab&DisplayLang=ptbr

384

Sobre o autor
Waldemir Cambiucci (wcambiuc@hotmail.com) 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 e MSF Practitioner. Seu blog o http://blogs.msdn.com/wcamb/ e seu twitter o http://twitter.com/wcamb/.

Você também pode gostar