Академический Документы
Профессиональный Документы
Культура Документы
a
ec
de
l
Eje
mp
lo
ngel Rayo
Sipnosis
tur
a
El desarrollo Web con ASP.NET supuso un gran cambio para los programadores permitindoles utilizar un gran nmero
de lenguajes de programacin para crear sus aplicaciones.
La inclusin de cdigo y controles de servidor permiti ampliar la funcionalidad de las aplicaciones sin requerir un gran
conocimiento sobre el lenguaje HTML.
Para mejorar el rendimiento de las aplicaciones ASP.NET y de otro tipo se ofrece la tecnologa AJAX, la cul hace uso de
JavaScript y XML con peticiones asncronas.
ec
Gracias a la Ajax Library, Ajax Extensions y el conjunto de controles del Ajax Control Toolkit conseguiremos crear aplicaciones con un mejor rendimiento y con menor cantidad de envos y recepciones a y desde el servidor Web.
Eje
mp
lo
de
l
ngel Rayo es formador de Alhambra-Eidos desde 2004. Ha sido el autor y coautor de varios
libros entre los que destaca el titulado "Administracin y Desarrollo con WSS 3.0 y MOSS
2007" centrado en Microsoft SharePoint as como otros relacionados con la plataforma .NET.
Adems, ha escrito artculos para dotnetmana sobre el ciclo de vida de desarrollo de software
con Visual Studio Team System, MSF y CMMI.
Ha participado en ponencias sobre SharePoint 2007, Visual Studio Team System y Symbian.
Posee las certificaciones MCPD Enterprise en .NET 3.5, MCITP en SQL Server 2008 y MCTS
en SharePoint 2007 principalmente. Est certificado como formador oficial de Microsoft, EXIN
y Nokia+Symbian, siendo en esta ltima certificacin uno de los dos nicos profesionales autorizados en Espaa. Dentro de la gestin de procesos posee las certificaciones en ITIL (v2 y v3),
ISO 20000 y MOF v4.0.
tur
a
Luarna
Aplicacin de tcnicas de Ajax a ASP .NET
Angel Rayo y Alhambra Eidos
ec
de
l
ISBN: 978-84-92684-50-2
Eje
mp
lo
Cualquier forma de reproduccin, distribucin, comunicacin pblica o transformacin de esta obra solo puede ser realizada con la autorizacin de
sus titulares, salvo excepcin prevista por la ley. Dirjase a CEDRO (Centro Espaol de Derechos Reprogrficos, www.cedro.org) si necesita fotocopiar, escanear o hacer copias digitales de algn fragmento de esta obra.
tur
a
ec
de
l
Eje
mp
lo
Angel Rayo
Indice
INTRODUCCIN A ASP.NET AJAX...................................................................................................................................................... 8
tur
a
AJAX ............................................................................................................................................................................................. 9
ASP.NET AJAX ............................................................................................................................................................................. 10
Microsoft AJAX Library ............................................................................................................................................................ 12
AJAX Extensions ...................................................................................................................................................................... 12
ScriptManager........................................................................................................................................................................................ 13
UpdatePanel .......................................................................................................................................................................................... 16
Timer ..................................................................................................................................................................................................... 17
UpdateProgress...................................................................................................................................................................................... 17
ScriptManagerProxy ............................................................................................................................................................................... 17
ec
JAVASCRIPT .................................................................................................................................................................................... 21
SINTAXIS ....................................................................................................................................................................................... 22
Palabras reservadas................................................................................................................................................................ 23
Variables ................................................................................................................................................................................ 23
mbito................................................................................................................................................................................................... 24
de
l
Tipos primitivos...................................................................................................................................................................................... 24
Conversin entre tipos de variables ........................................................................................................................................................ 26
Tipos de referencia................................................................................................................................................................................. 26
Objetos nativos....................................................................................................................................................................... 27
Date....................................................................................................................................................................................................... 27
Array...................................................................................................................................................................................................... 28
RegExp ................................................................................................................................................................................................... 28
Function................................................................................................................................................................................................. 29
lo
JSON....................................................................................................................................................................................... 32
CLASES ......................................................................................................................................................................................... 34
MANEJO DE EXCEPCIONES .................................................................................................................................................................. 35
DOM Y BOM ................................................................................................................................................................................... 37
DOM........................................................................................................................................................................................... 37
Elementos principales de DOM................................................................................................................................................ 38
mp
Eje
BOM ........................................................................................................................................................................................... 56
window .................................................................................................................................................................................. 57
Manipulacin de tamao y posicin ........................................................................................................................................ 57
document ............................................................................................................................................................................... 58
location .................................................................................................................................................................................. 59
navigator................................................................................................................................................................................ 60
screen..................................................................................................................................................................................... 61
tur
a
de
l
ec
Sys.Application ....................................................................................................................................................................................... 89
Sys.Browser ........................................................................................................................................................................................... 90
Sys.Component ...................................................................................................................................................................................... 91
Sys.Debug .............................................................................................................................................................................................. 92
Sys.Net................................................................................................................................................................................................... 94
Sys.Serialization (System.Web.Script.Serialization en Code-Behind) ....................................................................................................... 101
JavaScriptSerializer .......................................................................................................................................................................... 101
Sys.Services (System.Web.Script.Services en Code-Behind) ................................................................................................................... 102
Autenticacin de usuarios ................................................................................................................................................................ 102
Seguridad basada en roles (RoleService) ........................................................................................................................................... 108
Gestin de perfiles de usuarios (ProfileService)................................................................................................................................. 109
Sys.UI ................................................................................................................................................................................................... 111
Tratamiento DOM con DomElement y DomEvent ............................................................................................................................. 112
Gestin de comportamientos de cliente con la clase Behavior .......................................................................................................... 117
Creacin de controles de cliente con la clase Control ........................................................................................................................ 120
Sys.WebForms ..................................................................................................................................................................................... 123
PageRequestManager ...................................................................................................................................................................... 124
mp
lo
Eje
Eje
mp
lo
de
l
ec
tur
a
tur
a
ec
de
l
lo
Microsoft ASP.NET AJAX se trata de una nueva tecnologa que permite aadir la funcionalidad
AJAX a las aplicaciones Web. Ofrece una biblioteca de cdigo JavaScript para su ejecucin en el lado
del cliente que simplifica dicho proceso de adicin de funcionalidad AJAX
mp
Microsoft ASP.NET AJAX ofrece funcionalidad compleja como la realizacin de llamadas asncronas
utilizando el protocolo XMLHTTP. La biblioteca de clases ASP.NET AJAX se incluy en la versin
2.0 de ASP.NET como complemento y viene integrada directamente dentro de las clases disponibles
en ASP.NET 3.5.
Para poder trabajar con ASP.NET 3.5 utilizando la funcionalidad comentada AJAX, ser necesario
conocer exactamente qu significa este trmino.
Eje
AJAX o Asynchronous JavaScript And XML se trata de un trmino genrico que aglutinan un
conjunto de tecnologas y procesos que podemos utilizar para mejorar nuestras aplicaciones Web.
Como ya he comentado el conjunto de herramientas, tcnicas y tecnologas conocidas como ASP.NET
AJAX son una implementacin de AJAX que puede ser utilizada por los desarrolladores que hayan
trabajado previamente con ASP.NET 2.0 o bien que deseen comenzar a trabajar con la versin 3.5 de
ASP.NET.
ASP.NET AJAX incluye junto con las bibliotecas de clases de cliente, controles de servidor mejorados
que los desarrolladores pueden utilizar y en los cuales se incluye cdigo script para realizar algunas
operaciones asociadas.
tur
a
AJAX
HTMLi
ec
Componente Descripcin
HyperText Markup Language, se trata del lenguaje estndar de creacin de aplicaciones Web. Es recomendable comenzar a utilizar la nueva versin de este estndar
XHTMLii
(HTML extensible)
ya
que ofrece mayor
versatilidad.
i http://www.w3.org/TR/REC-html40/
ii http://www.w3.org/TR/xhtml1/
de
l
CSSiii
iii http://www.w3.org/Style/CSS/
DOMiv
lo
JavaScript v
mp
v http://docs.sun.com/source/816-6408-10/contents.htm
vi http://www.ecma-international.org/publications/standards/Ecma-262.htm
XMLvii
Extensible Markup Language, se trata del lenguaje que se ha convertido en el estndar para representar informacin en un formato independiente de la plataforma donde
est dicha informacin. AJAX utiliza el formato XML para empaquetar los datos en
el cliente.
vii http://www.w3.org/XML/
JSONviii
Eje
viii http://www.json.org/
XMLHTTP
tur
a
ASP.NET AJAX
ASP.NET AJAX se trata de la implementacin de las tcnicas y estndares utilizados en AJAX para la
plataforma .NET y su integracin con ASP.NET para el desarrollo Web. En este libro trabajaremos
con la funcionalidad ASP.NET AJAX pero existen otras implementaciones AJAX que es de importancia comentar, ya que el lector puede estar interesado en integrar sus aplicaciones .NET con otro tipo de
aplicaciones que hagan uso tambin de AJAX.
Algunas de las implementaciones de AJAX ms extendidas son las siguientes:
OpenAjax: Este proyecto est siendo llevado a cabo por una serie de empresas que persiguen
crear un framework AJAX estndar. AJAX Toolkit Framework (ATF) ofrecido por Eclipse
para trabajar con diferentes motores. (http://www.openajax.org/index.php)
de
l
ec
lo
Uno de los problemas que puede tener un desarrollador de aplicaciones Web con ASP.NET 2.0 o versiones anteriores y quieran utilizar la funcionalidad de AJAX es el aprendizaje del lenguaje JavaScript. Microsoft pensando en esto ha creado tres componentes principales que facilitarn el trabajo con
la funcionalidad AJAX sin tener unos conocimientos avanzados sobre el lenguaje JavaScript utilizando una sintaxis similar a la que podemos usar en nuestros desarrollos con C# en ASP.NET 2.0.
mp
Mediante ASP.NET AJAX conseguiremos crear aplicaciones ms dinmicas, con mejor capacidad de
respuesta, ms sencillas de utilizar, ms interesantes y compatible con todos y cada uno de los navegadores Web existentes, al poder definir ya sea directa o indirectamente el cdigo script que se presentar en la pgina Web.
Los componentes de ASP.NET AJAX, que ya en la versin 3.5 de ASP.NET viene incluida dentro del
paquete de instalacin, no como en la versin 2.0 que era necesario instalar este conjunto de funcionalidades como elemento aparte, son los siguientes:
Funcionalidad del lado del cliente: ofrecidas como un conjunto de ficheros JavaScript conocidos en la versin 2.0 de ASP.NET como AJAX Library que permiten crear cdigo de manera similar a como lo podemos hacer en C# utilizando mediante JavaScript una estructura
orientada a objetos.
Funcionalidad del lado del servidor: conjunto de controles de servidor, conocidos en la versin 2.0 de ASP.NET como AJAX Extensions. Estos controles generarn al presentar la informacin en el documento HTML que se enviar a los navegadores el cdigo JavaScript necesario para trabajar con sus funcionalidades.
Eje
tur
a
de
l
ec
ASP.NET AJAX ofrece la funcionalidad necesaria para utilizar en los siguientes escenarios:
Usabilidad: Los componentes de cliente y de servidor permiten mejorar la usabilidad de las
aplicaciones Web con ASP.NET AJAX. Al incluir cdigo JavaScript compatible con la mayora de los navegadores Web conseguiremos que nuestros sitios Web no dependan del tipo de
navegador en el que se est mostrando la aplicacin para utilizar unos mecanismos de presentacin y uso especficos.
Mejoras de la Interfaz de Usuario: Al contar con tecnologas que permiten actualizar de manera rpida los componentes de la interfaz de usuario conseguiremos contar con aplicaciones
ms atractivas para los usuarios.
Reduccin del ancho de banda: Por el mismo motivo que los escenarios anteriores utilizar
cdigo de cliente nos permitir que se enve y reciba menor cantidad de bytes entre cliente y
servidor por lo que las aplicaciones no requerirn que el cliente cuente con un gran caudal de
ancho de banda para poder ejecutar nuestras aplicaciones.
mp
lo
Actualizacin de sitios Web: Para actualizar sitios Web desde versiones ASP.NET anteriores
a la 3.5 no es necesario aplicar un cambio drstico sino revisar los componentes que podemos
adaptar para que utilicen toda la potencia de ejecucin y depuracin de cdigo de cliente.
Sitios conectados con datos externos: Combinando AJAX Library y AJAX Extensions, ya
incluidos en el propio motor de ASP.NET 3.5 conseguiremos conectar nuestras aplicaciones
con fuentes externas, tambin desde el propio cdigo de cliente.
Eje
Sitios con gestin de miembros y perfiles: Los mecanismos de membresa, perfiles de usuario, autenticacin y autorizacin disponibles ya en la versin 2.0 de ASP.NET podrn ser utilizados ahora desde el propio cdigo script de cliente.
Veamos para profundizar en ASP.NET AJAX cada uno de los componentes con su funcionalidad.
tur
a
Microsoft AJAX Library consiste en una biblioteca de ficheros JavaScript vlidos para cualquier navegador. Debido a que partimos de que los desarrolladores Web que vayan a utilizar ASP.NET AJAX
vienen de desarrollos creados utilizando alguno de los lenguajes de programacin .NET, la funcionalidad de la Microsoft AJAX Library viene tambin expuesta mediante una estructura de espacios de
nombres y clases utilizables dentro del propio cdigo script.
Los espacios de nombres de la Microsoft AJAX Library son los siguientes:
Global: Miembros y tipos de datos que extienden los objetos base ECMAScript (JavaScript)
proporcionando miembros ms fciles de utilizar por los programadores .NET. Los tipos de
datos que incluye, extensiones, son Array, Boolean, Error, Number, Object y String.
Sys.Net: Contiene los tipos relacionados con la comunicacin entre aplicaciones cliente
ASP.NET AJAX y los servicios Web en el lado del servidor.
Sys.UI: Interaccin con la interfaz de usuario: controles, eventos y propiedades de las pginas
de
l
ec
Con Microsoft AJAX Library tendremos una estructura de gestin de las aplicaciones Web del lado
del cliente contando con mecanismos de manejo de errores, conexiones con servicios, tcnicas de
creacin de aplicaciones multi-idioma, etc.
lo
AJAX Extensions
Las extensiones AJAX para ASP.NET forman parte de ASP.NET 3.5 e incluyen un conjunto de controles de servidor que permiten aadir toda la funcionalidad AJAX a nuestras aplicaciones.
mp
En este captulo de introduccin nos centraremos en las caractersticas generales de cada extensin,
viendo en los sucesivos captulos ejemplos de su uso y recomendaciones.
Los controles de servidor incluidos en las extensiones AJAX, en nuestro caso en ASP.NET 3.5, son
los siguientes:
Descripcin
ScriptManager
Eje
Control
UpdatePanel
Descripcin
tur
a
Control
UpdateProgress
ec
Timer
ScriptManagerProxy Habilita que los componentes anidados de contenido y los controles de usuario puedan agregar cdigo script y referencias de servicio a las pginas cuando ya se ha definido un control ScriptManager en el elemento principal.
de
l
Dichos controles, los cuales veremos a continuacin con mayor detalle se encuentran disponibles en el
cuadro de herramientas de Visual Studio 2005 al haber instalado los AJAX Extensions, no siendo necesario si tenemos instalado .NET 3.5, incluido en Visual Studio 2008.
lo
mp
Los controles pertenecientes a las extensiones AJAX de ASP.NET se encuentran ubicados en el espacio de nombres System.Web.UI, complementando al resto de controles ya existentes en la versin 2.0
de ASP.NET. Veamos ahora cmo funciona y para qu sirve cada uno de estos controles.
ScriptManager
Eje
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server">
</asp:ScriptManager>
Cdigo 1 ScriptManager en una pgina
A la hora de definir las propiedades del ScriptManager podemos optar por hacerlo en la propia vista
de cdigo HTML, mediante la vista de diseo yendo a las propiedades o bien utilizando el code-
tur
a
behind para que realice las modificaciones correspondientes y las enve al cliente cuando se provoque
el evento correspondiente.
de
l
ec
Slo puede haber un control ScriptManager por cada pgina ASPX que tengamos en nuestra aplicacin, ya que si pusisemos ms de uno nos encontraramos con el siguiente error:
La clase ScriptManager expone un conjunto de mtodos y propiedades, los cuales vamos a ver ahora
junto con su funcionalidad y algn ejemplo de ellos.
Propiedad
lo
mp
AllowCustomErrorsRedirect
Descripcin
AsyncPostBackErrorMessage
AsyncPostBackSourceElementID Identificador del control que devolvi los resultados de la llamada asncrona
Eje
AsyncPostBackTimeout
Tiempo en segundos que dura una operacin de peticin de datos de manera asncrona. Si vence el tiempo y no se ha recibido
respuesta se cancela la peticin
AuthenticationService
ClientNavigateHandler
CompositeScript
Descripcin
tur
a
Propiedad
EnableHistory
EnablePageMethods
Si se puede llamar desde script de cliente a los mtodos de pgina estticos pblicos de una pgina ASP.NET
EnablePartialRendering
EnableScriptGlobalization
EnableScriptLocalization
EnableSecureHistoryState
IsDebuggingEnabled
IsNavigating
LoadScriptBeforeUI
ProfileService
RoleService
lo
ScriptMode
mp
ScriptPath
de
l
IsInAsyncPostBack
ec
EmptyPageUrl
Scripts
Services
Conjunto de referencias a servicios Web disponibles para interactuar desde cdigo script
SupportsPartialRendering
Visible
Eje
El control ScriptManager slo ser necesario si queremos hacer uso de la funcionalidad de AJAX
tanto para cliente como para servidor. Si lo que queremos es trabajar con cdigo script inline, sentencias JavaScript incluidas en la propia pgina, este control no ser necesario y podremos utilizar dichas
funciones script simplemente vinculando los eventos de los controles con las funciones correspondientes.
tur
a
UpdatePanel
La clase UpdatePanel se utiliza en ASP.NET AJAX para definir secciones de una pgina que se actualizarn de manera independiente a otras secciones, bien de manera manual o bien mediante el lanzamiento de algn desencadenador asociado (trigger). Esta clase permitir que las peticiones de datos
al servidor y el nmero de respuestas sea menor, pudiendo actualizar la informacin de la seccin asociada slo en el momento que sea necesario y no como hasta ahora suceda por el hecho de provocar
un evento en el control de servidor. Para poder utilizar esta clase en nuestras pginas ASPX ser imprescindible haber aadido un control ScriptManager a la pgina. La clase UpdatePanel expone los
siguientes mtodos:
Descripcin
ec
Mtodo
de
l
Update
Como podemos ver, en esta clase slo existen 2 mtodos, sin contar todos los que hereda de la clase
Control.
Las propiedades expuestas por la clase UpdatePanel son:
Propiedad
Descripcin
ChildrenAsTriggers
ContentTemplateContainer
IsInPartialRendering
Indica si se producir una actualizacin del panel debido a una devolucin de datos de manera asncrona
mp
lo
ContentTemplate
RequiresUpdate
Triggers
Eje
RenderMode
UpdateMode
Descripcin
tur
a
Propiedad
ec
Timer
La clase Timer se encarga de realizar las devoluciones de datos al servidor de la pgina Web, ya sean
sncronas o asncronas, en un intervalo definido.
Esta clase nicamente expone un mtodo pblico propio, el mtodo OnTick que se ejecutar cada vez
que haya transcurrido el intervalo especificado en el control.
UpdateProgress
de
l
Las propiedades ofrecidas por el control son aquellas que nos permiten habilitar o deshabilitar el control, as como dos ms para establecer la visibilidad y el intervalo de actualizacin. Dichas propiedades toman el nombre de Enabled, Visible e Interval respectivamente.
Descripcin
lo
Propiedad
mp
DisplayAfter
DynamicLayout
ProgressTemplate
Plantilla que define el contenido del control. Podremos definir qu controles queremos presentar al producirse una actualizacin del panel asociado.
Eje
ScriptManagerProxy
Permite que los componentes ya existentes en la pgina puedan agregar cdigo de script y referencias
de servicios (WCF o Web) a las pginas cuando ya se haya definido un control ScriptManager.
Descripcin
AuthenticationService
CompositeScript
ProfileService
RoleService
Scripts
Services
SupportsPartialRendering
Visible
de
l
ec
tur
a
Propiedad
Adems de los controles comentados anteriormente, la parte de servidor de ASP.NET AJAX incluye
toda la lgica de mantenimiento de servicios de autenticacin, servicios Web y WCF, perfiles de usuario y caractersticas de localizacin de aplicaciones. Adicionalmente, con la integracin de AJAX en el
lado del servidor, podremos crear y aadir de manera dinmica secciones de cdigo script que sern
incluidas dentro del resultado HTML que recibir el cliente en su navegador.
lo
Adicionalmente a los componentes de cliente y servidor se incluyen dos elementos adicionales que
utilizan toda la potencia de ambos componentes facilitando la creacin de nuevo contenido y controles
a los desarrolladores. Estos componentes se conocen como AJAX Control Toolkit y AJAX Community-supported Futures Releases.
mp
El AJAX Control Toolkit consiste en un conjunto de ejemplos y componentes que muestran la manera
de crear controles y elementos de extensin ASP.NET AJAX. El toolkit ofrece un conjunto de controles y un SDK que podemos utilizar para disear nuestros propios controles y funcionalidades personalizados. Este componente forma parte de los elementos conocidos como soportados por la comunidad
AJAX.
El AJAX Control Toolkit se puede descargar de la siguiente URL:
Eje
http://www.codeplex.com/Wiki/View.aspx?ProjectName=AjaxControlToolkit
AJAX Futures
AJAX Futures no existe como componente independiente, si no que se trata de las diferentes aportaciones realizadas por la comunidad de desarrolladores a la tecnologa ASP.NET AJAX. Microsoft ha
cambiado su manera de pensar a la hora de crear desarrollos y se ha dado cuenta de que es importante
que desarrolladores independientes o empresas puedan aportar sus trabajos para mejorar el funcionamiento y el uso de una tecnologa, en este caso la tecnologa ASP.NET AJAX. El AJAX Toolkit fue el
primer conjunto de elementos publicados por la comunidad de desarrolladores y se espera que sigan
tur
a
apareciendo componentes nuevos, funcionalidades, ficheros de cdigo JavaScript que aporten mayor
versatilidad a los desarrollos.
Los nuevos desarrollos que saldrn a la luz bajo esta denominacin de AJAX Futures son ASP.NET
MVC y ASP.NET AJAX 4.0.
Resumen
Eje
mp
lo
de
l
ec
Una vez hemos entrado en contacto con lo que ofrece AJAX y su implementacin ASP.NET AJAX a
nivel general pasaremos a ver cmo podemos crear nuestras aplicaciones RIA (Rich Internet Applications) utilizando esta tecnologa as como los diferentes mecanismos de configuracin, personalizacin
y uso de los componentes para que estas aplicaciones encajen dentro de los lmites de lo aceptable,
ajustando al mximo la cantidad de informacin enviada entre cliente y servidor pero siempre sin perjudicar esto al rendimiento de la aplicacin y a la versatilidad y facilidad de uso de dicha aplicacin.