SlideShare uma empresa Scribd logo
Microsoft Web & Gaming Technologies @ UALG Nelson Correia (ncorreia@ncorreia.name) http://nelsoncorreia.spaces.live.com
AJAX – O que é? Asynchronous Javascript and XML Utilizado em diversas aplicações  web  recentes Microsoft Virtual Earth Windows Live Spaces Google Maps Google Suggest Google Reader Google Docs Gmail
AJAX Fonte: Adaptative Path Fonte: Adaptative Path
AJAX – Porquê? Melhora a experiência do utilizador: Reduz o tempo de espera entre pedidos Reduz ou elimina o  flickering  das páginas Permite interacção mesmo durante pedidos Reduz o tráfego a circular na rede Baseado em standards abertos: ECMA   Script; XML; HTML; etc Compatibilidade  cross-browser
AJAX – Em que consiste? Conjunto de tecnologias XMLHttpRequest JavaScript DOM XML/JSON XHTML/HTML CSS XSLT
XMLHttpRequest Object Obtenção var req = null;  if (window.XMLHttpRequest) { req =  new XMLHttpRequest() ; // IE7, Firefox, Safari, Opera,... } else if (window.ActiveXObject) { // IE5.x, IE6 try { req =  new ActiveXObject("Msxml2.XMLHTTP") ;  } catch (e) { try { req =  new ActiveXObject("Microsoft.XMLHTTP") ;  } catch (e){ alert("Exception: " + e.message); } } }
XMLHttpRequest Object Métodos Método Parâmetros e Descrição open (  method ,  URL , async, userName, password ) Especifica os parâmetros dum pedido send ( content ) Envia o pedido setRequestHeader ( label, value ) Adiciona um  header  ao pedido abort ( ) Cancela o pedido corrente
XMLHttpRequest Object Propriedades Propriedade Descrição onreadystatechange Referência para o  handler  do evento de mudança de estado readyState Estado do objecto:  0  (não iniciado);  1  (aberto);  2  (enviado);  3  (a receber);  4  (carregado) responseText Resposta em formato  string responseXML Resposta na forma dum objecto XML status Código do estado HTTP statusText Texto do estado HTTP
XMLHttpRequest - Alternativas IFrame Vantagens: Funciona em browsers mais antigos Não necessita de ter ActiveX activado Permite  cross-site scripting   (pode ser utilizado em conjunto com o XMLHttpRequest) Desvantagens: Não permite o cancelamento de um pedido API mais complexa, para pedidos non-GET Não permite verificar o estado de um pedido Não “conhece” XML
XMLHttpRequest - Alternativas HTTP Streaming Richer Plugin On-Demand Javascript Import XML Document Image-Cookie call Stylesheet call Resposta 204 – “No content” http://ajaxpatterns.org/XMLHttpRequest_Call#Alternatives
XMLHttpRequest
ASP.NET AJAX Framework  para desenvolvimento de aplicações  AJAX - enabled , em ASP.NET Fácil integração com  web-services Bibliotecas  script cross-browser Acesso a serviços de Autenticação e Perfis, a partir de  script Extensões ao sistema de tipos Javascript
Arquitectura Servidor Cliente
Camada de Comunicação Assíncrona (1) Permite: Pedidos assíncronos ao servidor, a partir de Javascript Invocação de métodos de  web services  (.asmx) Invocação de métodos estáticos da página Suporta vários formatos de seriação: XML String JSON Enumerado  ResponseFormat : Xml Json
Camada de Comunicação Assíncrona (2) Arquitectura (Cliente)
Camada de Comunicação Assíncrona (3) Arquitectura (Servidor)
Sem Ajax Extensions
Com Ajax Extensions
ASP.NET Ajax Server Controls ScriptManager UpdatePanel UpdateProgress Timer
ScriptManager Gere o código  script  das páginas ASP.NET AJAX Inclui na resposta o código  script  da biblioteca Microsoft AJAX Dá suporte à actualização parcial de páginas Permite a partir de  script : Chamadas  strongly-typed  a  web-services Utilização das extensões ao sistema de tipos Acesso aos serviços de autenticação e de perfis
ScriptManager Métodos Método Descrição RegisterAsyncPostBackControl Regista um controlo para  postbacks  assíncronos RegisterPostBackControl Regista um controlo para  postbacks  síncronos RegisterClientScriptBlock Regista um bloco de código  script RegisterClientScriptInclude Regista um ficheiro de código  script RegisterArrayDeclaration Regista um array
ScriptManager Propriedades Propriedade Descrição EnablePageMethods Permite (des) activar a chamada a métodos estáticos da página, a partir de código  script EnablePartialRendering Injecta na resposta o código que permite a actualização parcial de páginas IsInAsyncPostback Indica se está em curso um  postback  assíncrono SupportsPartialRendering Indica se o cliente suporta actualizações parciais
ScriptManager Propriedades Propriedade Descrição AuthenticationService Devolve a referência para o AuthenticationServiceManager associado ProfileService Devolve a referência para o ProfileServiceManager associado Scripts Colecção de objectos ScriptReference (ficheiros  script ) Services Colecção de objectos ServiceReference (serviços asmx)
ScriptManager Tratamento de erros 1 2 3 AllowCustomErrorsRedirect  : indica se a secção  customErrors  do web.config é utilizada durante  postbacks  assíncronos; AsyncPostBackError  : evento que é lançado quando ocorre um erro durante  postbacks  assíncronos; AsyncPostBackError   Message : mensagem de erro enviada ao  browser .
ScriptManagerProxy Problema: Apenas um ScriptManager por página Utilizado quando: A master-page tem um ScriptManager Se pretende aceder aos serviços de  script  num  user control Particularizar  scripts  ou serviços para algumas páginas
ScriptManagerProxy Wrapper  para as propriedades: Services Scripts ProfileService AuthenticationService Page code Master Page Content Page ScriptManager ScriptManagerProxy
ScriptManager & ScriptManagerProxy
UpdatePanel Define uma região, que pode ser actualizada de forma independente do resto da página Podem existir vários por página: UpdatePanel3 UpdatePanel1 UpdatePanel2 UpdatePanel4 Page1 UpdatePanel1 UpdatePanel2 Page2
UpdatePanel Como é desencadeada uma actualização? Propriedade  UpdateMode Always Conditional Qualquer  postback , síncrono ou assíncrono. Postback causado por um dos seus  triggers ; Programaticamente  através do método Update; Actualização dum  UpdatePanel pai ; Postback originado por um filho , com ChildrenAsTriggers = true (default).
UpdatePanel Triggers <asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;> <ContentTemplate> <asp:Button ID=&quot;Button1&quot; runat=&quot;server/> </ContentTemplate> < Triggers > <asp: PostBackTrigger  ControlID=&quot;Button1&quot; /> <asp: AsyncPostBackTrigger  ControlID=&quot;Button2&quot; /> </ Triggers > </asp:UpdatePanel> <asp:Button ID=&quot;Button2&quot; runat=&quot;server /> ScriptManager.RegisterPostBackControl ScriptManager.RegisterAsyncPostBackControl
UpdatePanel
UpdatePanel Controlos incompatíveis: TreeView e Menu WebParts FileUpload A não ser que seja um PostBackTrigger do UpdatePanel GridView e DetailsView Caso EnableSortingAndPagingCallbacks for  true
UpdatePanel Controlos incompatíveis (continuação): Login, PasswordRecovery, ChangePassword e CreateUserWizard Se o conteúdo não tiver sido convertido para  template Controlo Substitution Controlos de validação Existe disponível uma alternativa * *http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
UpdateProgress Mostra informação durante actualizações parciais Para actualizações rápidas sem  feedback  visual, usa-se o DisplayAfter O conteúdo é mostrado quando: O UpdatePanel associado gera um  postback Propriedade   AssociatedUpdatePanelID Em qualquer  postback  assíncrono Se não estiver associado a nenhum UpdatePanel
UpdateProgress
Timer Utilizado para actualizar regiões periodicamente Desencadeia  postbacks  em intervalos pré-definidos: Síncronos: se fora dum UpdatePanel Assíncronos: se dentro dum UpdatePanel O evento Tick permite realizar processamento periódico no servidor
Javascript – Extensões ao sistema de tipos (1) A biblioteca Microsoft AJAX adiciona suporte para: Namespaces Classes: Campos (apenas de tipos primitivos) Propriedades (tipos primitivos ou referência): Getter Setter Métodos Eventos
Javascript – Extensões ao sistema de tipos (2) Continuação: Herança Interfaces Enumerados Introspecção Métodos de Type permitem obter informação sobre o tipo Funções auxiliares para  arrays  e  strings Modificadores de acesso Convenção de nomes da biblioteca: nome precedido de  underscore  é considerado privado
Javascript Wrappers $addHandler  Sys.UI.DomEvent.addHandler $addHandlers Sys.UI.DomEvent.addHandlers $removeHandler Sys.UI.DomEvent.RemoveHandler $clearHandlers Sys.UI.DomEvent.clearHandlers $create Sys.Component.create $find Sys.Application.findComponent $get Sys.UI.DomElement.getElementById $addHandlers($get(&quot;Button1&quot;), {click:processClick,mouseover:processMouseOver}); Exemplo:
Gere as actualizações parciais no  browser Expõe um modelo de eventos semelhante ao do ASP.NET: PageRequestManager Gerado quando o controlo retorna ao browser Depois do conteúdo da página ser actualizado Antes do conteúdo da página ser actualizado Antes do pedido ser enviado para o servidor Início de um  postback  assíncrono
Javascript Extensions
Web Services Chamadas a  web services  a partir de código  script Web services  definidos em ficheiros .asmx São criadas classes  proxy  em Javascript: Para o  web service  e correspondentes  web methods Para os tipos dos parâmetros ou retornos Apenas para  web services  no mesmo domínio
Web Services – How to <system.web> <httpHandlers> <remove verb=&quot;*&quot; path=&quot;*.asmx&quot;/>  <add verb=&quot;*&quot; path=&quot;*.asmx&quot; type=&quot;System.Web.Script.Services.ScriptHandlerFactory&quot;/> </httpHandlers> <system.web> 1 2 // Calculator.asmx <%@ WebService Class=&quot;Calculator&quot; Language=&quot;C#&quot;%> [ ScriptService ] public class Calculator : WebService { [ WebMethod ] public  int  Add(int  i1, int  i2) { return  i1 + i2; } }
Web Services – How to 3 <asp:ScriptManager runat=&quot;server&quot; ID=&quot;scriptManager&quot;> <Services> <asp:ServiceReference path=&quot;~/WebServices/Calculator.asmx&quot; /> </Services> </asp:ScriptManager> 4 <script type=&quot;text/javascript&quot;>  function add(value1, value2){ SimpleWebService.Add(value1, value2, OnSucceeded); } function OnSucceeded(result){ alert(result); } </script>
Web Services Também é possível criar um  web service  sem um ficheiro .asmx: <asp:ScriptManager  ID=&quot;scriptManager“  EnablePageMethods=&quot;true&quot;  runat=&quot;server&quot; > public partial class SimplePage : Page { [ WebMethod ] public  static  string HelloWorld(){ return “Hello World”; } } <script type=&quot;text/javascript&quot;>  function PageMethodCall() { PageMethods .HelloWorld(OnSucceeded); } function OnSucceeded(result){ alert(result); } </script> 1 2 3
Web Services
Serviços ASP.NET Autenticação ASP.NET Apenas para o modo  Forms   Authentication Utiliza o  Membership   Provider  por omissão Disponibiliza métodos de  login  e  logout  em Javascript Serviço de perfis Guarda definições por utilizador Os dados são guardados no servidor
Custom Authentication Service
Links http://www.w3.org/TR/XMLHttpRequest http://ajax.asp.net/docs http://www.adaptivepath.com/publications/essays/archives/000385.php http://ajaxpatterns.org http://ajax.asp.net/ajaxtoolkit/
Nelson Correia [email_address] http://nelsoncorreia.spaces.live.com

Mais conteúdo relacionado

PDF
Servlet jsp tomcat 8
PDF
Asp tutorial asp
PDF
Ruby On Rails Regis
PPTX
2016/08/19 - Uma visão geral da AWS para desenvolvedores
PDF
Aplicações Web com Python e Google App Engine
PDF
PDF
Ajax como comecar
Servlet jsp tomcat 8
Asp tutorial asp
Ruby On Rails Regis
2016/08/19 - Uma visão geral da AWS para desenvolvedores
Aplicações Web com Python e Google App Engine
Ajax como comecar

Mais procurados (20)

PDF
Oficina Python e Google App Engine
PPTX
ASP.NET Core 2.1 #dotnetconf
PDF
Java Web 3 - Servlets e JSP 1
PDF
Web Performance Client Side
PDF
Introdução ao Desenvolvimento de aplicações WEB com JSP
PDF
JavaScript Hacks
PDF
Java Web 2 - Ferramentas e configuração
PDF
Java Web 4 - Servlets e JSP 2
PDF
Model View Controller
PDF
Introdução ao desenvolvimento web com Java
PDF
Resumo Anotacoes Certificacao SCWCD 5
PPT
Aula javascript
PDF
Realtime com node.js e socket.io
PPTX
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
PPTX
Android webservice
PPTX
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
PDF
Introdução ao Google App Engine
PDF
Fisl 11 - Ecossistema Ruby on Rails
PDF
Tutorial visão automação de testes e casper js
Oficina Python e Google App Engine
ASP.NET Core 2.1 #dotnetconf
Java Web 3 - Servlets e JSP 1
Web Performance Client Side
Introdução ao Desenvolvimento de aplicações WEB com JSP
JavaScript Hacks
Java Web 2 - Ferramentas e configuração
Java Web 4 - Servlets e JSP 2
Model View Controller
Introdução ao desenvolvimento web com Java
Resumo Anotacoes Certificacao SCWCD 5
Aula javascript
Realtime com node.js e socket.io
Desenvolvimento de Sistemas Web com PHP Frameworks - Aula 2
Android webservice
Desenvolvimento de Sistemas Web com PHP Frameworks - 2019.1 - Aula 1
Introdução ao Google App Engine
Fisl 11 - Ecossistema Ruby on Rails
Tutorial visão automação de testes e casper js
Anúncio

Destaque (9)

PDF
Bruce Power Saver Brochure
PDF
ACCDocketArticle12_2015
PPTX
Speech Outline Presentation
PDF
EU: Tanks, Casks, Drums, Cans, Boxes And Similar Containers - Market Report. ...
PDF
Romania: Equipment For Scaffolding, Shuttering, Propping Or Pit Propping - Ma...
ZIP
spray: REST on Akka
PPTX
Vet tech
PPT
Posham R - AIMRADIAL 2014 Endovascular - Chemoembolization
PDF
Spain: Tanks, Casks, Drums, Cans, Boxes And Similar Containers - Market Repor...
Bruce Power Saver Brochure
ACCDocketArticle12_2015
Speech Outline Presentation
EU: Tanks, Casks, Drums, Cans, Boxes And Similar Containers - Market Report. ...
Romania: Equipment For Scaffolding, Shuttering, Propping Or Pit Propping - Ma...
spray: REST on Akka
Vet tech
Posham R - AIMRADIAL 2014 Endovascular - Chemoembolization
Spain: Tanks, Casks, Drums, Cans, Boxes And Similar Containers - Market Repor...
Anúncio

Semelhante a ASP.NET AJAX (20)

PPT
introdução a ajax
PDF
Web 2.0 e AJAX - Parte 2 / 3
PPT
Frameworks Ajax
ODP
Servlets e JSP
PDF
Minicurso de PHP Com Ajax
PPTX
Uma Introdução a ASP.NET Web API
PPTX
PPTX
jQuery e ASP.Net MVC a dupla dinâmica
PDF
Wicket 2008
PDF
Aula 01 web server controls
PPT
Treinamento ajax 02
KEY
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
PDF
Tutorial struts
PDF
ApresentaçãO Mvc
PDF
Apresentação M V C
PDF
Construindo APIs com Amazon API Gateway e AWS Lambda
PPT
Minicurso Smsi
PPT
CóPia De Minicurso Smsi
PPT
Rapid Application Development com Tapestry 5
PPTX
jQuery e ASP.Net mvc2
introdução a ajax
Web 2.0 e AJAX - Parte 2 / 3
Frameworks Ajax
Servlets e JSP
Minicurso de PHP Com Ajax
Uma Introdução a ASP.NET Web API
jQuery e ASP.Net MVC a dupla dinâmica
Wicket 2008
Aula 01 web server controls
Treinamento ajax 02
Servlets 3: o contexto assíncrono - JavaOne 2010 - Paulo Silveira
Tutorial struts
ApresentaçãO Mvc
Apresentação M V C
Construindo APIs com Amazon API Gateway e AWS Lambda
Minicurso Smsi
CóPia De Minicurso Smsi
Rapid Application Development com Tapestry 5
jQuery e ASP.Net mvc2

Último (20)

PPTX
Curso de Java 9 - (Threads) Multitarefas.pptx
PPTX
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
PPTX
Aula sobre desenvolvimento de aplicativos
PDF
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
PPTX
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
PDF
Custos e liquidação no SAP Transportation Management, TM130 Col18
PPTX
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
PPTX
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
PDF
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
PPTX
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
PDF
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
PPTX
Aula 18 - Manipulacao De Arquivos python
PPTX
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
PPTX
Aula sobre banco de dados com firebase db
PPTX
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
PDF
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
PDF
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
PPTX
Émile Durkheim slide elaborado muito bom
PPTX
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
PDF
Processos na gestão de transportes, TM100 Col18
Curso de Java 9 - (Threads) Multitarefas.pptx
Curso de Java 15 - (Uso de Servlets (Entendendo a Estrutura)).pptx
Aula sobre desenvolvimento de aplicativos
Mergulho profundo técnico para gestão de transportes no SAP S/4HANA, S4TM6 Col14
Curso de Java 16 - (JEE (Utilizando o Padrão MVC)).pptx
Custos e liquidação no SAP Transportation Management, TM130 Col18
Aula16ManipulaçãoDadosssssssssssssssssssssssssssss
Gestao-de-Bugs-em-Software-Introducao.pptxxxxxxxx
20250805_ServiceNow e a Arquitetura Orientada a Serviços (SOA) A Base para Ap...
Curso de Java 10 - (IO Manipulação de Arquivos).pptx
Otimizador de planejamento e execução no SAP Transportation Management, TM120...
Aula 18 - Manipulacao De Arquivos python
Curso de Java 12 - (JDBC, Transation, Commit e Rollback).pptx
Aula sobre banco de dados com firebase db
Curso de Java 11 - (Serializable (Serialização de Objetos)).pptx
Gestão de transportes básica no SAP S/4HANA, S4611 Col20
Fundamentos de gerenciamento de ordens e planejamento no SAP TransportationMa...
Émile Durkheim slide elaborado muito bom
BANCO DE DADOS - AULAS INICIAIS-sgbd.pptx
Processos na gestão de transportes, TM100 Col18

ASP.NET AJAX

  • 1. Microsoft Web & Gaming Technologies @ UALG Nelson Correia (ncorreia@ncorreia.name) http://nelsoncorreia.spaces.live.com
  • 2. AJAX – O que é? Asynchronous Javascript and XML Utilizado em diversas aplicações web recentes Microsoft Virtual Earth Windows Live Spaces Google Maps Google Suggest Google Reader Google Docs Gmail
  • 3. AJAX Fonte: Adaptative Path Fonte: Adaptative Path
  • 4. AJAX – Porquê? Melhora a experiência do utilizador: Reduz o tempo de espera entre pedidos Reduz ou elimina o flickering das páginas Permite interacção mesmo durante pedidos Reduz o tráfego a circular na rede Baseado em standards abertos: ECMA Script; XML; HTML; etc Compatibilidade cross-browser
  • 5. AJAX – Em que consiste? Conjunto de tecnologias XMLHttpRequest JavaScript DOM XML/JSON XHTML/HTML CSS XSLT
  • 6. XMLHttpRequest Object Obtenção var req = null; if (window.XMLHttpRequest) { req = new XMLHttpRequest() ; // IE7, Firefox, Safari, Opera,... } else if (window.ActiveXObject) { // IE5.x, IE6 try { req = new ActiveXObject(&quot;Msxml2.XMLHTTP&quot;) ; } catch (e) { try { req = new ActiveXObject(&quot;Microsoft.XMLHTTP&quot;) ; } catch (e){ alert(&quot;Exception: &quot; + e.message); } } }
  • 7. XMLHttpRequest Object Métodos Método Parâmetros e Descrição open ( method , URL , async, userName, password ) Especifica os parâmetros dum pedido send ( content ) Envia o pedido setRequestHeader ( label, value ) Adiciona um header ao pedido abort ( ) Cancela o pedido corrente
  • 8. XMLHttpRequest Object Propriedades Propriedade Descrição onreadystatechange Referência para o handler do evento de mudança de estado readyState Estado do objecto: 0 (não iniciado); 1 (aberto); 2 (enviado); 3 (a receber); 4 (carregado) responseText Resposta em formato string responseXML Resposta na forma dum objecto XML status Código do estado HTTP statusText Texto do estado HTTP
  • 9. XMLHttpRequest - Alternativas IFrame Vantagens: Funciona em browsers mais antigos Não necessita de ter ActiveX activado Permite cross-site scripting (pode ser utilizado em conjunto com o XMLHttpRequest) Desvantagens: Não permite o cancelamento de um pedido API mais complexa, para pedidos non-GET Não permite verificar o estado de um pedido Não “conhece” XML
  • 10. XMLHttpRequest - Alternativas HTTP Streaming Richer Plugin On-Demand Javascript Import XML Document Image-Cookie call Stylesheet call Resposta 204 – “No content” http://ajaxpatterns.org/XMLHttpRequest_Call#Alternatives
  • 12. ASP.NET AJAX Framework para desenvolvimento de aplicações AJAX - enabled , em ASP.NET Fácil integração com web-services Bibliotecas script cross-browser Acesso a serviços de Autenticação e Perfis, a partir de script Extensões ao sistema de tipos Javascript
  • 14. Camada de Comunicação Assíncrona (1) Permite: Pedidos assíncronos ao servidor, a partir de Javascript Invocação de métodos de web services (.asmx) Invocação de métodos estáticos da página Suporta vários formatos de seriação: XML String JSON Enumerado ResponseFormat : Xml Json
  • 15. Camada de Comunicação Assíncrona (2) Arquitectura (Cliente)
  • 16. Camada de Comunicação Assíncrona (3) Arquitectura (Servidor)
  • 19. ASP.NET Ajax Server Controls ScriptManager UpdatePanel UpdateProgress Timer
  • 20. ScriptManager Gere o código script das páginas ASP.NET AJAX Inclui na resposta o código script da biblioteca Microsoft AJAX Dá suporte à actualização parcial de páginas Permite a partir de script : Chamadas strongly-typed a web-services Utilização das extensões ao sistema de tipos Acesso aos serviços de autenticação e de perfis
  • 21. ScriptManager Métodos Método Descrição RegisterAsyncPostBackControl Regista um controlo para postbacks assíncronos RegisterPostBackControl Regista um controlo para postbacks síncronos RegisterClientScriptBlock Regista um bloco de código script RegisterClientScriptInclude Regista um ficheiro de código script RegisterArrayDeclaration Regista um array
  • 22. ScriptManager Propriedades Propriedade Descrição EnablePageMethods Permite (des) activar a chamada a métodos estáticos da página, a partir de código script EnablePartialRendering Injecta na resposta o código que permite a actualização parcial de páginas IsInAsyncPostback Indica se está em curso um postback assíncrono SupportsPartialRendering Indica se o cliente suporta actualizações parciais
  • 23. ScriptManager Propriedades Propriedade Descrição AuthenticationService Devolve a referência para o AuthenticationServiceManager associado ProfileService Devolve a referência para o ProfileServiceManager associado Scripts Colecção de objectos ScriptReference (ficheiros script ) Services Colecção de objectos ServiceReference (serviços asmx)
  • 24. ScriptManager Tratamento de erros 1 2 3 AllowCustomErrorsRedirect : indica se a secção customErrors do web.config é utilizada durante postbacks assíncronos; AsyncPostBackError : evento que é lançado quando ocorre um erro durante postbacks assíncronos; AsyncPostBackError Message : mensagem de erro enviada ao browser .
  • 25. ScriptManagerProxy Problema: Apenas um ScriptManager por página Utilizado quando: A master-page tem um ScriptManager Se pretende aceder aos serviços de script num user control Particularizar scripts ou serviços para algumas páginas
  • 26. ScriptManagerProxy Wrapper para as propriedades: Services Scripts ProfileService AuthenticationService Page code Master Page Content Page ScriptManager ScriptManagerProxy
  • 28. UpdatePanel Define uma região, que pode ser actualizada de forma independente do resto da página Podem existir vários por página: UpdatePanel3 UpdatePanel1 UpdatePanel2 UpdatePanel4 Page1 UpdatePanel1 UpdatePanel2 Page2
  • 29. UpdatePanel Como é desencadeada uma actualização? Propriedade UpdateMode Always Conditional Qualquer postback , síncrono ou assíncrono. Postback causado por um dos seus triggers ; Programaticamente através do método Update; Actualização dum UpdatePanel pai ; Postback originado por um filho , com ChildrenAsTriggers = true (default).
  • 30. UpdatePanel Triggers <asp:UpdatePanel ID=&quot;UpdatePanel1&quot; runat=&quot;server&quot;> <ContentTemplate> <asp:Button ID=&quot;Button1&quot; runat=&quot;server/> </ContentTemplate> < Triggers > <asp: PostBackTrigger ControlID=&quot;Button1&quot; /> <asp: AsyncPostBackTrigger ControlID=&quot;Button2&quot; /> </ Triggers > </asp:UpdatePanel> <asp:Button ID=&quot;Button2&quot; runat=&quot;server /> ScriptManager.RegisterPostBackControl ScriptManager.RegisterAsyncPostBackControl
  • 32. UpdatePanel Controlos incompatíveis: TreeView e Menu WebParts FileUpload A não ser que seja um PostBackTrigger do UpdatePanel GridView e DetailsView Caso EnableSortingAndPagingCallbacks for true
  • 33. UpdatePanel Controlos incompatíveis (continuação): Login, PasswordRecovery, ChangePassword e CreateUserWizard Se o conteúdo não tiver sido convertido para template Controlo Substitution Controlos de validação Existe disponível uma alternativa * *http://blogs.msdn.com/mattgi/archive/2007/01/23/asp-net-ajax-validators.aspx
  • 34. UpdateProgress Mostra informação durante actualizações parciais Para actualizações rápidas sem feedback visual, usa-se o DisplayAfter O conteúdo é mostrado quando: O UpdatePanel associado gera um postback Propriedade AssociatedUpdatePanelID Em qualquer postback assíncrono Se não estiver associado a nenhum UpdatePanel
  • 36. Timer Utilizado para actualizar regiões periodicamente Desencadeia postbacks em intervalos pré-definidos: Síncronos: se fora dum UpdatePanel Assíncronos: se dentro dum UpdatePanel O evento Tick permite realizar processamento periódico no servidor
  • 37. Javascript – Extensões ao sistema de tipos (1) A biblioteca Microsoft AJAX adiciona suporte para: Namespaces Classes: Campos (apenas de tipos primitivos) Propriedades (tipos primitivos ou referência): Getter Setter Métodos Eventos
  • 38. Javascript – Extensões ao sistema de tipos (2) Continuação: Herança Interfaces Enumerados Introspecção Métodos de Type permitem obter informação sobre o tipo Funções auxiliares para arrays e strings Modificadores de acesso Convenção de nomes da biblioteca: nome precedido de underscore é considerado privado
  • 39. Javascript Wrappers $addHandler Sys.UI.DomEvent.addHandler $addHandlers Sys.UI.DomEvent.addHandlers $removeHandler Sys.UI.DomEvent.RemoveHandler $clearHandlers Sys.UI.DomEvent.clearHandlers $create Sys.Component.create $find Sys.Application.findComponent $get Sys.UI.DomElement.getElementById $addHandlers($get(&quot;Button1&quot;), {click:processClick,mouseover:processMouseOver}); Exemplo:
  • 40. Gere as actualizações parciais no browser Expõe um modelo de eventos semelhante ao do ASP.NET: PageRequestManager Gerado quando o controlo retorna ao browser Depois do conteúdo da página ser actualizado Antes do conteúdo da página ser actualizado Antes do pedido ser enviado para o servidor Início de um postback assíncrono
  • 42. Web Services Chamadas a web services a partir de código script Web services definidos em ficheiros .asmx São criadas classes proxy em Javascript: Para o web service e correspondentes web methods Para os tipos dos parâmetros ou retornos Apenas para web services no mesmo domínio
  • 43. Web Services – How to <system.web> <httpHandlers> <remove verb=&quot;*&quot; path=&quot;*.asmx&quot;/> <add verb=&quot;*&quot; path=&quot;*.asmx&quot; type=&quot;System.Web.Script.Services.ScriptHandlerFactory&quot;/> </httpHandlers> <system.web> 1 2 // Calculator.asmx <%@ WebService Class=&quot;Calculator&quot; Language=&quot;C#&quot;%> [ ScriptService ] public class Calculator : WebService { [ WebMethod ] public int Add(int i1, int i2) { return i1 + i2; } }
  • 44. Web Services – How to 3 <asp:ScriptManager runat=&quot;server&quot; ID=&quot;scriptManager&quot;> <Services> <asp:ServiceReference path=&quot;~/WebServices/Calculator.asmx&quot; /> </Services> </asp:ScriptManager> 4 <script type=&quot;text/javascript&quot;> function add(value1, value2){ SimpleWebService.Add(value1, value2, OnSucceeded); } function OnSucceeded(result){ alert(result); } </script>
  • 45. Web Services Também é possível criar um web service sem um ficheiro .asmx: <asp:ScriptManager ID=&quot;scriptManager“ EnablePageMethods=&quot;true&quot; runat=&quot;server&quot; > public partial class SimplePage : Page { [ WebMethod ] public static string HelloWorld(){ return “Hello World”; } } <script type=&quot;text/javascript&quot;> function PageMethodCall() { PageMethods .HelloWorld(OnSucceeded); } function OnSucceeded(result){ alert(result); } </script> 1 2 3
  • 47. Serviços ASP.NET Autenticação ASP.NET Apenas para o modo Forms Authentication Utiliza o Membership Provider por omissão Disponibiliza métodos de login e logout em Javascript Serviço de perfis Guarda definições por utilizador Os dados são guardados no servidor
  • 49. Links http://www.w3.org/TR/XMLHttpRequest http://ajax.asp.net/docs http://www.adaptivepath.com/publications/essays/archives/000385.php http://ajaxpatterns.org http://ajax.asp.net/ajaxtoolkit/
  • 50. Nelson Correia [email_address] http://nelsoncorreia.spaces.live.com