DevMedia no Tech Ed US – Cobertura do maior evento para desenvolvedores Microsoft

Report#3

Neste report comento um pouco sobre algumas palestras que assisti, tratando de performance no ASP.NET e outra sobre VSTO. No final, mais dicas de WPF e um pouco mais sobre este grande evento!

Dicas de performance no ASP.NET

Hoje assisti a uma importante palestra, com o título de “ASP.NET: Best Practices in Creating Scalable, Data-Driven Web Sites”, ministrada por Rob Howard. O palestrante comentou que existem quatro prioridades que devem ser consideradas ao se avaliar a performance de uma solução Web com ASP.NET: Hardware, Plataforma (arquitetura), Data Tier (camada de dados), Application Tier (camada da aplicação).

Vou passar algumas dicas interessantíssimas que peguei na palestra.

Multi-tier: não adicione uma cada extra a sua aplicação Web. É muito comum criar uma camada separada para incluir as regras de negócio e acesso a dados, e manter a apresentação (Web Forms) em outra aplicação. Aqui o termo camada se refere a outro processo, nesse caso, uma arquitetura de 4 camadas. Teríamos então:

·         Camada 1: Banco de dados;

·         Camada 2: Camada de negócio / acesso a dados;

·         Camada 3: Aplicação Web ASP.NET;

·         Camada 4: Browser (client);

 

Veja que não importa se serão 4 máquinas físicas separadas, o que interessa é o número de processos, mesmo que estejam rodando na mesma máquina. A camada extra (2), precisa fazer uma comunicação out of process com a camada 3, o envolve marshaling e serialização. Perda de performance na certa. Ou seja, se for preciso incluir uma camada extra para separar o acesso a dados e regra de negócio, faça isso logicamente, em uma classe a parte, mas que resida no mesmo espaço de processo da aplicação ASP.NET.

Comunicação Out Of Process: semelhante ao que comentei anteriormente, sempre que for necessário fazer uma comunicação out of process, vai afetar a performance da solução. Isso inclui chamadas a aplicações COM+ servidoras, por exemplo. Tome muito cuidado com isso. Uma boa idéia é configurar o objeto COM para rodar como uma biblioteca. Cuidado também com operações de I/O.

Uma recomendação no deploy, nos dois cenários anteriores, é usar o servidor ISA. Uma boa prática é centralizar tudo em um único servidor Web. Ou ainda ter vários servidores Web e um único servidor de BD.

 

Kernel Cache IIS 6 – recomendado para aumentar drasticamente a performance de solução ASP.NET. Segundo o palestrante, a habilitação dessa cache faz com que suas páginas dinâmicas sejam tão rápidas quanto páginas HTML estáticas! O ganho de performance chega a ser quase 3 x maior que comparado ao uso de OutputCache.

IIS Memory – faça um “tuning” na memória usada pelo IIS (memory recycling), o ideal é não usar mais que 60% de memória física.

Uso excessivo de memória – tenha cuidado ao usar muitas variáveis e objetos em cache e sessão. Tenha *muito* cuidado também com upload e download de arquivos em aplicações ASP.NET, podem afetar a performance. Verifique o tamanho de DataSets em cache e a quantidade de dados trazida do servidor de BD. E finalmente, saiba muito bem como usar o ViewState e quando não usar.

Dados – quando acessar BDs para recuperar dados, procure usar múltiplos resultsets e em um DataReader usar o NextResult. Reduza o número de Round-trips ao servidor.

Desabilite – Se não está usando, desabilite os recursos de ViewState e Session State.

 

OutPutCache – Esse recurso permite que a página HTML gerada após a renderização e processamento de uma página ASPX seja colocado em Cache. O resultado é que em uma nova requisição, o ASP.NET obtém o código HTML já gerado para a página ASPX. Suporta inclusive cache parcial de página, através de UserControls. Conheça e saiba usar esse recurso.

Data Caching – ASP.NET 2.0 e SQL Server 2005 suportam um novo recurso que permite colocar um tabela em cache e notificar a aplicação quando uma mudança ocorre no BD, para que a mesma seja refeita.

Sem dúvida uma excelente palestra. Tenha em mãos essas dicas sempre que precisar escalar sua solução ASP.NET.

 

img 

Visual Studio Tools for Office (VSTO)

