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

Elogios ao Construindo um Portal Web 2.0 com ASP.NET 3.

“Omar e seus colaboradores aplicaram seus incríveis talentos e dedicaram bastante tempo para criar o
que parece ser o mais avançado site da web baseado em ASP.NET e Ajax. Neste livro, Omar detalha tudo
que aprendeu com sua experiência, aprofundando-se nos objetivos relacionados a design, arquitetura e
implementação, incluindo várias armadilhas que também nos ensina a evitar. Se você está decidido a criar
um site ASP.NET, baseado em Ajax, moderno e de alta performance, Construindo um Portal Web 2.0 com
ASP.NET 3.5 foi feito para você.”

– Mike Pope, da Microsoft User Education, Microsoft Corporation.

“Um excelente panorama das tecnologias, técnicas e das melhores práticas envolvidas no trabalho com o
modelo de aplicação web mais popular da atualidade. Altamente recomendado para qualquer desenvolvedor
web que pretenda se destacar.”

– Craig Wills, Gerente de Treinamento da Infusion.

caderno00.indd 1 21/01/2009 16:54:48


caderno00.indd 2 21/01/2009 16:54:48
Construindo um Portal Web 2.0
com ASP.NET 3.5.

Omar AL Zabir

caderno00.indd 3 21/01/2009 16:54:49


caderno00.indd 4 21/01/2009 16:54:49
Construindo um Portal Web 2.0
com ASP.NET 3.5.

Omar AL Zabir

caderno00.indd 5 21/01/2009 16:54:49


Construindo um Portal Web 2.0 com ASP.NET 3.5

Do original Building a Web 2.0 Portal with ASP.NET 3.5 Copyright © 2009 da Starlin Alta Con. Com. Ltda.
Authorized translation from English language edition, entitled Building a Web 2.0 Portal with ASP.NET 3.5,
published by O’Reilly Media, Inc. Copyright © 2009 by O’Reilly Media, Inc..
Portuguese language edition published by Starlin Alta Con. Com. Ltda, Copyright © 2009 by Starlin Alta Con. Com. Ltda.

Todos os direitos reservados e protegidos pela Lei 5988 de 14/12/73. Nenhuma parte deste livro, sem autorização prévia
por escrito da editora, poderá ser reproduzida ou transmitida sejam quais forem os meios empregados: eletrônico,
mecânico, fotográfico, gravação ou quaisquer outros. Todo o esforço foi feito para fornecer a mais completa e adequada
informação, contudo a editora e o(s) autor(es) não assumem responsabilidade pelos resultados e usos da informação
fornecida. Recomendamos aos leitores testar a informação, bem como tomar todos os cuidados necessários (como o
backup), antes da efetiva utilização. Este livro não contém CD-ROM, disquete ou qualquer outra mídia.

Erratas e atualizações: Sempre nos esforçamos para entregar a você, leitor, um livro livre de erros técnicos ou
de conteúdo; porém, nem sempre isso é conseguido, seja por motivo de alteração de software, interpretação ou
mesmo quando alguns deslizes constam na versão original de alguns livros que traduzimos. Sendo assim, criamos
em nosso site, www.altabooks.com.br, a seção Erratas, onde relataremos, com a devida correção, qualquer erro
encontrado em nossos livros.

Avisos e Renúncia de Direitos: Este livro é vendido como está, sem garantia de qualquer tipo, seja expressa
ou implícita.

Marcas Registradas: Todos os termos mencionados e reconhecidos como Marca Registrada e/ou comercial são de
responsabilidade de seus proprietários. A Editora informa não estar associada a nenhum produto e/ou fornecedor
apresentado no livro. No decorrer da obra, imagens, nomes de produtos e fabricantes podem ter sido utilizados, e
desde já a Editora informa que o uso é apenas ilustrativo e/ou educativo, não visando ao lucro, favorecimento ou
desmerecimento do produto/fabricante.

