Upload
lemien
View
214
Download
0
Embed Size (px)
Citation preview
Encontro de ArquitetosBelo Horizonte
Data: 10 de Novembro de 2009
Agenda
Sessão 1: Arquitetura Web na plataforma Microsoft –Conceitos e Tendências
Waldemir Cambiucci - Arquiteto de SoluçõesHora: 14:30 h – 16:00 hBlog: http://blogs.msdn.com/wcamb
Coffee BreakHora: 16:00 h – 16:30 h
Sessão 2: Arquitetura Web na plataforma Microsoft –Tecnologias e Recomendações
Luciano Condé – Arquiteto de SoluçõesHora: 16:30 h – 18:00 h Blog: http://blogs.msdn.com/conde/
Sessão 1: Arquitetura Web na plataforma Microsoft – Conceitos e Tendências
Waldemir CambiucciArquiteto de SoluçõesMicrosoft
twitter.com/wcambblogs.msdn.com/wcamb
Objetivo da Sessão
Posicionar os recursos do mundo Web dentroda visão Software + Serviços.
Criar um vocabulário comum em torno das principais tecnologias para aplicações Web naplataforma Microsoft.
Visão Web segundo umaarquitetura Software + Serviços
Web 1.0
Server-sidecomputation
Client-siderendering
Static HTML
Web 1.0
7
Server-sidecomputation
Client-siderendering
Static HTMLDynamic HTML
Client-sidecomputation
→ Web 2.0 → RIA…
Visão Software + Serviços
PC
WEB
PHONE
Corporativo Nuvem
Forças do Software + Serviços
Web 2.0 e Redes Sociais
Aplicações RIA
Soluções LOB SaaS
Orientação a Serviços
Cloud Computing
Arquitetura Software + Serviçosa internet além da Web
Principais componentes:Software Cliente
Software Aplicativo
Serviços de Infraestrutura
Fundamentos da Arquitetura
Fundamentos da Arquitetura
Físico, dedicadoServiço único em hardware dedicado
Físico, compartilhadoVários serviços em hardware dedicado
Físico, HPCHardware físico suportando cenário HPC
Virtual, únicoInstância única de imagem virtual
Virtual, compartilhadoInstância múltipla de imagem virtual
Serviços de Infraestrutura
Identidade e acessoBaseada em diretórios, roles, declarações (CBA)
Sistema de mensagensBarramento de serviços, Ponto a Ponto (P2P)
ArmazenamentoTradicional, Relacional, Não-estruturado
WorkflowBaseado em eventos, Alto Desempenho
Software Aplicativo
Colaboração Pesquisa, Social, Conteúdo
Monetização Transação, Licenciamento, Publicidade, Assinatura
Composição Composição de serviços, LOB, regras de negócio
Business Intelligence Painel(Dashboards), Relatórios, Mining
AplicativoLógica de negócio, entidades, workflows,
processos
Software Cliente
Cliente Web Web Browser, Conteúdo Rico
Cliente MóvelBaseado em Web, Conteúdo Rico, Office,
SMS/IM, Voz
Cliente PCOffice, SmartClient, Desktop, Gadgets,
Mensagens instantâneas
Cliente Embarcado (Embedded)Dispositivos dedicados, consoles
Arquitetura Software + Serviços
Software Aplicativo
Software Cliente
Cliente PC
Browser
Acesso Programático
RSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role)Presentation (Web Role)
SMTP SMSSOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & AccessMessagingStorage Workflow
Async Queue/Bus Peer to PeerBlob Event Based Worker BasedRelationalFile
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable
Authentication Authorization
On Premises Hoster Cloud
Table
Arquitetura Software + ServiçosUm site Web dinâmico on-premise (infraestrutura local)
Software Aplicativo
Software Cliente
Cliente PC
Browser
Acesso Programático
RSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role)Presentation (Web Role)
SMTP SMSSOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & AccessMessagingStorage Workflow
Async Queue/Bus Peer to PeerBlob Event Based Worker BasedRelationalFile
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable
Authentication Authorization
On Premises Hoster Cloud
Table
Arquitetura Software + ServiçosUm site Web dinâmico na nuvem
Software Aplicativo
Software Cliente
Cliente PC
Browser
Acesso Programático
RSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role)Presentation (Web Role)
SMTP SMSSOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & AccessMessagingStorage Workflow
Async Queue/Bus Peer to PeerBlob Event Based Worker BasedRelationalFile
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable
Authentication Authorization
On Premises Hoster Cloud
Table
Arquitetura Software + ServiçosUma solução SaaS baseada na nuvem
Software Aplicativo
Software Cliente
Cliente PC
Browser
Acesso Programático
RSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role)Presentation (Web Role)
SMTP SMSSOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & AccessMessagingStorage Workflow
Async Queue/Bus Peer to PeerBlob Event Based Worker BasedRelationalFile
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable
Authentication Authorization
On Premises Hoster Cloud
Table
Visão Software + Serviços
A Internet além da Web:Colaboração e Redes Sociais (Web 2.0)
Diferentes dispositivos
Orientação a serviços
Software como serviços
Diferentes protocolos e formatos de dados
Combinação de infraestruturas (poder da escolha)On-premise, hosted, cloud computing
Combinação de arquiteturas
App Arch Guide 2.0
Tipos de Aplicações Estilos de Arquitetura
Componentes de Arquitetura
patterns & practices: App Arch Guide 2.0
http://www.codeplex.com/AppArch
Visão Web segundo as tecnologias disponíveis
ASP.NET, Silverlight, ASP.NET
MVC, ASP.NET AJAX, RIA, etc…
Arquitetura Software + ServiçosComponentes Web
Software Aplicativo
Software Cliente
Cliente PC
Browser
Acesso Programático
RSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role)Presentation (Web Role)
SMTP SMSSOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & AccessMessagingStorage Workflow
Async Queue/Bus Peer to PeerBlob Event Based Worker BasedRelationalFile
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable
Authentication Authorization
On Premises Hoster Cloud
Table
Tecnologias Web na plataforma Microsoft
Software Cliente (Browser, PC, Mobile, Dispositivos, Serviços/Bus)
ASP.NETWebForms
Silverlight WPFASP.NET
MVCWindows
LiveWeb Roles
ASP.NET AJAX
Dynamic Data
Interface de Serviços
Windows Communication
Foundation (WCF)
ADO.NET Data Services
.NET RIA Services
Serviços de Plataforma
.NET Framework
ASP.NET Services
SharePointSearch Server
Live Services
.NET Services
Capacidades de Infraestrutura
Windows Server, IIS, WAS, SQL ServerWindows Azure, Azure Storage, SQL Azure Database,
Live Services, .NET Services
Aplicações Web com ASP.NET e HTML
ASP.NET Web Forms
ASP.NET AJAX
ASP.NET MVC, etc.
Aplicações ASP.NET
ASP.NET suporta vários tipos de aplicações WEB
ASP.NET
WebForms
ASP.NET
AJAX
ASP.NET
MVC
ASP.NET
Dynamic Data
ASP.NET WebForms
São basicamente soluções 2-Tier, envolvendo diversas interações com o servidor.
Web ApplicationBrowser
DB
Serviços
Outras Aplicações
Camada de
Acesso a
Dados
Lógica da
Aplicação
Serviços
HTMLLógica de
Apresentação
ASP.NET WebForms
Sessão do Usuário
PáginaWeb
Modelo de Dados do Usuário
PáginaWeb
PáginaWeb
PáginaFinal
Encerrar
Iniciar
BrowserServidor
Camada de
Acesso a
Dados
Lógica da
Aplicação
Serviços
Lógica de
Apresentação
ASP.NET WebForms
As páginas são criadas no servidor e enviadas para o browser a cada POSTBACK.
Pontos Fortes: Grande compatibilidade com inúmeros browsers (HTML)
Facilidade de desenvolvimento e suporte RAD – RapidApplication Development (drag and drop)
Compatibilidade e integração com aplicações legadas
Pontos Fracos:Responsividade: o usuário precisa aguardar o postback de cada página para poder interagir;
Performance: toda a página precisa ser criada para cada interação no lado do servidor;
ASP.NET AJAXAsynchronous JavaScript And XML
Modelo de programação para aplicações Web ricas, baseado em JavaScript executado no browser, com interações assíncronas com o servidor e tratamento de eventos no cliente.
Web ApplicationBrowser
DB
Serviços
Outras Aplicações
Camada de
Acesso a
Dados
Lógica da
Aplicação
Serviços
HTML
Lógica de
ApresentaçãoLógica de
Apresentação
Renderização com o poderde computação no cliente
ASP.NET AJAX
Sessão do Usuário
AplicaçãoCliente
Modelo de Dados do Usuário
Página Final
Encerrar
Iniciar
BrowserServidor
Camada de
Acesso a
Dados
Lógica da
Aplicação
Serviços
Lógica de
ApresentaçãoParte do
Modelo de Dados do Usuário
Requisições
de dados
Lógica de
Apresentação
ASP.NET AJAX
ASP.NET AJAX Server-Side
Renderização feita no servidor!As páginas são criadas no servidor e enviadas (parcialmente) por requisições AJAX em HTML.
Requisição inicial: HTML
HTMLForm POST
ASP.NET AJAX Client-Side
Renderização feita no cliente!Menor roundtrip entre o cliente e o servidor
Menor bandwidth
Maior responsividade
HTML + JSON
JSONJSON
ASP.NET AJAX
Pontos Fortes:Aplicações com menor tempo de resposta
Interfaces mais ricas, próximas ao desktop
Deployment simplificado em relação ao ambiente desktop
Compatibilidade com inúmeros browsersIE, Mozilla FireFox, Safari (Mac OS), Opera, Konqueror
Maior interação com o servidorDados são carregados sob demanda, sem onerar o carregamento inicial da página
Utilização mais eficiente de bandaSomente dados necessários são trafegados
ASP.NET AJAX
Pontos Fracos:Grande número de decisões sobre a arquitetura da aplicação
Componentes client-side ou server-side?
Qual a granularidade das interações entre cliente e servidor?
Quando passar dados e quando passar conteúdo?
Como dividir o modelo em camadas?
Quando usar XML e quando usar JSON?
Patterns para paginação, ordenação, filtro, etc.
Necessidade de maior nível de capacitaçãoJavaScript, DHTML, Usabilidade, Protocolos, Modelos de Objetos, Padrões W3C, ECMA, etc.
jQueryCriado por John Resig (Open Source, 2006)
Suportado na plataforma MicrosoftIncluído no Visual Studio 2008 e 2010
19KB JQuery JavaScript library
Pontos Fortes:Total integração com ASP.NET AJAX e ASP.NET MVC.
Síntaxe Javascript facilitada (seletores mais simples)
Suporte IE6+, FF2.0+, Safari 3.0+, Opera 9+, Chrome 1.0+
Pontos Fracos:Depende de plugins para animações mais complexas
Complexidade para rotinas AJAX mais pesadas
ASP.NET AJAX Control Toolkit
2⁰ lugar em download de projetos no CodePlex.
Oferece controles:
Server-Side e Extenders
Client-Side e Behaviors
Disponível como Client-Only Library: AjaxControlToolkit-ScriptFilesOnly.zip
Source - May 2009 Release
Ref.: http://ajax.asp.net/ajaxtoolkit/
ASP.NET MVCModel View Controller Pattern
Controller
View
Model
Request 1
Response
URL RoutingBrowser ModelController View
Get / Post
Invoke ActionGet Data
Lookup View
Render
Html
Lookup Controller
ASP.NET MVCModel View Controller
ASP.NET MVCModel View Controller
Oferece uma clara separação entre navegação, lógica e renderização de tela.
Separation of Concerns
Motivações para o uso de MVC:Maior controle sobre o HTML gerado.
Maior controle sobre a manutenção de estado.
Maior suporte a testes e TDD – Test DrivenDevelopment.
Maior aderência ao uso de boas práticas de desenvolvimento.
ASP.NET MVCModel View Controller
Pontos Fortes:Permite uma maior testabilidade e suporte ao TDD
Testes facilitados
Total controle sobre código HTML e JavaScript
Páginas menores (sem ViewState)
Recurso de Routing já disponível no .Net 3.5
Maior integração com frameworks JavascriptSuporte integrado ao jQuery (jQuery Intellisense)
Orientação para o uso de boas práticas
ASP.NET MVCModel View Controller
Pontos Fracos:Não compatível com o modelo RAD – RapidApplication Development
Sem o suporte ao drag and drop de controles visuais
Mais difícil de integrar com o Web Designer
O desenvolvedor precisa conhecer HTML, JavaScript, CSS, HTTP, XML
Exige uma maior capacitação do time de desenvolvimento.
Aplicações Web com RIA
Silverlight 3.0
Silverlight Toolkit
.NET RIA Services
O que é uma aplicação RIA?
Rich Internet ApplicationUm cruzamento entre uma aplicação baseada em brower (web) e uma aplicação desktop tradicional
Melhores aspectos do mundo Web (browser)• Deployment facilitado• Sem instalação no cliente• Versionamento instantâneo• Navegação via browser, etc.
Melhores aspectos do mundo Desktop (local)• Processamento local• Cenários desconetados• Interface rica, etc.Melhores aspectos
de comunicação
Aplicação Silverlight / RIA
RIA evita as interações do modelo Web, usando uma lógica de negócio no lado do cliente.
Web ApplicationBrowser Rich Internet Application
DB
Serviços
Outras Aplicações
Camada de
Acesso a
Dados
Lógica da
Aplicação
Serviços
HTMLLógica de
ApresentaçãoNetwork
Serviços
Visão do .NET RIA Services
Simplificar o desenvolvimento RIA
N-tier é difícil e não trivial/natural.
Fornecer a mesma produtividade do estiloASP.NET/RAD para o desenvolvimento RIA
Foco em cenários fim-a-fim e soluções.
Criar uma visão unificada da aplicação RIA
Lógica no cliente e no servidor, através de um middleware de operações.
Aproveitar os recursos do Silverlight para a construção de aplicações RIA
.NET RIA Services
Middleware para operações de uma
aplicação RIA
.NET RIA Services Samples
Ref.: http://code.msdn.microsoft.com/RiaServices
.NET RIA Services
Um pattern escalável para múltiplas interfaces e fontes de dados.
Lógica da
Aplicação
Databases
ADO.NET,
ORMs (LTS, EF, …)
CLR Lists/Objects
Repository
(nHibernate, …)
Services
REST/SOAP
(Azure, …)
XML,
JSON,
Binary
.NET Clients
Silverlight, WPF
Standards Clients
JavaScript
Server Rendering
HTML, SEO,
Printing, …
Services
WCF
Código de
Teste
Unitário
.NET RIA Services
Arquivo gerado
automaticamente para o
proxy no lado do cliente
Solução no lado do
servidor, com o
DomainService e o
EDMX Model
Solução no lado do
cliente, com o proxy
para acesso às regras
de negócio exportadasDeployment facilitado
da aplicação RIA
.NET RIA Services
DomainContext gerado
automaticamente pelo .NET
RIA Services
.NET RIA Services
Pontos Fortes:Middleware completo para a construção de aplicações RIA com Silvelight 3.0.
Facilidade no tráfego de dados via DomainServices e Entidades (paginação, ordenação, filtros, etc).
Geração automática do proxy cliente para acesso àsoperações do lado do servidor.
Pattern extensível, atendendo diversos tipos de interfaces clientes e fontes de dados no servidor.
Pontos Fracos:Ainda em CTP
Primeira carga da aplicação deve ser avaliada (download)
Cuidados na customização do proxy geradoautomaticamente para o cliente.
Aplicações Web com o ambiente Windows Azure
Web Roles
Worker Roles
Queues, Blobs, Tables
Soluções SaaS e MapReducing
O que é a nuvem?
Datacenters com alta disponibilidade, escalabilidade e armazenamento ilimitado, acessível via Web.
LiveConsumidor &
SOHO
OnlineDe pequenas a
grandes empresas
Variedade de serviços online
Plataforma de Serviços AzureServiços e
Ferramentas
para
Desenvolvedores
O que é o Windows Azure?
Controle da Malha de Servidores
CONTROLE E GERENCIAMENTO AUTOMATIZADO
Fabric: A Coleção dos
Servidores8 VMs por servidor
Cada VM roda um Hypervisor
Windows Server 2008 customizado
Fabric Controller é
responsável pelo
gerenciamentoVocê diz o que fazer— ele trata
do como fazer
Faz o scale up, scale down,
update ou roll back da aplicação
para uma versão prévia de forma
automática
Services Management no Windows Azure
Aplicações sobre o Windows Azure
Web Role e Worker Role interagindo via Queues e Tables.Internet
StorageTables
LB
Blobs
Worker Service
Worker Service
Worker Service
Web Site(ASPX, ASMX, WCF)Web Site
(ASPX, ASMX, WCF)Web Site(ASPX, WCF)
Queue
Windows Azure Datacenter
Web Role / Windows Azure
Pontos Fortes: Cenário de soluções de alta escalabilidade, com provisionamento dinâmico.
Suporte Web Role para todos os recursos ASP.NETWeb Forms, MVC, Silverlight, jQuery, AJAX, SOAP, REST.
Pontos Fracos: Hosting apenas no ambiente da nuvem (Azure).
Atenção para a composição de custos na aplicação.
Integração com API’s de interoperabilidade, como o Simple Cloud (PHP API).
Web Role no Windows Azure
Projeto em Staging com diversas roles
Projeto emprodução com uma
única instânciaWeb Role
Clique aqui para publicar a aplicação em produção.
Um mapa de decisão entre tecnologias…
Proposta para pensar…
Mapa de decisão Web…
Os números são ilustrações apenasFaça suas decisões, de acordo com seus cenários
Mapa de decisão Web…
Produtividade no desenvolvimento
Manutenção
Customização
Desempenho
Curva de Aprendizagem
Paginação, Filtros, Extensões
Efeitos Visuais, Animação, etc.
Testabilidade
Facilidade de depuração
Modelo de segurança …
Suporte a cenários off-line
Modelo de cache integrado
Respeito a padrões Web
Controle sobre o HTML gerado
ASP.NET WebForms
ASP.NET AJAX Server-Side
ASP.NET AJAX Client-Side
ASP.NET MVC
ASP.NET Dynamic Data
Silverlight 3.0
PRISM 2.0
Conclusões
A visão Software + Serviços envolve a Internet além da Web…
Para a escolha da tecnologia certa devemosconsiderar questões como:
Reusabilidade, Confiabilidade, Extensibilidade
Manutenabilidade, Segurança, Testabilidade,
Diminuição da complexidade geral do sistema, etc.
Assuntos relacionados que não vimos hoje:Composite Application Guidance for WPF & Silverlight
Aplicações Web sobre SharePoint Server
Doloto (otimização sobre AJAX), WebSiteSpark, etc.
Referências
ASP.NET WebForms 4.0
http://www.asp.net/learn/whitepapers/aspnet40
ASP.NET MVC
http://www.asp.net/mvc/
ASP.NET AJAX
http://www.asp.net/ajax/
jQuery
http://jquery.com/
.NET RIA Services
http://code.msdn.microsoft.com/RiaServices
Windows Azure
http://www.microsoft.com/azure/default.mspx
Referências (cont.)
Application Architecture Guide 2.0
http://www.codeplex.com/AppArchGuide
Web Services Security Guidance
http://www.codeplex.com/WCFSecurityGuide
Composite Application Guidance for WPF & Silverlight
http://www.codeplex.com/CompositeWPF
Performance Testing Guidance for Web Applications
http://www.codeplex.com/PerfTestingGuide
Silverlight Toolkit
http://www.codeplex.com/Silverlight
ASP.NET AJAX Control Toolkit
http://ajax.asp.net/ajaxtoolkit/
Perguntas e Respostas.
© 2008 Microsoft Corporation. All rights reserved. Microsoft, Windows, Windows Vista and other product names are or may be registered trademarks and/or trademarks in the U.S. and/or other countries.The information herein is for informational purposes only and represents the current view of Microsoft Corporation as of the date of this presentation. Because Microsoft must respond to changing market conditions, it should not be interpreted to be a commitment on the part of Microsoft, and Microsoft cannot guarantee the accuracy of any information provided after the date of this presentation. MICROSOFT MAKES NO WARRANTIES, EXPRESS,
IMPLIED OR STATUTORY, AS TO THE INFORMATION IN THIS PRESENTATION.