ASP.NET Atlas, o impulso que estávamos esperando - Parte II

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

Veja nesse artigo de Matt Gibbs, a segunda parte de como trabalhar com o Ajax em aplicações ASP.NET. Acesso exclusivo para Assinantes.

Publicado originalmente na MSDN Magazine USA Ano 21 Número 8.

 

Controles Client Script e Componentes

Acima das camadas que compõem o núcleo do script de cliente da arquitetura do Atlas, encontra-se o modelo de componentes e as camadas de controle. Essa parte da biblioteca de script foi construída por cima do núcleo do script subjacente, porém, é exibido separadamente para o cliente.

Poderíamos decidir pela não inclusão da camada de componentes, e apenas utilizar diretamente o sistema dos tipos e da biblioteca de classes base do JavaScript para escrever scripts, porém, não teríamos acesso aos componentes cliente fornecidos pelo Atlas e não conseguiríamos utilizar o xml-script, o qual é um novo conjunto de elementos declarativos, contidos no markup da página que é enviada para o browser. Os elementos xml-script estão contidos em um script tag que utiliza o novo valor de tipo:

 

 

A chave para habilitar um conjunto adicional de elementos no markup é a utilização do script tag. O browser reconhece o elemento script, porém, não sabe como tratar o tipo text/xml-script. A biblioteca de script do Atlas é, nesse caso, capaz de lidar com os elementos contidos no próprio script tag. O markup é tratado pela camada componente da client script library.

O xml-script é analisado no cliente para criar instâncias de componentes e controles. Ele pode conter configurações das propriedades dos componentes e controles que define, e pode declarar ligações entre eles e os elementos HTML contidos em outro lugar da página.

Os elementos xml-script podem também declarar recursos Web Service e a seguir referenciá-los como fontes de dados em outro lugar do markup. A página de exemplo na Listagem 3 demonstra a utilização do xml-script para estabelecer declarativamente que o nome do filme associado com um determinado ano, será exibido como um elemento popup quando o ponteiro de mouse passar por cima do ano.

 

 

Listagem 3. Exibição de Comportamento Popup na Página

@ Page Language="C#" %>

 

A página na Listagem 3, contém um elemento DIV para exibir um ano e um elemento SPAN para exibir o nome do filme, porém, esse último foi declarado como oculto. No xml-script, um popupBehavior é associado ao nome e invocado por um hoverBehavior associado ao ano.

O código do popupBehavior está contido no componente e na camada de controle da biblioteca de script do Atlas. O xml-script é fácil de examinar em comparação com o JavaScript que estaria tipicamente incluído em uma página, em particular quando iniciamos o factoring do código para lidar com múltiplas implementações de browsers.

 

A sintaxe declarativa como a do xml-script na Listagem 3, pode ser produzida e consumida facilmente por ferramentas de desenvolvimento. E os controles servidores do Atlas produzem xml-script para permitir uma experiência de usuário mais rica quando a página for executa.

A maior parte dos xml-script utilizados em uma aplicação do Atlas nunca existirá diretamente no arquivo ASPX, nem a maior parte dos desenvolvedores terão que codificá-la manualmente.

A variedade de comportamentos que fazem parte do Atlas CTP, serve para melhorar a experiência de usuário. O comportamento progressivo pode fornecer a informação de que uma operação se encontra pendente em background. O clique, o passar por cima do mouse e os comportamentos popup, levam em conta a interação de usuário rica.

Os comportamentos podem ser facilmente amarrados de forma declarativa a elementos HTML da página, utilizando o xml-script. Como os próprios comportamentos são implementados em JavaScript, comportamentos mais complexos são possíveis, porém, o seu uso nas páginas pode ser realizado através do xml-script.

Controles Servidor

Os controles servidor incluídos no Atlas CTP tornam fácil evitar a pausa que acompanha um postback de página. Os usuários podem continuar interagindo com a página enquanto os controles atualizam a sua exibição no background. Dois controles colaboram para permitir isso. Eles podem ser acrescentados a páginas existentes para atingir resultados dramaticamente melhorados.

O controle ScriptManager trabalha para modificar o comportamento de postback do cliente, enquanto o UpdatePanel gerencia o ciclo de vida da página no servidor, para que a modificação seja realizada.

 

O ScriptManager deve estar incluído em todas as páginas que utilizarão as funcionalidades do Atlas. Ele coordena qual código JavaScript será enviado para o cliente. Os controles servidor podem fornecer JavaScript do cliente e utilizar o ScriptManager para tratá-lo. O ScriptManager utilizará a nova interface IScriptComponent que o mesmo implementa. O ScriptManager também provê suporte para as bibliotecas de componentes script que se associam a elementos xml-script.

