Encontro de Arquitetos
Belo Horizonte
Agenda
Sessão 1: Arquitetura Web na plataforma Microsoft – Conceitos e Tendências
Waldemir Cambiucci - Arquiteto de Soluções Hora: 14:30 h – 16:00 h
Blog: http://blogs.msdn.com/wcamb
Coffee Break
Hora: 16:00 h – 16:30 h
Sessão 2: Arquitetura Web na plataforma Microsoft – Tecnologias e Recomendações
Luciano Condé – Arquiteto de Soluções Hora: 16:30 h – 18:00 h
Sessão 1: Arquitetura Web na
Objetivo da Sessão
Posicionar os recursos do mundo Web dentro
da visão Software + Serviços.
Visão Web segundo uma
Visão Software + Serviços
PC
WEB
PHONE
Forças do Software + Serviços
Web 2.0 e Redes Sociais
Aplicações RIA
Soluções LOB SaaS
Arquitetura Software + Serviços
a internet além da Web
Principais componentes:
Software Cliente
Software Aplicativo
Serviços de Infraestrutura
Fundamentos da Arquitetura
Físico, dedicado
Serviço único em hardware dedicado
Físico, compartilhado
Vários serviços em hardware dedicado
Físico, HPC
Hardware físico suportando cenário HPC
Virtual, único
Instância única de imagem virtual
Virtual, compartilhado
Serviços de Infraestrutura
Identidade e acesso
Baseada em diretórios, roles, declarações (CBA)
Sistema de mensagens
Barramento de serviços, Ponto a Ponto (P2P)
Armazenamento
Tradicional, Relacional, Não-estruturado
Workflow
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
Aplicativo
Software Cliente
Cliente Web
Web Browser, Conteúdo Rico
Cliente Móvel
Baseado em Web, Conteúdo Rico, Office, SMS/IM, Voz
Cliente PC
Office, SmartClient, Desktop, Gadgets, Mensagens instantâneas
Cliente Embarcado (Embedded)
Arquitetura Software + Serviços
Software Aplicativo Software Cliente Cliente PC Browser Acesso ProgramáticoRSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role) Presentation (Web Role)
SMTP SMS SOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & Access Messaging
Storage Workflow
Async Queue/Bus Peer to Peer
Blob Event Based Worker Based
Relational File
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable Authentication Authorization
On Premises Hoster Cloud
Arquitetura Software + Serviços
Um 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 SMS SOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & Access Messaging
Storage Workflow
Async Queue/Bus Peer to Peer
Blob Event Based Worker Based
Relational File
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable Authentication Authorization
On Premises Hoster Cloud
Arquitetura Software + Serviços
Um 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 SMS SOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & Access Messaging
Storage Workflow
Async Queue/Bus Peer to Peer
Blob Event Based Worker Based
Relational File
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable Authentication Authorization
On Premises Hoster Cloud
Arquitetura Software + Serviços
Uma 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 SMS SOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & Access Messaging
Storage Workflow
Async Queue/Bus Peer to Peer
Blob Event Based Worker Based
Relational File
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable Authentication Authorization
On Premises Hoster Cloud
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)
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
Visão Web segundo as tecnologias
disponíveis
Arquitetura Software + Serviços
Componentes Web Software Aplicativo Software Cliente Cliente PC Browser Acesso ProgramáticoRSS REST Web Services VoiceXML
Apresentação Web
Static Dynamic RIA Streaming
Aplicação
Business Logic (Worker Role) Presentation (Web Role)
SMTP SMS SOAP
Office Client Gadgets IM
Cliente Mobile
Speech SMS/IM Browser Office Client
Embedded
Devices Consoles
Fundamentos
Serviços de Infraestrutura
Identity & Access Messaging
Storage Workflow
Async Queue/Bus Peer to Peer
Blob Event Based Worker Based
Relational File
Computação
Physical, Dedicated Physical, Shared Virtual, Single Virtual, Scalable Authentication Authorization
On Premises Hoster Cloud
Tecnologias Web na plataforma Microsoft
Software Cliente (Browser, PC, Mobile, Dispositivos, Serviços/Bus)
ASP.NET WebForms Silverlight WPF ASP.NET MVC Windows Live Web 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 SharePoint Search Server Live Services .NET Services Capacidades de Infraestrutura
Aplicações Web com ASP.NET e
HTML
Aplicações ASP.NET
ASP.NET suporta vários tipos de aplicações WEB
ASP.NET WebForms
São basicamente soluções 2-Tier, envolvendo
diversas interações com o servidor.
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 – Rapid Application 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;
ASP.NET AJAX
Asynchronous 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 Application Browser DB Serviços Outras Aplicações Camada de Acesso a Dados Lógica da Aplicação Serviços HTML Lógica de Apresentação Lógica de Apresentação
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
ASP.NET AJAX Client-Side
Renderização feita no cliente!
Menor roundtrip entre o cliente e o servidor Menor bandwidth
Maior responsividade
HTML + JSON
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 browsers
IE, Mozilla FireFox, Safari (Mac OS), Opera, Konqueror
Maior interação com o servidor
Dados são carregados sob demanda, sem onerar o carregamento inicial da página
Utilização mais eficiente de banda
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ção
jQuery
Criado por John Resig (Open Source, 2006) Suportado na plataforma Microsoft
Incluí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:
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
ASP.NET MVC
Model View Controller Pattern
Controller
View
Model
Request 1
URL Routing
Browser Controller Model View
Get / Post Invoke Action Get Data Lookup View Render Html Lookup Controller
ASP.NET MVC
ASP.NET MVC
Model 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 Driven
Development.
ASP.NET MVC
Model 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 Javascript
Suporte integrado ao jQuery (jQuery Intellisense)
ASP.NET MVC
Model View Controller
Pontos Fracos:
Não compatível com o modelo RAD – Rapid
Application 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
Aplicações Web com RIA
O que é uma aplicação RIA?
Rich Internet Application
Um 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.
Aplicação Silverlight / RIA
RIA evita as interações do modelo Web, usando
uma lógica de negócio no lado do cliente.
Web Application Browser Rich Internet Application
DB Serviços Outras Aplicações Camada de Acesso a Dados Lógica da Aplicação Serviços
HTML NetworkApresentaçãoLógica de
Visão do .NET RIA Services
Simplificar o desenvolvimento RIA
N-tier é difícil e não trivial/natural.
Fornecer a mesma produtividade do estilo
ASP.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.
.NET RIA Services
Middleware para operações de uma
aplicação RIA
.NET RIA Services Samples
.NET RIA Services
.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 exportadas Deployment facilitado
.NET RIA Services
DomainContext gerado automaticamente pelo .NET
.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 às operaçõ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 gerado
Aplicações Web com o ambiente
Windows Azure
O que é a nuvem?
Live Consumidor & SOHO Online De pequenas a grandes empresas
Variedade de serviços online
Plataforma de Serviços Azure
Serviços e Ferramentas
para
O que é o Windows Azure?
CONTROLE E GERENCIAMENTO AUTOMATIZADO
Fabric: A Coleção dos Servidores
8 VMs por servidor
Cada VM roda um Hypervisor Windows Server 2008 customizado
Fabric Controller é responsável pelo gerenciamento
Você 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
Aplicações sobre o Windows Azure
Web Role e Worker Role interagindo via Queues e Tables. Internet Storage Tables LB Blobs Worker Service Worker Service Worker Service Web Site
(ASPX, ASMX, WCF)Web Site (ASPX, ASMX, WCF)Web Site(ASPX, WCF)
Queue
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.NET
Web Forms, MVC, Silverlight, jQuery, AJAX, SOAP, REST.
Pontos Fracos:
Hosting apenas no ambiente da nuvem (Azure).
Web Role no Windows Azure
Projeto em Staging com diversas roles
Projeto em produção com uma
única instância Web Role
Um mapa de decisão entre
tecnologias…
Mapa de decisão Web…
Os números são ilustrações apenas
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 WebFormsASP.NET AJAX Server-Side ASP.NET AJAX Client-Side ASP.NET MVC
ASP.NET Dynamic Data Silverlight 3.0
Conclusões
A visão Software + Serviços envolve a
Internet além da Web…
Para a escolha da tecnologia certa devemos
considerar 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
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
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
© 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