Produção Editorial: Starlin Alta Con. Com. Ltda


Coordenação Editorial: Marcelo Utrine
Tradução: Sophia Luciana de Oliveira Lang
Revisão: Nadia Rockenback
Diagramação: Raphael Cardoso
Revisão Técnica: Bruno Ceirão
Fechamento: Angel Cabeza

Impresso no Brasil

O código de propriedade intelectual de 1º de Julho de 1992 proíbe expressamente o uso coletivo sem autorização
dos detentores do direito autoral da obra, bem como a cópia ilegal do original. Esta prática generalizada nos
estabelecimentos de ensino, provoca uma brutal baixa nas vendas dos livros a ponto de impossibilitar os autores de
criarem novas obras.

Rua Viúva Claudio, 291 - Jacaré


Rio de Janeiro - RJ CEP 20970-031
Tel: 21 3278-8069 Fax: 21 3277-1253
www.altabooks.com.br
altabooks@altabooks.com.br

caderno00.indd 6 21/01/2009 16:54:49


Sumário

Prefácio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . xi

1. Introducão: Portais Web e Dropthings.com. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1


Definindo um Portal da Web 2
Definindo um Portal WEB 2.0 3
Utilizando o Portal Web 4
Navegando no Dropthings 5
Utilizando o ASP.NET AJAX 8
Utilizando C# 3.0 e .NET 3.5 9
Sumário 10

2. Construindo o Portal Web e os Widgets . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12


Utilizando o Framework do Widget 20
Adicionando Widgets 25
Maximizando a Experiência do Primeiro Acesso 27
Renderizando a Experiência do Segundo Acesso 29
Aprimorando a Performance do ASP.NET AJAX 29
Adicionando Autenticação e Autorização 34
Prevenindo o Ataque de Negação de Serviços 35
Sumário 37

3. Construindo a Camada Web com o ASP.NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38


Implementando a Página Inicial do Portal Web 38
Construindo um Extensor Arrastar e Soltar Customizado para uma Área
das Colunas Múltiplas 54
Implementando Container do Widget 67
Construindo Widgets 73
Trocando a Página: Simulação da Experiência de um No-postback 83
Utilizando o Objeto Profile no Web Service 84
Implementando Autenticação e a Autorização 86
Implementando o Logout 88
Sumário 89

vii

caderno00.indd 7 21/01/2009 16:54:49


4. Construindo as Camadas de Dados e de Negócios Utilizando .NET 3.5 . . . . . . . . . . . . . . 91
Introduzindo LINQ para SQL 91
Construindo a Camada de Acesso aos Dados, Utilizando-se o LINQ para SQL 93
Introduzindo Windows Workflow Foundation 101
Construindo a Camada de Negócios, Utilizando-se o WF 101
Implementando o Dashboard Facade 114
Sumário 118

5. Construindo os Widgets do Cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 119


Prolongando o Carregamento do Widget RSS/ATOM 119
O Conteúdo Proxy 122
Constuindo um Widget RSS do lado Cliente 126
Constuindo o Widget do Flickr no lado Cliente 129
Sumário 133

6. Otimizando o ASP. NET AJAX . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 134


Combinando Múltiplas Chamadas Ajax em uma Única Chamada 134
Cronometrando e Solicitando Chamadas Ajax ao Servidor 135
Usando Chamadas HTTP GET ao Invés de HTTP POST 146
Trabalhando com esta Função 147
Sumário 148

7. Criando Web Services Assíncronos, Transacionais e com o Cache-Friendly . . . . . . . . . 149


Desafios de Escalabilidade dos Web Services 149
Métodos Web Assíncronos 151
Modificando o Framework do ASP.NET para Manipular Chamadas de Web Service 154
Desenvolvendo um Manipulador de Web Service 156
Criando um Proxy Assíncrono e Cache-Friendly 166
Dimensionando e Protegendo o Conteúdo do Proxy 168
Sumário 172