A configuração da propriedade EnablePartialRendering do ScriptManager para true, produz o novo comportamento de postbacks do cliente:

 

<atlas:ScriptManager EnablePartialRendering="true"

  runat="server" />

 

O comportamento de postback é modificado para permitir que a solicitação ocorra sem interromper a experiência do usuário. As informações sobre o view state requerida para persistir as informações sobre os controles entre as solicitações é mantido pelas solicitações de exibição parcial.

E o HTML da região que é atualizada ou modificada é atualizado pelo JavaScript que interage com o Document Object Model (DOM – Modelo do Objetos Documento) do browser. As regiões na página que devem levar em conta atualizações parciais, são especificadas na página ASP.NET utilizando o UpdatePanel.

O UpdatePanel indica para o ScriptManager, quais regiões da página devem ser atualizadas independentemente do resto da mesma. Quando uma ação no browser causa um postback para aquela(s) região (ões) da página, os dados do formulário são postados e o ciclo de vida da página começa a ser executado no servidor.

 

Do momento em que nos bastidores, o script está iniciando o postback assincronamente, a página ainda será exibida para o usuário. No servidor, o estado do controle é restaurado com base nos dados de view state postados pelo cliente. Quando a fase de exibição ocorrer, o ScriptManager isola a exibição para a região UpdatePanel cuja exibição está sendo atualizada, e a reenvia para o browser.

Os dados de view state da página também são reunidos e acompanham o HTML como parte da resposta. A seguir, o script no browser substitui com o novo HTML, o HTML correspondente à exibição anterior dos conteúdos do UpdatePanel.

O controle UpdatePanel pode conter elementos Triggers e de um ContentTemplate:

 

<atlas:UpdatePanel ID="UpdatePanel1" runat="server">

<Triggers>

        ...

    Triggers>

<ContentTemplate>

        ...

ContentTemplate>

atlas:UpdatePanel>

 

A área dentro do ContentTemplate é atualizada quando o ScriptManager gerencia um postback assíncrono. O elemento Triggers pode conter ControlEventTrigger e ControlValueTrigger. Os Triggers permitem que o desenvolvedor da página especifique quais as modificações específicas que devem causar a atualização da região.

Isso permite que os controles que estão fora do UpdatePanel causem a modificação sem necessidade de estar contidos diretamente dentro do UpdatePanel. Ele também permite a utilização de declarações simples para controlar o comportamento da página e do UpdatePanel e para especificar quando os novos dados serão recuperados.

Em uma página podem ser colocados vários UpdatePanel com diferentes triggers que provocam atualizações independentemente. O conteúdo do UpdatePanel pode ser configurado para um mínimo necessário para responder à entrada de um usuário específico.

Utilizando o UpdatePanel, uma página ASP.NET já existente pode ser rapidamente construído para ser mais responsiva sem modificações significativas.

Web Services

A capacidade de acessar os serviços do browser é fundamental para permitir aplicações interativas. Dois tipos de serviços distintos são habilitados pelo Atlas. O ScriptManager utilizará proxys automaticamente gerados para referências a Web services:

 

<atlas:ScriptManager EnablePartialRendering="true" runat="server">

    <Services>

        <atlas:ServiceReference GenerateProxy="true"

         Path="~/nominees.aspx" Type="Custom"

    Services>

atlas:ScriptManager>

 

Os componentes do lado cliente a seguir, podem chamar os Web Services diretamente do script. Os Web Services também são associados a controles para permitir comportamentos mais ricos. Por exemplo, o AutoCompleteBehavior pode ser definido em xml-script para utilizar um Web Service que recupera as possibilidades relevantes (ver Listagem 4).

 

Listagem 4. AutoCompleteBehavior em xml-script

 

O comportamento é associado a um elemento na página e aumenta o mesmo. Quando estabelecido no markup.aspx, é chamado de extender. O AutoCompleteBehavior pode associar-se com um elemento pela utilização de um AutoCompleteExtender.

Em vez de escrever o xml-script diretamente, o extender associa-se com um controle no servidor. O comportamento do controle será então estendido pela exibição do xml-script apropriado para obter o comportamento de lado de cliente. Ao chamarmos Web services, a chamada e os resultados retornados são normalmente transportados no XML.

 

O Atlas também suporta a serialização dos dados dos Web services em JSON, o qual elimina um pouco da sobrecarga inerente ao XML. Os dados JSON podem ser desserializados diretamente para objetos JavaScript no browser. O Atlas suporta a serialização de tipos gerenciados pelo .NET mais complexos provindos do servidor, para objetos JavaScript representativos no browser. Isso simplifica a tarefa de acessar os Web Services a partir do browser.

A idéia de utilizarmos os Web Services do browser provêm de Web Services personalizados que são a parte da aplicação, para serviços de aplicações ASP.NET. O Atlas expõe a capacidade de utilizar o serviço Forms Authentication diretamente do JavaScript:

 