O VSTO sem dúvida é um assunto que me interessou muito, desde a época em que o conheci. Lembro que antigamente utilizávamos objetos COM e OLE para promover a interoperabilidade entre nossas aplicações e aplicativos do Office. Com o .NET, e agora WinFx (.NET 3.0), essa integração muda drasticamente. Podemos acessar objetos do Word, Excel, PPT etc. como se fossem objetos da nossa própria aplicação. Podemos programaticamente criar e interagir com documentos, podendo inclusive incluir controles .NET (como DataGrids e ComboBoxes) dentro de planilhas e docs.

 

Além disso, é possível criar add-ins para o Outlook, de uma forma muito simples. E-Mails, Tarefas, Planilhas, Gráficos, ToolBars, Menus, praticamente tudo pode ser acesso via código. Na palestra “VSTO: Building Composite Applications Using Visual Studio 2005 Tools for the Microsoft Office System”, de Jon Rauschenberger, pude comprovar isso. É muito simples criar aplicações como o VSTO, tudo o que você precisa fazer é instalá-lo e certificar-se que o SP1 do Office esteja instalado na sua máquina. A seguir, você pode usar o menu File>New Project>[Linguagem]>Office e criar seus aplicativos com VSTO, como mostra a figura:

 

img

 

No final da apresentação, entrou em cena Chad Hover, para mostrar como criar um add-in para OutLook, na prática. Para mais informações sobre VSTO, acesse:

 

http://msdn.microsoft.com/office/tool/vsto/default.aspx

 

WPF

Confesso que fiquei encantado pelo WPF! Para saber mais sobre a tecnologia, veja o meu report anterior. Hoje procurei saber mais sobre o assunto. Peguei uma dica interessantíssima que gostaria de compartilhar, trata-se de um XALM editor, que pode ser usado para criar interfaces gráficas para o WPF. O nome do utilitário é Aurora, e pode ser obtido em:

 

http://www.mobiform.com/eng/aurora.html

 

Aproveitei o Hands on Lab para criar uma aplicação “Olá Mundo” WPF para Web (veja report anterior para saber como criar a aplicação no VS 2005). Abaixo a aplicação em execução no IE7 do Windows Vista. O código-fonte está a seguir.

 

img

 

Page1.xaml

 

<Page x:Class="WinFXHelloWorld.Page1"

    xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

    xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

    Title="Page1"

    >

    <Grid>

    <Button Height="21.96" HorizontalAlignment="Left" Margin="21,20.04,0,0" Name="button1" VerticalAlignment="Top" Width="69" Click = "Button1_Click">HelloButton>

    <Label Height="53.96" Margin="28.0066666666667,54.04,-108,0" Name="label1" VerticalAlignment="Top" FontSize="30">LabelLabel>

    <TextBox Height="23.96" Margin="102,19.04,9,0" Name="textBox1" VerticalAlignment="Top">textBoxTextBox>

  Grid>

Page>

 

Page1.xaml.cs

 

using System;

using System.Collections.Generic;

using System.Text;

using System.Windows;

using System.Windows.Controls;

using System.Windows.Data;

using System.Windows.Documents;

using System.Windows.Input;

using System.Windows.Media;

using System.Windows.Media.Imaging;

using System.Windows.Navigation;

using System.Windows.Shapes;

 

namespace WinFXHelloWorld

{

    ///

    /// Interaction logic for Page1.xaml

    ///

 

    public partial class Page1 : Page

    {

         public Page1()

        {

            InitializeComponent();

        }

 

        public void Button1_Click(object sender, EventArgs e)

        {

            label1.Content = textBox1.Text;

        }

    }

}

Mais sobre o evento

Hoje conversei com mais alguns membros do time da MS, em especial Danny Thorpe, arquiteto do time do Windows Live. Ganhamos um DVD com o visual Studio 2005 Team Edition e o Team Foundation Server! Alias, você ganha um DVD aqui para cada lado que vai. O mesmo vale para camisetas. Aproveitei para fazer uma prova de ASP.NET no Microsoft Learning Center, para ganhar de brinde um belo livro de ASP.NET Web Forms da MS Press. Também ganhamos uma bonita mochila do Windows Vista, que por sinal deu de 10 a 0 na mochila do evento (o pessoal aqui reclamou muito da mochila desse ano).

 

img

 

No próximo report mais dicas das palestras, incluindo VSTS e C#2.0 e 3.0, não perca!