8. Melhorando a Performance e a Escalabilidade do Servidor . . . . . . . . . . . . . . . . . . . . . . . 173


Instrumentalizando o Código para Identificar Problemas de Performance 174
Otimizando a Sequência Lógica de Eventos HTTP 175
Otimizando o ASP.NET 2.0/3.5 Antes de Liberar Amplamente seu Uso 175
Otimizando Pesquisas nas Tabelas de Membros do ASP.NET 176
Otimizando o Provedor Profile do ASP.NET 2.0/3.5 Antes de Torná-lo Amplamente Disponível 179
Desafios de Produção no ASP.NET 192
Redirecionando o Tráfego de um Site da Web Antigo para um Novo 194
Sumário 196

viii | Sumário

caderno00.indd 8 21/01/2009 16:54:49


9. Aprimorando a performance do cliente . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197
Entendendo o Armazenamento em Cache da Web 197
Rede de Entrega de Conteúdo 207
Otimizando a Performance do JavaScript do Internet Explorer 210
Reduzindo o Gasto com a Carga de Chamadas ao Web Service 217
Carregando a UI por Demanda 218
Usando Armazenamento em Cache Antecipadamente para Chamadas Ajax 220
Ocultando o HTML dentro da <textarea> 221
Sumário 224

10. Resolvendo Desafios Comuns quanto à Instalação, Hospedagem e Produção . . . . . . . . . . 225


Instalando um Site da Web em Uma Web Farm 225
Treze Desastres de Produção que Podem Ocorrer a Qualquer Momento 230
Escolhendo o Provedor de Hospedagem Certo 242
Escolhendo uma Ferramenta de Monitoramento de Site da Web 244
Configurando um Avaliador de Performance Apropriado 246
Sumário 252

Índice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 253

Sumário | ix

caderno00.indd 9 21/01/2009 16:54:49


caderno00.indd 10 21/01/2009 16:54:49
Prefácio

O portal Web 2.0 com a tecnologia Ajax está entre os aplicativos web mais bem sucedidos da geração da Web
2.0. O iGoogle e o Pageflakes (páginas iniciais personalizadas) são os pioneiros nesse mercado e estão entre os
primeiros a demonstrar o potencial da tecnologia Ajax. Os sites desse portal fornecem aos usuários uma home
page (página inicial) personalizada com acesso, de uma única vez, a informações e entretenimento de toda a Web,
assim como os painéis que agregam valor a negócios e empresas. O portal Web 2.0 pode ser utilizado como um
local de armazenamento de conteúdos, tal qual os sites do SharePoint ou do DotNetNuke. Como a tecnologia Ajax
foi desenvolvida para enriquecer a interatividade do cliente, o portal Web 2.0 aprimora a praticidade e fornece
uma performance mais rápida em comparação aos websites (sites da Internet) que não utilizam a tecnologia
Ajax. Além disso, já que os portais são comumente compostos de widgets (componentes de interface gráfica com
o usuário), pequenos aplicativos plug-and-play, não existe limite para a funcionalidade fornecida simplesmente
por adicionarmos mais widgets. A utilização dos widgets mantém a arquitetura básica do portal clara e simples,
uma vez que eles são desenvolvidos e preservados independentemente. O DotNetNuke é um bom exemplo do
conceito de um portal construído por widgets, criando-se uma nova era dos aplicativos web.

Este livro possui uma visão recente sobre as soluções para portais, utilizando-se a mais nova tecnologia
da Microsoft. Ao desenvolver portais pessoais, educacionais, comunitários e empresariais, tivemos de lidar
com interessantes desafios em relação ao design, ao desenvolvimento, à escalabilidade, à performance e
à produção. Neste livro, tentamos demonstrar as soluções para alguns desses desafios ao construirmos
um protótipo do portal Web 2.0 com código aberto. Poderemos, então, passar aos desafios em relação
ao design e à arquitetura, aos modernos conceitos da tecnologia Ajax, às técnicas de aprimoramento de
performances e à escalabilidade do servidor. O protótipo também nos demonstra a implementação prática
dos modernos frameworks .NET 3.0 e 3.5, incluindo o LINQ (Language Integrated Query – Linguagem
Integrada de Consulta) e o WF (Windows Workflow Foundation). Além disso, ele explora os detalhes do
website com a tecnologia Ajax, como também os desafios concernentes à performance e à compatibilidade
do browser (navegador), à segurança e às vantagens e desvantagens da estrutura ASP.NET AJAX.