Sys.Services.AuthenticationService.login(

  username, password, completionFunction);

 

O usuário não tem que ser redirecionado para a página de senha de entrada e a seguir de volta para a página original; o HTML, por tanto, pode ser dinamicamente alterado quando o usuário fornece as credenciais de senha de entrada.

Os dados Profile disponíveis em páginas.aspx estão também disponíveis através de chamadas Web Service. Ele suporta o armazenamento e a recuperação dos dados profile que estão armazenados no servidor, através de objetos JavaScript.

 

Os Web Services que uma aplicação poderia utilizar nem sempre estão localizados no mesmo servidor hospedeiro. Na verdade, nem todos estão necessariamente no mesmo domínio. O browser bloqueará chamadas para um outro domínio diferente de onde a página se originou, utilizando o XmlHttpRequest.

Existem algumas formas inteligentes para contornar essa limitação, utilizando objetos IFrame ocultos para iniciar solicitações filhas, porém, eles são enfadonhos na melhor das hipóteses. O Atlas fornece a junção de Web Services para permitir esse cenário. O cliente pode iniciar chamadas Web Service destinadas a outro domínio.

A chamada é enviada para a aplicação do Atlas originária, a qual, por sua vez, encaminha a solicitação para o servidor alvo do usuário e serializa os resultados de volta para o cliente. O Atlas é também capaz de utilizar técnicas IFrame para comunicar-se diretamente com outros domínios.

Conclusão

O Atlas fornece uma variedade de funcionalidades para criar aplicações Web mais ricas. O biblioteca de script cliente simplifica a tarefa de escrever JavaScript e fornece construtos para a utilização da abordagem orientada por objetos para escrever JavaScript. As funcionalidades Web Services permitem fácil acesso a serviços remotos e locais. A serialização de tipos complexo torna fácil a utilização de tipos ricos tanto do cliente quanto do servidor. Os controles servidor tiram proveito da biblioteca de script cliente e permitem às aplicações existentes e às novas, reduzir drasticamente as pausas de espera comuns nas atuais aplicações Web.

 

Um novo buid CTP está sendo liberado mensalmente com consertos, modificações e novas funcionalidades. Finalmente, o Atlas estará integrado ao .NET Framework no próximo lançamento. A curto prazo, a Microsoft anunciou uma licença limitada que nos permitirá distribuir o Atlas em sites e começar a tirar proveito em aplicações Web. Para mais informações e para fazer o download do último Atlas CTP, ver atlas.asp.net.

 

Matt Gibbs é o Gerente de Desenvolvimento da equipe ASP.NET da Microsoft. É co-autor de vários livros em ASP, Mobile Controls e ASP.NET. Pode ser contatado em mattgi@microsoft.com. "

 

A chave para habilitar um conjunto adicional de elementos no markup é a utilização do script tag. O browser reconhece o elemento script, porém, não sabe como tratar o tipo text/xml-script. A biblioteca de script do Atlas é, nesse caso, capaz de lidar com os elementos contidos no próprio script tag. O markup é tratado pela camada componente da client script library.

O xml-script é analisado no cliente para criar instâncias de componentes e controles. Ele pode conter configurações das propriedades dos componentes e controles que define, e pode declarar ligações entre eles e os elementos HTML contidos em outro lugar da página.

Os elementos xml-script podem também declarar recursos Web Service e a seguir referenciá-los como fontes de dados em outro lugar do markup. A página de exemplo na Listagem 3 demonstra a utilização do xml-script para estabelecer declarativamente que o nome do filme associado com um determinado ano, será exibido como um elemento popup quando o ponteiro de mouse passar por cima do ano.

 

 

Listagem 3. Exibição de Comportamento Popup na Página

@ Page Language="C#" %>

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

/SPAN>html xmlns="http://www.w3.org/1999/xhtml" >

/SPAN>head id="Head1" runat="server">

  /SPAN>title>Hover Exampletitle>

  /SPAN>atlas:ScriptManager ID="ScriptManager1" runat="server" />   

head>

/SPAN>body>

  /SPAN>form id="form1" runat="server">

  /SPAN>div>   

  /SPAN>h2>Movie of the Yearh2>

  /SPAN>div id="popup2004" width="30">2004

    /SPAN>span id="movieName2004" style="visibility: hidden;

     display: none; border: solid 1px black;

     background: cyan;">Million Dollar Babyspan>

  div>   

  form>

  /SPAN>script type="text/xml-script">

    "http://schemas.microsoft.com/xml-script/2005"

     xmlns:samples="samples">

     

        "movieName2004">

          

            "popupBehavior2"

             parentElement="popup2004"

             positioningMode="BottomLeft" />

         

       

        "popup2004">

         

            "movieName2004">

             

                "popupBehavior2"

                 method="show" />

             

             

                "popupBehavior2"

                 method="hide" />

             

           

         

       

     

   

  script>

