Sua aplicação web está preparada para o Internet Explorer ActiveX Update?

A Microsoft lançou uma atualização que altera a maneira que o Internet Explorer lida com controles ActiveX, como Flash, Adobe Reader, Windows Media Player, applets Java, etc, que são carregados pelas tags APPLET, EMBED e OBJECT. Após a instalação do update, a interação do usuário com esses controles ficará desativada até que que eles sejam habilitados manualmente. Ou seja, o usuário terá que habilitar cada controle ActiveX da página, um a um, cada vez que acessar o site. Não preciso nem dizer que isso pode causar um certo transtorno, né?

Para evitar essa intervenção manual do usuário (que pode se tornar uma chatice), existem algumas recomendações na maneira como os controles ActiveX são carregados, que os desenvolvedores Web devem seguir. Mais detalhes podem ser encontrados no artigo Activating ActiveX Controls.

Essa atualização é resultado de um processo judicial do caso de quebra de patentes envolvendo a Microsoft e a empresa Eolas e está disponível como download opcional do Windows Update desde o dia 28/02/06. Entretanto, no próximo dia 11 de Abril, ela se tornará um download obrigatório. Assim, os efeitos serão sentidos com maior intensidade a partir desta data.

Ricardo Oneda.

Nova versão do SQL Server 2005 Express

Com o lançamento do Service Pack 1 do SQL Server 2005 e SQL Server 2005 Express previsto para este ano, a Microsoft também lançará uma nova versão do banco de dados chamada SQL Server 2005 Express Edition with Advanced Services (que nome grande!). Esta versão, que já se encontra disponível para download como um CTP - Community Technology Preview, terá algumas características novas em relação ao Express atual, como suporte a full-text search e relatórios do Reporting Service, além de já possuir integrado a interface gráfica de gerenciamento SQL Server Management Studio Express (SSMSE). E o mais importante: continuará grátis!

Ricardo Oneda.

Novidades no Windows Live

O Windows Live, portal de serviços da Microsoft em fase beta, está com algumas novidades. A primeira delas, é o no mecanismo de busca. A interface que traz os resultados da busca ficou muito mais inteligente, leve e rápida, graças ao uso maciço de DHTML (AJAX inclusive). Existe uma barra de rolagem própria e também uma outra barra que permite ao usuário configurar quantos resultados por página devem ser exibidos.

A busca por imagens também sofreu melhorias significativas. Experimente buscar alguma imagem e veja que você poderá decidir o nível de zoom das imagens exibidas. Além disso, deixando o ponteiro do mouse sobre a imagem, serão mostrados mais informações sobre ela. Clique sobre a imagem e a tela será reorganizada de modo que o resultado da busca não se perca enquanto a página que possui a imagem é aberta. Tudo isso dinamicamente, como se estivesse utilizando uma aplicação em seu micro! Além disso, também será possível customizar o mecanismo de busca através de macros. Sugiro acessar o site e ver todas essas e outras inovações disponíveis.

Outra novidade é a barra de ferramentas do Windows Live. As principais características da Windows Live Toolbar é o mecanimo de busca integrado, filtro anti-phishing scam, bloqueador de pop-ups, gerenciador de feeds RSS, entre outros. É necessário se logar com uma conta do Passport no portal do Windows Live para ter acesso a esta barra.

Ricardo Oneda

Utilizando code-behind sem pré-compilação no ASP.NET 1.X