O projeto está disponível no site www.dropthings.com. O Dropthings é um exemplo do que pode ser feito com as
novas tecnologias da Microsoft a partir de um código aberto. Cabe ressaltar que esse projeto se destina apenas
a propósitos educacionais. Apesar de se aproximar de um verdadeiro portal web portal (como o Pageflakes),
no que diz respeito a recursos, performance, segurança e escalabilidade, esse projeto desempenha uma ótima
função ao nos demonstrar como unir novas tecnologias em um aplicativo web prático.

Público-alvo
Este livro destina-se, primeiramente, aos programadores do ASP.NET 2.0 ou 3.5 que já desenvolveram um ou
mais aplicativos web e que possuem um bom domínio do JavaScript e do ASP.NET 2.0. O leitor também deve
ter conhecimentos básicos sobre o ASP.NET AJAX. Essa informação encontra-se em inúmeras publicações,
incluindo-se algumas de O’Reilly, as quais estão enumeradas nas referências bibliográficas deste livro.

Programadores de nível intermediário que procuram obter uma idéia acerca dos desafios de programação
da web e aprender como um website é construído e executado de forma bem sucedida serão beneficiados
com este livro. Já os programadores de nível mais avançado aprenderão como construir um aplicativo
web sólido que possa suportar milhões de hits diariamente; como conservar a demanda repentina por
escalabilidade; como prevenir ataques de hackers e de negação de serviços; como instalar e executar

xi

caderno00.indd 11 21/01/2009 16:54:49


um website em um ambiente distribuído de clusters, utilizando-se a CDN (Rede de Fornecimento de
Conteúdo); como encarar desafios reais em relação à produção etc.

Organização
Inicialmente, definiremos o portal web Ajax (também conhecido como portal Web 2.0) e sua utilização
como um modelo para websites pessoais, para Intranet de empresas ou para aplicativos web de consumo
em massa. Posteriormente, passaremos aos desafios da arquitetura deste aplicativo e forneceremos um
guia em que incluiremos o passo a passo para a resolução de questões concernentes ao design. Além
disso, explicaremos o conceito de widget e como sua arquitetura pode criar um aplicativo web altamente
segmentado, de modo que se permita a adição de um número infinito de recursos a um website.

Nos capítulos seguintes, encontraremos as instruções básicas para o desenvolvimento de alguns


componentes do portal web, utilizando-se o ASP.NET 2.0/3.5 e o ASP.NET AJAX 1.0. Além disso,
encontraremos um guia para o desenvolvimento da camada de negócios no WF e da camada de acesso
a dados a partir do uso do LINQ para SQL.

Uma vez que a fundação básica estiver construída, poderemos nos ocupar dos desafios mais difíceis, tais
como a performance de um primeiro acesso, a compatibilidade do navegador e os vazamentos de memória
(memory leaks), as técnicas de cache avançadas, a colocação de muitos conteúdos e funcionalidade em
uma única página etc. Então, ingressaremos nos desafios reais do Ajax e do ASP.NET 2.0/3.5, os quais
foram solucionados em portais comerciais de grande volume.

Neste livro, também mencionamos inúmeros fatos reais que ressaltam alguns dos verdadeiros
problemas na construção de portais como o Dropthings. Encontraremos essas dificuldades, de forma
não surpreendente, quando nos depararmos com o título “Exemplos práticos”.