body>

html>

 

A página na Listagem 3, contém um elemento DIV para exibir um ano e um elemento SPAN para exibir o nome do filme, porém, esse último foi declarado como oculto. No xml-script, um popupBehavior é associado ao nome e invocado por um hoverBehavior associado ao ano.

O código do popupBehavior está contido no componente e na camada de controle da biblioteca de script do Atlas. O xml-script é fácil de examinar em comparação com o JavaScript que estaria tipicamente incluído em uma página, em particular quando iniciamos o factoring do código para lidar com múltiplas implementações de browsers.

 

A sintaxe declarativa como a do xml-script na Listagem 3, pode ser produzida e consumida facilmente por ferramentas de desenvolvimento. E os controles servidores do Atlas produzem xml-script para permitir uma experiência de usuário mais rica quando a página for executa.

A maior parte dos xml-script utilizados em uma aplicação do Atlas nunca existirá diretamente no arquivo ASPX, nem a maior parte dos desenvolvedores terão que codificá-la manualmente.

A variedade de comportamentos que fazem parte do Atlas CTP, serve para melhorar a experiência de usuário. O comportamento progressivo pode fornecer a informação de que uma operação se encontra pendente em background. O clique, o passar por cima do mouse e os comportamentos popup, levam em conta a interação de usuário rica.

Os comportamentos podem ser facilmente amarrados de forma declarativa a elementos HTML da página, utilizando o xml-script. Como os próprios comportamentos são implementados em JavaScript, comportamentos mais complexos são possíveis, porém, o seu uso nas páginas pode ser realizado através do xml-script.

Controles Servidor

Os controles servidor incluídos no Atlas CTP tornam fácil evitar a pausa que acompanha um postback de página. Os usuários podem continuar interagindo com a página enquanto os controles atualizam a sua exibição no background. Dois controles colaboram para permitir isso. Eles podem ser acrescentados a páginas existentes para atingir resultados dramaticamente melhorados.

O controle ScriptManager trabalha para modificar o comportamento de postback do cliente, enquanto o UpdatePanel gerencia o ciclo de vida da página no servidor, para que a modificação seja realizada.

O ScriptManager deve estar incluído em todas as páginas que utilizarão as funcionalidades do Atlas. Ele coordena qual código JavaScript será enviado para o cliente. Os controles servidor podem fornecer JavaScript do cliente e utilizar o ScriptManager para tratá-lo. O ScriptManager utilizará a nova interface IScriptComponent que o mesmo implementa. O ScriptManager também provê suporte para as bibliotecas de componentes script que se associam a elementos xml-script.

A configuração da propriedade EnablePartialRendering do ScriptManager para true, produz o novo comportamento de postbacks do cliente:

 

/SPAN>atlas:ScriptManager EnablePartialRendering="true"

  runat="server" />

 

O comportamento de postback é modificado para permitir que a solicitação ocorra sem interromper a experiência do usuário. As informações sobre o view state requerida para persistir as informações sobre os controles entre as solicitações é mantido pelas solicitações de exibição parcial.

E o HTML da região que é atualizada ou modificada é atualizado pelo JavaScript que interage com o Document Object Model (DOM – Modelo do Objetos Documento) do browser. As regiões na página que devem levar em conta atualizações parciais, são especificadas na página ASP.NET utilizando o UpdatePanel.

O UpdatePanel indica para o ScriptManager, quais regiões da página devem ser atualizadas independentemente do resto da mesma. Quando uma ação no browser causa um postback para aquela(s) região (ões) da página, os dados do formulário são postados e o ciclo de vida da página começa a ser executado no servidor.

Do momento em que nos bastidores, o script está iniciando o postback assincronamente, a página ainda será exibida para o usuário. No servidor, o estado do controle é restaurado com base nos dados de view state postados pelo cliente. Quando a fase de exibição ocorrer, o ScriptManager isola a exibição para a região UpdatePanel cuja exibição está sendo atualizada, e a reenvia para o browser.

Os dados de view state da página também são reunidos e acompanham o HTML como parte da resposta. A seguir, o script no browser substitui com o novo HTML, o HTML correspondente à exibição anterior dos conteúdos do UpdatePanel.

O controle UpdatePanel pode conter elementos Triggers e de um ContentTemplate:

 

/SPAN>atlas:UpdatePanel ID="UpdatePanel1" runat="server">

/SPAN>Triggers>

        ...

    Triggers>

/SPAN>ContentTemplate>

        ...

ContentTemplate>

