LA.Net
Reflexões sobre C#, .Net e programação em geral

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
Comments
Title  
Name  
Url
Box Code
Protected by FormShield
Comments