Por derradeiro, apresentaremos alguns dos desafios mais complexos em relação à escalabilidade e à
segurança dos portais web Ajax, além dos treze desastres mais comuns na produção dos aplicativos
web, o que atinge milhões de usuários em todo o mundo.

Vejamos, a seguir, um breve resumo sobre a temática de cada capítulo:

Capítulo I, Introdução: Portais Web e Dropthings.com

Realizaremos uma breve introdução sobre os atributos do portal web e dos aplicativos cuja construção
aprenderemos no decorrer do livro. Além disso, este capítulo demonstrará como o ASP.NET AJAX e o
.NET 3.5 são utilizados.

Capítulo 2, Construindo o Portal Web e os Widgets

Forneceremos uma visão geral a respeito da arquitetura do Dropthings.com, bem como explicaremos
a arquitetura dos widgets e a construção de aplicativos web altamente segmentados por meio da
utilização dos widgets. Além disso, este capítulo retratará os desafios concernentes à performance
e à segurança dos websites com a tecnologia Ajax.

Capítulo 3, Construindo a Camada Web com o ASP.NET AJAX

Explicaremos, detalhadamente, como os aplicativos web são construídos a partir de uma home page
e dos widgets. Demonstraremos, também, como as funções “arrastar” e “soltar” são disponibilizadas
pelo ASP.NET AJAX 1.0; como um widget é construído e como o ASP.NET 3.5 é utilizado para se
construir um servidor que faça parte de uma camada web.

xii | Prefácio

caderno00.indd 12 21/01/2009 16:54:50


Capítulo 4, Construindo as camadas de dados e de negócios com o .NET 3.5

Demonstraremos como o LINQ é utilizados para se obter um posterior acesso aos dados e como o
.NET 3.0 é utilizado para se construir uma camada de negócios com a larga utilização do WF.

Capítulo 5, Construindo os Widgets do Cliente

Demonstraremos como construir os widgets, utlizando-se o JavaScript, para se obter performances mais
rápidas e memória cache melhor. Demonstraremos, também, como um conteúdo ponte ou um servidor
proxy são construídos de modo que os widgets possam trazer conteúdos de uma fonte externa.

Capítulo 6, Otimizando o ASP.NET AJAX

Aprofundaremos os estudos acerca dos princípios da tecnologia Ajax a fim de construirmos sites mais
rápidos e escalonáveis, com mais memória cachê disponível. Falaremos, especificamente, a respeito
dos desafios do navegador e de muitas técnicas desconhecidas, para se obter uma performance
máxima fora da estrutura do Ajax.

Capítulo 7, Criando Serviços Web Assíncronos, Transacionais e Cache-friendly


Neste capítulo, demonstraremos como construir um processador handler para serviços web de
chamadas customizados para chamadas em Ájax, a fim de superar algumas desvantagens do ASP.
NET AJAX 1.0 e habilitar os serviços web, de modo que eles se tornem assíncronos, de transação e
cache-friendly. Além disso, falaremos sobre os desafios em relação à escalabilidade e à segurança
dos aplicativos web que dependem bastante dos serviços web.

Capítulo 8, Melhorando a Performance e a Escalabilidade do Servidor

Um aplicativo web ASP.NET 2.0 possui algumas surpresas quanto à performance e à escalabilidade
quando os números de usuários dos websites aumentam, passando de centenas para milhares de
usuários. Aprenderemos, também, como resolver problemas concernentes à performance, à segurança
e à escalabilidade de um website que tenha um alto volume.

Capítulo 9, Aprimorando a Performance do Cliente

Os portais web Ajax concedem diversas funcionalidades ao navegador do cliente, de modo que
surgem desafios específicos quanto a ele, bem como problemas de performance do JavaScript.
Além disso, forneceremos muitas dicas para solucionar problemas em relação à sua velocidade e
memória, como também para que a Interface de Usuário (UI) carregue mais rapidamente e seja
mais responsiva.