atlas:UpdatePanel>

 

A área dentro do ContentTemplate é atualizada quando o ScriptManager gerencia um postback assíncrono. O elemento Triggers pode conter ControlEventTrigger e ControlValueTrigger. Os Triggers permitem que o desenvolvedor da página especifique quais as modificações específicas que devem causar a atualização da região.

Isso permite que os controles que estão fora do UpdatePanel causem a modificação sem necessidade de estar contidos diretamente dentro do UpdatePanel. Ele também permite a utilização de declarações simples para controlar o comportamento da página e do UpdatePanel e para especificar quando os novos dados serão recuperados.

Em uma página podem ser colocados vários UpdatePanel com diferentes triggers que provocam atualizações independentemente. O conteúdo do UpdatePanel pode ser configurado para um mínimo necessário para responder à entrada de um usuário específico.

Utilizando o UpdatePanel, uma página ASP.NET já existente pode ser rapidamente construído para ser mais responsiva sem modificações significativas.

Web Services

A capacidade de acessar os serviços do browser é fundamental para permitir aplicações interativas. Dois tipos de serviços distintos são habilitados pelo Atlas. O ScriptManager utilizará proxys automaticamente gerados para referências a Web services:

 

/SPAN>atlas:ScriptManager EnablePartialRendering="true" runat="server">

    /SPAN>Services>

        /SPAN>atlas:ServiceReference GenerateProxy="true"

         Path="~/nominees.aspx" Type="Custom"

    Services>

atlas:ScriptManager>

 

Os componentes do lado cliente a seguir, podem chamar os Web Services diretamente do script. Os Web Services também são associados a controles para permitir comportamentos mais ricos. Por exemplo, o AutoCompleteBehavior pode ser definido em xml-script para utilizar um Web Service que recupera as possibilidades relevantes (ver Listagem 4).

 

Listagem 4. AutoCompleteBehavior em xml-script

/SPAN>script type="text/xml-script">

  "http://schemas.microsoft.com/xml-script/2005">

   

      "suggestTextBox">

       

         

           completionList="completionList" serviceURL="suggest.asmx"

           serviceMethod="GetSuggestions" minimumPrefixLength="1"

           completionInterval="500" completionSetCount="15" />

       

     

   

 

script>

 

O comportamento é associado a um elemento na página e aumenta o mesmo. Quando estabelecido no markup.aspx, é chamado de extender. O AutoCompleteBehavior pode associar-se com um elemento pela utilização de um AutoCompleteExtender.

Em vez de escrever o xml-script diretamente, o extender associa-se com um controle no servidor. O comportamento do controle será então estendido pela exibição do xml-script apropriado para obter o comportamento de lado de cliente. Ao chamarmos Web services, a chamada e os resultados retornados são normalmente transportados no XML.

 

O Atlas também suporta a serialização dos dados dos Web services em JSON, o qual elimina um pouco da sobrecarga inerente ao XML. Os dados JSON podem ser desserializados diretamente para objetos JavaScript no browser. O Atlas suporta a serialização de tipos gerenciados pelo .NET mais complexos provindos do servidor, para objetos JavaScript representativos no browser. Isso simplifica a tarefa de acessar os Web Services a partir do browser.

A idéia de utilizarmos os Web Services do browser provêm de Web Services personalizados que são a parte da aplicação, para serviços de aplicações ASP.NET. O Atlas expõe a capacidade de utilizar o serviço Forms Authentication diretamente do JavaScript:

 

Sys.Services.AuthenticationService.login(

    username, password, completionFunction);

 

O usuário não tem que ser redirecionado para a página de senha de entrada e a seguir de volta para a página original; o HTML, por tanto, pode ser dinamicamente alterado quando o usuário fornece as credenciais de senha de entrada.

Os dados Profile disponíveis em páginas.aspx estão também disponíveis através de chamadas Web Service. Ele suporta o armazenamento e a recuperação dos dados profile que estão armazenados no servidor, através de objetos JavaScript.

 

Os Web Services que uma aplicação poderia utilizar nem sempre estão localizados no mesmo servidor hospedeiro. Na verdade, nem todos estão necessariamente no mesmo domínio. O browser bloqueará chamadas para um outro domínio diferente de onde a página se originou, utilizando o XmlHttpRequest.

Existem algumas formas inteligentes para contornar essa limitação, utilizando objetos IFrame ocultos para iniciar solicitações filhas, porém, eles são enfadonhos na melhor das hipóteses. O Atlas fornece a junção de Web Services para permitir esse cenário. O cliente pode iniciar chamadas Web Service destinadas a outro domínio.

A chamada é enviada para a aplicação do Atlas originária, a qual, por sua vez, encaminha a solicitação para o servidor alvo do usuário e serializa os resultados de volta para o cliente. O Atlas é também capaz de utilizar técnicas IFrame para comunicar-se diretamente com outros domínios.

