Teoria LLevar ASP

download Teoria LLevar ASP

of 160

Transcript of Teoria LLevar ASP

  • ASP.NET

    Marco Antonio Pea Basurto Juan Lpez Rubio

  • .

  • Universitat Oberta de Catalunya 3 ASP.NET

    ndice

    ndice .................................................................................................... 3

    Introduccin ........................................................................................ 5

    Objetivos ............................................................................................... 6

    1. Aplicaciones para la Web y ASP.NET ............................................ 7

    1.1. Introduccin ...................................................................................... 7

    1.2. Fundamentos de la Web .................................................................... 8

    1.3. Aplicaciones Web ............................................................................ 10

    1.4. ASP y ASP.NET ................................................................................. 12

    1.5. Caractersticas de ASP.NET .............................................................. 13

    1.6. Arquitectura de ASP.NET: modelos de cdigo y ejecucin .............. 15

    1.7. Arquitectura de ASP.NET: modelo de proveedores .......................... 20

    1.8. Espacios de nombres de ASP.NET .................................................... 22

    1.9. ASP.NET y Windows Forms ............................................................. 23

    2. Formularios Web (Web Forms) .................................................... 25

    2.1. Interfaces para la Web ..................................................................... 25

    2.2. Controles de servidor ...................................................................... 26

    2.3. Diseo de interfaces ........................................................................ 32

    2.4. Eventos ............................................................................................ 36

    2.5. Acceso al flujo de HTML .................................................................. 40

    3. Primera aplicacin ASP.NET ........................................................ 42

    3.1. Introduccin .................................................................................... 42

    3.2. Creacin del proyecto ..................................................................... 43

    3.3. Diseo de la interfaz ........................................................................ 44

    3.4. Comportamiento de la interfaz ....................................................... 46

    3.5. Pruebas y depuracin ...................................................................... 47

    3.6. Observaciones .................................................................................. 49

    4. Procesamiento de formularios ..................................................... 50

    4.1. Ciclo de vida de una pgina Web Forms ......................................... 50

    4.2. Formularios HTML y Web Forms .................................................... 53

    4.3. Validacin de datos ......................................................................... 56

    4.4. Enlace a datos (Data Binding) ......................................................... 64

    5. Aplicaciones Web .......................................................................... 68

    5.1. Aplicaciones Web ASP.NET ............................................................. 68

    5.2. El archivo Global.asax ..................................................................... 70

    5.3. Gestin del estado ........................................................................... 73

    5.4. Gestin del estado en la prctica ..................................................... 77

    5.5. Configuracin de la aplicacin ........................................................ 85

    6. Seguridad ....................................................................................... 91

    6.1. Autenticacin y autorizacin .......................................................... 91

    6.2. Seguridad y el modelo de proveedores ............................................ 98

    6.3. Herramienta de configuracin de la seguridad .............................. 101

  • Universitat Oberta de Catalunya 4 ASP.NET

    6.4. Controles de Login ........................................................................ 102

    6.5. API de pertenencia a grupo ........................................................... 108

    7. Diseo de la interfaz de usuario ................................................ 110

    7.1. Controles personalizados .............................................................. 110

    7.2. Pginas maestras ............................................................................ 119

    7.3. Temas visuales ............................................................................... 124

    7.4. Web Parts....................................................................................... 129

    I. Controles Web Forms: Referencia .............................................. 135

    I.1. Generalidades ................................................................................. 135

    I.2. La clase System.Web.UI.Control .................................................... 136

    I.3. La clase System.Web.UI.WebControls.WebControl....................... 137

    I.4. La clase System.Web.UI.Page ......................................................... 138

    I.5. Controles HTML de servidor .......................................................... 140

    I.6. Controles Web de servidor (Standard) ........................................... 142

    I.7. Controles de validacin de servidor ............................................... 146

    I.8. Controles de acceso a datos ........................................................... 147

    I.9. Controles de login .......................................................................... 148

    I.10. Controles de navegacin ............................................................. 149

    I.11. Controles Web Part ...................................................................... 149

    II. Instalacin del servidor Web IIS ............................................... 152

    II.1. IIS y ASP.NET en Windows XP Profesional ................................... 152

    II.2. IIS y ASP.NET en Windows 2003 Server ........................................ 155

    II.3. Alternativas a IIS ........................................................................... 157

    Actividades ....................................................................................... 158

    Bibliografa ...................................................................................... 160

  • Universitat Oberta de Catalunya 5 ASP.NET

    Introduccin

    Aunque ASP.NET toma su nombre de la anterior tecnologa de Microsoft

    para el desarrollo Web, ASP, la nueva plataforma .NET difiere considerable-

    mente. ASP.NET est construida completamente sobre el Common Language

    Runtime (CLR), hecho compartido por todos los componentes de la plata-

    forma .NET. Esto permite a los desarrolladores la construccin de aplicacio-

    nes usando cualquiera de los lenguajes soportados por el .NET Framework,

    como Visual Basic .NET, JScript .NET, C#, etc., pero tambin usando lengua-

    jes como Perl o Python. Al contrario que otras tecnologas basadas en cdigo

    de script, ASP.NET ofrece un rendimiento mejorado, puesto el cdigo de

    servidor se precompila en forma de DLLs en el servidor Web.

    ASP.NET simplifica la transicin de los programadores acostumbrados al

    desarrollo para Windows hacia el desarrollo Web, puesto que permite la

    creacin de pginas Web a partir de controles y eventos de forma similar a

    como se construye una interfaz Windows tradicional. Sin embargo, as como

    un control Windows se dibuja a s mismo en la pantalla, los controles Web

    generan segmentos de cdigo HTML que se incrustan en las pginas que el

    servidor enva al navegador del cliente.

    El amplio conjunto de controles, clases y herramientas disponibles, propor-

    ciona una alta productividad en el desarrollo para la Web y especialmente en

    lo que respecta a la generacin de la interfaz de usuario. Otros aspectos, co-

    mo el acceso a bases de datos, tambin estn ampliamente integrados con

    ASP.NET, facilitando as el desarrollo de aplicaciones Web empresariales que

    visualicen datos provenientes de diversas fuentes.

    Este tema explora todos estos aspectos, incluyendo las novedades de la ver-

    sin 2.0, con el enfoque puesto en lo relativo a la generacin de interfaces de

    usuario. As pues, inicialmente se introducen los conceptos bsicos y se crea

    una aplicacin de ejemplo. A continuacin se dedica buena parte del texto a

    la comprensin de los mecanismos fundamentales en los que se asienta la

    ejecucin de las aplicaciones. Al tiempo, se proponen actividades comple-

    mentarias sobre la aplicacin base que permiten poner en prctica los con-

    ceptos expuestos. A lo largo de todo el texto, numerosos ejemplos permiten

    asimilar los contenidos de forma progresiva.

  • Universitat Oberta de Catalunya 6 ASP.NET

    Objetivos

    Algunos de los objetivos fundamentales que deben alcanzarse al completar

    este tema pueden resumirse en:

    Reforzar algunos conceptos bsicos relativos a la construccin de aplica-

    ciones para la Web.

    Asimilar el concepto de control de servidor y los aspectos relacionados

    como la gestin de eventos.

    Comprender el concepto de Round trip.

    Ser capaces de implementar mecanismos de validacin de datos.

    Comprender los mecanismos de gestin del estado en una aplicacin

    ASP.NET.

    Ser capaces de implementar controles de usuario y controles personaliza-

    dos bsicos.

    Ser capaces de configurar adecuadamente lo fundamental en una aplica-

    cin ASP.NET.

    Ser capaces de implementar mecanismos sencillos de autenticacin y

    autorizacin de usuarios.

    Aprender a utilizar los espacios de nombres ms importantes de ASP.NET

    mediante C#.

    Desarrollar una aplicacin sencilla de ejemplo.

  • Universitat Oberta de Catalunya 7 ASP.NET

    1. Aplicaciones para la Web y ASP.NET

    El objetivo de este apartado es situar los contenidos del mdulo en un con-

    texto ms global, el de la Web y el desarrollo de aplicaciones para la Web.

    Por ello, antes de introducir la tecnologa ASP.NET se revisan algunas nocio-

    nes fundamentales y se establece el vocabulario a emplear en adelante.

    1.1. Introduccin

    La World Wide Web (WWW) fue creada originalmente con el objetivo de

    facilitar la transferencia de documentos (estticos) y su navegacin mediante

    el uso de enlaces entre s. As, el lenguaje HTML permiti la construccin de

    hiper-documentos que incluan texto, imgenes y enlaces (hiperenlaces) a

    otros documentos. Poco tiempo despus los documentos dejaron de ser est-

    ticos para pasar a auto-modificarse mientras el usuario interaccionaba con

    ellos. El as llamado HTML dinmico (DHTML) incluye, no slo HTML, sino

    tambin porciones de programa que ejecuta el navegador del usuario para

    generar el cdigo HTML que finalmente se visualiza. Algunas tecnologas

    remarcables en dicho mbito incluyen JavaScript, Flash de Macromedia,

    applets de Java, etc.

    Al margen del intercambio de documentos, ya desde su origen, la infraes-

    tructura de la WWW ha servido tambin como plataforma para facilitar la

    ejecucin de aplicaciones. En ese sentido destacan dos grandes familias: los

    CGI y las pginas de servidor.

    Mediante CGI (Common Gateway Interface) se puede crear una interfaz que

    comunica el servidor de pginas Web con aplicaciones convencionales. As

    ante una solicitud al servidor Web, ste puede ejecutar una aplicacin que

    genere las pginas Web correspondientes como respuesta. Este tipo de pro-

    gramas puede escribirse en cualquier lenguaje de programacin, siendo algu-

    no de los ms habituales C o Perl, por lo que los CGI suelen orientarse ms a

    programadores que a diseadores de pginas Web.

    Las pginas de servidor se denominan as puesto que cuando un usuario las

    solicita a travs de su navegador, el servidor no las devuelve directamente,

    tal como hara con una pgina HTML convencional. Sin embargo, somete las

    pginas a un procesado previo, ejecutando en el propio servidor el cdigo

    incrustado en dichas pginas. As pues este tipo de pginas consisten en una

    mezcla de HTML con cdigo que debe compilarse o interpretarse en el pro-

    pio servidor, para que ste genere la pgina completa antes de devolverla al

    usuario. Destacan en este mbito tecnologas como JSP de Java, PHP o ASP

    de Microsoft.

    JavaScript es un lenguaje de script orientado a objetos muy usado en la construccin de pginas Web para acceder dinmicamente a los objetos que forman una pgina.

  • Universitat Oberta de Catalunya 8 ASP.NET

    Pongamos un poco ms de propiedad en todo este mar de acrnimos.

    1.2. Fundamentos de la Web

    La Web se fundamenta en el uso de tres estndares. Las URL (Uniform Re-

    source Locator), que especifican una forma de otorgar una direccin nica

    a una pgina Web. El protocolo HTTP (Hyper Text Transfer Protocol), que

    especifica la manera en que el navegador y el servidor se envan informacin

    mutuamente. Y el lenguaje HTML (Hyper Text Markup Language), que pro-

    porciona un mtodo para codificar la informacin de los documentos de

    forma que pueda visualizarse en una gran variedad de dispositivos. Aunque

    las compaas que producen programas y contenidos para la Web respetan

    dichos estndares mayoritariamente, el W3C (World Wide Web Consortium)

    es el organismo encargado de mantener actualizados estos y otros estndares

    para que la comunicacin el Web sea efectiva. La Figura 1 muestra la relacin

    entre todos estos elementos.

    URLs

    De forma sencilla, una URL es la direccin que escribimos en el navegador

    Web para conectarnos a un sitio Web, e.g. http://www.uoc.edu . Una URL

    consta de cuatro partes que detallamos a continuacin.

    Protocolo: Especificado mediante el texto anterior a los dos puntos, e.g.

    HTTP, HTTPS, FTP, TELNET, etc. El protocolo indica al navegador qu ti-

    po de servicio usar para conectar con el servidor deseado. Si no se especi-

    fica ninguno, el navegador asume deseamos conectar con un servidor

    Web y por lo tanto asume que se trata del protocolo HTTP.

    Servidor de destino: Por ejemplo, en http://www.uoc.edu, www.uoc.edu

    es el servidor de destino.

    Figura 1. Anatoma de una aplicacin Web.

    Servidor Web

    PC/Mac/Unix/...

    + Navegador Cliente

    Servidor

    Solicitud:

    http://www.digimon.com

    Respuesta:

    .

    Red TCP/IP, HTTP, HTML

  • Universitat Oberta de Catalunya 9 ASP.NET

    Nmero de puerto: Permite indicar a qu puerto concreto del servidor de

    destino debe encaminarse la conexin. Por ejemplo, en

    http://www.uoc.edu:80 se especifica el puerto 80. Si no se especifica ningn

    puerto, el navegador usar el puerto 80 que es el puerto usado por defecto

    por el protocolo HTTP.

    Ruta: Especifica la ruta en el servidor hasta el archivo que deseamos visua-

    lizar. En la URL http://www.uoc.edu/web/cat/index.html, por ejemplo, la ru-

    ta /Web/cat/index.html indica que queremos visualizar el contenido del

    documento index.html alojado en el subdirectorio cat del directorio Web.

    HTTP

    HTTP es un protocolo sencillo del tipo solicitud-respuesta entre clientes y

    servidores. El cliente tpico de HTTP, un navegador Web, inicia una solicitud

    estableciendo una conexin en el puerto 80 (por defecto) del servidor. Un

    proceso que escucha en el puerto 80 del servidor HTTP identifica el tipo de

    solicitud y responde en consecuencia, con un mensaje de error o con el con-

    tenido del documento solicitado. Una conversacin tpica entre un navega-

    dor y un servidor Web en www.example.org tendra un aspecto como el si-

    guiente. A la respuesta le seguira el texto HTML de la pgina Web alojada en

    el servidor.

    HTML

    HTML es el lenguaje usado por una pgina Web para dar formato al texto y

    las imgenes que la componen. Es un lenguaje de texto puro basado en un

    conjunto de cdigos especiales (marcas) que indican al navegador cmo

    aplicar el formato. Existen muchas marcas diferentes para especificar gran

    cantidad de combinaciones de formato. Todas se componen de una marca

    de inicio del formato y de una marca de final del mismo. Por ejemplo, po-

    demos crear con nuestro editor de texto favorito un documento HTML, al

    que podramos llamar hola.html, con el siguiente contenido:

    Hola Mundo UOC!!!!

    Solicitud: GET / HTTP/1.1 Host: www.example.org

    Respuesta: HTTP/1.1 200 OK Date: Mon, 23 May 2005 22:38:34 GMT Server: Apache/1.3.27 (Unix) (Red-Hat/Linux) Last-Modified: Wed, 08 Jan 2004 22:11:55 GMT Etag: "3f80f-1b6-3e1cb03b" Accept-Ranges: bytes Content-Length: 438 Connection: close Content-Type: text/html

  • Universitat Oberta de Catalunya 10 ASP.NET

    Al abrir este documento con el navegador veramos la frase escrita en negrita,

    tal como indican las marcas de inicio () y fin de negrita ().

    Aunque ya hemos mencionado a navegadores y servidores Web en los prra-

    fos anteriores, daremos aqu una definicin ms precisa. Diremos que un

    navegador (browser) Web es un programa capaz de interpretar un documen-

    to HTML y visualizarlo en pantalla de acuerdo con las marcas que ste espe-

    cifica. Existe gran variedad de navegadores Web, como Internet Explorer (IE),

    Mozilla, Opera, Netscape, etc. Por su parte, un servidor Web es un ordena-

    dor que almacena documentos HTML y permanece a la espera de conexiones

    de los navegadores. Un programa, el servidor propiamente, se encarga de

    atender las peticiones y retornar los documentos. Como servidores Web

    podramos citar Internet Information Services (IIS) o Apache, entre otros.

    Con estos elementos, la as llamada, navegacin por la Web sucede de la

    siguiente forma. Cuando escribimos una URL en el navegador, ste intenta

    conectar con el servidor indicado en la parte correspondiente de la URL. Si

    consigue conectar, el navegador enva la ruta indicada en la URL. Si la ruta

    existe en el servidor, ste devuelve el documento HTML al navegador, quien

    la interpreta y finalmente visualiza.

    1.3. Aplicaciones Web

    Una aplicacin Web es un programa distribuido a travs de Internet o de una

    red de rea local y que los usuarios ejecutan a travs de un navegador. En los

    ltimos aos las aplicaciones Web se han vuelto muy populares debido a la

    ubicuidad del navegador Web, a menudo llamado cliente-ligero (thin client).

    En el modelo tradicional cliente-servidor, cada aplicacin requiere de un

    programa cliente propio que debe instalarse independientemente en cada

    ordenador desde donde quiera ejecutarse la aplicacin. Las actualizaciones

    en el servidor a menudo conllevan tambin actualizaciones en todos los

    clientes, lo que sin duda es ineficiente y costoso.

    Por el contrario, una aplicacin Web genera la interfaz de usuario en forma

    de un conjunto de pginas Web estndar. Aunque una pgina Web es tcni-

    camente un documento esttico, una secuencia de pginas Web bien dis-

    puestas proporcionan una sensacin de interactividad muy prxima a la de

    las aplicaciones convencionales. As pues, una aplicacin Web puede ejecu-

    tarse desde cualquier ordenador que tenga un navegador instalado. Adems

    las actualizaciones slo afectan al lado del servidor, el navegador cliente no

    tiene por qu cambiar.

    Actualmente es muy comn dotar a las aplicaciones de interfaces Web.

  • Universitat Oberta de Catalunya 11 ASP.NET

    Recientemente, hay una tendencia muy fuerte hacia la creacin de interfaces

    Web para todo tipo de aplicaciones. Esto incluye aplicaciones ya clsicas

    como Webmail, buscadores, diccionarios on-line, etc. Tambin aplicaciones

    monousuario han cambiado a la filosofa basada en pginas Web. Por ejem-

    plo, todos los sistemas de ayuda de aplicaciones y sistemas operativos de

    Microsoft se basan en el uso de HTML, un mini-servidor Web incrustado en

    el sistema y un componente navegador tambin incrustado. Finalmente,

    otro mbito de uso de las aplicaciones Web son las interfaces de configura-

    cin de equipos de comunicaciones como switches, routers, puntos de acce-

    so Wi-Fi, etc.

    Aunque una aplicacin Web puede construirse de diversas maneras, tpica-

    mente constan de tres capas:

    La capa de interfaz de usuario, encargada del aspecto visual de la aplica-

    cin y de la interaccin con el usuario, est compuesta por las pginas

    HTML que el usuario solicita a un servidor Web y que visualiza en un na-

    vegador Web.

    La capa de lgica de negocio est compuesta por los mdulos que imple-

    mentan la lgica de la aplicacin y que se ejecutan en un servidor de apli-

    caciones. Esta capa suele tener la forma de un programa creado a partir de

    alguna tecnologa de generacin de contenido Web dinmico, como

    CGIs, PHP, Java Server Pages (JSP) o Active Server Pages (ASP).

    La capa de datos est compuesto por los datos, normalmente gestionados

    por un sistema de gestin de bases de datos (servidor de datos), que ma-

    neja la aplicacin Web.

    En definitiva, las aplicaciones Web han pasado de ser simples extensiones de

    un conjunto de pginas Web estticas, a complejas aplicaciones desarrolladas

    en base a muchas capas. Esto permite mayor adaptabilidad y robustez, im-

    prescindibles para el desarrollo de tcnicas de escalabilidad y balanceo de

    carga, en aplicaciones que deban dar servicio a gran nmero de usuarios

    simultneamente.

    Para concluir, cabe apuntar el hecho de que la programacin de aplicaciones

    Web presenta una serie de dificultades que no suelen darse en la programa-

    cin de aplicaciones tradicionales.

    Implementacin de interfaces de usuario ricas. Una interfaz de usuario con

    un layout complejo, gran cantidad de contenido dinmico, etc. puede ser

    muy difcil de construir usando HTML. La dificultad se acenta si lo que

    queremos es que la interfaz de usuario pueda visualizarse en mltiples plata-

    formas.

    Separacin entre cliente y servidor. El cliente (navegador) y el servidor son

    programas diferentes, que se ejecutan en ordenadores diferentes y con siste-

    Webmail se refiere genrica-mente a una aplicacin Web que permite leer y enviar correo electrnico desde un navegador.

    Un servidor de aplicaciones es un servidor Web con capaci-dad de procesamiento, por lo que suele ser a la vez servidor Web y servidor de lgica de negocio.

    Hablamos de layout en una interfaz de usuario para des-cribir tanto el proceso como el resultado mismo de posi-cionar y dimensionar los diferentes elementos que componen la interfaz en el espacio de ventana o pgina Web destinado a ello.

  • Universitat Oberta de Catalunya 12 ASP.NET

    mas operativos que tambin pueden ser diferentes. En consecuencia las dos

    partes de la aplicacin comparten muy poca informacin, i.e. pueden co-

    municarse pero slo intercambian pequeos bloques de datos.

    Ejecucin sin estado. Cuando un servidor recibe la solicitud de una pgina,

    ste la busca, la procesa y la retorna al navegador cliente. Inmediatamente

    despus el servidor descarta toda informacin relacionada con la pgina

    recin servida. Si el usuario solicita la misma pgina posteriormente, el servi-

    dor repite el proceso desde cero. Dicho de otro modo, el servidor no tiene

    memoria de las pginas que procesa. En consecuencia si una aplicacin nece-

    sita mantener informacin relacionada con una pgina, es la propia aplica-

    cin quien debe encargarse de ello.

    Desconocimiento de las capacidades de los navegadores. En muchos casos

    las aplicaciones Web acaban siendo accedidas por usuarios que usan diversos

    navegadores. Cada navegador tiene sus propias capacidades, lo que hace

    complicado construir aplicaciones que se ejecuten igualmente bien en todos

    ellos.

    Problemas de escalabilidad. A menudo las aplicaciones Web fallan al enfren-

    tarse al problema de la escalabilidad, para dar soporte a muchos usuarios o

    para distribuirse en mltiples servidores, por ejemplo.

    1.4. ASP y ASP.NET

    Las siglas ASP (Active Server Pages) se refieren a la tecnologa de Microsoft

    que permite que un servidor Web, adems de alojar y servir pginas HTML,

    ejecute cdigo de script incrustado en dichas pginas. En particular el motor

    de ASP funciona habitualmente sobre el servidor Web de Microsoft IIS (In-

    ternet Information Services), que se distribuye como componente del siste-

    ma operativo Windows a partir de Windows 2000.

    Un archivo ASP es bsicamente un archivo HTML, pero puede contener

    tambin cdigo en forma de scripts. Dicho cdigo se ejecuta siempre en el

    servidor, no en el navegador del usuario. As, cuando el navegador solicita

    un archivo ASP, IIS no lo devuelve directamente sino que pasa la solicitud al

    Los archivos ASP usan la extensin .asp

    VBScript (Visual Basic Scrip-ting Edition) es un subconjun-to de Visual Basic usado en ASP, aunque tambin se usa como lenguaje de script en Windows.

    Ejemplo ASP ASP en la UOC

    Figura 2. Ejemplo de pgina ASP.

  • Universitat Oberta de Catalunya 13 ASP.NET

    motor de ASP. Este analiza el archivo y ejecuta el cdigo en su interior, para

    finalmente devolver como resultado un archivo HTML. En el ejemplo de la

    Figura 2 podemos ver la seccin de cdigo script delimitada por las marcas

    . Se trata de cdigo VBScript que se ejecuta en el servidor previa-

    mente a la devolucin de la pgina HTML. Si salvamos el cdigo del ejemplo

    usando cualquier editor de texto (como el bloc de notas de Windows, por

    ejemplo) en un archivo con extensin .asp y posteriormente lo abrimos con

    un navegador, veremos que el contenido que se visualiza no muestra el

    cdigo sino el resultado de su ejecucin. Es ms, si solicitamos al navegador

    que nos muestre el cdigo fuente de la pgina, lo que veremos ser el archi-

    vo HTML resultante de la ejecucin del cdigo, no el cdigo en s mismo.

    La ltima versin de ASP es la 3.0, aunque nunca habr una versin 4.0. Por

    el contrario ASP.NET, originalmente conocida como ASP+, es la nueva gene-

    racin de ASP, desarrollada completamente desde cero. No se trata de una

    nueva versin de ASP, sino de un nuevo paradigma en el desarrollo de apli-

    caciones Web basadas en cdigo de servidor sobre la plataforma .NET. No

    existe compatibilidad completa con versiones anteriores, por lo que una

    aplicacin ASP debe sufrir algunas modificaciones para ejecutarse sobre

    ASP.NET. Para que el servidor diferencie las aplicaciones implementadas con

    esta nueva tecnologa, los archivos de ASP.NET utilizan una nueva exten-

    sin: .aspx. Como motor de proceso de pginas de servidor, ASP.NET es simi-

    lar a otras tecnologas como PHP o JSP.

    ASP.NET ofrece gran cantidad de caractersticas interesantes para los disea-

    dores y desarrolladores de aplicaciones Web, entre las que destacan el sopor-

    te a mltiples lenguajes de programacin, la programacin orientada a even-

    tos, componentes basados en XML, escalabilidad, alto rendimiento, etc. El

    siguiente apartado detalla estos y otros aspectos.

    1.5. Caractersticas de ASP.NET

    ASP.NET proporciona una plataforma de desarrollo completamente integra-

    da con el Framework de .NET, lo que permite la construccin sencilla de

    aplicaciones Web complejas en el servidor. ASP.NET se caracteriza por una

    serie de ventajas y mejoras respecto a otras plataformas existentes. Sin nimo

    de ser exhaustivos:

    Interfaz de usuario rica. Las aplicaciones ASP.NET pueden incluir en sus

    pginas multitud de controles, tanto controles HTML que pueden manipu-

    larse mediante scripts, como controles orientados a objetos para representar

    datos de forma avanzada.

    Independencia del navegador. ASP.NET posibilita que toda la lgica de la

    aplicacin est en el servidor, eliminado la necesidad de escribir cdigo es-

    pecfico para diversos navegadores. En todo caso, tambin posibilita que las

    Los archivos ASP.NET usan la extensin .aspx

    ASP slo admite cdigo escri-to en VBScritp y JScript.

  • Universitat Oberta de Catalunya 14 ASP.NET

    aplicaciones se beneficien automticamente de las capacidades especficas de

    cada navegador, generando cdigo cliente eficiente.

    Soporte multi-lenguaje. Al estar integrado con el .NET Framework las pgi-

    nas ASP.NET pueden incluir cdigo escrito en cualquiera de los lenguajes de

    la plataforma, como C#, Visual Basic .NET, etc. y no simples lenguajes de

    script. Al ser una componente ms del .NET Framework, toda la potencia del

    mismo es directamente accesible para los desarrolladores de aplicaciones

    ASP.NET, por lo que no es necesario recurrir a libreras externas para generar

    grficos, acceder a bases de datos, trabajar con XML, etc.

    Modelo de objetos consistente e intuitivo. El entorno de desarrollo de pgi-

    nas ASP.NET proporciona un modelo de objetos que permite al desarrollador

    pensar en los formularios como un todo, y no como piezas separadas cliente

    y servidor. Adicionalmente los controles de servidor aportan una abstraccin

    respecto al contenido HTML de una pgina Web y respecto a la interaccin

    entre el navegador y el servidor. En general pueden usarse los controles de

    servidor como si se usasen controles en una aplicacin de escritorio tradicio-

    nal, sin pensar en el cdigo HTML necesario para mostrarlos y procesarlos.

    Orientacin a eventos. Web Forms aporta a la construccin de aplicaciones

    Web el tradicional mtodo de escritura de mtodos para controlar y atender

    a los eventos que se producen en la interfaz de usuario. As, todos los objetos

    de ASP.NET que pueden incluirse en una pgina son receptivos a eventos

    que pueden procesarse mediante cdigo .NET de una forma estructurada.

    Gestin del estado de forma intuitiva. ASP.NET gestiona automticamente

    el estado de los formularios y los controles, adems de proporcionar meca-

    nismos explcitos par gestionar el estado de informacin especfica de la

    aplicacin.

    Autenticacin y gestin de usuarios. ASP.NET soporta autenticacin basada

    en formularios, incluyendo gestin de cookies, redireccin en caso de fallo

    de autenticacin, etc. Adems permite la definicin de perfiles de usuario

    por aplicacin, para proporcionar acceso a diferentes contenidos o ejecutar

    diferente cdigo en funcin del usuario.

    Configuracin y despliegue simplificados. Las aplicaciones se configuran

    mediante archivos de texto planos que pueden modificarse an con la apli-

    cacin en ejecucin y sin necesidad de reiniciar el servidor Web. Las actuali-

    zaciones en el cdigo no requieren tampoco del reinicio del servidor pues

    basta con cambiar el cdigo y el servidor redirecciona las peticiones hacia el

    nuevo cdigo.

    Rendimiento mejorado. El cdigo en ASP.NET es compilado por lo que su

    ejecucin se beneficia de optimizaciones nativas y sistemas de cache, entre

    Una aplicacin ASP.NET tiene acceso a todos los servicios de la plataforma .NET

  • Universitat Oberta de Catalunya 15 ASP.NET

    otros, para conseguir un mejor rendimiento. El cdigo slo se compila la

    primera vez que es accedido, a diferencia de los entornos interpretados en los

    que el cdigo se analiza cada vez que es accedido. ASP.NET 2.0 soporta arqui-

    tecturas de 64 bits, i.e. permite usar todo el espacio de direcciones de los

    nuevos servidores. La migracin a 64 bits puede ser tan sencilla como copiar

    el cdigo de 32-bits al servidor, dejar que el motor de ASP.NET 2.0 lo compi-

    le y finalmente lo ejecute como una aplicacin nativa de 64 bits. Sin cam-

    bios en el cdigo.

    Escalabilidad. ASP.NET proporciona facilidades de comunicacin entre ser-

    vidores de forma que una aplicacin compleja o muy solicitada puede distri-

    buirse en granjas de servidores con muy pocos cambios en la lgica de la

    aplicacin.

    Multiplataforma. Un inconveniente que suele achacarse a ASP.NET el hecho

    de estar ligado a los sistemas Windows. Si bien esto es cierto, lo es a medias.

    Existen actualmente diversos proyectos en desarrollo, como SSCLI/ROTOR

    (http://msdn.microsoft.com/net/sscli/) o Mono (http://www.mono-project.com)

    que permiten usar .NET, y por tanto ASP.NET, en otros sistemas operativos

    como Linux, FreeBSD o Mac OS/X. Adems, al margen de IIS, tambin puede

    usarse Apache junto con Cassini como servidores Web para ASP.NET.

    1.6. Arquitectura de ASP.NET: modelos de cdigo y ejecucin

    Como ya hemos comentado previamente, una pgina de ASP.NET es un

    documento de texto en el que se combinan contenidos en forma de marcas

    de HTML o XHTML junto a porciones de cdigo escrito en cualquiera de los

    lenguajes de .NET. As pues, la forma ms simple de una pgina de ASP.NET

    consistira en tomar cualquier archivo HTML y cambiarle la extensin. La

    Figura 3 muestra un ejemplo de pgina ASP.NET (equivalente al de la Figura

    2). En ASP.NET es imprescindible la marca

  • Universitat Oberta de Catalunya 16 ASP.NET

    pgina respuesta, es necesario que los diferentes archivos que forman parte

    de la aplicacin se hallen en el lugar adecuado del servidor Web (vase el

    Apndice Instalacin del servidor Web IIS). IIS, el servidor Web por defec-

    to, atiende las peticiones del protocolo HTTP e invoca al motor de ASP.NET

    en caso de que el documento solicitado sea un archivo .aspx. El motor ejecuta

    el cdigo incrustado en la pgina mediante las facilidades del .NET Frame-

    work, lo que permite realizar tareas como acceder a bases de datos o ejecutar

    algoritmos complejos. La Figura 4 ilustra este proceso a alto nivel.

    Como se ha visto en el ejemplo de la Figura 3 una pgina ASP.NET puede

    combinar el aspecto visual (marcas HTML) y la lgica de una aplicacin (e.g.

    cdigo C#). El resultado es en general un archivo poco inteligible y difcil de

    mantener. Lo recomendable es, como mnimo, separar ambas cosas median-

    te la tcnica denominada code-behind. Esta tcnica consiste bsicamente en

    alojar en archivos separados el cdigo HTML y la lgica de la aplicacin. As,

    el cdigo HTML se almacena en un archivo con extensin .aspx, mientras que

    el cdigo ejecutable se almacena en un archivo con extensin .aspx.cs, .aspx.vb,

    etc. dependiendo del lenguaje de programacin especificado (ver Figura 5).

    Adems se establece un vnculo entre la pgina .aspx y el cdigo mediante los

    atributos Codebehind e Inherits en la marca Page. La Figura 6 muestra cmo que-

    dara el cdigo del ejemplo anterior empleando la tcnica de code-behind. La

    Figura 7 muestra el aspecto visual de la pgina Web resultante.

    El archivo referenciado mediante el atributo Codebehind debe contener una

    clase con el mismo nombre que el indicado por el atributo Inherits. El motor

    de ASP.NET no abrir el mdulo de cdigo fuente, sino que usar su nombre

    como referencia para buscar una DLL que contenga la clase indicada. El atri-

    buto Language hace referencia al lenguaje utilizado dentro del archivo .aspx,

    no al lenguaje usado para implementar la citada DLL.

    Figura 4. Arquitectura de ASP.NET.

    Aplicacin ASP.NET

    .NET Framework

    Controles Web

    HTTP

    SGBD

    ADO.NET

    IIS

    Windows

    app.aspx

  • Universitat Oberta de Catalunya 17 ASP.NET

    Archivo ASP.NET_UOC_cb.aspx Ejemplo ASP .NET con code behind ASP .NET en la UOC con code behind

    Figura 6. Ejemplo de pgina ASP.NET con code-behind.

    Archivo ASP.NET_UOC_cb.aspx.cs using System; using System.Web; using System.Web.UI; namespace UOC { public class EjemploASPNET : System.Web.UI.Page { private void Page_Load (object sender, System.EventArgs e) { for (int H=1; H

  • Universitat Oberta de Catalunya 18 ASP.NET

    En ASP.NET 2.0 y Visual Studio 2005 este modelo de separacin de cdigo e

    interfaz ha evolucionado considerablemente. El nuevo modelo de separacin

    de cdigo recibe el nombre de code-beside y se basa en el concepto de clase

    parcial, nuevo en .NET 2.0, que permite que una misma clase est definida

    de forma parcial en mltiples archivos de cdigo. De este modo se puede

    definir parte de una clase en un archivo, algunas de sus propiedades en otro,

    sus mtodos en otro, etc. La principal utilidad de este modelo est enfocada

    a herramientas de creacin de cdigo, para facilitar la regeneracin de cdigo

    parcial de una clase y para que varios programadores puedan trabajar al

    mismo tiempo en partes diferentes de una misma clase.

    En las pginas ASP.NET 2.0, Visual Studio 2005 aprovecha esta caracterstica

    para definir parte de la clase de la pgina Web en el propio archivo .aspx, que

    contiene definiciones de controles y eventos, y el cdigo que gobierna su

    funcionamiento en un archivo aparte por medio de una clase parcial. Esto se

    controla desde los atributos de la directiva Page, de la siguiente forma:

    La clase MiClase se define como una clase parcial (palabra clave partial en C# y

    Expands en VB.NET) y contiene slo el cdigo que gobierna el funcionamien-

    to de la pgina. La Figura 8 muestra el ejemplo Figura 6 pero esta vez imple-

    mentado con la tcnica de code-beside.

    Las ventajas de este nuevo modelo de trabajo (por cierto, code-behind no

    est soportado por VS.NET 2005, aunque existe un asistente de conversin)

    son varias, y cabe destacar una mayor sencillez de cdigo y una mayor sepa-

    racin real entre interfaz y lgica de trabajo.

    Si se usa la herramienta de desarrollo Visual Studio .NET para implementar la

    aplicacin, la vinculacin entre las pginas ASP.NET y los mdulos de cdigo

    se efecta de forma automtica y transparente para el programador. Adems,

    la aplicacin se registra automticamente en el servidor Web por lo que pue-

    de ejecutarse directamente. Si para escribir el cdigo no se usa Visual Studio

    .NET sino un editor de texto cualquiera, antes de poder ejecutar la aplicacin

    (como la de la Figura 6) debe compilarse el cdigo para producir la corres-

    pondiente DLL. Adems deber estar alojada en un subdirectorio llamado bin

    dentro del directorio donde se encuentre el archivo .aspx.

    En este punto cabe destacar la importancia de la clase Page definida en el

    espacio de nombre System.Web.UI. Un objeto de esta clase representa una

    pgina Web cuyo contenido se genera dinmicamente. La clase Page se utiliza

    habitualmente como base para derivar nuevas clases de pgina, de la misma

    forma que en Windows Forms se crean los formularios a partir de la clase

    base System.Windows.Forms.

  • Universitat Oberta de Catalunya 19 ASP.NET

    Cuando se solicita una pgina .aspx al servidor Web, ASP.NET compila din-

    micamente el cdigo incrustado en la pgina generando una clase derivada

    de la clase Page. La clase recibe un nombre por defecto que puede alterarse

    mediante el atributo ClassName en la lnea

  • Universitat Oberta de Catalunya 20 ASP.NET

    1.7. Arquitectura de ASP.NET: modelo de proveedores

    ASP.NET 2.0 proporciona una arquitectura modular y abierta, en la que cual-

    quier componente puede substituirse por otro adaptado a las necesidades del

    desarrollador. Los elementos fundamentales de la arquitectura pueden resu-

    mirse de acuerdo a la Figura 10. Los bloques bsicos proporcionan funciona-

    lidades que pueden ser tiles para un amplio espectro de aplicaciones. Por

    ejemplo, los mecanismos de pertenencia permiten gestionar nombres de

    usuario y passwords de forma genrica en cualquier aplicacin. La arquitec-

    tura basada en proveedores proporciona a los bloques bsicos la posibilidad

    de usar diversos mecanismos de almacenamiento y recuperacin de informa-

    cin, como SQL Server, Active Directory, etc. Por su parte, los frameworks de

    pgina emplean los bloques bsicos para ofrecer servicios de alto nivel a las

    aplicaciones, lo que facilita la creacin de portales, por ejemplo. Finalmente

    se dispone de un conjunto de controles de servidor, mucho ms amplio que

    en versiones anteriores.

    1.7.1. Controles de servidor

    ASP.NET 2.0 incorpora un amplio conjunto de controles de servidor para el

    acceso a datos, la identificacin segura de usuarios, navegacin, creacin de

    mens, visualizaciones en rbol, creacin de portales, etc. Adems, mejora

    la extensibilidad de los controles, proporcionando gran cantidad de clases

    base que encapsulan comportamientos tpicos. A continuacin repasamos

    algunas de las familias de nuevos controles:

    Figura 10. Arquitectura de ASP.NET 2.0. Visin de desarrollador.

  • Universitat Oberta de Catalunya 21 ASP.NET

    Controles de acceso a datos. El acceso a datos puede llevarse a cabo de for-

    ma totalmente declarativa, i.e. sin escribir cdigo. Para ello existen nuevos

    controles de fuente de datos para acceder a fuentes diversas, como bases de

    datos SQL, objetos de negocio, XML, etc. Igualmente existen nuevos contro-

    les para visualizar los datos, como gridview, detailsview, y formview.

    Controles de navegacin. Controles como treeview, menu y sitemappath, se ba-

    san en los servicios de ASP.NET 2.0 para almacenar y recuperar flujos de na-

    vegacin predefinidos, y as permitir establecer la navegacin entre las pgi-

    nas de un sitio Web de forma estructurada y consistente.

    Controles de login. Estos controles proporcionan mecanismos para la auten-

    ticacin y autorizacin de usuarios en un sitio Web. Para ello se basan en los

    servicios de pertenencia y gestin de roles.

    Web parts. Estos controles permiten aadir contenido y layout ricos a un

    sitio Web, al tiempo que le proporcionan la capacidad de editarlos directa-

    mente desde la propia aplicacin.

    1.7.2. Frameworks de pgina

    Los frameworks de pgina proporcionan servicios de alto nivel a las aplica-

    ciones. Entre ellos destacan los siguientes:

    Pginas maestras. Permiten definir una estructura y elementos de interfaz de

    usuario comunes a todo un sitio Web. As, cabeceras y pies de pgina, barras

    de navegacin, etc. pueden definirse en una pgina maestra en la que se

    basarn todas las pginas del sitio.

    Temas visuales. Permiten personalizar el look-and-feel de las pginas de un

    sitio Web. La informacin de estilo se almacena en un lugar comn deno-

    minado tema y se aplica globalmente a todas las pginas y controles del

    sitio. Como la anterior, esta caracterstica reduce la cantidad de cdigo du-

    plicado y, por lo tanto, permite mejorar el mantenimiento de la aplicacin.

    Interfaz de usuario adaptativa. Los servicios de personalizacin permiten

    crear experiencias de usuario personalizadas de una misma aplicacin me-

    diante la gestin de perfiles, de forma muy sencilla y con muy poco cdigo.

    Por otra parte, los servicios de localizacin proporcionan herramientas e

    infraestructura para construir aplicaciones en mltiples idiomas, detectar el

    idioma del navegador, etc.

    1.7.3. Proveedores

    La arquitectura basada en proveedores de ASP.NET 2.0 proporciona soporte

    completo de almacenamiento a determinados servicios para la creacin de

  • Universitat Oberta de Catalunya 22 ASP.NET

    aplicaciones sofisticadas. Por ejemplo, soporte a mecanismos de pertenencia

    (almacenamiento/recuperacin de credenciales del tipo nombre de usuario y

    palabra clave) y de gestin de roles. O servicios de personalizacin que per-

    miten almacenar/recuperar configuraciones y preferencias de usuario. O un

    sistema de navegacin que permite la construccin de estructuras de nave-

    gacin consistentes. Todos estos servicios pueden intercambiarse por otros

    implementados por el propio desarrollador o terceros.

    1.8. Espacios de nombres de ASP.NET

    La Figura 12 sumariza de forma grfica los principales espacios de nombres

    que agrupan la funcionalidad necesaria par la creacin de aplicaciones y

    servicios Web con ASP.NET. A continuacin se describe en ms detalle cul

    es el contenido de cada uno de ellos:

    System.Web. Proporciona clases e interfaces que posibilitan la comunicacin

    entre navegadores y servidores Web. Es el espacio de nombres de ms alto

    nivel de ASP.NET y agrupa a todos los dems.

    System.Web.Caching. Proporciona clases para implementar, en el servidor, ca-

    ches de recursos frecuentemente usados, ya sean pginas, documentos XML,

    sesiones, aplicaciones, etc.

    System.Web.Configuration. Proporciona las clases usadas en la configuracin de

    ASP.NET.

    System.Web.Security. Proporciona clases que permiten la implementacin de

    estrategias de seguridad en las aplicaciones Web.

    System.Web.Services. Proporciona las clases que permiten la construccin de

    servicios Web XML. Esto es aplicaciones que ofrecen la posibilidad de inter-

    cambiar mensajes e interoperar mediante protocolos estndar como HTTP,

    XML, XSD, SOAP y WSDL.

    System.Web.Services.Description. Proporciona las clases que permiten describir

    pblicamente un servicio Web XML mediante WSDL.

    Figura 11. Arquitectura de ASP.NET 2.0: proveedores.

  • Universitat Oberta de Catalunya 23 ASP.NET

    System.Web.Services.Discovery. Proporciona las clases que permiten a los clientes

    de servicios Web localizar los servicios disponibles en un servidor Web.

    System.Web.Services.Protocols. Proporciona las clases que definen los protocolos

    usados para transmitir datos durante la comunicacin entre servicios Web y

    sus clientes.

    System.Web.UI. Proporciona clases, enumeraciones e interfaces que dan sopor-

    te a la creacin e interfaces de usuario para Web Forms.

    System.Web.UI.HtmlControls. Proporciona las clases que permiten la creacin de

    controles HTML de servidor en una pgina Web. Los controles HTML de

    servidor se corresponden con elementos estndar de HTML por lo que son

    soportados por cualquier navegador. Dichas clases permiten controlar pro-

    gramticamente los elementos HTML de una pgina.

    System.Web.UI.WebControls. Proporciona las clases que permiten la creacin de

    controles Web de servidor en una pgina Web. Los controles Web de servi-

    dor incluyen formularios y controles habituales como botones y cuadros de

    texto, as como otros controles ms complejos como calendarios. El modelo

    de objetos de los controles Web no refleja necesariamente la sintaxis de

    HTML.

    1.9. ASP.NET y Windows Forms

    A excepcin de lo que ha sucedido en los sencillos ejemplos vistos hasta

    ahora, habitualmente utilizaremos algn entorno de desarrollo que facilite la

    construccin de la aplicacin. Dichos entornos de desarrollo (como en el

    caso de Visual Studio .NET) se encargan, entre otras cosas, de la separacin

    entre la lgica de la aplicacin y la interfaz de la misma empleando code-

    behind, o de simplificar el diseo de las pginas.

    SSyysstteemm..WWeebb

    CCoonnffiigguurraattiioonn SSeessssiioonnSSttaattee

    SSeeccuurriittyy

    Figura 12. Espacios de nombres de ASP.NET.

    CCaacchhiinngg

    SSeerrvviicceess UUII

    HHttmmllCCoonnttrroollss

    WWeebbCCoonnttrroollss

    DDeessccrriippttiioonn

    DDiissccoovveerryy

    PPrroottooccoollss

  • Universitat Oberta de Catalunya 24 ASP.NET

    Relacionado con el diseo de las pginas, cabe destacar que el modelo de

    desarrollo de aplicaciones Web en ASP.NET sigue los pasos del modelo em-

    pleado en Windows Forms para la creacin de formularios. ASP.NET (Web

    Forms) simula un formulario compuesto por controles que atienden a distin-

    tos tipos de eventos, ofreciendo as al usuario una interfaz en la que el efecto

    cliente-servidor de la aplicacin Web queda diluido.

    Este es uno de los puntos importantes que diferencia ASP.NET de otros sis-

    temas para generacin de aplicaciones Web como ASP, JSP o PHP, en los que

    el programador s que es consciente del funcionamiento basado en peticio-

    nes y respuestas. A diferencia de stos, en Windows Forms, los eventos aso-

    ciados a controles de servidor se generan en la aplicacin cliente (el navega-

    dor) pero son tratados por el servidor Web dentro del Framework de

    ASP.NET. Ms concretamente, la informacin de los eventos capturados en

    el navegador se transmite al servidor por medio de una solicitud HTTP POST

    de forma totalmente transparente. Por su parte, el Framework de ASP.NET

    debe interpretar esta informacin e invocar al mtodo correspondiente que

    trata el evento.

    Desde el punto de vista del desarrollador, no hay diferencias sustanciales a la

    hora de construir una aplicacin de Windows Forms y una aplicacin Web

    ASP.NET. La diferencia fundamental estriba en el conjunto de controles dis-

    ponibles, siendo los de Windows Forms mucho ms potentes en cuanto a su

    complejidad visual y de interaccin con el usuario. En ASP.NET tambin se

    dispone de controles habituales en los formularios, como botones, etiquetas,

    etc. En este caso sin embargo, existen controles especficos derivados del

    hecho de que HTML ya posee un conjunto de controles bsicos y por lo tan-

    to algunos de los controles de ASP.NET pueden mapearse directamente sobre

    ellos. Adicionalmente, ASP.NET ofrece controles especficos orientados a la

    Web, as como controles cuya ejecucin se realiza en el servidor y no en el

    navegador del usuario.

  • Universitat Oberta de Catalunya 25 ASP.NET

    2. Formularios Web (Web Forms)

    El objetivo de este apartado es introducir los elementos bsicos de ASP.NET

    que dan soporte a la construccin de una aplicacin para la Web. El concep-

    to clave y diferencial respecto a otras aproximaciones, son los llamados con-

    troles de servidor. Agrupados en formularios y relacionados mediante un

    potente sistema de gestin de eventos, estos controles permiten la construc-

    cin de interfaces de usuario muy ricas de una forma relativamente sencilla.

    2.1. Interfaces para la Web

    Habitualmente se entiende por interfaz de usuario el conjunto de medios por

    los que un usuario interacta con un sistema, una aplicacin, etc. La interfaz

    proporciona mtodos por los que el usuario controla el sistema y mtodos

    por los que el usuario recibe informacin del mismo.

    Un tipo particular de interfaz lo constituye la interfaz grfica de usuario

    (GUI) que se basa en la manipulacin de imgenes grficas y elementos vi-

    suales (widgets) como ventanas, botones, cuadros de texto, etc. Junto a estos

    elementos, un sistema de gestin de eventos se encarga de transmitir las

    acciones del usuario a los distintos componentes de la interfaz para que reac-

    cionen en consecuencia. El propio sistema operativo (como en el caso de

    Windows) o un intrprete especializado (como en el caso de Tcl/Tk) se en-

    cargan de gestionar el conjunto.

    El aprovechamiento de la Web para que, adems de permitir la visualizacin

    de documentos, permita tambin el acceso a aplicaciones remotas mediante

    una interfaz HTML, implica algunas peculiaridades que diferencian este tipo

    de interfaz de los GUI ms tradicionales. El hecho principal es que la inter-

    faz HTML no se ejecuta de forma nativa por el propio sistema operativo del

    usuario sino en el interior del navegador Web, por lo que conceptos tradi-

    cionales de los GUI, como MDI, SDI, cuadros modales, etc. no tienen dema-

    siado sentido. El navegador entiende el lenguaje de marcas (HTML, XHTML,

    ) que proporciona los elementos bsicos para mostrar y solicitar informa-

    cin a travs de formularios. El procesado de los formularios, sin embargo, se

    efecta en el servidor quien recibe los datos que el navegador ha recogido del

    formulario, y se encarga de transmitir los resultados para que los visualice el

    navegador.

    Los formularios Web (Web Forms) son el elemento clave de ASP.NET para la

    creacin de pginas Web programables que sirvan como interfaz de usuario

    para las aplicaciones Web. Gracias a la tecnologa ASP.NET, el cdigo que se

    ejecuta en el servidor (incluida la lgica de la aplicacin) genera dinmica-

    MDI (Multiple Document Interface) se refiere a la inter-faz grfica de usuario por la que todas las ventanas de un programa residen en el inte-rior de una ventana que hace las veces de marco. Este tipo de interfaz es el ms comn en Windows, por ejemplo.

    En una interfaz SDI (Single Document Interface) las ventanas de un programa son independientes entre s y las gestiona el propio gestor de ventanas del sistema operati-vo. Este tipo de interfaz es el ms comn en Unix, por ejemplo.

  • Universitat Oberta de Catalunya 26 ASP.NET

    mente el contenido de las pginas Web hacia el navegador. El resultado pro-

    ducido por una pgina Web Forms puede contener casi cualquier forma de

    los lenguajes transmisibles sobre HTTP, como HTML, XML, WML, JScript y

    JavaScript. As, una pgina Web Forms genera automticamente el cdigo

    adaptado a las capacidades del navegador cliente. Como resultado de lo an-

    terior, una pgina Web Forms puede mostrar informacin al usuario en

    prcticamente cualquier navegador o dispositivo cliente.

    El diseo de formulario Web para aplicaciones en ASP.NET sigue un modelo

    muy parecido al de Windows Forms. Es decir, existe el concepto de formula-

    rio formado por un conjunto de controles y que atiende a los eventos que

    genera el usuario en su interaccin. El formulario distribuye cada evento a

    los controles, siendo cada control responsable de atender o no al evento. En

    respuesta a los eventos, otros controles pueden mostrar informacin al usua-

    rio. Aunque la construccin de los formularios es muy similar a cmo se

    hace en Windows Forms, el conjunto de controles es diferente, existiendo,

    por ejemplo, controles basados en HTML especficamente diseados para la

    Web. Otro aspecto diferencial es la forma de situar los controles en el formu-

    lario, siendo mucho ms arbitraria su colocacin en el caso de los formula-

    rios Web, puesto que una pgina puede adoptar diferentes tamaos depen-

    diendo del navegador con el que se visualice, el tamao de la ventana de

    ste, o incluso la resolucin de la pantalla en que se ejecute el navegador. Por

    ello, la colocacin de los componentes visuales en una pgina no sigue un

    posicionamiento absoluto como en Windows Forms.

    2.2. Controles de servidor

    El cdigo de la Figura 13 muestra un pequeo ejemplo de pgina ASP. Como

    puede verse, el bloque de cdigo se sita justo en el lugar de la pgina en la

    que debe aparecer el resultado producido por dicho cdigo. En ASP es impo-

    sible separar el cdigo ejecutable del cdigo HTML que da forma a la pgina.

    El resultado es un cdigo difcil de leer y de mantener.

    ASP.NET resuelve de forma ordenada el problema de programar el compor-

    tamiento dinmico de las pginas Web mediante el uso de los llamados con-

    troles de servidor. stos proporcionan una forma sencilla de encapsular fun-

    cionalidades usadas habitualmente y al mismo tiempo ser accesibles y

    En una interfaz Web puede dejarse que los elementos visuales fluyan en la pgina, distribuyndose segn las dimensiones del navegador, o bien puede usarse posiciona-miento absoluto mediante CSS (Cascading Style Sheets).

    Ahora son las:

    Figura 13. Ejemplo de pgina ASP.

  • Universitat Oberta de Catalunya 27 ASP.NET

    ampliables programticamente. ASP.NET aporta ms de 40 controles de ser-

    vidor aunque existe gran cantidad de ellos proporcionados por terceros.

    Existen tres clases de controles de servidor:

    Controles HTML: bsicamente son marcas HTML

    Controles Web: controles propios de ASP.NET

    Controles de validacin: controles propios de ASP.NET para la validacin

    de datos introducidos por el usuario

    Seguidamente se muestran unos breves ejemplos para ilustrar estos tipos de

    controles de servidor. En todos los casos se declaran en la pgina mediante

    marcas propias o de HTML que contienen el atributo runat=server, de forma

    que las marcas son entendidas y tratadas por el servidor.

    2.2.1. Controles HTML

    Fundamentalmente un control HTML de servidor es una marca HTML que se

    procesa en el servidor antes de enviar la pgina al navegador del cliente.

    Puesto que los elementos HTML en una pgina ASP.NET se tratan como sim-

    ple texto y no se procesan, para hacerlos programables debe aadrseles el

    atributo runat=server . Adems se suele aadir un atributo id que permite

    identificar el control y as poder manipularlo desde el cdigo en tiempo de

    ejecucin.

    Todos los controles HTML de servidor deben hallarse dentro del mbito de

    una marca . Esto indica que el formulario que los contiene

    se procesar en el servidor y que por tanto los controles podrn accederse y

    manipularse por el cdigo de script que se ejecute en el servidor.

    El cdigo de la Figura 14 muestra una pgina de ASP.NET que usa un control

    HtmlAnchor de servidor para incrustar un hipervnculo en una pgina Web.

    Como se ve, el atributo HRef del control se manipula en tiempo de ejecucin

    mediante el cdigo de atencin al evento Page_Load que se produce cuando se

    carga la pgina .aspx. Se observa tambin que ahora todo el cdigo ejecutable

    se ha separado del cdigo HTML.

    Los controles HTML son ms adecuados para los elementos estticos de la pgina.

    void Page_Load () { link1.HRef = "http://www.uoc.edu"; } Visita la Web de la UOC!

    Figura 14. Ejemplo de uso de controles HTML de servidor en ASP.NET.

  • Universitat Oberta de Catalunya 28 ASP.NET

    El conjunto de controles HTML de servidor se agrupan bajo el espacio de

    nombres System.Web.UI.HtmlControls. A las marcas que no corresponden explci-

    tamente a controles HTML de servidor se les asigna el tipo de control genri-

    co System.Web.UI.HtmlControls.HtmlGenericControl.

    2.2.2. Controles Web

    Adicionalmente al soporte de controles estndar HTML, ASP.NET permite el

    uso de controles semnticamente mucho ms ricos. Al igual que los contro-

    les HTML de servidor, los controles Web de servidor tambin requieren del

    atributo runat=server para indicar que deben ejecutarse en el servidor. La

    diferencia estriba en que un control Web de servidor no tiene porque tener

    necesariamente una correspondencia con cdigo HTML, y por lo tanto pue-

    de encapsular funcionalidades ms complejas.

    Los controles Web de servidor, agrupados bajo el espacio de nombres Sys-

    tem.Web.UI.WebControls, exponen un modelo de objetos que contiene propie-

    dades, mtodos y eventos, de la misma manera que cualquier otro objeto del

    Framework de .NET. Gracias a este modelo de objetos los programas de

    ASP.NET pueden interactuar e incluso modificar los controles en tiempo de

    ejecucin. Veremos ms sobre eventos en el apartado Eventos.

    La sintaxis para declarar un control Web de servidor en una pgina es la

    siguiente: , donde se aprecia la

    marca asp al inicio de la declaracin.

    El ejemplo de la Figura 15 muestra la declaracin de un botn en un archivo

    .aspx . Al margen del identificador y el texto del botn, se declara tambin

    una funcin de atencin al evento OnClick del botn. La funcin cambia el

    texto del botn al presionarlo en tiempo de ejecucin.

    2.2.3. Controles de validacin

    El modelo de formularios de ASP.NET proporciona un conjunto de controles

    de validacin de servidor que pueden emplearse para la validacin de los

    datos que introduce el usuario a travs de otros controles del formulario. El

    El motor de ASP.NET se en-carga de traducir los controles Web en marcas de HTML y cdigo ejecutable.

    void submit(Source As Object, e As EventArgs) { boton1.Text="Ya has hecho clic!"; }

    Figura 15. Ejemplo de uso de controles Web de servidor en ASP.NET.

  • Universitat Oberta de Catalunya 29 ASP.NET

    funcionamiento es simple: si los datos no pasan la validacin se visualiza un

    mensaje de error.

    Cada control de validacin puede llevar a cabo un tipo especfico de com-

    probacin: que el valor introducido no coincida con un valor determinado,

    que el valor introducido est dentro de un rango especificado, que el texto

    introducido coincida con un determinado patrn, etc. Un control muy inte-

    resante es el control RequiredFieldValidator que permite forzar que el usuario

    introduzca un valor en un determinado campo del formulario.

    Por defecto, los controles de validacin de una pgina se invocan cuando se

    hace clic sobre un control de tipo Button, ImageButton o LinkButton. Puede in-

    habilitarse la validacin de un control asignando a false la propiedad CausesVa-

    lidation. La sintaxis para declarar un control de validacin de servidor es idn-

    tica a la empleada para controles Web de servidor.

    En el ejemplo de la Figura 16, se declara un control de tipo TextBox, un con-

    trol de tipo Button y un control de tipo RangeValidator. La validacin se refiere al

    valor introducido en el control llamado tbox1 y debe cumplirse que el valor

    entero introducido est dentro del intervalo [1,100]. Si esta condicin no se

    cumple, el control de validacin mostrar el mensaje indicado en el atributo

    Text. La Figura 17 muestra la pgina Web en ejecucin, donde puede verse la

    validacin en accin.

    Introduce un nmero entre 1 y 100:

    Figura 16. Ejemplo de uso de controles de validacin de servidor en ASP.NET.

    Figura 17. Ejemplo de uso de controles de validacin de servidor en ASP.NET: ejecucin.

  • Universitat Oberta de Catalunya 30 ASP.NET

    Es interesante destacar que los controles de validacin proporcionan una

    doble funcionalidad dependiendo del tipo de navegador en el que se visuali-

    zan. Si el navegador es sofisticado, como IE o Firefox, permitir que la vali-

    dacin se lleve a cabo eficientemente en el propio navegador mediante el

    uso de DHTML y cdigo JavaScript, pero tambin en el servidor. Si el nave-

    gador es muy sencillo, como el de muchos telfonos mviles, la validacin

    slo ser posible en el servidor. Lo ms interesante es que el modelo de pro-

    gramacin es idntico en ambos casos y que toda la responsabilidad recae en

    el motor de ASP.NET y en su habilidad para identificar las capacidades del

    navegador del cliente.

    Finalmente destacar que el programador puede recurrir en tiempo de ejecu-

    cin a la propiedad Page.IsValid para determinar si todos los controles de

    validacin se han evaluado positivamente. Esto proporciona un mecanismo

    sencillo para validar un formulario y decidir si debe procederse con la ejecu-

    cin de un determinado cdigo o no.

    2.2.4. Procesamiento de controles

    Como ya hemos comentado anteriormente, cuando el servidor Web recibe la

    solicitud de servir un archivo .aspx, lo que ste hace en primer lugar es pasar

    el archivo en cuestin al motor de ASP.NET para que lo procese. El motor,

    que no depende del servidor Web sino de la plataforma de ejecucin de apli-

    caciones que haya por debajo, debe extraer todas las marcas con el prefijo

    asp y substituirlas por los elementos HTML y el cdigo script de cliente ade-

    cuados. La substitucin no es algo directo como cambiar las apariciones de

    cada elemento asp:TextBox por una marca type=text de HTML, por ejemplo.

    Antes al contrario, se trata de traducir las distintas propiedades y eventos de

    cada control Web, que son muy similares a los de los controles correspon-

    dientes en Windows Forms, en trminos de elementos y atributos HTML,

    estilos CSS y cdigo JavaScript.

    Para ver cmo trabaja el motor de ASP.NET en lo que respecta a la traduccin

    de los diversos controles durante el procesamiento de una pgina, podemos

    recurrir a una sencilla prueba. Usando un editor de texto cualquiera creare-

    mos una nueva pgina de ASP.NET y aadiremos un control de tipo CheckBox.

    Le modificaremos algunas propiedades como Text, BorderColor o BackColor, y

    CSS (Cascading Style Sheets) es un lenguaje para describir la forma de presentar docu-mentos escritos mediante lenguajes de marcas. Tpica-mente se usa para definir el estilo de una pgina Web escrita en HTML o XHTML.

    Figura 18. Procesamiento de controles: archivo fuente.

  • Universitat Oberta de Catalunya 31 ASP.NET

    daremos el valor true a la propiedad AutoPostBack. La Figura 18 muestra el ar-

    chivo .aspx con el cdigo resultante, mientras que la Figura 19 muestra el

    aspecto de la pgina Web en ejecucin.

    La Figura 20 muestra el cdigo que recibe el navegador en respuesta a la soli-

    citud de la pgina anterior. Como puede observarse el cdigo es muy dife-

    rente. En la parte inferior del cdigo puede verse que el control CheckBox ha

    generado diversos elementos HTML: un elemento span con los elementos que

    afectan al estilo visual, un elemento input que hace que se muestre el botn

    de seleccin, y un elemento label asociado que muestra el ttulo. Al hacer clic

    sobre el control se invoca a la funcin JavaScript que ha generado el motor

    de ASP.NET y que se muestra en el cdigo. En ella se comprueba qu nave-

    gador visualiza la pgina y se recupera la referencia al formulario a travs de

    "Seleccioname"

    Figura 20. Procesamiento de controles: cdigo generado por el motor de ASP.NET.

    Figura 19. Procesamiento de controles.: ejecucin.

  • Universitat Oberta de Catalunya 32 ASP.NET

    un mtodo u otro para, finalmente, enviar al servidor los datos apropiados

    mediante una serie de campos ocultos del formulario (que se muestran en la

    parte superior del cdigo).

    Como se aprecia en el ejemplo, el motor de ASP.NET genera gran cantidad

    de cdigo por nosotros cuando usamos controles Web de servidor. Una bue-

    na prctica para evitar generar pginas muy pesadas consiste en emplear

    controles HTML para construir el contenido esttico de las pginas, en el que

    no sea necesario personalizar ningn atributo ni tampoco se espere una res-

    puesta. Por el contrario, se emplearn controles Web en caso de necesitar

    acceder a las propiedades de un elemento visual desde el cdigo que se ejecu-

    ta en el servidor, o bien sea necesario obtener un valor introducido por el

    control y/o responder a sus eventos.

    2.2.5. Los formularios son controles

    Ciertamente, en este punto hay poco que decir de los formularios, puesto

    que diversos aspectos ya se han mostrado a lo largo de los ejemplos anterio-

    res. Sin embargo no queremos que pasen desapercibidos.

    Como hemos podido apreciar en los ejemplos anteriores, todos los controles

    de servidor deben hallarse dentro del mbito de un formulario, esto es, en el

    mbito de una marca . Esto indica que el formulario que

    contiene los controles se procesar en el servidor. Por tanto los controles y el

    propio formulario (que tambin es un control) podrn accederse y manipu-

    larse por el cdigo de script que se ejecute en el servidor. Es importante des-

    tacar que una pgina .aspx slo puede contener un formulario de servidor.

    La marca form puede ir acompaada de diversos atributos, como action, met-

    hod, etc. Si bien, todos son opcionales, en su ausencia ASP.NET se encarga de

    asignar algunos de ellos con valores por defecto. Como ejemplo, puede apre-

    ciarse la diferencia en los atributos de la marca form en el cdigo de la Figura

    20, generado por el motor de ASP.NET para el cdigo de la Figura 18.

    2.3. Diseo de interfaces

    Hasta el momento todos los ejemplos que hemos revisado han consistido en

    escribir directamente el cdigo ASP.NET. Es obvio que para disear aplica-

    ciones Web de cierta entidad, esta forma de programar no es la ms adecua-

    da. Adems de ser muy propensa a la comisin de errores se requiere del

    programador conocimientos de diversas tecnologas relacionadas con la pro-

    gramacin para la Web. Existen diversas herramientas para el desarrollo de

    aplicaciones Web con ASP.NET que facilitan enormemente la tarea, permi-

    tiendo a los desarrolladores obviar muchos de los detalles del cdigo que

    finalmente se genera. La idea detrs de estas herramientas es conseguir que

    los desarrolladores no deban preocuparse demasiado de los detalles de la

    Controles HTML en Visual Studio 2005

  • Universitat Oberta de Catalunya 33 ASP.NET

    programacin de interfaces para Web, sino que puedan construir la interfaz

    de forma lo ms similar posible a como lo hacen para las aplicaciones de

    escritorio convencionales. Sin embargo hay algunas peculiaridades que de-

    ben tenerse en cuenta, algunas de las cuales ya hemos visto por las diferen-

    cias existentes en los distintos tipos de controles.

    Observando las cajas de herramientas de Visual Studio 2005 (ver figuras al

    margen) apreciamos la existencia de controles Web y controles HTML tal

    como hemos descrito previamente. Puede apreciarse que curiosamente en

    ambas categoras existen controles similares como Button, CheckBox o Table.

    Sin embargo, como es de esperar, Visual Studio los trata de forma diferente y

    genera un cdigo distinto para ellos. Vemoslo con un ejemplo sencillo.

    Creamos una aplicacin Web con Visual Studio e insertamos, por ejemplo,

    tres controles HTML: un TextField, un CheckBox y un Button. Seguidamente in-

    sertemos tres controles Web equivalente: un TextBox, un CheckBox y un Button.

    En el caso de los controles HTML el cdigo resultante (ver Figura 21) consiste

    en tres marcas INPUT de HTML de tipo text, checkbox y button, respectivamente.

    Para los controles Web el cdigo generado hace referencia a los controles

    correspondientes de ASP.NET, incluyendo un identificador para poder ser

    accedidos programticamente en tiempo de ejecucin, etc.

    Ms rigurosamente, si insertamos en una pgina ASP.NET un control HTML

    y un control Web y comprobamos la lista de propiedades de cada uno de

    ellos, observaremos claras diferencias. En un control HTML lo que aparece

    como propiedades no son otra cosa que los atributos que les corresponden al

    elemento en cuestin segn el estndar HTML, i.e. class, name, style, onmouse-

    out, onfocus, etc. Un control Web de ASP.NET dispone en cambio de propie-

    dades como Font, ForeColor, BackColor, Visible, Text, ToolTip, etc. habituales en los

    Controles Web en Visual Studio 2005

    WebForm1

    Figura 21. Controels HTML vs. Controles Web: archivo fuente.

  • Universitat Oberta de Catalunya 34 ASP.NET

    controles usados en Windows Forms para la construccin de aplicaciones de

    escritorio. Se trata por lo tanto de elementos visuales ms completos y que

    permiten gestionar una interaccin ms elaborada con el usuario.

    La construccin de interfaces ricas de usuario requiere, por tanto, el uso de

    un conjunto de controles que comparten caractersticas comunes y se aseme-

    jan a los controles de Windows Forms. As como los controles Windows

    derivan de la clase Control del espacio de nombres System.Windows.Forms, con los

    controles HTML y Web sucede algo similar ya que en su mayor parte derivan

    directa o indirectamente de de la clase Control definida en el espacio de nom-

    bres System.Web.UI.

    Respecto a las caractersticas de los controles, la mayora de ellos, como es el

    caso de los distintos tipos de botones, disponen de la propiedad Text para

    asignarles un ttulo. Si se trata de un CheckBox se dispone tambin de la pro-

    piedad Checked, de tipo booleano. Si es un TextBox, ste puede usarse para

    introducir una o ms lneas de texto dependiendo de la propiedad TextMode,

    emplendose las propiedades Rows y Columns para indicar el formato de la

    entrada, si es el caso. A modo de ejemplo, la Figura 22 muestra el panel de

    propiedades para dos controles Web.

    Adems de estas propiedades especficas, que no describiremos en detalle,

    para cada tipo de control, existen otras propiedades de carcter genrico que

    aplican a casi la totalidad de los controles Web.

    Figura 22. Propiedades de un control Web en Visual Studio: TextBox y Button.

  • Universitat Oberta de Catalunya 35 ASP.NET

    2.3.1. Propiedades de apariencia visual

    Las propiedades que afectan a la apariencia visual permiten establecer aspec-

    tos de los controles como las dimensiones, colores, bordes, etc. Algunas de

    las propiedades de apariencia ms usuales son:

    Height y Width: Establecen, respectivamente, la altura y la anchura del con-

    trol, mediante diversas unidades de medida absolutas (pxeles, milme-

    tros, pulgadas, ) y relativas (respecto al tamao de letra por defecto,

    etc.). La unidad de medida se indica mediante un sufijo, e.g. 10px para 10

    pxeles, 10em para 10 veces el tamao de la fuente por defecto, etc.

    BackColor y ForeColor: Establecen el color de fondo y del texto del control.

    Aunque pueden usarse directamente colores reconocidos en HTML o bien

    colores RGB, lo ms sencillo es usar la paleta de colores del diseador de

    interfaces.

    BorderColor, BorderStyle y BorderWidth: Permiten configurar el color (de igual

    forma que en las propiedades anteriores), estilo (segn CSS) y anchura del

    borde (usando las unidades de medida descritas anteriormente) de un

    control.

    Font: Establece el tipo de letra, su tamao y dems atributos habituales.

    Todas estas propiedades estarn especificadas en el documento .aspx alojado

    en el servidor Web correspondiente y se aplicarn en la visualizacin de la

    pgina ASP.NET. Sin embargo, el navegador lo nico que recibir sern ele-

    mentos HTML con el atributo style y las propiedades CSS equivalentes.

    2.3.2. Propiedades de comportamiento

    Otro grupo importante de propiedades generales a todos los controles son las

    que permiten especificar su comportamiento, i.e. su visibilidad y accesibili-

    dad. De estas propiedades destacan algunas como Enabled, Visible, AccessKey,

    TabIndex o ReadOnly.

    Las propiedades Enabled y Visible son de tipo booleano, indicando la primera si

    el control ser accesible mediante teclado o ratn, y la segunda si el control

    ser visible o no. Al igual que el resto de propiedades de un control, stas

    pueden modificarse desde el cdigo de la pgina en respuesta a cualquier

    evento o condicin. Debe tenerse en cuenta, sin embargo, que la visualiza-

    cin/ocultacin de un control oculto/visible puede conllevar una redistribu-

    cin del resto de los controles en la pgina, a no ser que se haya usado el

    posicionamiento absoluto.

    Algunos controles (botones, cuadros de texto, listas, etc.) son capaces de

    tomar para s el foco de la entrada de datos en la pgina (teclado, ratn, etc.).

    Cmo slo un control en la pgina puede tener el foco en un momento da-

    do, un control pierde el foco en el momento en que otro lo obtiene. Aunque

    Style=BORDER-RIGHT: 2px solid; BORDER-TOP: 2px solid; BORDER-LEFT: 2px solid; BORDER-BOTTOM: 2px solid; WIDTH: 234px; HEIGHT: 216px; BACKGROUND-COLOR: #FF0BA6 Estilo correspondiente a un control con borde slido de 2 pxeles, anchura de 234 pxeles, altura de 216 pxeles y color de fondo expresado en RGB.

  • Universitat Oberta de Catalunya 36 ASP.NET

    el usuario puede usar el ratn para dar el foco de entrada a un control cual-

    quiera de la pgina, es recomendable facilitar el acceso mediante teclado.

    Para ello se usan las propiedades AccessKey y TabIndex. TabIndex contendr un

    nmero entero superior a cero, tomando automticamente el foco de la

    pgina recin cargada el control con el menor valor en esta propiedad, y

    avanzando el foco al siguiente control en el orden con cada pulsacin del

    tabulador. Por su parte, la propiedad AccessKey permite asignar a un control

    cualquier carcter que combinado con la tecla Alt (o similar) dar el foco de

    entrada de datos directamente a dicho control.

    2.4. Eventos

    Como ya hemos comentado, una pgina HTML es un documento esttico

    que, una vez recibido, es visualizado por el navegador sin que haya ninguna

    interaccin ms con el servidor hasta que una nueva pgina es solicitada. A

    lo sumo, si la pgina contiene un formulario, los datos se enviarn al servi-

    dor al hacer clic sobre el botn de tipo submit.

    Sin embargo, en ASP.NET es necesario poder informar al servidor de que un

    control ha desencadenado un evento y que debe ser procesado por las clases

    alojadas en el servidor para generar una respuesta. En consecuencia el desa-

    rrollo de interfaces Web en ASP.NET, al igual que Windows Forms, presenta

    un modelo de programacin basado en eventos. As pues, cuando un control

    cambia su estado, por ejemplo cuando un usuario hace clic en un botn, el

    botn lanza un evento. A diferencia que en Windows Forms, el evento gene-

    rado por la interfaz de usuario requiere de una solicitud al servidor Web para

    que lo procese.

    A diferencia de lo que ocurre en ASP, ASP.NET proporciona orientacin a

    eventos real. En ASP una pgina se procesa de forma secuencial, i.e. las lneas

    de HTML o cdigo ASP se procesan una tras otra. Las acciones de usuario

    comportan el envo de la pgina al servidor, por lo que ste debe reconstruir

    la pgina, tras lo cual debe procesarla nuevamente de forma secuencial. En

    consecuencia la aplicacin no muestra propiamente un comportamiento

    orientado a eventos. Al contrario, si se desea dicho comportamiento debe

    programarse explcitamente manteniendo el estado al ms bajo nivel, etc.

    Todo ello limita la riqueza de la interfaz de usuario al tiempo que complica

    enormemente el cdigo de la aplicacin.

    2.4.1. Generalidades

    Los controles de servidor ASP.NET exponen y lanzan eventos que pueden

    usarse para construir interfaces de usuario ricas. Esto puede hacerse de forma

    sencilla mediante la asociacin de un mtodo a un evento de un control. En

    la asociacin se usa el nombre de atributo de un evento para indicar el nom-

    bre del evento y el valor del atributo para indicar el nombre de un mtodo

    (event handler) al que invocar cuando dicho evento se produzca. Por ejem-

    La generacin de eventos en las interfaces Web de ASP.NET requiere del envo de una solicitud al servidor.

  • Universitat Oberta de Catalunya 37 ASP.NET

    plo, la Figura 23 muestra cmo asociar un evento Click a un botn para cam-

    biar el valor de la propiedad Text en un TextBox en tiempo de ejecucin. La

    Figura 24 muestra el aspecto visual de la pgina.

    Se llama a un mtodo de control de eventos slo cuando ocurre un evento

    especfico de un control determinado, lo que permite evitar tener un mtodo

    global en el formulario que controle todos los eventos de todos los controles.

    Adems, debido a que la arquitectura de eventos de los formularios est ba-

    sada en delegados, los mtodos de control de eventos tienen seguridad de

    tipos de datos. Esto permite que el compilador pueda detectar la falta de

    coincidencia en la signatura del mtodo durante la compilacin.

    Dos clases dan soporte a cada evento. Por una parte la clase de delegado

    EventHandler, utilizada para registrar el mtodo de control del evento. Y por

    otra parte la clase EventArgs que contiene datos acerca del evento lanzado.

    La signatura de un EventHandler consiste en que el primer argumento contiene

    una referencia al objeto que lanz el evento (emisor) y en que el segundo

    argumento contiene datos acerca del evento (una instancia de EventArgs). Por

    ejemplo, el evento Click de un control de tipo Button utiliza el siguiente

    mtodo controlador:

    El modelo de atencin a los eventos de los formularios se basa en el uso de mtodos delegados.

    En programacin orientada a objeto es habitual identificar un mtodo mediante su signatura. Esta consiste en el nombre del mtodo, el nme-ro y tipo de sus parmetros, y el tipo del resultado que retorna.

    public delegate void EventHandler(object sender, EventArgs e);

    void EnterBtn_Click(Object Src, EventArgs E) { Mensaje.Text = "Bienvenido a ASP.NET " + HttpUtility.HtmlEncode(Nombre.Text); } Introduce tu nombre:

    Figura 23. Ejemplo de gestin de un evento.

    Figura 24. Ejemplo de gestin de un evento: ejecucin.

  • Universitat Oberta de Catalunya 38 ASP.NET

    Como resultado, cualquier mtodo de control de eventos del evento Click

    debe tener la siguiente signatura:

    La signatura de la clase EventHandler dicta la forma de la signatura del mtodo

    de control del evento. As, si en la programacin de la lgica de la aplicacin

    se usa un lenguaje fuertemente tipado, e.g. C#, se producir un error de

    tiempo de compilacin si la signatura del mtodo de control del evento no

    coincide con la signatura del mtodo delegado.

    Existen varios eventos que utilizan clases EventHandler e EventArgs genricas. Sin

    embargo, algunos eventos necesitan informacin adicional que es especfica

    del tipo del evento provocado. Por ejemplo, los eventos relacionados con el

    movimiento del ratn incluyen informacin acerca de la posicin del punte-

    ro y de los botones del ratn. Estos eventos definen sus propias clases que

    deben heredarse de las clases EventHandler y EventArgs. Por ejemplo, el evento

    MouseDown utiliza las clases MouseEventHandler y MouseEventArgs.

    Un evento puede suceder tanto antes como despus de que se produzcan

    cambios en tipos de estado de los controles o la pgina, lo que afecta a su

    nomenclatura. Un evento provocado antes de que se produzca un cambio de

    estado suele llevar como sufijo "ing". Un evento provocado despus de que se

    produzca un cambio de estado suele usar el sufijo "ed". Por ejemplo, el even-

    to SessionEnding se provoca antes de que se produzca un cambio de estado, y el

    evento SessionEnded se provoca despus de que se produzca un cambio de

    estado. Si un cambio de estado provoca slo un evento, ese evento normal-

    mente no tendr ningn sufijo. Por ejemplo, el evento Click.

    2.4.2. Eventos en pginas Web

    Al margen de lo comentado en el apartado anterior, que no difiere del tra-

    tamiento de eventos en Windows Forms, ASP.NET ofrece eventos y propie-

    dades especficos relacionados con aspecto propios de las aplicaciones Web.

    Trataremos la carga de pginas y el lanzamiento controlado de eventos.

    Algunos eventos, como los de ratn, necesitan clases de soporte especficas, eso s, derivadas de las clases genri-cas EventHandler y EventArgs

    void Page_Load () { et1.Text="La fecha y hora actual es: " + System.DateTime.Now.ToString(); }

    Figura 25. Ejemplo de uso de Page_Load.

    void (object sender, EventArgs evArgs)

  • Universitat Oberta de Catalunya 39 ASP.NET

    Evento Page_Load. Como sugiere su nombre, este evento se lanza cuando se

    carga una pgina. Cuando eso sucede, ASP.NET invoca automticamente al

    mtodo Page_Load(). La Figura 25 muestra un ejemplo en el que el texto de un

    control de tipo Label se define en el momento de cargar la pgina.

    Propiedad Page.IsPostBack. El mtodo Page_Load() se ejecuta cada vez que se

    carga la pgina en cuestin. Si lo que queremos es que el cdigo de Pa-

    ge_Load() se ejecute slo la primera vez que se carga la pgina, debemos con-

    sultar el valor de la propiedad booleana Page.IsPostBack. Si la propiedad tiene

    valor falso, la pgina se est cargando por primera vez, pero si la propiedad

    es cierta, la pgina est siendo cargada de nuevo, como cuando se han con-

    firmado los datos del formulario, por ejemplo. El cdigo de la Figura 26

    muestra un ejemplo en el que se comprueba el valor de la propiedad Pa-

    ge.IsPostBack en el mtodo Page_Load(), de forma que la fecha y hora mostradas

    en la pgina no cambian cuando se pulsa el botn de envo.

    Propiedad AutoPostBack. Todo control de ASP.NET que puede generar un

    evento dispone de la propiedad booleana AutoPostBack. sta indica si el control

    debe producir una nueva solicitud al servidor para cada evento que el con-

    trol genere. Por defecto el valor de la propiedad es falso, lo que indica que si

    por ejemplo tenemos un control CheckBox y asociamos cdigo al evento Chec-

    kedChanged, ste en realidad no tendr lugar cuando el usuario cambie la se-

    leccin en el CheckBox, sino slo al enviar el formulario al servidor. Si asig-

    namos el valor cierto a la propiedad AutoPostBack haremos que ASP.NET aada

    a la pgina el cdigo JavaScript necesario para detectar el evento y hacer la

    solicitud al servidor en el momento en que se produzca el evento.

    La existencia de esta propiedad tiene su origen en el hecho de que una apli-

    cacin Web ejecuta la interfaz de usuario en el navegador del cliente, mien-

    tras que la lgica de la aplicacin se ejecuta en un servidor remoto con el que

    el navegador se comunica a travs de un medio relativamente lento como es

    void Page_Load () { if (!