Uma das grandes vantagens trazidas pelo ASP.NET foi o modelo de codificação batizado de code-behind, no qual o código server-side (por exemplo, C# ou VB.NET) fica separado do código HTML da página, ao contrário da abordagem do ASP tradicional, que misturava tudo e gerava muitos problemas, principalmente na hora da manutenção.

Com o lançamento do ASP.NET 2.0, o modelo de codificação foi aprimorado e o modelo de compilação padrão suportado pelo Visual Studio 2005 passou a ser o de tempo de execução, ou seja, é necessário enviar os arquivos code-behind para o servidor. O que muita gente não sabe é que este modelo também era suportado pelo ASP.NET 1.X, mas não era suportado pelo Visual Studio .NET 2002 ou 2003.

Vou demonstrar como isso é possível. Abra o Visual Studio .NET 2002 ou 2003 e crie um novo projeto do tipo ASP.NET Web Application chamado CodeBehind. Neste exemplo utilizarei a linguagem C#, mas poderia ser VB.NET, sem problema algum. Arraste um controle do tipo Label para o WebForm. No evento Page_Load do WebForm, adicione o seguinte código:

Label1.Text = "Olá Mundo sem pré-compilação!";

Agora, vá para a parte HTML da página WebForm1.aspx e acrescente o atributo Scr à diretiva Page, que deverá ficar parecida com o código abaixo:

<%@ Page language="c#" Codebehind="WebForm1.aspx.cs" AutoEventWireup="false" Inherits="CodeBehind.WebForm1" Src="WebForm1.aspx.cs"%>

Salve os arquivos mas NÃO compile sua aplicação. Abra o arquivo Global.asax no Notepad e exclua a propriedade Inherits. O arquivo deverá ficar assim:

<%@ Application Codebehind="Global.asax.cs" %>

Agora, vá ao browser de sua preferência e digite a URL da sua aplicação, que deve ser http://localhost/CodeBehind/WebForm1.aspx e perceba que a mensagem "Olá Mundo sem pré-compilação!" aparece no browser. Você perceberá que na primeira requisição há uma certa demora, pois a aplicação está sendo compilada. A partir da segunda requisição, não haverá mais esta demora, já que o assemblie já se encontra compilado. Verifique na pasta bin da sua aplicação que não há nenhuma DLL, que seria gerada caso utilizássemos a pré-compilação do Visual Studio. Não há DLL na pasta bin porque sua aplicação foi compilada em tempo de execução, ou seja, o code-behind foi compilado no momento em que a página foi acessada.

Mas você deve estar se perguntando: mas qual a utilidade disso? A principal vantagem é que quando não utilizamos pré-compilação, qualquer alteração no código é detectada, o que provoca uma nova compilação, mas a aplicação NÃO é reinicializada, ao contrário do que aconte quando geramos uma DLL através da pré-compilação do Visual Studio e a atualizamos com uma nova versão. Vamos a uma demonstração. Altere o código do evento Page_Load para:

 if (Session["numero"] != null)
 {
     Session["numero"] = Convert.ToInt32(Session["numero"]) + 1;
 }
 else
 {
     Session["numero"] = 1;
 }

 Label1.Text = "Olá Mundo sem pré-compilação!";
 Label1.Text += "
" + Session["numero"].ToString() + " vezes";

Perceba que eu criei uma variável de sessão (objeto Session) chamada "numero", que funcionará como um contador de visitas para o usuário naquela sessão. Salve o arquivo e atualize a página no browser e perceba o contador funcionando. Agora, volte ao Visual Studio e altere a linha 10 para:

Label1.Text = "Olá Mundo sem pré-compilação alterado!";

 

Volte ao browser e atualize a página. Você deverá notar que o texto apresentado na página foi alterado mas o contador (e, portanto, a variável de sessão) não foi reinicilizado, ou seja, a aplicação não foi reinicilizada. Se tentarmos fazer isso utilizando a pré-compilação do Visual Studio, veremos que a cada vez que uma nova DLL é gerada, a aplicação é reinicializada e, conseqüentemente, as variáveis de sessão (objeto Session), de aplicação (objeto Application), etc, o que pode trazer problemas para a aplicação e os usuários.

A desvantagem é que precisamos enviar o código fonte da aplicação para o servidor, o que pode não ser interessante em termos de segurança. Cabe a você analisar as vantagens e desvantagens de cada modelo e escolher o que melhor atende suas necessidades.

Referências:
Web Forms Code Model
Meditating Upon the ASP.NET Code-Behind Model

Ricardo Oneda.