Conclusão

O Atlas fornece uma variedade de funcionalidades para criar aplicações Web mais ricas. O biblioteca de script cliente simplifica a tarefa de escrever JavaScript e fornece construtos para a utilização da abordagem orientada por objetos para escrever JavaScript. As funcionalidades Web Services permitem fácil acesso a serviços remotos e locais. A serialização de tipos complexo torna fácil a utilização de tipos ricos tanto do cliente quanto do servidor. Os controles servidor tiram proveito da biblioteca de script cliente e permitem às aplicações existentes e às novas, reduzir drasticamente as pausas de espera comuns nas atuais aplicações Web.

 

Um novo buid CTP está sendo liberado mensalmente com consertos, modificações e novas funcionalidades. Finalmente, o Atlas estará integrado ao .NET Framework no próximo lançamento. A curto prazo, a Microsoft anunciou uma licença limitada que nos permitirá distribuir o Atlas em sites e começar a tirar proveito em aplicações Web. Para mais informações e para fazer o download do último Atlas CTP, ver atlas.asp.net.

 

Matt Gibbs é o Gerente de Desenvolvimento da equipe ASP.NET da Microsoft. É co-autor de vários livros em ASP, Mobile Controls e ASP.NET. Pode ser contatado em mattgi@microsoft.com.

 

A chave para habilitar um conjunto adicional de elementos no markup é a utilização do script tag. O browser reconhece o elemento script, porém, não sabe como tratar o tipo text/xml-script. A biblioteca de script do Atlas é, nesse caso, capaz de lidar com os elementos contidos no próprio script tag. O markup é tratado pela camada componente da client script library.

O xml-script é analisado no cliente para criar instâncias de componentes e controles. Ele pode conter configurações das propriedades dos componentes e controles que define, e pode declarar ligações entre eles e os elementos HTML contidos em outro lugar da página.

Os elementos xml-script podem também declarar recursos Web Service e a seguir referenciá-los como fontes de dados em outro lugar do markup. A página de exemplo na Listagem 3 demonstra a utilização do xml-script para estabelecer declarativamente que o nome do filme associado com um determinado ano, será exibido como um elemento popup quando o ponteiro de mouse passar por cima do ano.

 

 

Listagem 3. Exibição de Comportamento Popup na Página

@ Page Language="C#" %>

DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"

    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

/SPAN>html xmlns="http://www.w3.org/1999/xhtml" >

/SPAN>head id="Head1" runat="server">

  /SPAN>title>Hover Exampletitle>

  /SPAN>atlas:ScriptManager ID="ScriptManager1" runat="server" />   

head>

/SPAN>body>

  /SPAN>form id="form1" runat="server">

  /SPAN>div>   

  /SPAN>h2>Movie of the Yearh2>

  /SPAN>div id="popup2004" width="30">2004

    /SPAN>span id="movieName2004" style="visibility: hidden;

     display: none; border: solid 1px black;

     background: cyan;">Million Dollar Babyspan>

  div>   

  form>

  /SPAN>script type="text/xml-script">

    "http://schemas.microsoft.com/xml-script/2005"

     xmlns:samples="samples">

     

        "movieName2004">

          

            "popupBehavior2"

             parentElement="popup2004"

             positioningMode="BottomLeft" />

         

       

        "popup2004">

         

            "movieName2004">

             

                "popupBehavior2"

                 method="show" />

             

             

                "popupBehavior2"

                 method="hide" />

             

           

         

       

     

   

  script>

body>

html>

 

A página na Listagem 3, contém um elemento DIV para exibir um ano e um elemento SPAN para exibir o nome do filme, porém, esse último foi declarado como oculto. No xml-script, um popupBehavior é associado ao nome e invocado por um hoverBehavior associado ao ano.

O código do popupBehavior está contido no componente e na camada de controle da biblioteca de script do Atlas. O xml-script é fácil de examinar em comparação com o JavaScript que estaria tipicamente incluído em uma página, em particular quando iniciamos o factoring do código para lidar com múltiplas implementações de browsers.

A sintaxe declarativa como a do xml-script na Listagem 3, pode ser produzida e consumida facilmente por ferramentas de desenvolvimento. E os controles servidores do Atlas produzem xml-script para permitir uma experiência de usuário mais rica quando a página for executa.

A maior parte dos xml-script utilizados em uma aplicação do Atlas nunca existirá diretamente no arquivo ASPX, nem a maior parte dos desenvolvedores terão que codificá-la manualmente.

A variedade de comportamentos que fazem parte do Atlas CTP, serve para melhorar a experiência de usuário. O comportamento progressivo pode fornecer a informação de que uma operação se encontra pendente em background. O clique, o passar por cima do mouse e os comportamentos popup, levam em conta a interação de usuário rica.

