encontro de arquitetos belo horizonte -...

Post on 30-Nov-2018

213 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 (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.

top related