Nesta última semana comecei, finalmente, a
investigar um pouco acerca do ATLAS, a nova plataforma da Microsoft que permite
construir as aplicações "AJAX" (que estão na moda, a julgar pelo interesse
que têm despertado nos últimos meses). Após breve análise ao "pacote", é seguro
afirmar que o ATLAS é uma verdadeira "plataforma" já que, para além de abstrair
todo o código necessário ao refrescamento parcial de uma página, disponibiliza
ainda várias outras funcionalidades (ex.: melhora o suporte à programação
OO em javascript).
Do ponto de vista prático, é seguro afirmarmos que
o ATLAS permite a utilização de dois modelos (que podem ser usados
simultaneamente numa página). Por um lado, podemos usar um modelo
centrado no lado cliente, onde a construção de páginas é feita em torno de
controlos HTML tradicionais e de scripts (escritos em javascript ou numa nova
linguagem inventada para esse fim designada de xml-script); por outro, podemos
construir as páginas através de controlos ASP.NET e recorrer a alguns controlos
servidor ATLAS que se encarregam de efectuar a actualização automática de
determinadas áreas da página (neste cenário, a lógica associada aos eventos
gerados pelos controlos é mantida no lado servidor, como acontece com a grande
maioria das páginas ASP.NET tradicionais).
Nos próximos posts, vou tentar apresentar alguns
dos aspectos mais importantes relacionados com esta tecnologia. Antes de
apresentar um exemplo prático, convém indicar o site onde podem ser obtidos os
bits do ATLAS. Tal como tem acontecido com as CTPS anteriores, os binários e
respectiva documentação podem ser obtidos em http://atlas.asp.net.
Para terminar esta entrada, vamos desenvolver o
tradicional "Olá Mundo". A ideia é construir uma página que pede o nome ao
utilizador e apresenta uma mensagem de boas vindas a este. Após instalarmos o
ATLAS, a criação de um novo site ATLAS passa simplesmente pela
escolha do template correcto existente no diálogo apresentado
quando criamos um novo site web.
Vamos começar pela abordagem baseada no
cliente. Note-se que a utilização de processamento servidor não é necessária
para apresentar uma mensagem de boas vindas ao utilizador - neste caso, a
interacção com o servidor é feita apenas para demonstrar uma das várias
aproximações que pode, ser seguidas para permitir a comunicação entre cliente e
servidor.
<%@ Page Language="C#" %>
<!DOCTYPE
html PUBLIC
"-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
[System.Web.Services.WebMethod]
public string
SayHowdy(string name)
{
return string.Format("Howdy,
{0}!", this.Server.HtmlEncode(name));
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml"
>
<head runat="server">
<title>Untitled
Page</title>
</head>
<body>
<form id="form1"
runat="server">
<atlas:ScriptManager runat="server" ID="manager"
EnableScriptComponents="false"
/>
Introduza o seu nome:
<input type="text" id="nome"
/>
<input type="button"
value="Say howdy" onclick="sayHowdy()" />
</form>
<script
type="text/javascript">
function sayHowdy()
{
PageMethods.SayHowdy( document.getElementById("nome").value, callbackMethod
);
}
function callbackMethod( result
)
{
alert(
result );
}
</script>
</body>
</html>
O controlo <atlas:ScriptManager> é essencial
para o correcto funcionamento das páginas ATLAS. Uma das suas funções é inserir
a referência aos ficheiros javascript usados no lado cliente. Neste caso,
estamos a usar uma versão mais "leve" do ATLAS (atribuição do valor true à
propriedade EnableScriptComponents), já que apenas queremos invocar um web
service remotamente (a versão completa do ATLAS inclui a utilização de
componentes - um novo conceito que procura abstrair a utilização de controlos
HTML e que será abordado em posts futuros).
A aproximação servidor é muito útil quando queremos
adicionar AJAX a uma aplicação tradicional ASP.NET. Nestes cenários, a ideia é
envolver os controlos ASP.NET que devem ser refrescados com controlos
UpdatePanel. O código seguinte ilustra esta abordagem e produz o
mesmo resultado da página anterior:
<%@ Page Language="C#" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0
Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<script runat="server">
void
Handle(object sender, EventArgs args)
{
this.ClientScript.RegisterClientScriptBlock(this.GetType(), "howdy",
string.Format("alert('Howdy {0}');", nome.Text ), true);
}
</script>
<html xmlns="http://www.w3.org/1999/xhtml" >
<head
runat="server">
<title>Untitled
Page</title>
</head>
<body>
<form id="form1"
runat="server">
<atlas:ScriptManager runat="server" id="manager"
EnablePartialRendering="true">
</atlas:ScriptManager>
<atlas:UpdatePanel runat="server"
ID="panel">
<ContentTemplate>
<asp:TextBox runat="server" ID="nome"
/>
<asp:Button runat="server" id="bt" OnClick="Handle" Text="Say howdy"
/>
</ContentTemplate>
</atlas:UpdatePanel>
<%=DateTime.Now.ToString() %>
</form>
</body>
</html>
Todos os eventos gerados pelos controlos servidor situados no
interior do controlo UpdatePanel são interceptados pela framework cliente do
ATLAS. Esta encarrega-se de enviar um pedido ao servidor e de refrescar o
interior do painel com a resposta obtida.
Por hoje é tudo! Nos próximos posts vou continuar a falar sobre
ATLAS e a apresentar as principais características desta
plataforma.
posted on Thursday, March 23, 2006 9:54 PM