Os comportamentos podem ser facilmente amarrados de forma declarativa a elementos HTML da página, utilizando o xml-script. Como os próprios comportamentos são implementados em JavaScript, comportamentos mais complexos são possíveis, porém, o seu uso nas páginas pode ser realizado através do xml-script.

Controles Servidor

Os controles servidor incluídos no Atlas CTP tornam fácil evitar a pausa que acompanha um postback de página. Os usuários podem continuar interagindo com a página enquanto os controles atualizam a sua exibição no background. Dois controles colaboram para permitir isso. Eles podem ser acrescentados a páginas existentes para atingir resultados dramaticamente melhorados.

O controle ScriptManager trabalha para modificar o comportamento de postback do cliente, enquanto o UpdatePanel gerencia o ciclo de vida da página no servidor, para que a modificação seja realizada.

O ScriptManager deve estar incluído em todas as páginas que utilizarão as funcionalidades do Atlas. Ele coordena qual código JavaScript será enviado para o cliente. Os controles servidor podem fornecer JavaScript do cliente e utilizar o ScriptManager para tratá-lo. O ScriptManager utilizará a nova interface IScriptComponent que o mesmo implementa. O ScriptManager também provê suporte para as bibliotecas de componentes script que se associam a elementos xml-script.

A configuração da propriedade EnablePartialRendering do ScriptManager para true, produz o novo comportamento de postbacks do cliente:

 

/SPAN>atlas:ScriptManager EnablePartialRendering="true"

  runat="server" />

 

O comportamento de postback é modificado para permitir que a solicitação ocorra sem interromper a experiência do usuário. As informações sobre o view state requerida para persistir as informações sobre os controles entre as solicitações é mantido pelas solicitações de exibição parcial.

E o HTML da região que é atualizada ou modificada é atualizado pelo JavaScript que interage com o Document Object Model (DOM – Modelo do Objetos Documento) do browser. As regiões na página que devem levar em conta atualizações parciais, são especificadas na página ASP.NET utilizando o UpdatePanel.

O UpdatePanel indica para o ScriptManager, quais regiões da página devem ser atualizadas independentemente do resto da mesma. Quando uma ação no browser causa um postback para aquela(s) região (ões) da página, os dados do formulário são postados e o ciclo de vida da página começa a ser executado no servidor.

Do momento em que nos bastidores, o script está iniciando o postback assincronamente, a página ainda será exibida para o usuário. No servidor, o estado do controle é restaurado com base nos dados de view state postados pelo cliente. Quando a fase de exibição ocorrer, o ScriptManager isola a exibição para a região UpdatePanel cuja exibição está sendo atualizada, e a reenvia para o browser.

Os dados de view state da página também são reunidos e acompanham o HTML como parte da resposta. A seguir, o script no browser substitui com o novo HTML, o HTML correspondente à exibição anterior dos conteúdos do UpdatePanel.

O controle UpdatePanel pode conter elementos Triggers e de um ContentTemplate:

 

/SPAN>atlas:UpdatePanel ID="UpdatePanel1" runat="server">

/SPAN>Triggers>

        ...

    Triggers>

/SPAN>ContentTemplate>

        ...

ContentTemplate>

atlas:UpdatePanel>

 

A área dentro do ContentTemplate é atualizada quando o ScriptManager gerencia um postback assíncrono. O elemento Triggers pode conter ControlEventTrigger e ControlValueTrigger. Os Triggers permitem que o desenvolvedor da página especifique quais as modificações específicas que devem causar a atualização da região.

Isso permite que os controles que estão fora do UpdatePanel causem a modificação sem necessidade de estar contidos diretamente dentro do UpdatePanel. Ele também permite a utilização de declarações simples para controlar o comportamento da página e do UpdatePanel e para especificar quando os novos dados serão recuperados.

Em uma página podem ser colocados vários UpdatePanel com diferentes triggers que provocam atualizações independentemente. O conteúdo do UpdatePanel pode ser configurado para um mínimo necessário para responder à entrada de um usuário específico.

Utilizando o UpdatePanel, uma página ASP.NET já existente pode ser rapidamente construído para ser mais responsiva sem modificações significativas.

Web Services

A capacidade de acessar os serviços do browser é fundamental para permitir aplicações interativas. Dois tipos de serviços distintos são habilitados pelo Atlas. O ScriptManager utilizará proxys automaticamente gerados para referências a Web services:

 

/SPAN>atlas:ScriptManager EnablePartialRendering="true" runat="server">

    /SPAN>Services>

        /SPAN>atlas:ServiceReference GenerateProxy="true"

         Path="~/nominees.aspx" Type="Custom"

    Services>