Capítulo 10, Resolvendo Desafios Comuns quanto à Instalação, Hospedagem e Produção

O último passo para o desenvolvimento de um portal web é a instalação bem sucedida do produto
e sua execução em 24x7. Aprenderemos como instalar e executar um website que tenha alto
volume, resolvendo-se problemas quanto ao software, ao hardware, à hospedagem e à infra-
estrutura da Internet, itens que podem prejudicar nosso website e ocasionar grandes malefícios
a nossos negócios.

Pré-requisitos
Precisaremos do Visual Studio 2008 Professional Edition e do SQL Server 2005 Developer Edition, os quais
podem ser obtidos por meio de download no site www.codeplex.com/dropthings e instalados localmente.

Prefácio | xiii

caderno00.indd 13 21/01/2009 16:54:50


O atual projeto de código aberto, o Dropthings, lucrará com nossas contribuições.

Os usuários são bem-vindos para participar no desenvolvimento do Dropthings, aumentando-se a estrutura


central ou construindo-se novos widgets para o projeto.

Recursos gráficos
Os seguintes recursos gráficos são utilizados neste livro:

Texto sem formatação

Indica títulos, opções e botões do menu, como também os atalhos do teclado (exemplos: Alt e Ctrl).

Itálico
Indica novos termos, URLs, endereços de e-mail, nomes de arquivos, extensões, nome do caminho,
diretórios e utilitários do Unix.

Largura contínua

Indica comandos, opções, chaves, variáveis, atributos, teclas, funções, tipo, classes, namespaces,
métodos, módulos, propriedades, parâmetros, valores, objetos, eventos, manipuladores de eventos,
caracteres de XML e de HTML, macros, conteúdo de arquivos ou saída de comandos.

Largura contínua com negrito

Indica comandos ou outros textos que devem ser digitados ipisis literis pelos usuários.

Largura contínua com itálico


Indica o texto que deve ser substituído pelos valores fornecidos pelos usuários.

Este ícone simboliza uma dica, sugestão ou nota geral.

Este ícone simboliza um aviso ou uma precaução.

Utilizando códigos exemplificados


Este livro auxilia-nos a cumprir com nossos objetivos. Para tanto, geralmente podemos utilizar em
nossos programas e documentos os códigos aqui exemplificados. Contudo, não existe a necessidade
de requisitar a permissão para isso, a menos que reproduzamos uma parte significativa do código. Por
exemplo, para desenvolver um programa, utilizando-se algumas partes dos códigos deste livro, ou para
responder a determinadas questões, citando-se o livro e os códigos nele descritos, não é necessária a
permissão. Ao passo que, para vender ou distribuir CD-ROMs que contenham os exemplos retirados

xiv | Prefácio

caderno00.indd 14 21/01/2009 16:54:50


dos livros de O’Reilly ou para incluir uma grande quantidade dos códigos exemplificados neste livro
em documentações de produtos pessoais, é, realmente, necessária a permissão.

É apreciada, apesar de não exigida, a referência bibliográfica, que, normalmente, inclui o título, o
autor, a editora e o ISBN da obra. Por exemplo: ZABIR, Omar AL. Construindo o Portal Web 2.0 com o
ASP.NET 3.5. AltaBooks: Rio de Janeiro, 2008, ISBN nº 978-0-596-51050-3.

Caso seja necessário requisitar a permissão para o uso dos códigos exemplificados, deve-se entrar
em contato com o e-mail altabooks@altabooks.com.br.

Agradecimentos
Meu profundo respeito e apreciação por meus pais, por seu suporte no momento em que escrevia esta
obra. Agradecimentos especiais a Mike Pope, da Microsoft, e a Craig Wills, da Infusion, pelo apoio
sincero, pelas idéias e pelas cuidadosas revisões.

Prefácio | xv

caderno00.indd 15 21/01/2009 16:54:50


caderno00.indd 16 21/01/2009 16:54:50

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