atlas:ScriptManager>

 

Os componentes do lado cliente a seguir, podem chamar os Web Services diretamente do script. Os Web Services também são associados a controles para permitir comportamentos mais ricos. Por exemplo, o AutoCompleteBehavior pode ser definido em xml-script para utilizar um Web Service que recupera as possibilidades relevantes (ver Listagem 4).

 

Listagem 4. AutoCompleteBehavior em xml-script

/SPAN>script type="text/xml-script">

  "http://schemas.microsoft.com/xml-script/2005">

   

      "suggestTextBox">

       

         

           completionList="completionList" serviceURL="suggest.asmx"

           serviceMethod="GetSuggestions" minimumPrefixLength="1"

           completionInterval="500" completionSetCount="15" />

       

     

   

 

script>

 

O comportamento é associado a um elemento na página e aumenta o mesmo. Quando estabelecido no markup.aspx, é chamado de extender. O AutoCompleteBehavior pode associar-se com um elemento pela utilização de um AutoCompleteExtender.

Em vez de escrever o xml-script diretamente, o extender associa-se com um controle no servidor. O comportamento do controle será então estendido pela exibição do xml-script apropriado para obter o comportamento de lado de cliente. Ao chamarmos Web services, a chamada e os resultados retornados são normalmente transportados no XML.

O Atlas também suporta a serialização dos dados dos Web services em JSON, o qual elimina um pouco da sobrecarga inerente ao XML. Os dados JSON podem ser desserializados diretamente para objetos JavaScript no browser. O Atlas suporta a serialização de tipos gerenciados pelo .NET mais complexos provindos do servidor, para objetos JavaScript representativos no browser. Isso simplifica a tarefa de acessar os Web Services a partir do browser.

A idéia de utilizarmos os Web Services do browser provêm de Web Services personalizados que são a parte da aplicação, para serviços de aplicações ASP.NET. O Atlas expõe a capacidade de utilizar o serviço Forms Authentication diretamente do JavaScript:

 

Sys.Services.AuthenticationService.login(

    username, password, completionFunction);

 

O usuário não tem que ser redirecionado para a página de senha de entrada e a seguir de volta para a página original; o HTML, por tanto, pode ser dinamicamente alterado quando o usuário fornece as credenciais de senha de entrada.

Os dados Profile disponíveis em páginas.aspx estão também disponíveis através de chamadas Web Service. Ele suporta o armazenamento e a recuperação dos dados profile que estão armazenados no servidor, através de objetos JavaScript.

 

Os Web Services que uma aplicação poderia utilizar nem sempre estão localizados no mesmo servidor hospedeiro. Na verdade, nem todos estão necessariamente no mesmo domínio. O browser bloqueará chamadas para um outro domínio diferente de onde a página se originou, utilizando o XmlHttpRequest.

Existem algumas formas inteligentes para contornar essa limitação, utilizando objetos IFrame ocultos para iniciar solicitações filhas, porém, eles são enfadonhos na melhor das hipóteses. O Atlas fornece a junção de Web Services para permitir esse cenário. O cliente pode iniciar chamadas Web Service destinadas a outro domínio.

A chamada é enviada para a aplicação do Atlas originária, a qual, por sua vez, encaminha a solicitação para o servidor alvo do usuário e serializa os resultados de volta para o cliente. O Atlas é também capaz de utilizar técnicas IFrame para comunicar-se diretamente com outros domínios.

Conclusão

O Atlas fornece uma variedade de funcionalidades para criar aplicações Web mais ricas. O biblioteca de script cliente simplifica a tarefa de escrever JavaScript e fornece construtos para a utilização da abordagem orientada por objetos para escrever JavaScript. As funcionalidades Web Services permitem fácil acesso a serviços remotos e locais. A serialização de tipos complexo torna fácil a utilização de tipos ricos tanto do cliente quanto do servidor. Os controles servidor tiram proveito da biblioteca de script cliente e permitem às aplicações existentes e às novas, reduzir drasticamente as pausas de espera comuns nas atuais aplicações Web.

 

Um novo buid CTP está sendo liberado mensalmente com consertos, modificações e novas funcionalidades. Finalmente, o Atlas estará integrado ao .NET Framework no próximo lançamento. A curto prazo, a Microsoft anunciou uma licença limitada que nos permitirá distribuir o Atlas em sites e começar a tirar proveito em aplicações Web. Para mais informações e para fazer o download do último Atlas CTP, ver atlas.asp.net.

 

Matt Gibbs é o Gerente de Desenvolvimento da equipe ASP.NET da Microsoft. É co-autor de vários livros em ASP, Mobile Controls e ASP.NET. Pode ser contatado em mattgi@microsoft.com.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?